Commit 604611e1d2c3035db1457e11c7749571b1b91f33

Authored by min
1 parent 4ce9271e

CRM:【线索】补充相关日志

yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/LogRecordConstants.java
... ... @@ -11,6 +11,12 @@ public interface LogRecordConstants {
11 11 // ======================= CRM_LEADS 线索 =======================
12 12  
13 13 String CRM_LEADS_TYPE = "CRM 线索";
  14 + String CRM_LEADS_CREATE_SUB_TYPE = "创建线索";
  15 + String CRM_LEADS_CREATE_SUCCESS = "创建了线索{{#clue.name}}";
  16 + String CRM_LEADS_UPDATE_SUB_TYPE = "更新线索";
  17 + String CRM_LEADS_UPDATE_SUCCESS = "更新了线索【{{#clueName}}】: {_DIFF{#updateReqVO}}";
  18 + String CRM_LEADS_DELETE_SUB_TYPE = "删除线索";
  19 + String CRM_LEADS_DELETE_SUCCESS = "删除了线索【{{#clueName}}】";
14 20  
15 21 // ======================= CRM_CUSTOMER 客户 =======================
16 22  
... ...
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/clue/CrmClueServiceImpl.java
... ... @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.crm.service.clue;
2 2  
3 3 import cn.hutool.core.collection.CollUtil;
4 4 import cn.hutool.core.collection.ListUtil;
  5 +import cn.hutool.core.lang.Assert;
5 6 import cn.hutool.core.util.ObjectUtil;
6 7 import cn.hutool.core.util.StrUtil;
7 8 import cn.iocoder.yudao.framework.common.pojo.PageResult;
... ... @@ -23,6 +24,9 @@ import cn.iocoder.yudao.module.crm.service.customer.CrmCustomerService;
23 24 import cn.iocoder.yudao.module.crm.service.permission.CrmPermissionService;
24 25 import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionCreateReqBO;
25 26 import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
  27 +import com.mzt.logapi.context.LogRecordContext;
  28 +import com.mzt.logapi.service.impl.DiffParseFunction;
  29 +import com.mzt.logapi.starter.annotation.LogRecord;
26 30 import jakarta.annotation.Resource;
27 31 import org.springframework.stereotype.Service;
28 32 import org.springframework.transaction.annotation.Transactional;
... ... @@ -37,6 +41,7 @@ import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionU
37 41 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
38 42 import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
39 43 import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.*;
  44 +import static cn.iocoder.yudao.module.crm.enums.LogRecordConstants.*;
40 45 import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.USER_NOT_EXISTS;
41 46  
42 47 /**
... ... @@ -62,6 +67,9 @@ public class CrmClueServiceImpl implements CrmClueService {
62 67  
63 68 @Override
64 69 @Transactional(rollbackFor = Exception.class)
  70 + @LogRecord(type = CRM_LEADS_TYPE, subType = CRM_LEADS_CREATE_SUB_TYPE, bizNo = "{{#clue.id}}",
  71 + success = CRM_LEADS_CREATE_SUCCESS)
  72 + // TODO @min:补充相关几个方法的操作日志;
65 73 public Long createClue(CrmClueSaveReqVO createReqVO) {
66 74 // 1. 校验关联数据
67 75 validateRelationDataExists(createReqVO);
... ... @@ -79,20 +87,31 @@ public class CrmClueServiceImpl implements CrmClueService {
79 87 .setLevel(CrmPermissionLevelEnum.OWNER.getLevel());
80 88 crmPermissionService.createPermission(createReqBO);
81 89  
  90 + // 4. 记录操作日志上下文
  91 + LogRecordContext.putVariable("clue", clue);
82 92 return clue.getId();
83 93 }
84 94  
85 95 @Override
  96 + @Transactional(rollbackFor = Exception.class)
  97 + @LogRecord(type = CRM_LEADS_TYPE, subType = CRM_LEADS_UPDATE_SUB_TYPE, bizNo = "{{#updateReqVO.id}}",
  98 + success = CRM_LEADS_UPDATE_SUCCESS)
86 99 @CrmPermission(bizType = CrmBizTypeEnum.CRM_LEADS, bizId = "#updateReqVO.id", level = CrmPermissionLevelEnum.WRITE)
87 100 public void updateClue(CrmClueSaveReqVO updateReqVO) {
88   - // 校验线索是否存在
89   - validateClueExists(updateReqVO.getId());
90   - // 校验关联数据
  101 + Assert.notNull(updateReqVO.getId(), "线索编号不能为空");
  102 + // 1. 校验线索是否存在
  103 + CrmClueDO oldClue = validateClueExists(updateReqVO.getId());
  104 + // 2. 校验关联数据
91 105 validateRelationDataExists(updateReqVO);
92 106  
93   - // 更新
  107 + // 3. 更新
94 108 CrmClueDO updateObj = BeanUtils.toBean(updateReqVO, CrmClueDO.class);
95 109 clueMapper.updateById(updateObj);
  110 +
  111 + // 3. 记录操作日志上下文
  112 + LogRecordContext.putVariable(DiffParseFunction.OLD_OBJECT, BeanUtils.toBean(oldClue, CrmCustomerSaveReqVO.class));
  113 + LogRecordContext.putVariable("clueName", oldClue.getName());
  114 +
96 115 }
97 116  
98 117 @Override
... ... @@ -102,6 +121,8 @@ public class CrmClueServiceImpl implements CrmClueService {
102 121  
103 122 @Override
104 123 @Transactional(rollbackFor = Exception.class)
  124 + @LogRecord(type = CRM_LEADS_TYPE, subType = CRM_LEADS_DELETE_SUB_TYPE, bizNo = "{{#id}}",
  125 + success = CRM_LEADS_DELETE_SUCCESS)
105 126 @CrmPermission(bizType = CrmBizTypeEnum.CRM_LEADS, bizId = "#id", level = CrmPermissionLevelEnum.OWNER)
106 127 public void deleteClue(Long id) {
107 128 // 1. 校验存在
... ... @@ -113,6 +134,8 @@ public class CrmClueServiceImpl implements CrmClueService {
113 134 // 3. 删除数据权限
114 135 crmPermissionService.deletePermission(CrmBizTypeEnum.CRM_LEADS.getType(), id);
115 136  
  137 + // 4. 记录操作日志上下文
  138 + LogRecordContext.putVariable("clueName", clue.getName());
116 139 }
117 140  
118 141 private CrmClueDO validateClueExists(Long id) {
... ...