diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contact/CrmContactController.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contact/CrmContactController.java index 80e8b623b..dfb269c8f 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contact/CrmContactController.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contact/CrmContactController.java @@ -6,6 +6,7 @@ import cn.hutool.core.util.NumberUtil; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.number.NumberUtils; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; import cn.iocoder.yudao.module.crm.controller.admin.contact.vo.*; @@ -61,6 +62,7 @@ public class CrmContactController { @Resource private CrmContactBusinessService contactBusinessLinkService; + // TODO @zyna:CrmContactCreateReqVO、CrmContactUpdateReqVO、CrmContactRespVO 按照新的 VO 规范搞哈;可以参考 dept 模块 @PostMapping("/create") @Operation(summary = "创建联系人") @PreAuthorize("@ss.hasPermission('crm:contact:create')") @@ -110,10 +112,11 @@ public class CrmContactController { @Operation(summary = "获得联系人列表") @PreAuthorize("@ss.hasPermission('crm:contact:query')") public CommonResult> getSimpleContactList() { + // TODO @zyna:建议 contactService 单独搞个 list 接口哈 CrmContactPageReqVO pageReqVO = new CrmContactPageReqVO(); pageReqVO.setPageSize(PAGE_SIZE_NONE); List list = contactService.getContactPage(pageReqVO, getLoginUserId()).getList(); - return success(CrmContactConvert.INSTANCE.convertAllList(list)); + return success(BeanUtils.toBean(list, CrmContactSimpleRespVO.class)); } @GetMapping("/page") diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/contact/CrmContactConvert.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/contact/CrmContactConvert.java index 8d023618f..de248d2c6 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/contact/CrmContactConvert.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/contact/CrmContactConvert.java @@ -39,8 +39,6 @@ public interface CrmContactConvert { PageResult convertPage(PageResult page); - List convertAllList(List list); - @Mapping(target = "bizId", source = "reqVO.id") CrmPermissionTransferReqBO convert(CrmContactTransferReqVO reqVO, Long userId); diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/contact/CrmContactServiceImpl.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/contact/CrmContactServiceImpl.java index 520038008..d55ce447b 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/contact/CrmContactServiceImpl.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/contact/CrmContactServiceImpl.java @@ -7,7 +7,6 @@ import cn.iocoder.yudao.module.crm.controller.admin.contact.vo.*; import cn.iocoder.yudao.module.crm.convert.contact.CrmContactConvert; import cn.iocoder.yudao.module.crm.dal.dataobject.contact.CrmContactDO; import cn.iocoder.yudao.module.crm.dal.mysql.contact.CrmContactMapper; -import cn.iocoder.yudao.module.crm.dal.mysql.contactbusinesslink.CrmContactBusinessMapper; import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; import cn.iocoder.yudao.module.crm.enums.permission.CrmPermissionLevelEnum; import cn.iocoder.yudao.module.crm.framework.permission.core.annotations.CrmPermission; @@ -47,32 +46,35 @@ public class CrmContactServiceImpl implements CrmContactService { @Resource private AdminUserApi adminUserApi; - @Resource - private CrmContactBusinessMapper contactBusinessLinkMapper; - @Override @Transactional(rollbackFor = Exception.class) + // TODO @zyna:增加操作日志,可以参考 CustomerService;内容是 新建了联系人【名字】 public Long createContact(CrmContactCreateReqVO createReqVO, Long userId) { - // 1.1 校验 + // 1. 校验 validateRelationDataExists(createReqVO); - // 1.2 插入 + + // 2. 插入联系人 CrmContactDO contact = CrmContactConvert.INSTANCE.convert(createReqVO); contactMapper.insert(contact); - // 2. 创建数据权限 + // 3. 创建数据权限 crmPermissionService.createPermission(new CrmPermissionCreateReqBO().setUserId(userId) .setBizType(CrmBizTypeEnum.CRM_CONTACT.getType()).setBizId(contact.getId()) .setLevel(CrmPermissionLevelEnum.OWNER.getLevel())); + + // TODO @zyna:特殊逻辑:如果在【商机】详情那,点击【新增联系人】时,可以自动绑定商机 return contact.getId(); } @Override @CrmPermission(bizType = CrmBizTypeEnum.CRM_CONTACT, bizId = "#updateReqVO.id", level = CrmPermissionLevelEnum.WRITE) + // TODO @zyna:增加操作日志,可以参考 CustomerService;需要 diff 出字段 public void updateContact(CrmContactUpdateReqVO updateReqVO) { // 1. 校验存在 validateContactExists(updateReqVO.getId()); validateRelationDataExists(updateReqVO); - // 2. 更新 + + // 2. 更新联系人 CrmContactDO updateObj = CrmContactConvert.INSTANCE.convert(updateReqVO); contactMapper.updateById(updateObj); } @@ -102,10 +104,15 @@ public class CrmContactServiceImpl implements CrmContactService { public void deleteContact(Long id) { // 校验存在 validateContactExists(id); + // TODO @zyna:如果有关联的合同,不允许删除;Contract.contactId + // 删除 contactMapper.deleteById(id); // 删除数据权限 crmPermissionService.deletePermission(CrmBizTypeEnum.CRM_CONTACT.getType(), id); + // TODO @zyna:删除商机联系人关联 + + // TODO @puhui999:删除跟进记录 } private void validateContactExists(Long id) { @@ -140,6 +147,8 @@ public class CrmContactServiceImpl implements CrmContactService { } @Override + // TODO @puhui999:权限校验 + // TODO @puhui999:记录操作日志;将联系人【名字】转移给【新负责人】 public void transferContact(CrmContactTransferReqVO reqVO, Long userId) { // 1 校验联系人是否存在 validateContactExists(reqVO.getId());