Commit d9b0c9b4cf1f1620c1d5e08075a6b6ddd83c3597
1 parent
df2441de
✨ CRM:完善商机的跟进记录
Showing
9 changed files
with
54 additions
and
42 deletions
yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/ErrorCodeConstants.java
| @@ -20,7 +20,7 @@ public interface ErrorCodeConstants { | @@ -20,7 +20,7 @@ public interface ErrorCodeConstants { | ||
| 20 | 20 | ||
| 21 | // ========== 商机管理 1-020-002-000 ========== | 21 | // ========== 商机管理 1-020-002-000 ========== |
| 22 | ErrorCode BUSINESS_NOT_EXISTS = new ErrorCode(1_020_002_000, "商机不存在"); | 22 | ErrorCode BUSINESS_NOT_EXISTS = new ErrorCode(1_020_002_000, "商机不存在"); |
| 23 | - ErrorCode BUSINESS_CONTRACT_EXISTS = new ErrorCode(1_020_002_001, "商机已关联合同,不能删除"); | 23 | + ErrorCode BUSINESS_DELETE_FAIL_CONTRACT_EXISTS = new ErrorCode(1_020_002_001, "商机已关联合同,不能删除"); |
| 24 | 24 | ||
| 25 | // ========== 联系人管理 1-020-003-000 ========== | 25 | // ========== 联系人管理 1-020-003-000 ========== |
| 26 | ErrorCode CONTACT_NOT_EXISTS = new ErrorCode(1_020_003_000, "联系人不存在"); | 26 | ErrorCode CONTACT_NOT_EXISTS = new ErrorCode(1_020_003_000, "联系人不存在"); |
yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/LogRecordConstants.java
| @@ -91,6 +91,8 @@ public interface LogRecordConstants { | @@ -91,6 +91,8 @@ public interface LogRecordConstants { | ||
| 91 | String CRM_BUSINESS_DELETE_SUCCESS = "删除了商机【{{#businessName}}】"; | 91 | String CRM_BUSINESS_DELETE_SUCCESS = "删除了商机【{{#businessName}}】"; |
| 92 | String CRM_BUSINESS_TRANSFER_SUB_TYPE = "转移商机"; | 92 | String CRM_BUSINESS_TRANSFER_SUB_TYPE = "转移商机"; |
| 93 | String CRM_BUSINESS_TRANSFER_SUCCESS = "将商机【{{#business.name}}】的负责人从【{getAdminUserById{#business.ownerUserId}}】变更为了【{getAdminUserById{#reqVO.newOwnerUserId}}】"; | 93 | String CRM_BUSINESS_TRANSFER_SUCCESS = "将商机【{{#business.name}}】的负责人从【{getAdminUserById{#business.ownerUserId}}】变更为了【{getAdminUserById{#reqVO.newOwnerUserId}}】"; |
| 94 | + String CRM_BUSINESS_FOLLOW_UP_SUB_TYPE = "商机跟进"; | ||
| 95 | + String CRM_BUSINESS_FOLLOW_UP_SUCCESS = "商机跟进【{{#businessName}}】"; | ||
| 94 | 96 | ||
| 95 | // ======================= CRM_CONTRACT 合同 ======================= | 97 | // ======================= CRM_CONTRACT 合同 ======================= |
| 96 | 98 |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/business/vo/business/CrmBusinessRespVO.java
| @@ -65,7 +65,7 @@ public class CrmBusinessRespVO { | @@ -65,7 +65,7 @@ public class CrmBusinessRespVO { | ||
| 65 | private String statusName; | 65 | private String statusName; |
| 66 | 66 | ||
| 67 | @Schema | 67 | @Schema |
| 68 | - @ExcelProperty("1赢单2输单3无效") | 68 | + @ExcelProperty("结束状态") |
| 69 | private Integer endStatus; | 69 | private Integer endStatus; |
| 70 | 70 | ||
| 71 | @ExcelProperty("结束时的备注") | 71 | @ExcelProperty("结束时的备注") |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/business/CrmBusinessConvert.java
| 1 | package cn.iocoder.yudao.module.crm.convert.business; | 1 | package cn.iocoder.yudao.module.crm.convert.business; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | ||
| 4 | import cn.iocoder.yudao.module.crm.controller.admin.business.vo.business.CrmBusinessTransferReqVO; | 3 | import cn.iocoder.yudao.module.crm.controller.admin.business.vo.business.CrmBusinessTransferReqVO; |
| 5 | -import cn.iocoder.yudao.module.crm.dal.dataobject.business.CrmBusinessDO; | ||
| 6 | -import cn.iocoder.yudao.module.crm.service.followup.bo.CrmUpdateFollowUpReqBO; | ||
| 7 | import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionTransferReqBO; | 4 | import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionTransferReqBO; |
| 8 | import org.mapstruct.Mapper; | 5 | import org.mapstruct.Mapper; |
| 9 | import org.mapstruct.Mapping; | 6 | import org.mapstruct.Mapping; |
| 10 | import org.mapstruct.factory.Mappers; | 7 | import org.mapstruct.factory.Mappers; |
| 11 | 8 | ||
| 12 | -import java.util.List; | ||
| 13 | - | ||
| 14 | /** | 9 | /** |
| 15 | * 商机 Convert | 10 | * 商机 Convert |
| 16 | * | 11 | * |
| @@ -24,11 +19,4 @@ public interface CrmBusinessConvert { | @@ -24,11 +19,4 @@ public interface CrmBusinessConvert { | ||
| 24 | @Mapping(target = "bizId", source = "reqVO.id") | 19 | @Mapping(target = "bizId", source = "reqVO.id") |
| 25 | CrmPermissionTransferReqBO convert(CrmBusinessTransferReqVO reqVO, Long userId); | 20 | CrmPermissionTransferReqBO convert(CrmBusinessTransferReqVO reqVO, Long userId); |
| 26 | 21 | ||
| 27 | - @Mapping(target = "id", source = "reqBO.bizId") | ||
| 28 | - CrmBusinessDO convert(CrmUpdateFollowUpReqBO reqBO); | ||
| 29 | - | ||
| 30 | - default List<CrmBusinessDO> convertList(List<CrmUpdateFollowUpReqBO> list) { | ||
| 31 | - return CollectionUtils.convertList(list, INSTANCE::convert); | ||
| 32 | - } | ||
| 33 | - | ||
| 34 | } | 22 | } |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/business/CrmBusinessService.java
| @@ -9,9 +9,9 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.business.CrmBusinessProductDO; | @@ -9,9 +9,9 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.business.CrmBusinessProductDO; | ||
| 9 | import cn.iocoder.yudao.module.crm.dal.dataobject.contact.CrmContactDO; | 9 | import cn.iocoder.yudao.module.crm.dal.dataobject.contact.CrmContactDO; |
| 10 | import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerDO; | 10 | import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerDO; |
| 11 | import cn.iocoder.yudao.module.crm.service.business.bo.CrmBusinessUpdateProductReqBO; | 11 | import cn.iocoder.yudao.module.crm.service.business.bo.CrmBusinessUpdateProductReqBO; |
| 12 | -import cn.iocoder.yudao.module.crm.service.followup.bo.CrmUpdateFollowUpReqBO; | ||
| 13 | import jakarta.validation.Valid; | 12 | import jakarta.validation.Valid; |
| 14 | 13 | ||
| 14 | +import java.time.LocalDateTime; | ||
| 15 | import java.util.Collection; | 15 | import java.util.Collection; |
| 16 | import java.util.List; | 16 | import java.util.List; |
| 17 | 17 | ||
| @@ -41,9 +41,19 @@ public interface CrmBusinessService { | @@ -41,9 +41,19 @@ public interface CrmBusinessService { | ||
| 41 | /** | 41 | /** |
| 42 | * 更新商机相关跟进信息 | 42 | * 更新商机相关跟进信息 |
| 43 | * | 43 | * |
| 44 | - * @param updateFollowUpReqBOList 跟进信息 | 44 | + * @param id 编号 |
| 45 | + * @param contactNextTime 下次联系时间 | ||
| 46 | + * @param contactLastContent 最后联系内容 | ||
| 47 | + */ | ||
| 48 | + void updateBusinessFollowUp(Long id, LocalDateTime contactNextTime, String contactLastContent); | ||
| 49 | + | ||
| 50 | + /** | ||
| 51 | + * 更新商机的下次联系时间 | ||
| 52 | + * | ||
| 53 | + * @param ids 编号数组 | ||
| 54 | + * @param contactNextTime 下次联系时间 | ||
| 45 | */ | 55 | */ |
| 46 | - void updateBusinessFollowUpBatch(List<CrmUpdateFollowUpReqBO> updateFollowUpReqBOList); | 56 | + void updateBusinessContactNextTime(Collection<Long> ids, LocalDateTime contactNextTime); |
| 47 | 57 | ||
| 48 | /** | 58 | /** |
| 49 | * 删除商机 | 59 | * 删除商机 |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/business/CrmBusinessServiceImpl.java
| @@ -22,7 +22,6 @@ import cn.iocoder.yudao.module.crm.service.contact.CrmContactBusinessService; | @@ -22,7 +22,6 @@ import cn.iocoder.yudao.module.crm.service.contact.CrmContactBusinessService; | ||
| 22 | import cn.iocoder.yudao.module.crm.service.contact.CrmContactService; | 22 | import cn.iocoder.yudao.module.crm.service.contact.CrmContactService; |
| 23 | import cn.iocoder.yudao.module.crm.service.contract.CrmContractService; | 23 | import cn.iocoder.yudao.module.crm.service.contract.CrmContractService; |
| 24 | import cn.iocoder.yudao.module.crm.service.customer.CrmCustomerService; | 24 | import cn.iocoder.yudao.module.crm.service.customer.CrmCustomerService; |
| 25 | -import cn.iocoder.yudao.module.crm.service.followup.bo.CrmUpdateFollowUpReqBO; | ||
| 26 | import cn.iocoder.yudao.module.crm.service.permission.CrmPermissionService; | 25 | import cn.iocoder.yudao.module.crm.service.permission.CrmPermissionService; |
| 27 | import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionCreateReqBO; | 26 | import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionCreateReqBO; |
| 28 | import cn.iocoder.yudao.module.crm.service.product.CrmProductService; | 27 | import cn.iocoder.yudao.module.crm.service.product.CrmProductService; |
| @@ -37,12 +36,13 @@ import org.springframework.transaction.annotation.Transactional; | @@ -37,12 +36,13 @@ import org.springframework.transaction.annotation.Transactional; | ||
| 37 | import org.springframework.validation.annotation.Validated; | 36 | import org.springframework.validation.annotation.Validated; |
| 38 | 37 | ||
| 39 | import java.math.BigDecimal; | 38 | import java.math.BigDecimal; |
| 39 | +import java.time.LocalDateTime; | ||
| 40 | import java.util.Collection; | 40 | import java.util.Collection; |
| 41 | import java.util.List; | 41 | import java.util.List; |
| 42 | 42 | ||
| 43 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | 43 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 44 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; | 44 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; |
| 45 | -import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.BUSINESS_CONTRACT_EXISTS; | 45 | +import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.BUSINESS_DELETE_FAIL_CONTRACT_EXISTS; |
| 46 | import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.BUSINESS_NOT_EXISTS; | 46 | import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.BUSINESS_NOT_EXISTS; |
| 47 | import static cn.iocoder.yudao.module.crm.enums.LogRecordConstants.*; | 47 | import static cn.iocoder.yudao.module.crm.enums.LogRecordConstants.*; |
| 48 | 48 | ||
| @@ -139,6 +139,28 @@ public class CrmBusinessServiceImpl implements CrmBusinessService { | @@ -139,6 +139,28 @@ public class CrmBusinessServiceImpl implements CrmBusinessService { | ||
| 139 | LogRecordContext.putVariable("businessName", oldBusiness.getName()); | 139 | LogRecordContext.putVariable("businessName", oldBusiness.getName()); |
| 140 | } | 140 | } |
| 141 | 141 | ||
| 142 | + @Override | ||
| 143 | + @LogRecord(type = CRM_BUSINESS_TYPE, subType = CRM_BUSINESS_FOLLOW_UP_SUB_TYPE, bizNo = "{{#id}", | ||
| 144 | + success = CRM_BUSINESS_FOLLOW_UP_SUCCESS) | ||
| 145 | + @CrmPermission(bizType = CrmBizTypeEnum.CRM_BUSINESS, bizId = "#id", level = CrmPermissionLevelEnum.WRITE) | ||
| 146 | + public void updateBusinessFollowUp(Long id, LocalDateTime contactNextTime, String contactLastContent) { | ||
| 147 | + // 1. 校验存在 | ||
| 148 | + CrmBusinessDO business = validateBusinessExists(id); | ||
| 149 | + | ||
| 150 | + // 2. 更新联系人的跟进信息 | ||
| 151 | + businessMapper.updateById(new CrmBusinessDO().setId(id).setFollowUpStatus(true).setContactNextTime(contactNextTime) | ||
| 152 | + .setContactLastTime(LocalDateTime.now())); | ||
| 153 | + | ||
| 154 | + // 3. 记录操作日志上下文 | ||
| 155 | + LogRecordContext.putVariable("businessName", business.getName()); | ||
| 156 | + } | ||
| 157 | + | ||
| 158 | + @Override | ||
| 159 | + @CrmPermission(bizType = CrmBizTypeEnum.CRM_BUSINESS, bizId = "#ids", level = CrmPermissionLevelEnum.WRITE) | ||
| 160 | + public void updateBusinessContactNextTime(Collection<Long> ids, LocalDateTime contactNextTime) { | ||
| 161 | + businessMapper.updateBatch(convertList(ids, id -> new CrmBusinessDO().setId(id).setContactNextTime(contactNextTime))); | ||
| 162 | + } | ||
| 163 | + | ||
| 142 | private void updateBusinessProduct(Long id, List<CrmBusinessProductDO> newList) { | 164 | private void updateBusinessProduct(Long id, List<CrmBusinessProductDO> newList) { |
| 143 | List<CrmBusinessProductDO> oldList = businessProductMapper.selectListByBusinessId(id); | 165 | List<CrmBusinessProductDO> oldList = businessProductMapper.selectListByBusinessId(id); |
| 144 | List<List<CrmBusinessProductDO>> diffList = diffList(oldList, newList, // id 不同,就认为是不同的记录 | 166 | List<List<CrmBusinessProductDO>> diffList = diffList(oldList, newList, // id 不同,就认为是不同的记录 |
| @@ -190,19 +212,14 @@ public class CrmBusinessServiceImpl implements CrmBusinessService { | @@ -190,19 +212,14 @@ public class CrmBusinessServiceImpl implements CrmBusinessService { | ||
| 190 | } | 212 | } |
| 191 | 213 | ||
| 192 | @Override | 214 | @Override |
| 193 | - public void updateBusinessFollowUpBatch(List<CrmUpdateFollowUpReqBO> updateFollowUpReqBOList) { | ||
| 194 | - businessMapper.updateBatch(CrmBusinessConvert.INSTANCE.convertList(updateFollowUpReqBOList)); | ||
| 195 | - } | ||
| 196 | - | ||
| 197 | - @Override | ||
| 198 | @Transactional(rollbackFor = Exception.class) | 215 | @Transactional(rollbackFor = Exception.class) |
| 199 | @LogRecord(type = CRM_BUSINESS_TYPE, subType = CRM_BUSINESS_DELETE_SUB_TYPE, bizNo = "{{#id}}", | 216 | @LogRecord(type = CRM_BUSINESS_TYPE, subType = CRM_BUSINESS_DELETE_SUB_TYPE, bizNo = "{{#id}}", |
| 200 | success = CRM_BUSINESS_DELETE_SUCCESS) | 217 | success = CRM_BUSINESS_DELETE_SUCCESS) |
| 201 | @CrmPermission(bizType = CrmBizTypeEnum.CRM_BUSINESS, bizId = "#id", level = CrmPermissionLevelEnum.OWNER) | 218 | @CrmPermission(bizType = CrmBizTypeEnum.CRM_BUSINESS, bizId = "#id", level = CrmPermissionLevelEnum.OWNER) |
| 202 | public void deleteBusiness(Long id) { | 219 | public void deleteBusiness(Long id) { |
| 203 | - // 校验存在 | 220 | + // 1.1 校验存在 |
| 204 | CrmBusinessDO business = validateBusinessExists(id); | 221 | CrmBusinessDO business = validateBusinessExists(id); |
| 205 | - // TODO @商机待定:需要校验有没关联合同。CrmContractDO 的 businessId 字段 | 222 | + // 1.2 校验是否关联合同 |
| 206 | validateContractExists(id); | 223 | validateContractExists(id); |
| 207 | 224 | ||
| 208 | // 删除 | 225 | // 删除 |
| @@ -222,7 +239,7 @@ public class CrmBusinessServiceImpl implements CrmBusinessService { | @@ -222,7 +239,7 @@ public class CrmBusinessServiceImpl implements CrmBusinessService { | ||
| 222 | */ | 239 | */ |
| 223 | private void validateContractExists(Long businessId) { | 240 | private void validateContractExists(Long businessId) { |
| 224 | if (contractService.getContractCountByBusinessId(businessId) > 0) { | 241 | if (contractService.getContractCountByBusinessId(businessId) > 0) { |
| 225 | - throw exception(BUSINESS_CONTRACT_EXISTS); | 242 | + throw exception(BUSINESS_DELETE_FAIL_CONTRACT_EXISTS); |
| 226 | } | 243 | } |
| 227 | } | 244 | } |
| 228 | 245 |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/contact/CrmContactService.java
| @@ -72,13 +72,12 @@ public interface CrmContactService { | @@ -72,13 +72,12 @@ public interface CrmContactService { | ||
| 72 | void updateContactFollowUp(Long id, LocalDateTime contactNextTime, String contactLastContent); | 72 | void updateContactFollowUp(Long id, LocalDateTime contactNextTime, String contactLastContent); |
| 73 | 73 | ||
| 74 | /** | 74 | /** |
| 75 | - * 更新联系人相关跟进信息 | 75 | + * 更新联系人的下次联系时间 |
| 76 | * | 76 | * |
| 77 | * @param ids 编号数组 | 77 | * @param ids 编号数组 |
| 78 | * @param contactNextTime 下次联系时间 | 78 | * @param contactNextTime 下次联系时间 |
| 79 | - * @param contactLastContent 最后联系内容 | ||
| 80 | */ | 79 | */ |
| 81 | - void updateContactFollowUpBatch(Collection<Long> ids, LocalDateTime contactNextTime, String contactLastContent); | 80 | + void updateContactContactNextTime(Collection<Long> ids, LocalDateTime contactNextTime); |
| 82 | 81 | ||
| 83 | /** | 82 | /** |
| 84 | * 获得联系人 | 83 | * 获得联系人 |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/contact/CrmContactServiceImpl.java
| @@ -225,7 +225,7 @@ public class CrmContactServiceImpl implements CrmContactService { | @@ -225,7 +225,7 @@ public class CrmContactServiceImpl implements CrmContactService { | ||
| 225 | success = CRM_CONTACT_FOLLOW_UP_SUCCESS) | 225 | success = CRM_CONTACT_FOLLOW_UP_SUCCESS) |
| 226 | @CrmPermission(bizType = CrmBizTypeEnum.CRM_CONTACT, bizId = "#id", level = CrmPermissionLevelEnum.WRITE) | 226 | @CrmPermission(bizType = CrmBizTypeEnum.CRM_CONTACT, bizId = "#id", level = CrmPermissionLevelEnum.WRITE) |
| 227 | public void updateContactFollowUp(Long id, LocalDateTime contactNextTime, String contactLastContent) { | 227 | public void updateContactFollowUp(Long id, LocalDateTime contactNextTime, String contactLastContent) { |
| 228 | - // 1.1 校验存在 | 228 | + // 1. 校验存在 |
| 229 | CrmContactDO contact = validateContactExists(id); | 229 | CrmContactDO contact = validateContactExists(id); |
| 230 | 230 | ||
| 231 | // 2. 更新联系人的跟进信息 | 231 | // 2. 更新联系人的跟进信息 |
| @@ -238,9 +238,8 @@ public class CrmContactServiceImpl implements CrmContactService { | @@ -238,9 +238,8 @@ public class CrmContactServiceImpl implements CrmContactService { | ||
| 238 | 238 | ||
| 239 | @Override | 239 | @Override |
| 240 | @CrmPermission(bizType = CrmBizTypeEnum.CRM_CONTACT, bizId = "#ids", level = CrmPermissionLevelEnum.WRITE) | 240 | @CrmPermission(bizType = CrmBizTypeEnum.CRM_CONTACT, bizId = "#ids", level = CrmPermissionLevelEnum.WRITE) |
| 241 | - public void updateContactFollowUpBatch(Collection<Long> ids, LocalDateTime contactNextTime, String contactLastContent) { | ||
| 242 | - contactMapper.updateBatch(convertList(ids, id -> new CrmContactDO().setId(id).setContactLastTime(LocalDateTime.now()) | ||
| 243 | - .setContactNextTime(contactNextTime).setContactLastContent(contactLastContent))); | 241 | + public void updateContactContactNextTime(Collection<Long> ids, LocalDateTime contactNextTime) { |
| 242 | + contactMapper.updateBatch(convertList(ids, id -> new CrmContactDO().setId(id).setContactNextTime(contactNextTime))); | ||
| 244 | } | 243 | } |
| 245 | 244 | ||
| 246 | //======================= 查询相关 ======================= | 245 | //======================= 查询相关 ======================= |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/followup/CrmFollowUpRecordServiceImpl.java
| @@ -26,11 +26,9 @@ import org.springframework.validation.annotation.Validated; | @@ -26,11 +26,9 @@ import org.springframework.validation.annotation.Validated; | ||
| 26 | 26 | ||
| 27 | import java.time.LocalDateTime; | 27 | import java.time.LocalDateTime; |
| 28 | import java.util.Collection; | 28 | import java.util.Collection; |
| 29 | -import java.util.Collections; | ||
| 30 | import java.util.List; | 29 | import java.util.List; |
| 31 | 30 | ||
| 32 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | 31 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 33 | -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; | ||
| 34 | import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.FOLLOW_UP_RECORD_DELETE_DENIED; | 32 | import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.FOLLOW_UP_RECORD_DELETE_DENIED; |
| 35 | import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.FOLLOW_UP_RECORD_NOT_EXISTS; | 33 | import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.FOLLOW_UP_RECORD_NOT_EXISTS; |
| 36 | 34 | ||
| @@ -77,7 +75,7 @@ public class CrmFollowUpRecordServiceImpl implements CrmFollowUpRecordService { | @@ -77,7 +75,7 @@ public class CrmFollowUpRecordServiceImpl implements CrmFollowUpRecordService { | ||
| 77 | .setContactLastTime(LocalDateTime.now()) | 75 | .setContactLastTime(LocalDateTime.now()) |
| 78 | .setContactNextTime(record.getNextTime()).setContactLastContent(record.getContent()); | 76 | .setContactNextTime(record.getNextTime()).setContactLastContent(record.getContent()); |
| 79 | if (ObjUtil.equal(CrmBizTypeEnum.CRM_BUSINESS.getType(), record.getBizType())) { // 更新商机跟进信息 | 77 | if (ObjUtil.equal(CrmBizTypeEnum.CRM_BUSINESS.getType(), record.getBizType())) { // 更新商机跟进信息 |
| 80 | - businessService.updateBusinessFollowUpBatch(Collections.singletonList(updateFollowUpReqBO)); | 78 | + businessService.updateBusinessFollowUp(record.getBizId(), record.getNextTime(), record.getContent()); |
| 81 | } | 79 | } |
| 82 | if (ObjUtil.equal(CrmBizTypeEnum.CRM_CLUE.getType(), record.getBizType())) { // 更新线索跟进信息 | 80 | if (ObjUtil.equal(CrmBizTypeEnum.CRM_CLUE.getType(), record.getBizType())) { // 更新线索跟进信息 |
| 83 | clueService.updateClueFollowUp(record.getBizId(), record.getNextTime(), record.getContent()); | 81 | clueService.updateClueFollowUp(record.getBizId(), record.getNextTime(), record.getContent()); |
| @@ -92,14 +90,13 @@ public class CrmFollowUpRecordServiceImpl implements CrmFollowUpRecordService { | @@ -92,14 +90,13 @@ public class CrmFollowUpRecordServiceImpl implements CrmFollowUpRecordService { | ||
| 92 | customerService.updateCustomerFollowUp(record.getBizId(), record.getNextTime(), record.getContent()); | 90 | customerService.updateCustomerFollowUp(record.getBizId(), record.getNextTime(), record.getContent()); |
| 93 | } | 91 | } |
| 94 | 92 | ||
| 95 | - // 3.1 更新 contactIds 对应的记录,不更新 lastTime 和 lastContent | 93 | + // 3.1 更新 contactIds 对应的记录,只更新 nextTime |
| 96 | if (CollUtil.isNotEmpty(createReqVO.getContactIds())) { | 94 | if (CollUtil.isNotEmpty(createReqVO.getContactIds())) { |
| 97 | - contactService.updateContactFollowUpBatch(createReqVO.getContactIds(), null, null); | 95 | + contactService.updateContactContactNextTime(createReqVO.getContactIds(), createReqVO.getNextTime()); |
| 98 | } | 96 | } |
| 99 | - // 3.2 需要更新 businessIds 对应的记录,不更新 lastTime 和 lastContent | 97 | + // 3.2 需要更新 businessIds 对应的记录,只更新 nextTime |
| 100 | if (CollUtil.isNotEmpty(createReqVO.getBusinessIds())) { | 98 | if (CollUtil.isNotEmpty(createReqVO.getBusinessIds())) { |
| 101 | - businessService.updateBusinessFollowUpBatch(convertList(createReqVO.getBusinessIds(), | ||
| 102 | - businessId -> updateFollowUpReqBO.setBizId(businessId).setContactLastTime(null).setContactLastContent(null))); | 99 | + businessService.updateBusinessContactNextTime(createReqVO.getBusinessIds(), createReqVO.getNextTime()); |
| 103 | } | 100 | } |
| 104 | return record.getId(); | 101 | return record.getId(); |
| 105 | } | 102 | } |