wl
2022-10-14 31b561887544afc020c5c20637f3cd8f7c927e5e
日志管理 点位管理
2个文件已修改
10个文件已添加
460 ■■■■■ 已修改文件
ycl-common/src/main/java/com/ycl/controller/user/UmsAdminLogController.java 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/com/ycl/dto/log/LogQueryParams.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/com/ycl/entity/user/UmsAdminLoginLog.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/com/ycl/entity/user/vo/UmsAdminLogVO.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/com/ycl/service/user/IAdminLoginLogService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/com/ycl/service/user/impl/AdminLoginLogServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/controller/epuipment/EquipmentBayonetController.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/controller/video/VideoPointController.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/entity/equipment/EquipmentBayonet.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/service/equipment/IEquipmentBayonetService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/java/com/ycl/service/equipment/impl/EquipmentBayonetServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-platform/src/main/resources/mapper/equipment/EquipmentBayonetMapper.xml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/com/ycl/controller/user/UmsAdminLogController.java
New file
@@ -0,0 +1,131 @@
package com.ycl.controller.user;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ycl.annotation.LogSave;
import com.ycl.api.CommonResult;
import com.ycl.dto.log.LogQueryParams;
import com.ycl.entity.user.UmsAdmin;
import com.ycl.entity.user.UmsAdminLoginLog;
import com.ycl.entity.user.vo.UmsAdminLogVO;
import com.ycl.service.user.IAdminLoginLogService;
import com.ycl.service.user.UmsAdminService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.SneakyThrows;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
@RestController
@RequestMapping("/log_manage")
@Api(tags = "日志管理")
public class UmsAdminLogController {
    @Autowired
    IAdminLoginLogService iAdminLoginLogService;
    @Autowired
    UmsAdminService umsAdminService;
    @GetMapping("/query")
    @ApiOperation(value = "查询")
    @LogSave(operationType = "日志管理", contain = "查询日志信息")
    public CommonResult searchLog(LogQueryParams logQueryParams) {
        Page<UmsAdminLoginLog> umsAdminLoginLogPage = new Page<>();
        umsAdminLoginLogPage.setCurrent(logQueryParams.getCurrent());
        umsAdminLoginLogPage.setSize(logQueryParams.getSize());
        Page<UmsAdminLoginLog> page = iAdminLoginLogService
                .page(umsAdminLoginLogPage, new LambdaQueryWrapper<UmsAdminLoginLog>()
                        .like(StringUtils.isNotBlank(logQueryParams.getContent()), UmsAdminLoginLog::getContain, logQueryParams.getContent())
                        .eq(StringUtils.isNotBlank(logQueryParams.getOperationType()), UmsAdminLoginLog::getOperationType, logQueryParams.getOperationType())
                        .eq(StringUtils.isNotBlank(logQueryParams.getPortEquipment()), UmsAdminLoginLog::getUserAgent, logQueryParams.getPortEquipment())
                        .eq(logQueryParams.getId() != null, UmsAdminLoginLog::getAdminId, logQueryParams.getId())
                        .between(logQueryParams.getStartTime() != null && logQueryParams.getEndTime() != null, UmsAdminLoginLog::getCreateTime, logQueryParams.getStartTime(), logQueryParams.getEndTime())
                        .orderBy(logQueryParams.getSort() == 0, true, UmsAdminLoginLog::getCreateTime)
                        .orderBy(logQueryParams.getSort() == 1, false, UmsAdminLoginLog::getCreateTime));
        List<UmsAdminLogVO> umsAdminLogVOList = page.getRecords().stream()
                .map(item -> {
                    UmsAdminLogVO umsAdminlogVO = new UmsAdminLogVO();
                    BeanUtils.copyProperties(item, umsAdminlogVO);
                    umsAdminlogVO.setAdminId(umsAdminService
                            .getOne(new LambdaQueryWrapper<UmsAdmin>()
                                    .eq(UmsAdmin::getId, item.getAdminId()))
                            .getUsername());
                    return umsAdminlogVO;
                }).collect(Collectors.toList());
        Page<UmsAdminLogVO> umsAdminLogVOPage = new Page<>();
        BeanUtils.copyProperties(page, umsAdminLogVOPage);
        umsAdminLogVOPage.setRecords(umsAdminLogVOList);
        return CommonResult.success(umsAdminLogVOPage);
    }
    @DeleteMapping("/deletion_batch")
    @ApiOperation(value = "批量删除日志")
    @LogSave(operationType = "日志管理", contain = "批量删除日志信息")
    public CommonResult deleteBatch(@RequestParam List<Long> ids) {
        return CommonResult.success(iAdminLoginLogService.removeBatchByIds(ids));
    }
    @DeleteMapping("/clear")
    @ApiOperation(value = "清空日志")
    @LogSave(operationType = "日志管理", contain = "清空日志信息")
    public CommonResult clear() {
        return CommonResult.success(iAdminLoginLogService.remove(new LambdaQueryWrapper<UmsAdminLoginLog>()));
    }
    @GetMapping("/query_operationType")
    @ApiOperation(value = "查询操作类型")
    public CommonResult queryOperationType() {
        return CommonResult.success(iAdminLoginLogService.list(new LambdaQueryWrapper<UmsAdminLoginLog>().groupBy(UmsAdminLoginLog::getOperationType)));
    }
    @PostMapping("/export")
    @ApiOperation(value = "导出")
    @SneakyThrows
    @LogSave(operationType = "日志管理", contain = "导出日志")
    public void export(HttpServletResponse response, LogQueryParams logQueryParams) {
        Page<UmsAdminLoginLog> umsAdminLoginLogPage = new Page<>();
        umsAdminLoginLogPage.setCurrent(logQueryParams.getCurrent());
        umsAdminLoginLogPage.setSize(logQueryParams.getSize());
        StringBuilder fileName = new StringBuilder();
        fileName.append(LocalDateTime.now().getYear())
                .append("-")
                .append(LocalDateTime.now().getMonthValue())
                .append("-")
                .append(LocalDateTime.now().getDayOfMonth())
                .append("日志数据");
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("utf-8");
        String file = URLEncoder.encode(fileName.toString(), "UTF-8").replaceAll("\\+", "%20");
        response.setHeader("Content-disposition", "attachment;filename=" + file + ".xlsx");
        EasyExcel
                .write(response.getOutputStream(), UmsAdminLogVO.class)
                .sheet("数据")
                .doWrite(iAdminLoginLogService
                        .page(umsAdminLoginLogPage, new LambdaQueryWrapper<UmsAdminLoginLog>()
                                .like(StringUtils.isNotBlank(logQueryParams.getContent()), UmsAdminLoginLog::getContain, logQueryParams.getContent())
                                .eq(StringUtils.isNotBlank(logQueryParams.getOperationType()), UmsAdminLoginLog::getOperationType, logQueryParams.getOperationType())
                                .between(logQueryParams.getStartTime() != null && logQueryParams.getEndTime() != null, UmsAdminLoginLog::getCreateTime, logQueryParams.getStartTime(), logQueryParams.getEndTime())
                                .orderBy(logQueryParams.getSort() == 0, true, UmsAdminLoginLog::getCreateTime)
                                .orderBy(logQueryParams.getSort() == 1, false, UmsAdminLoginLog::getCreateTime))
                        .getRecords()
                        .stream()
                        .map(item -> {
                            UmsAdminLogVO umsAdminlogVO = new UmsAdminLogVO();
                            BeanUtils.copyProperties(item, umsAdminlogVO);
                            umsAdminlogVO.setAdminId(umsAdminService
                                    .getOne(new LambdaQueryWrapper<UmsAdmin>()
                                            .eq(UmsAdmin::getId, item.getAdminId()))
                                    .getUsername());
                            return umsAdminlogVO;
                        }).collect(Collectors.toList()));
    }
}
ycl-common/src/main/java/com/ycl/dto/log/LogQueryParams.java
New file
@@ -0,0 +1,40 @@
package com.ycl.dto.log;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.models.auth.In;
import lombok.Data;
import java.time.LocalDateTime;
@Data
@ApiModel(value = "日志查询")
public class LogQueryParams {
    @ApiModelProperty(value = "数目")
    Long size;
    @ApiModelProperty(value = "页码")
    Long current;
    @ApiModelProperty(value = "内容")
    String content;
    @ApiModelProperty(value = "操作类型")
    String operationType;
    @ApiModelProperty(value = "操作人员")
    Long id;
    @ApiModelProperty(value = "开始时间")
    LocalDateTime startTime;
    @ApiModelProperty(value = "结束时间")
    LocalDateTime endTime;
    @ApiModelProperty(value = "终端设备")
    String portEquipment;
    @ApiModelProperty(value = "排序 0 正序 1 倒序")
    Integer sort;
}
ycl-common/src/main/java/com/ycl/entity/user/UmsAdminLoginLog.java
@@ -22,10 +22,10 @@
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("ums_admin_login_log")
@ApiModel(value="UmsAdminLoginLog对象", description="后台用户登录日志表")
@ApiModel(value = "UmsAdminLoginLog对象", description = "后台用户登录日志表")
public class UmsAdminLoginLog implements Serializable {
    private static final long serialVersionUID=1L;
    private static final long serialVersionUID = 1L;
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
@@ -44,6 +44,6 @@
    @ApiModelProperty(value = "操作类型")
    private String operationType;
    @ApiModelProperty(value = "操作内容")
    @ApiModelProperty(value = "内容")
    private String contain;
}
ycl-common/src/main/java/com/ycl/entity/user/vo/UmsAdminLogVO.java
New file
@@ -0,0 +1,42 @@
package com.ycl.entity.user.vo;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@Data
public class UmsAdminLogVO {
    @TableId(value = "id", type = IdType.AUTO)
    @ExcelIgnore
    private Long id;
    @ExcelProperty(index = 3, value = "操作人员")
    private String adminId;
    @ExcelProperty(index = 0, value = "日志时间", format = "YYYY-mm-dd HH:mm:ss")
    private Date createTime;
    @ExcelProperty(index = 4, value = "IP地址")
    private String ip;
    @ExcelIgnore
    private String address;
    @ApiModelProperty(value = "浏览器登录类型")
    @ExcelProperty(index = 1, value = "终端设备")
    private String userAgent;
    @ApiModelProperty(value = "操作类型")
    @ExcelProperty(index = 2, value = "操作类型")
    private String operationType;
    @ApiModelProperty(value = "内容")
    @ExcelProperty(index = 5, value = "内容")
    private String contain;
}
ycl-common/src/main/java/com/ycl/service/user/IAdminLoginLogService.java
New file
@@ -0,0 +1,16 @@
package com.ycl.service.user;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ycl.entity.user.UmsAdminLoginLog;
/**
 * <p>
 * 后台用户登录日志表 服务类
 * </p>
 *
 * @author zhanghua
 * @since 2022-10-14
 */
public interface IAdminLoginLogService extends IService<UmsAdminLoginLog> {
}
ycl-common/src/main/java/com/ycl/service/user/impl/AdminLoginLogServiceImpl.java
New file
@@ -0,0 +1,20 @@
package com.ycl.service.user.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ycl.entity.user.UmsAdminLoginLog;
import com.ycl.mapper.user.UmsAdminLoginLogMapper;
import com.ycl.service.user.IAdminLoginLogService;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 后台用户登录日志表 服务实现类
 * </p>
 *
 * @author zhanghua
 * @since 2022-10-14
 */
@Service
public class AdminLoginLogServiceImpl extends ServiceImpl<UmsAdminLoginLogMapper, UmsAdminLoginLog> implements IAdminLoginLogService {
}
ycl-platform/src/main/java/com/ycl/controller/epuipment/EquipmentBayonetController.java
New file
@@ -0,0 +1,29 @@
package com.ycl.controller.epuipment;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ycl.api.CommonResult;
import com.ycl.controller.BaseController;
import com.ycl.entity.video.VideoPoint;
import com.ycl.service.equipment.IEquipmentBayonetService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
 * <p>
 * 卡口管理 前端控制器
 * </p>
 *
 * @author wl
 * @since 2022-10-14
 */
@RestController
@RequestMapping("/equipment_bayonet")
public class EquipmentBayonetController extends BaseController {
    @Autowired
    IEquipmentBayonetService iEquipmentBayonetService;
}
ycl-platform/src/main/java/com/ycl/controller/video/VideoPointController.java
@@ -1,10 +1,16 @@
package com.ycl.controller.video;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ycl.api.CommonResult;
import com.ycl.controller.BaseController;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ycl.entity.video.VideoPoint;
import com.ycl.service.video.impl.IVideoPointService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
 * <p>
@@ -15,7 +21,41 @@
 * @since 2022-09-26
 */
@RestController
@RequestMapping("/video-point")
@RequestMapping("/video_point")
@Api(tags = "点位管理")
public class VideoPointController extends BaseController {
}
    @Autowired
    IVideoPointService iVideoPointService;
    @GetMapping("/query")
    @ApiOperation("查询")
    public CommonResult searchVideoPoint(@RequestParam Long size,
                                         @RequestParam Long current,
                                         @RequestParam(required = false) Integer streetId,
                                         @RequestParam(required = false) Integer communityId) {
        Page page = new Page<VideoPoint>()
                .setSize(size)
                .setCurrent(current);
        return CommonResult.success(iVideoPointService.page(page, new LambdaQueryWrapper<VideoPoint>()
                .eq(streetId != null, VideoPoint::getStreetId, streetId)
                .eq(communityId != null, VideoPoint::getCommunityId, communityId)));
    }
    @PostMapping("/addition")
    @ApiOperation("添加")
    public CommonResult addVideoPoint(@RequestBody VideoPoint videoPoint) {
        return CommonResult.success(iVideoPointService.save(videoPoint));
    }
    @PutMapping("/modification")
    @ApiOperation("编辑")
    public CommonResult modifyVideoPoint(@RequestBody VideoPoint videoPoint) {
        return CommonResult.success(iVideoPointService.updateById(videoPoint));
    }
    @DeleteMapping("/deletion")
    @ApiOperation("删除")
    public  CommonResult deleteVideoPoint(@RequestParam Long id){
        return CommonResult.success(iVideoPointService.removeById(id));
    }
}
ycl-platform/src/main/java/com/ycl/entity/equipment/EquipmentBayonet.java
New file
@@ -0,0 +1,69 @@
package com.ycl.entity.equipment;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.math.BigDecimal;
/**
 * <p>
 * 卡口管理
 * </p>
 *
 * @author zhanghua
 * @since 2022-10-14
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("ums_equipment_bayonet")
public class EquipmentBayonet implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 卡口名称
     */
    @TableField("bayonet_name")
    private String bayonetName;
    /**
     * 卡口经度
     */
    @TableField("longitude")
    private BigDecimal longitude;
    /**
     * 卡口纬度
     */
    @TableField("latitude")
    private BigDecimal latitude;
    /**
     * ip地址
     */
    @TableField("ip_address")
    private String ipAddress;
    /**
     * 端口号
     */
    @TableField("port")
    private String port;
    /**
     * 描述
     */
    @TableField("description")
    private String description;
}
ycl-platform/src/main/java/com/ycl/service/equipment/IEquipmentBayonetService.java
New file
@@ -0,0 +1,16 @@
package com.ycl.service.equipment;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ycl.entity.equipment.EquipmentBayonet;
/**
 * <p>
 * 卡口管理 服务类
 * </p>
 *
 * @author zhanghua
 * @since 2022-10-14
 */
public interface IEquipmentBayonetService extends IService<EquipmentBayonet> {
}
ycl-platform/src/main/java/com/ycl/service/equipment/impl/EquipmentBayonetServiceImpl.java
New file
@@ -0,0 +1,20 @@
package com.ycl.service.equipment.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ycl.entity.equipment.EquipmentBayonet;
import com.ycl.mapper.equipment.EquipmentBayonetMapper;
import com.ycl.service.equipment.IEquipmentBayonetService;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 卡口管理 服务实现类
 * </p>
 *
 * @author zhanghua
 * @since 2022-10-14
 */
@Service
public class EquipmentBayonetServiceImpl extends ServiceImpl<EquipmentBayonetMapper, EquipmentBayonet> implements IEquipmentBayonetService {
}
ycl-platform/src/main/resources/mapper/equipment/EquipmentBayonetMapper.xml
New file
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ycl.mapper.equipment.EquipmentBayonetMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.ycl.entity.equipment.EquipmentBayonet">
        <id column="id" property="id" />
        <result column="bayonet_name" property="bayonetName" />
        <result column="longitude" property="longitude" />
        <result column="latitude" property="latitude" />
        <result column="ip_address" property="ipAddress" />
        <result column="port" property="port" />
        <result column="description" property="description" />
    </resultMap>
    <!-- 通用查询结果列 -->
    <sql id="Base_Column_List">
        id, bayonet_name, longitude, latitude, ip_address, port, description
    </sql>
</mapper>