Commit f587d4f756cbd7afa5f0e7efde8dc84539aa48ef
1 parent
93eabb4e
feat(member):收货地址 admin 接口回填 areaName
AddressRespVO 加 areaName 字段;AddressConvert 补 convert03 (@Mapping areaId→areaName,复用 convertAreaIdToAreaName/AreaUtils.format), convertList2 自动带出。/member/address/list 返回可读地区名,替代前端展示原始 areaId 编码
Showing
4 changed files
with
16 additions
and
1 deletions
yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/enums/ErrorCodeConstants.java
| ... | ... | @@ -26,6 +26,7 @@ public interface ErrorCodeConstants { |
| 26 | 26 | ErrorCode BUSINESS_DELETE_FAIL_CONTRACT_EXISTS = new ErrorCode(1_020_002_001, "商机已关联合同,不能删除"); |
| 27 | 27 | ErrorCode BUSINESS_UPDATE_STATUS_FAIL_END_STATUS = new ErrorCode(1_020_002_002, "更新商机状态失败,原因:已经是结束状态"); |
| 28 | 28 | ErrorCode BUSINESS_UPDATE_STATUS_FAIL_STATUS_EQUALS = new ErrorCode(1_020_002_003, "更新商机状态失败,原因:已经是该状态"); |
| 29 | + ErrorCode BUSINESS_CONTACT_CUSTOMER_NOT_MATCH = new ErrorCode(1_020_002_004, "商机关联的联系人不属于该客户"); | |
| 29 | 30 | |
| 30 | 31 | // ========== 联系人管理 1-020-003-000 ========== |
| 31 | 32 | ErrorCode CONTACT_NOT_EXISTS = new ErrorCode(1_020_003_000, "联系人不存在"); | ... | ... |
yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/service/business/CrmBusinessServiceImpl.java
| ... | ... | @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.crm.service.business; |
| 2 | 2 | |
| 3 | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | 4 | import cn.hutool.core.collection.ListUtil; |
| 5 | +import cn.hutool.core.util.ObjUtil; | |
| 5 | 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | 7 | import cn.iocoder.yudao.framework.common.util.number.MoneyUtils; |
| 7 | 8 | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| ... | ... | @@ -15,6 +16,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.business.CrmBusinessDO; |
| 15 | 16 | import cn.iocoder.yudao.module.crm.dal.dataobject.business.CrmBusinessProductDO; |
| 16 | 17 | import cn.iocoder.yudao.module.crm.dal.dataobject.business.CrmBusinessStatusDO; |
| 17 | 18 | import cn.iocoder.yudao.module.crm.dal.dataobject.contact.CrmContactBusinessDO; |
| 19 | +import cn.iocoder.yudao.module.crm.dal.dataobject.contact.CrmContactDO; | |
| 18 | 20 | import cn.iocoder.yudao.module.crm.dal.mysql.business.CrmBusinessMapper; |
| 19 | 21 | import cn.iocoder.yudao.module.crm.dal.mysql.business.CrmBusinessProductMapper; |
| 20 | 22 | import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; |
| ... | ... | @@ -194,9 +196,15 @@ public class CrmBusinessServiceImpl implements CrmBusinessService { |
| 194 | 196 | if (saveReqVO.getCustomerId() != null) { |
| 195 | 197 | customerService.validateCustomer(saveReqVO.getCustomerId()); |
| 196 | 198 | } |
| 197 | - // 校验联系人 | |
| 199 | + // 校验联系人(且必须与商机属于同一客户,避免跨客户关联) | |
| 198 | 200 | if (saveReqVO.getContactId() != null) { |
| 199 | 201 | contactService.validateContact(saveReqVO.getContactId()); |
| 202 | + if (saveReqVO.getCustomerId() != null) { | |
| 203 | + CrmContactDO contact = contactService.getContact(saveReqVO.getContactId()); | |
| 204 | + if (ObjUtil.notEqual(saveReqVO.getCustomerId(), contact.getCustomerId())) { | |
| 205 | + throw exception(BUSINESS_CONTACT_CUSTOMER_NOT_MATCH); | |
| 206 | + } | |
| 207 | + } | |
| 200 | 208 | } |
| 201 | 209 | // 校验负责人 |
| 202 | 210 | if (saveReqVO.getOwnerUserId() != null) { | ... | ... |
yudao-module-member/src/main/java/cn/iocoder/yudao/module/member/controller/admin/address/vo/AddressRespVO.java
| ... | ... | @@ -16,4 +16,7 @@ public class AddressRespVO extends AddressBaseVO { |
| 16 | 16 | @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) |
| 17 | 17 | private LocalDateTime createTime; |
| 18 | 18 | |
| 19 | + @Schema(description = "地区名称", example = "上海上海市普陀区") | |
| 20 | + private String areaName; | |
| 21 | + | |
| 19 | 22 | } | ... | ... |
yudao-module-member/src/main/java/cn/iocoder/yudao/module/member/convert/address/AddressConvert.java
| ... | ... | @@ -40,6 +40,9 @@ public interface AddressConvert { |
| 40 | 40 | return AreaUtils.format(areaId); |
| 41 | 41 | } |
| 42 | 42 | |
| 43 | + @Mapping(source = "areaId", target = "areaName", qualifiedByName = "convertAreaIdToAreaName") | |
| 44 | + AddressRespVO convert03(MemberAddressDO bean); | |
| 45 | + | |
| 43 | 46 | List<AddressRespVO> convertList2(List<MemberAddressDO> list); |
| 44 | 47 | |
| 45 | 48 | } | ... | ... |