Commit 6624a93a84f9b90ebdfc5e2d13f16cdff7e5d6aa

Authored by YunaiV
1 parent ca552825

CRM:跟进记录 code review

yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/followup/CrmFollowUpRecordController.java
@@ -38,7 +38,7 @@ import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUti @@ -38,7 +38,7 @@ import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUti
38 public class CrmFollowUpRecordController { 38 public class CrmFollowUpRecordController {
39 39
40 @Resource 40 @Resource
41 - private CrmFollowUpRecordService crmFollowUpRecordService; 41 + private CrmFollowUpRecordService followUpRecordService;
42 @Resource 42 @Resource
43 private CrmContactService contactService; 43 private CrmContactService contactService;
44 @Resource 44 @Resource
@@ -48,7 +48,7 @@ public class CrmFollowUpRecordController { @@ -48,7 +48,7 @@ public class CrmFollowUpRecordController {
48 @Operation(summary = "创建跟进记录") 48 @Operation(summary = "创建跟进记录")
49 @PreAuthorize("@ss.hasPermission('crm:follow-up-record:create')") 49 @PreAuthorize("@ss.hasPermission('crm:follow-up-record:create')")
50 public CommonResult<Long> createFollowUpRecord(@Valid @RequestBody CrmFollowUpRecordSaveReqVO createReqVO) { 50 public CommonResult<Long> createFollowUpRecord(@Valid @RequestBody CrmFollowUpRecordSaveReqVO createReqVO) {
51 - return success(crmFollowUpRecordService.createFollowUpRecord(createReqVO)); 51 + return success(followUpRecordService.createFollowUpRecord(createReqVO));
52 } 52 }
53 53
54 @DeleteMapping("/delete") 54 @DeleteMapping("/delete")
@@ -56,7 +56,7 @@ public class CrmFollowUpRecordController { @@ -56,7 +56,7 @@ public class CrmFollowUpRecordController {
56 @Parameter(name = "id", description = "编号", required = true) 56 @Parameter(name = "id", description = "编号", required = true)
57 @PreAuthorize("@ss.hasPermission('crm:follow-up-record:delete')") 57 @PreAuthorize("@ss.hasPermission('crm:follow-up-record:delete')")
58 public CommonResult<Boolean> deleteFollowUpRecord(@RequestParam("id") Long id) { 58 public CommonResult<Boolean> deleteFollowUpRecord(@RequestParam("id") Long id) {
59 - crmFollowUpRecordService.deleteFollowUpRecord(id, getLoginUserId()); 59 + followUpRecordService.deleteFollowUpRecord(id, getLoginUserId());
60 return success(true); 60 return success(true);
61 } 61 }
62 62
@@ -65,7 +65,7 @@ public class CrmFollowUpRecordController { @@ -65,7 +65,7 @@ public class CrmFollowUpRecordController {
65 @Parameter(name = "id", description = "编号", required = true, example = "1024") 65 @Parameter(name = "id", description = "编号", required = true, example = "1024")
66 @PreAuthorize("@ss.hasPermission('crm:follow-up-record:query')") 66 @PreAuthorize("@ss.hasPermission('crm:follow-up-record:query')")
67 public CommonResult<CrmFollowUpRecordRespVO> getFollowUpRecord(@RequestParam("id") Long id) { 67 public CommonResult<CrmFollowUpRecordRespVO> getFollowUpRecord(@RequestParam("id") Long id) {
68 - CrmFollowUpRecordDO followUpRecord = crmFollowUpRecordService.getFollowUpRecord(id); 68 + CrmFollowUpRecordDO followUpRecord = followUpRecordService.getFollowUpRecord(id);
69 return success(BeanUtils.toBean(followUpRecord, CrmFollowUpRecordRespVO.class)); 69 return success(BeanUtils.toBean(followUpRecord, CrmFollowUpRecordRespVO.class));
70 } 70 }
71 71
@@ -73,7 +73,7 @@ public class CrmFollowUpRecordController { @@ -73,7 +73,7 @@ public class CrmFollowUpRecordController {
73 @Operation(summary = "获得跟进记录分页") 73 @Operation(summary = "获得跟进记录分页")
74 @PreAuthorize("@ss.hasPermission('crm:follow-up-record:query')") 74 @PreAuthorize("@ss.hasPermission('crm:follow-up-record:query')")
75 public CommonResult<PageResult<CrmFollowUpRecordRespVO>> getFollowUpRecordPage(@Valid CrmFollowUpRecordPageReqVO pageReqVO) { 75 public CommonResult<PageResult<CrmFollowUpRecordRespVO>> getFollowUpRecordPage(@Valid CrmFollowUpRecordPageReqVO pageReqVO) {
76 - PageResult<CrmFollowUpRecordDO> pageResult = crmFollowUpRecordService.getFollowUpRecordPage(pageReqVO); 76 + PageResult<CrmFollowUpRecordDO> pageResult = followUpRecordService.getFollowUpRecordPage(pageReqVO);
77 /// 拼接数据 77 /// 拼接数据
78 Map<Long, CrmContactDO> contactMap = convertMap(contactService.getContactList( 78 Map<Long, CrmContactDO> contactMap = convertMap(contactService.getContactList(
79 convertSetByFlatMap(pageResult.getList(), item -> item.getContactIds().stream())), CrmContactDO::getId); 79 convertSetByFlatMap(pageResult.getList(), item -> item.getContactIds().stream())), CrmContactDO::getId);
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/business/bo/CrmBusinessUpdateFollowUpReqBO.java
@@ -7,6 +7,7 @@ import lombok.Data; @@ -7,6 +7,7 @@ import lombok.Data;
7 7
8 import java.time.LocalDateTime; 8 import java.time.LocalDateTime;
9 9
  10 +// TODO @puhui999:是不是搞个通用的 ReqBO 就好了
10 /** 11 /**
11 * 商机跟进信息 Update Req BO 12 * 商机跟进信息 Update Req BO
12 * 13 *
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/clue/bo/CrmClueUpdateFollowUpReqBO.java
@@ -7,6 +7,7 @@ import lombok.Data; @@ -7,6 +7,7 @@ import lombok.Data;
7 7
8 import java.time.LocalDateTime; 8 import java.time.LocalDateTime;
9 9
  10 +// TODO @puhui999:是不是搞个通用的 ReqBO 就好了
10 /** 11 /**
11 * 线索跟进信息 Update Req BO 12 * 线索跟进信息 Update Req BO
12 * 13 *
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/contact/CrmContactService.java
@@ -65,7 +65,6 @@ public interface CrmContactService { @@ -65,7 +65,6 @@ public interface CrmContactService {
65 */ 65 */
66 void updateContactFollowUpBatch(List<CrmContactUpdateFollowUpReqBO> updateFollowUpReqBOList); 66 void updateContactFollowUpBatch(List<CrmContactUpdateFollowUpReqBO> updateFollowUpReqBOList);
67 67
68 -  
69 /** 68 /**
70 * 获得联系人 69 * 获得联系人
71 * 70 *
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/contact/bo/CrmContactUpdateFollowUpReqBO.java
@@ -7,6 +7,7 @@ import lombok.Data; @@ -7,6 +7,7 @@ import lombok.Data;
7 7
8 import java.time.LocalDateTime; 8 import java.time.LocalDateTime;
9 9
  10 +// TODO @puhui999:是不是搞个通用的 ReqBO 就好了
10 /** 11 /**
11 * 联系人跟进信息 Update Req BO 12 * 联系人跟进信息 Update Req BO
12 * 13 *
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/contract/bo/CrmContractUpdateFollowUpReqBO.java
@@ -7,6 +7,7 @@ import lombok.Data; @@ -7,6 +7,7 @@ import lombok.Data;
7 7
8 import java.time.LocalDateTime; 8 import java.time.LocalDateTime;
9 9
  10 +// TODO @puhui999:是不是搞个通用的 ReqBO 就好了
10 /** 11 /**
11 * 合同跟进信息 Update Req BO 12 * 合同跟进信息 Update Req BO
12 * 13 *
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerServiceImpl.java
@@ -227,15 +227,16 @@ public class CrmCustomerServiceImpl implements CrmCustomerService { @@ -227,15 +227,16 @@ public class CrmCustomerServiceImpl implements CrmCustomerService {
227 // 1.3. 校验客户是否锁定 227 // 1.3. 校验客户是否锁定
228 validateCustomerIsLocked(customer, true); 228 validateCustomerIsLocked(customer, true);
229 229
230 - // 2. 设置负责人为 NULL 230 + // 2.1 设置负责人为 NULL
231 int updateOwnerUserIncr = customerMapper.updateOwnerUserIdById(customer.getId(), null); 231 int updateOwnerUserIncr = customerMapper.updateOwnerUserIdById(customer.getId(), null);
232 if (updateOwnerUserIncr == 0) { 232 if (updateOwnerUserIncr == 0) {
233 throw exception(CUSTOMER_UPDATE_OWNER_USER_FAIL); 233 throw exception(CUSTOMER_UPDATE_OWNER_USER_FAIL);
234 } 234 }
235 - // 3. 删除负责人数据权限 235 + // 2.2 删除负责人数据权限
236 permissionService.deletePermission(CrmBizTypeEnum.CRM_CUSTOMER.getType(), customer.getId(), 236 permissionService.deletePermission(CrmBizTypeEnum.CRM_CUSTOMER.getType(), customer.getId(),
237 CrmPermissionLevelEnum.OWNER.getLevel()); 237 CrmPermissionLevelEnum.OWNER.getLevel());
238 - // 联系人的负责人,也要设置为 null;这块和领取是对应的;因为领取后,负责人也要关联过来; 238 +
  239 + // 3. 联系人的负责人,也要设置为 null。因为:因为领取后,负责人也要关联过来,这块和 receiveCustomer 是对应的
239 contactService.updateOwnerUserIdByCustomerId(customer.getId(), null); 240 contactService.updateOwnerUserIdByCustomerId(customer.getId(), null);
240 241
241 // 记录操作日志上下文 242 // 记录操作日志上下文
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/bo/CrmCustomerUpdateFollowUpReqBO.java
@@ -6,6 +6,7 @@ import lombok.Data; @@ -6,6 +6,7 @@ import lombok.Data;
6 6
7 import java.time.LocalDateTime; 7 import java.time.LocalDateTime;
8 8
  9 +// TODO @puhui999:是不是搞个通用的 ReqBO 就好了
9 /** 10 /**
10 * 跟进信息 Update Req BO 11 * 跟进信息 Update Req BO
11 * 12 *
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/followup/CrmFollowUpRecordServiceImpl.java
@@ -59,10 +59,11 @@ public class CrmFollowUpRecordServiceImpl implements CrmFollowUpRecordService { @@ -59,10 +59,11 @@ public class CrmFollowUpRecordServiceImpl implements CrmFollowUpRecordService {
59 crmFollowUpRecordMapper.insert(followUpRecord); 59 crmFollowUpRecordMapper.insert(followUpRecord);
60 60
61 LocalDateTime now = LocalDateTime.now(); 61 LocalDateTime now = LocalDateTime.now();
62 - // 更新 bizId 对应的记录; 62 + // 2. 更新 bizId 对应的记录;
63 followUpHandlers.forEach(handler -> handler.execute(followUpRecord, now)); 63 followUpHandlers.forEach(handler -> handler.execute(followUpRecord, now));
64 - // 更新 contactIds 对应的记录 64 + // 3.1 更新 contactIds 对应的记录
65 if (CollUtil.isNotEmpty(createReqVO.getContactIds())) { 65 if (CollUtil.isNotEmpty(createReqVO.getContactIds())) {
  66 + // TODO @puhui999:可以用链式设置哈
66 contactService.updateContactFollowUpBatch(convertList(createReqVO.getContactIds(), contactId -> { 67 contactService.updateContactFollowUpBatch(convertList(createReqVO.getContactIds(), contactId -> {
67 CrmContactUpdateFollowUpReqBO crmContactUpdateFollowUpReqBO = new CrmContactUpdateFollowUpReqBO(); 68 CrmContactUpdateFollowUpReqBO crmContactUpdateFollowUpReqBO = new CrmContactUpdateFollowUpReqBO();
68 crmContactUpdateFollowUpReqBO.setId(contactId).setContactNextTime(followUpRecord.getNextTime()) 69 crmContactUpdateFollowUpReqBO.setId(contactId).setContactNextTime(followUpRecord.getNextTime())
@@ -70,7 +71,7 @@ public class CrmFollowUpRecordServiceImpl implements CrmFollowUpRecordService { @@ -70,7 +71,7 @@ public class CrmFollowUpRecordServiceImpl implements CrmFollowUpRecordService {
70 return crmContactUpdateFollowUpReqBO; 71 return crmContactUpdateFollowUpReqBO;
71 })); 72 }));
72 } 73 }
73 - // 需要更新 businessIds、contactIds 对应的记录 74 + // 3.2 需要更新 businessIds、contactIds 对应的记录
74 if (CollUtil.isNotEmpty(createReqVO.getBusinessIds())) { 75 if (CollUtil.isNotEmpty(createReqVO.getBusinessIds())) {
75 businessService.updateContactFollowUpBatch(convertList(createReqVO.getBusinessIds(), businessId -> { 76 businessService.updateContactFollowUpBatch(convertList(createReqVO.getBusinessIds(), businessId -> {
76 CrmBusinessUpdateFollowUpReqBO crmBusinessUpdateFollowUpReqBO = new CrmBusinessUpdateFollowUpReqBO(); 77 CrmBusinessUpdateFollowUpReqBO crmBusinessUpdateFollowUpReqBO = new CrmBusinessUpdateFollowUpReqBO();
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/followup/handle/CrmFollowUpHandler.java
@@ -11,6 +11,7 @@ import java.time.LocalDateTime; @@ -11,6 +11,7 @@ import java.time.LocalDateTime;
11 */ 11 */
12 public interface CrmFollowUpHandler { 12 public interface CrmFollowUpHandler {
13 13
  14 + // TODO @puhui999:需要考虑,下次联系时间为空;
14 /** 15 /**
15 * 执行更新 16 * 执行更新
16 * 17 *