Browse Source

字典操作日志

tanbin 5 months ago
parent
commit
9c2352342a

+ 19 - 0
sys-api-cloud/src/main/java/com/xy/feign/SysDictLogFeign.java

@@ -0,0 +1,19 @@
+package com.xy.feign;
+
+import com.xy.service.SysDictLogService;
+import com.xy.FeignInterceptor;
+import com.xy.consts.ServiceConsts;
+import org.springframework.cloud.openfeign.FeignClient;
+
+/**
+ * <p>
+ * 字典表 feign
+ * </p>
+ *
+ * @author 谭斌
+ * @since 2024-10-09
+ */
+@FeignClient(value = ServiceConsts.SERVICE_NAME, configuration = FeignInterceptor.class)
+public interface SysDictLogFeign extends SysDictLogService {
+
+}

+ 59 - 0
sys-api-service/src/main/java/com/xy/entity/SysDictLog.java

@@ -0,0 +1,59 @@
+package com.xy.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 字典表
+ * </p>
+ *
+ * @author 谭斌
+ * @since 2024-10-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="SysDictLog对象", description="字典表")
+public class SysDictLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "id")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "父编码")
+    private String paterCode;
+
+    @ApiModelProperty(value = "编码")
+    private String code;
+
+    @ApiModelProperty(value = "说明")
+    private String msg;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "创建人")
+    @TableField(fill = FieldFill.INSERT)
+    private Long createUser;
+
+    @ApiModelProperty(value = "操作类型(1新增,2修改,3删除)")
+    private Integer operateType;
+
+    @ApiModelProperty(value = "是否同步生产")
+    private Boolean isSync;
+
+
+}

+ 16 - 0
sys-api-service/src/main/java/com/xy/mapper/SysDictLogMapper.java

@@ -0,0 +1,16 @@
+package com.xy.mapper;
+
+import com.xy.entity.SysDictLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 字典表 Mapper 接口
+ * </p>
+ *
+ * @author 谭斌
+ * @since 2024-10-09
+ */
+public interface SysDictLogMapper extends BaseMapper<SysDictLog> {
+
+}

+ 17 - 0
sys-api-service/src/main/java/com/xy/mapper/mapper/SysDictLogMapper.xml

@@ -0,0 +1,17 @@
+<?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.xy.mapper.SysDictLogMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.xy.entity.SysDictLog">
+        <id column="id" property="id" />
+        <result column="pater_code" property="paterCode" />
+        <result column="code" property="code" />
+        <result column="msg" property="msg" />
+        <result column="create_time" property="createTime" />
+        <result column="create_user" property="createUser" />
+        <result column="operate_type" property="operateType" />
+        <result column="is_sync" property="isSync" />
+    </resultMap>
+
+</mapper>

+ 99 - 0
sys-api-service/src/main/java/com/xy/service/SysDictLogServiceImpl.java

@@ -0,0 +1,99 @@
+package com.xy.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xy.dto.SysDictLogDto;
+import com.xy.entity.SysDictLog;
+import com.xy.mapper.SysDictLogMapper;
+import com.xy.sys.EnumSysDictOperateType;
+import com.xy.utils.Emptys;
+import com.xy.utils.MybatisPlusQuery;
+import com.xy.utils.PageBean;
+import com.xy.utils.R;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.List;
+
+import static com.xy.utils.Beans.copy;
+import static com.xy.utils.PlusBeans.toIPage;
+import static com.xy.utils.PlusBeans.toPageBean;
+
+
+/**
+ * <p>
+ * 字典表 服务实现类
+ * </p>
+ *
+ * @author 谭斌
+ * @since 2024-10-09
+ */
+@Service
+@AllArgsConstructor
+@Api(tags = "字典表")
+public class SysDictLogServiceImpl extends ServiceImpl<SysDictLogMapper, SysDictLog> implements SysDictLogService {
+
+    @PostMapping("obj")
+    @ApiOperation("对象查询")
+    public R<SysDictLogDto.Vo> obj(@RequestBody SysDictLogDto.Vo vo) {
+        SysDictLogDto.SelectList selectList = copy(SysDictLogDto.SelectList.class, vo);
+        List<SysDictLogDto.Vo> list = list(selectList).getData();
+        if (Emptys.check(list)) {
+            return R.ok(list.get(0));
+        }
+        return R.ok();
+    }
+
+    /**
+     * 处理日志
+     *
+     * @param sysDictLog
+     * @param operateType
+     * @return
+     */
+    public boolean handleLog(SysDictLog sysDictLog, EnumSysDictOperateType operateType) {
+        sysDictLog.setId(null);
+        sysDictLog.setIsSync(false);
+        sysDictLog.setOperateType(operateType.getIntCode());
+        return true;
+    }
+
+    @PostMapping("list")
+    @ApiOperation("集合查询")
+    public R<List<SysDictLogDto.Vo>> list(@RequestBody SysDictLogDto.SelectList selectList) {
+        LambdaQueryWrapper<SysDictLog> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(selectList, SysDictLog.class).build();
+        List<SysDictLog> list = list(lambdaQueryWrapper);
+        return R.ok(copy(SysDictLogDto.Vo.class, list));
+    }
+
+    @PostMapping("page")
+    @ApiOperation("分页查询")
+    public R<PageBean<SysDictLogDto.Vo>> page(@RequestBody SysDictLogDto.Page page) {
+        PageBean pageBean = page.getPage();
+        LambdaQueryWrapper<SysDictLog> lambdaQueryWrapper = new MybatisPlusQuery().eqWrapper(page, SysDictLog.class).build();
+        IPage<SysDictLog> iPage = page(toIPage(pageBean), lambdaQueryWrapper);
+        return R.ok(toPageBean(SysDictLogDto.Vo.class, iPage));
+    }
+
+    @PostMapping("save")
+    @ApiOperation("添加")
+    public R save(@RequestBody @Validated SysDictLogDto.Save save) {
+        SysDictLog saveInfo = copy(SysDictLog.class, save);
+        save(saveInfo);
+        return R.ok();
+    }
+
+    @PostMapping("update")
+    @ApiOperation("修改")
+    public R update(@RequestBody @Validated SysDictLogDto.Update update) {
+        SysDictLog updateInfo = copy(SysDictLog.class, update);
+        updateById(updateInfo);
+        return R.ok();
+    }
+}

+ 24 - 0
sys-api-service/src/main/java/com/xy/service/SysDictServiceImpl.java

@@ -1,5 +1,6 @@
 package com.xy.service;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -10,8 +11,10 @@ import com.xy.collections.list.JArrayList;
 import com.xy.collections.list.JList;
 import com.xy.dto.SysDictDto;
 import com.xy.entity.SysDict;
+import com.xy.entity.SysDictLog;
 import com.xy.entity.SysDictRedis;
 import com.xy.mapper.SysDictMapper;
+import com.xy.sys.EnumSysDictOperateType;
 import com.xy.utils.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -47,6 +50,7 @@ import static com.xy.utils.PlusBeans.toPageBean;
 public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> implements SysDictService {
 
     private RedisService<SysDictRedis> redisService;
+    private SysDictLogServiceImpl sysDictLogService;
 
 
     /**
@@ -90,6 +94,9 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
         SysDict sysDict = copy(SysDict.class, save)
                 .createUserTime(AuthorizeUtils.getLoginId(Long.class));
         save(sysDict);
+        //日志
+        SysDictLog sysDictLog = BeanUtil.copyProperties(sysDict, SysDictLog.class);
+        sysDictLogService.handleLog(sysDictLog, EnumSysDictOperateType.ADD);
         //刷新redis
         refuRedis(sysDict);
         return R.ok();
@@ -112,6 +119,9 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
         updateById(obj);
         //修改子字典
         update(new SysDict().setPaterCode(obj.getCode()), new LambdaQueryWrapper<SysDict>().eq(SysDict::getPaterCode, sysDict.getCode()));
+        //日志
+        SysDictLog sysDictLog = BeanUtil.copyProperties(sysDict, SysDictLog.class);
+        sysDictLogService.handleLog(sysDictLog, EnumSysDictOperateType.UPDATE);
         //刷新redis
         refuRedis(obj);
         return R.ok();
@@ -125,6 +135,14 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
         List<Integer> ids = del.getId();
         List<SysDict> list = list(new LambdaQueryWrapper<SysDict>().in(SysDict::getId, ids));
         removeBatchByIds(ids);
+        //日志
+        if (CollUtil.isNotEmpty(list)) {
+            list.forEach(sysDict -> {
+                SysDictLog sysDictLog = BeanUtil.copyProperties(sysDict, SysDictLog.class);
+                sysDictLogService.handleLog(sysDictLog, EnumSysDictOperateType.DEL);
+            });
+        }
+
         //删除子字典
         JList<SysDict> paters = new JArrayList<>(list).filter().isNull(SysDict::getPaterCode).list();
         JList<SysDict> paters2 = new JArrayList<>(list).filter().eq(SysDict::getPaterCode, "").list();
@@ -133,6 +151,12 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
         }
         if (Emptys.check(paters)) {
             JList<String> codes = paters.getProperty(SysDict::getCode);
+            if (CollUtil.isNotEmpty(paters)) {
+                paters.forEach(sysDict -> {
+                    SysDictLog sysDictLog = BeanUtil.copyProperties(sysDict, SysDictLog.class);
+                    sysDictLogService.handleLog(sysDictLog, EnumSysDictOperateType.DEL);
+                });
+            }
             remove(new LambdaQueryWrapper<SysDict>().in(SysDict::getPaterCode, codes));
         }
         //刷新redis

+ 81 - 0
sys-api/src/main/java/com/xy/dto/SysDictLogDto.java

@@ -0,0 +1,81 @@
+package com.xy.dto;
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.xy.utils.PageBean;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 字典表
+ * </p>
+ *
+ * @author 谭斌
+ * @since 2024-10-09
+ */
+public class SysDictLogDto {
+
+    @Data
+    @Accessors(chain = true)
+    public static class SelectList extends Vo {
+
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class Page extends Vo {
+
+        @ApiModelProperty(value = "分页对象", required = true)
+        private PageBean page;
+
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class Save extends Vo {
+
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class Update extends Vo {
+
+    }
+
+    @Data
+    @Accessors(chain = true)
+    public static class Vo {
+
+        @ApiModelProperty(value = "id")
+        private Integer id;
+
+        @ApiModelProperty(value = "父编码")
+        private String paterCode;
+
+        @ApiModelProperty(value = "编码")
+        private String code;
+
+        @ApiModelProperty(value = "说明")
+        private String msg;
+
+        @ApiModelProperty(value = "创建时间")
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+        private LocalDateTime createTime;
+
+        @ApiModelProperty(value = "创建人")
+        private Long createUser;
+
+        @ApiModelProperty(value = "操作类型(1新增,2修改,3删除)")
+        private Integer operateType;
+
+        @ApiModelProperty(value = "是否同步生产")
+        private Boolean isSync;
+
+
+    }
+
+}

+ 16 - 0
sys-api/src/main/java/com/xy/service/SysDictLogService.java

@@ -0,0 +1,16 @@
+package com.xy.service;
+
+import com.xy.annotate.RestMappingController;
+
+/**
+ * <p>
+ * 字典表 服务类
+ * </p>
+ *
+ * @author 谭斌
+ * @since 2024-10-09
+ */
+@RestMappingController("/sys-dict-log")
+public interface SysDictLogService {
+
+}