Przeglądaj źródła

运维管理:操作日志列表、删除日志信息

zhj 2 lat temu
rodzic
commit
3fd4416691

+ 46 - 0
src/main/java/com/welampiot/controller/NewLampPoleController.java

@@ -47,6 +47,9 @@ public class NewLampPoleController {
     @Autowired
     private LampPoleService lampPoleService;
 
+    @Autowired
+    private OperationLogService operationLogService;
+
     @RequestMapping(value = "/info",method = RequestMethod.POST)
     public BaseResult info(HttpServletRequest request){
         Integer version = request.getParameter("version") == null ? 0 : Integer.parseInt(request.getParameter("version"));
@@ -264,4 +267,47 @@ public class NewLampPoleController {
         return BaseResult.success(vo);
     }
 
+    /**
+     * 操作日志列表
+     * @param request
+     * @return
+     */
+    @RequestMapping(value = "/logList", method = RequestMethod.POST)
+    public BaseResult<OperationLogDTO> logList(HttpServletRequest request){
+        String keyword = request.getParameter("keyword") == null ? "" : request.getParameter("keyword");
+        String username = request.getParameter("username") == null ? "" : request.getParameter("username");
+        int page = request.getParameter("page") == null ? 1 : Integer.parseInt(request.getParameter("page"));
+        int count = request.getParameter("count") == null ? 16 : Integer.parseInt(request.getParameter("count"));
+        int operaType = request.getParameter("operaType") == null ? 0 : Integer.parseInt(request.getParameter("operaType"));
+        int devType = request.getParameter("devType") == null ? 0 : Integer.parseInt(request.getParameter("devType"));
+
+        OperationLogVO vo = new OperationLogVO();
+        vo.setKeyword(keyword);
+        vo.setOffset(count * (page - 1));
+        vo.setLimit(count);
+        vo.setOperaType(operaType);
+        vo.setDevType(devType);
+        vo.setUsername(username);
+        OperationLogVO logVO = operationLogService.getLogListByVO(vo);
+        return BaseResult.success(logVO);
+    }
+
+    /**
+     * 删除日志信息
+     * @param request
+     * @return
+     */
+    @RequestMapping(value = "/delLog", method = RequestMethod.POST)
+    public BaseResult delLog(HttpServletRequest request){
+        Integer version = request.getParameter("version") == null ? 0 : Integer.parseInt(request.getParameter("version"));
+        String logId = request.getParameter("logId");
+        if (logId == null || logId.length() == 0) return toolUtils.response("0007",version);
+        String[] split = logId.split(",");
+        for (String id :split) {
+            int l = Integer.parseInt(id);
+            operationLogService.deleteLogListById(l);
+        }
+        return toolUtils.response("0000",version);
+    }
+
 }

+ 11 - 0
src/main/java/com/welampiot/dao/OperationLogDao.java

@@ -2,9 +2,20 @@ package com.welampiot.dao;
 
 import com.welampiot.dto.OperationLogDTO;
 import com.welampiot.vo.OperationLogVO;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
 public interface OperationLogDao {
     List<OperationLogDTO> getListByVO(OperationLogVO operationLogVO);
+
+    List<OperationLogDTO> getLogListByVO(OperationLogVO vo);
+
+    Integer getLogTotalByUserId(OperationLogVO vo);
+
+    Integer getUserIdByUsername(OperationLogVO vo);
+
+    Integer getRoleByUsername(OperationLogVO vo);
+
+    Integer deleteLogListById(@Param("id") Integer id);
 }

+ 14 - 0
src/main/java/com/welampiot/dto/OperationLogDTO.java

@@ -4,6 +4,7 @@ import lombok.Data;
 
 @Data
 public class OperationLogDTO {
+    private Integer id;
     private String time;
     private String acount;
     private String remark;
@@ -11,4 +12,17 @@ public class OperationLogDTO {
     private String operation;
     private String sectionId;
     private String areaId;
+    private Integer os;
+    private Integer type;
+    private Integer userId;
+    private Integer devType;
+    private Integer deviceName;
+    private String sn;
+    private String devId;
+    private String name;//用户名
+    private String updateTime;
+    private String area;
+    private String section;
+    private Integer timezone;
+    private String company;
 }

+ 4 - 0
src/main/java/com/welampiot/service/OperationLogService.java

@@ -7,4 +7,8 @@ import java.util.List;
 
 public interface OperationLogService {
     List<OperationLogDTO> getListByVO(OperationLogVO operationLogVO);
+
+    OperationLogVO getLogListByVO(OperationLogVO vo);
+
+    void deleteLogListById(Integer id);
 }

+ 90 - 0
src/main/java/com/welampiot/service/impl/OperationLogServiceImpl.java

@@ -7,6 +7,10 @@ import com.welampiot.vo.OperationLogVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 @Service
@@ -15,4 +19,90 @@ public class OperationLogServiceImpl implements OperationLogService {
     private OperationLogDao operationLogDao;
     @Override
     public List<OperationLogDTO> getListByVO(OperationLogVO operationLogVO) {return operationLogDao.getListByVO(operationLogVO);}
+
+    @Override
+    public OperationLogVO getLogListByVO(OperationLogVO vo) {
+        Integer role = operationLogDao.getRoleByUsername(vo);
+        Integer userId = operationLogDao.getUserIdByUsername(vo);
+        vo.setRole(role);
+        vo.setUserId(userId);
+        vo.setTotal(operationLogDao.getLogTotalByUserId(vo));
+        List<OperationLogDTO> logList = operationLogDao.getLogListByVO(vo);
+        List<OperationLogDTO> list = new ArrayList<>();
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        logList.forEach(logDTO ->{
+            switch (logDTO.getOperaType()){
+                case "5" :
+                    logDTO.setOperaType("5");
+                    break;
+                case "4" :
+                    logDTO.setOperaType("4");
+                    break;
+                case "3" :
+                    logDTO.setOperaType("3");
+                    break;
+                case "2" :
+                    logDTO.setOperaType("2");
+                    break;
+                case "1" :
+                    logDTO.setOperaType("1");
+                    break;
+                default :
+                    logDTO.setOperaType("0");
+                    break;
+            }
+            if (logDTO.getArea() == null){
+                logDTO.setArea("");
+            }
+            if (logDTO.getSection() == null){
+                logDTO.setSection("");
+            }
+            switch (logDTO.getDevType()){
+                case 5 :
+                    logDTO.setDevType(5);
+                    break;
+                case 4 :
+                    logDTO.setDevType(4);
+                    break;
+                case 2 :
+                    logDTO.setDevType(2);
+                    break;
+                default :
+                    logDTO.setDevType(1);
+                    break;
+            }
+            //数据更新时间
+            if (logDTO.getUpdateTime() != null && !logDTO.getUpdateTime().equals("")){
+                Date cmdTime;
+                try {
+                    cmdTime = simpleDateFormat.parse(logDTO.getUpdateTime());
+                } catch (ParseException e) {
+                    throw new RuntimeException(e);
+                }
+                //判断时区,为null默认东八区
+                long timezone = logDTO.getTimezone() == null ? 8 : logDTO.getTimezone();
+                long l = cmdTime.getTime() + timezone * 3600 * 1000;
+                cmdTime = new Date(l);
+                logDTO.setUpdateTime(simpleDateFormat.format(cmdTime));
+            }else {
+                logDTO.setUpdateTime("");
+            }
+            list.add(logDTO);
+        });
+        vo.setList(list);
+        vo.setKeyword(null);
+        vo.setOffset(null);
+        vo.setLimit(null);
+        vo.setOperaType(null);
+        vo.setDevType(null);
+        vo.setRole(null);
+        vo.setUserId(null);
+        vo.setUsername(null);
+        return vo;
+    }
+
+    @Override
+    public void deleteLogListById(Integer id) {
+        operationLogDao.deleteLogListById(id);
+    }
 }

+ 7 - 0
src/main/java/com/welampiot/vo/OperationLogVO.java

@@ -1,5 +1,6 @@
 package com.welampiot.vo;
 
+import com.welampiot.dto.OperationLogDTO;
 import lombok.Data;
 
 import java.util.List;
@@ -12,4 +13,10 @@ public class OperationLogVO {
     private Integer version;
     private Integer limit;
     private Integer offset;
+    private String keyword;
+    private Integer userId;
+    private Integer role;
+    private String username;
+    private Integer total;
+    private List<OperationLogDTO> list;
 }

+ 47 - 0
src/main/resources/mapper/OperationLogMapper.xml

@@ -32,4 +32,51 @@
             limit #{offset},#{limit}
         </if>
     </select>
+
+    <select id="getLogListByVO" resultType="com.welampiot.dto.OperationLogDTO" parameterType="com.welampiot.vo.OperationLogVO">
+        select u.name,o.operaType,o.deviceName,o.sn,o.remark,u.company,o.devtype,o.time as updateTime,o.section,o.area,s.timezone
+        from operation_log o left join user u on o.userid = u.id
+            left join section s on o.sectionid = s.id
+        where 1=1
+            <if test="role != 1">
+                and o.userid = #{userId}
+            </if>
+            <if test="keyword != null and keyword != ''">
+                and (u.name like '%${keyword}%' or o.sn like '%${keyword}%' or o.deviceName like '%${keyword}%')
+            </if>
+            <if test="operaType != null">
+                and o.operaType = #{operaType}
+            </if>
+            <if test="devType != null">
+                and o.devtype = #{devType}
+            </if>
+            order by o.time desc
+            <if test="offset >= 0 and limit > 0">
+                limit #{offset},#{limit}
+            </if>
+    </select>
+
+    <select id="getRoleByUsername" resultType="Integer">
+        select u.role
+        from user u
+        where u.username = #{username}
+    </select>
+    
+    <select id="getUserIdByUsername" resultType="Integer">
+        select u.id
+        from user u
+        where u.username = #{username}
+    </select>
+
+    <select id="getLogTotalByUserId" resultType="Integer">
+        select count(o.id) as total from operation_log o
+        <if test="role != 1">
+            where o.userid = #{userId}
+        </if>
+    </select>
+
+    <delete id="deleteLogListById">
+        delete from operation_log where id = #{id}
+    </delete>
+
 </mapper>