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>