Commit d604e76d16ab1a05e5ca0aa33713100ba9027827

Authored by YunaiV
1 parent b0def8b5

✨ CRM:完善合同的跟进记录实现

yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/LogRecordConstants.java
... ... @@ -95,7 +95,6 @@ public interface LogRecordConstants {
95 95 String CRM_BUSINESS_FOLLOW_UP_SUCCESS = "商机跟进【{{#businessName}}】";
96 96 String CRM_BUSINESS_UPDATE_STATUS_SUB_TYPE = "更新商机状态";
97 97 String CRM_BUSINESS_UPDATE_STATUS_SUCCESS = "更新了商机【{{#businessName}}】的状态从【{{#oldStatusName}}】变更为了【{{#newStatusName}}】";
98   -// String CRM_BUSINESS_UPDATE_STATUS_SUCCESS = "阿巴阿巴";
99 98  
100 99 // ======================= CRM_CONTRACT 合同 =======================
101 100  
... ... @@ -110,6 +109,8 @@ public interface LogRecordConstants {
110 109 String CRM_CONTRACT_TRANSFER_SUCCESS = "将合同【{{#contract.name}}】的负责人从【{getAdminUserById{#contract.ownerUserId}}】变更为了【{getAdminUserById{#reqVO.newOwnerUserId}}】";
111 110 String CRM_CONTRACT_SUBMIT_SUB_TYPE = "提交合同审批";
112 111 String CRM_CONTRACT_SUBMIT_SUCCESS = "提交合同【{{#contractName}}】审批成功";
  112 + String CRM_CONTRACT_FOLLOW_UP_SUB_TYPE = "合同跟进";
  113 + String CRM_CONTRACT_FOLLOW_UP_SUCCESS = "合同跟进【{{#contractName}}】";
113 114  
114 115 // ======================= CRM_PRODUCT 产品 =======================
115 116  
... ...
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/clue/CrmClueServiceImpl.java
... ... @@ -19,7 +19,6 @@ import cn.iocoder.yudao.module.crm.service.customer.CrmCustomerService;
19 19 import cn.iocoder.yudao.module.crm.service.customer.bo.CrmCustomerCreateReqBO;
20 20 import cn.iocoder.yudao.module.crm.service.followup.CrmFollowUpRecordService;
21 21 import cn.iocoder.yudao.module.crm.service.followup.bo.CrmFollowUpCreateReqBO;
22   -import cn.iocoder.yudao.module.crm.service.followup.bo.CrmUpdateFollowUpReqBO;
23 22 import cn.iocoder.yudao.module.crm.service.permission.CrmPermissionService;
24 23 import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionCreateReqBO;
25 24 import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionTransferReqBO;
... ... @@ -133,7 +132,6 @@ public class CrmClueServiceImpl implements CrmClueService {
133 132 .setContactLastTime(LocalDateTime.now()).setContactLastContent(contactLastContent));
134 133  
135 134 // 3. 记录操作日志上下文
136   - LogRecordContext.putVariable(DiffParseFunction.OLD_OBJECT, BeanUtils.toBean(oldClue, CrmUpdateFollowUpReqBO.class));
137 135 LogRecordContext.putVariable("clueName", oldClue.getName());
138 136 }
139 137  
... ...
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/contract/CrmContractService.java
... ... @@ -8,9 +8,9 @@ import cn.iocoder.yudao.module.crm.controller.admin.contract.vo.CrmContractTrans
8 8 import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractDO;
9 9 import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractProductDO;
10 10 import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerDO;
11   -import cn.iocoder.yudao.module.crm.service.followup.bo.CrmUpdateFollowUpReqBO;
12 11 import jakarta.validation.Valid;
13 12  
  13 +import java.time.LocalDateTime;
14 14 import java.util.Collection;
15 15 import java.util.List;
16 16  
... ... @@ -55,9 +55,11 @@ public interface CrmContractService {
55 55 /**
56 56 * 更新合同相关的更进信息
57 57 *
58   - * @param contractUpdateFollowUpReqBO 信息
  58 + * @param id 合同编号
  59 + * @param contactNextTime 下次联系时间
  60 + * @param contactLastContent 最后联系内容
59 61 */
60   - void updateContractFollowUp(CrmUpdateFollowUpReqBO contractUpdateFollowUpReqBO);
  62 + void updateContractFollowUp(Long id, LocalDateTime contactNextTime, String contactLastContent);
61 63  
62 64 /**
63 65 * 发起合同审批流程
... ...
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/contract/CrmContractServiceImpl.java
... ... @@ -26,7 +26,6 @@ import cn.iocoder.yudao.module.crm.framework.permission.core.annotations.CrmPerm
26 26 import cn.iocoder.yudao.module.crm.service.business.CrmBusinessService;
27 27 import cn.iocoder.yudao.module.crm.service.contact.CrmContactService;
28 28 import cn.iocoder.yudao.module.crm.service.customer.CrmCustomerService;
29   -import cn.iocoder.yudao.module.crm.service.followup.bo.CrmUpdateFollowUpReqBO;
30 29 import cn.iocoder.yudao.module.crm.service.permission.CrmPermissionService;
31 30 import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionCreateReqBO;
32 31 import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionTransferReqBO;
... ... @@ -41,6 +40,7 @@ import org.springframework.transaction.annotation.Transactional;
41 40 import org.springframework.validation.annotation.Validated;
42 41  
43 42 import java.math.BigDecimal;
  43 +import java.time.LocalDateTime;
44 44 import java.util.Collection;
45 45 import java.util.List;
46 46  
... ... @@ -253,8 +253,18 @@ public class CrmContractServiceImpl implements CrmContractService {
253 253 }
254 254  
255 255 @Override
256   - public void updateContractFollowUp(CrmUpdateFollowUpReqBO contractUpdateFollowUpReqBO) {
257   - contractMapper.updateById(BeanUtils.toBean(contractUpdateFollowUpReqBO, CrmContractDO.class).setId(contractUpdateFollowUpReqBO.getBizId()));
  256 + @LogRecord(type = CRM_CONTRACT_TYPE, subType = CRM_CONTRACT_FOLLOW_UP_SUB_TYPE, bizNo = "{{#id}",
  257 + success = CRM_CONTRACT_FOLLOW_UP_SUCCESS)
  258 + @CrmPermission(bizType = CrmBizTypeEnum.CRM_CONTRACT, bizId = "#id", level = CrmPermissionLevelEnum.WRITE)
  259 + public void updateContractFollowUp(Long id, LocalDateTime contactNextTime, String contactLastContent) {
  260 + // 1. 校验存在
  261 + CrmContractDO contract = validateContractExists(id);
  262 +
  263 + // 2. 更新联系人的跟进信息
  264 + contractMapper.updateById(new CrmContractDO().setId(id).setContactLastTime(LocalDateTime.now()));
  265 +
  266 + // 3. 记录操作日志上下文
  267 + LogRecordContext.putVariable("contractName", contract.getName());
258 268 }
259 269  
260 270 @Override
... ...
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/followup/CrmFollowUpRecordServiceImpl.java
... ... @@ -17,14 +17,12 @@ import cn.iocoder.yudao.module.crm.service.contact.CrmContactService;
17 17 import cn.iocoder.yudao.module.crm.service.contract.CrmContractService;
18 18 import cn.iocoder.yudao.module.crm.service.customer.CrmCustomerService;
19 19 import cn.iocoder.yudao.module.crm.service.followup.bo.CrmFollowUpCreateReqBO;
20   -import cn.iocoder.yudao.module.crm.service.followup.bo.CrmUpdateFollowUpReqBO;
21 20 import cn.iocoder.yudao.module.crm.service.permission.CrmPermissionService;
22 21 import jakarta.annotation.Resource;
23 22 import org.springframework.context.annotation.Lazy;
24 23 import org.springframework.stereotype.Service;
25 24 import org.springframework.validation.annotation.Validated;
26 25  
27   -import java.time.LocalDateTime;
28 26 import java.util.Collection;
29 27 import java.util.List;
30 28  
... ... @@ -71,9 +69,6 @@ public class CrmFollowUpRecordServiceImpl implements CrmFollowUpRecordService {
71 69 crmFollowUpRecordMapper.insert(record);
72 70  
73 71 // 2. 更新 bizId 对应的记录
74   - CrmUpdateFollowUpReqBO updateFollowUpReqBO = new CrmUpdateFollowUpReqBO().setBizId(record.getBizId())
75   - .setContactLastTime(LocalDateTime.now())
76   - .setContactNextTime(record.getNextTime()).setContactLastContent(record.getContent());
77 72 if (ObjUtil.equal(CrmBizTypeEnum.CRM_BUSINESS.getType(), record.getBizType())) { // 更新商机跟进信息
78 73 businessService.updateBusinessFollowUp(record.getBizId(), record.getNextTime(), record.getContent());
79 74 }
... ... @@ -84,7 +79,7 @@ public class CrmFollowUpRecordServiceImpl implements CrmFollowUpRecordService {
84 79 contactService.updateContactFollowUp(record.getBizId(), record.getNextTime(), record.getContent());
85 80 }
86 81 if (ObjUtil.equal(CrmBizTypeEnum.CRM_CONTRACT.getType(), record.getBizType())) { // 更新合同跟进信息
87   - contractService.updateContractFollowUp(updateFollowUpReqBO);
  82 + contractService.updateContractFollowUp(record.getBizId(), record.getNextTime(), record.getContent());
88 83 }
89 84 if (ObjUtil.equal(CrmBizTypeEnum.CRM_CUSTOMER.getType(), record.getBizType())) { // 更新客户跟进信息
90 85 customerService.updateCustomerFollowUp(record.getBizId(), record.getNextTime(), record.getContent());
... ...
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/followup/bo/CrmUpdateFollowUpReqBO.java deleted
1   -package cn.iocoder.yudao.module.crm.service.followup.bo;
2   -
3   -import com.mzt.logapi.starter.annotation.DiffLogField;
4   -import io.swagger.v3.oas.annotations.media.Schema;
5   -import jakarta.validation.constraints.NotNull;
6   -import lombok.Data;
7   -
8   -import java.time.LocalDateTime;
9   -
10   -/**
11   - * 跟进信息 Update Req BO
12   - *
13   - * @author HUIHUI
14   - */
15   -@Data
16   -public class CrmUpdateFollowUpReqBO {
17   -
18   - @Schema(description = "数据编号", example = "3167")
19   - @NotNull(message = "数据编号不能为空")
20   - private Long bizId;
21   -
22   - @Schema(description = "最后跟进时间")
23   - @DiffLogField(name = "最后跟进时间")
24   - private LocalDateTime contactLastTime;
25   -
26   - @Schema(description = "下次联系时间")
27   - @DiffLogField(name = "下次联系时间")
28   - private LocalDateTime contactNextTime;
29   -
30   - @Schema(description = "最后更进内容")
31   - @DiffLogField(name = "最后更进内容")
32   - private String contactLastContent;
33   -
34   -}