Commit 455f8e49fb4263c015981ef9b66ba0d8c439a7b9
1 parent
16084d46
crm:code review 联系人
Showing
11 changed files
with
84 additions
and
92 deletions
sql/mysql/crm.sql
| 1 | 1 | SET NAMES utf8mb4; |
| 2 | 2 | -- `ruoyi-vue-pro`.crm_contact definition |
| 3 | 3 | |
| 4 | -CREATE TABLE `crm_contact` ( | |
| 5 | - `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', | |
| 6 | - `name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '联系人名称', | |
| 7 | - `next_time` datetime DEFAULT NULL COMMENT '下次联系时间', | |
| 8 | - `mobile` varchar(16) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '手机号', | |
| 9 | - `telephone` varchar(16) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '电话', | |
| 10 | - `email` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '电子邮箱', | |
| 11 | - `post` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '职务', | |
| 12 | - `customer_id` bigint(20) DEFAULT NULL COMMENT '客户编号', | |
| 13 | - `address` varchar(256) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '地址', | |
| 14 | - `remark` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注', | |
| 15 | - `creator` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '创建人', | |
| 16 | - `owner_user_id` varchar(256) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '负责人用户编号', | |
| 17 | - `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间', | |
| 18 | - `update_time` timestamp NULL DEFAULT NULL COMMENT '更新时间', | |
| 19 | - `last_time` timestamp NULL DEFAULT NULL COMMENT '最后跟进时间', | |
| 20 | - `updater` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '更新人', | |
| 21 | - `deleted` bit(1) NOT NULL DEFAULT b'0', | |
| 22 | - `tenant_id` bigint(20) DEFAULT NULL, | |
| 23 | - `parent_id` bigint(20) DEFAULT NULL COMMENT '直系上属', | |
| 24 | - `qq` int(11) DEFAULT NULL, | |
| 25 | - `wechat` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL, | |
| 26 | - `sex` int(11) DEFAULT NULL COMMENT '性别', | |
| 27 | - `master` bit(1) DEFAULT NULL COMMENT '是否关键决策人', | |
| 28 | - `area_id` bigint(20) DEFAULT NULL COMMENT '地区', | |
| 29 | - PRIMARY KEY (`id`) USING BTREE | |
| 30 | -) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='CRM 联系人'; | |
| 31 | 4 | \ No newline at end of file | ... | ... |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contact/ContactController.java
| ... | ... | @@ -86,24 +86,23 @@ public class ContactController { |
| 86 | 86 | @PreAuthorize("@ss.hasPermission('crm:contact:query')") |
| 87 | 87 | public CommonResult<ContactRespVO> getContact(@RequestParam("id") Long id) { |
| 88 | 88 | ContactDO contact = contactService.getContact(id); |
| 89 | - if(contact == null){ | |
| 89 | + if (contact == null) { | |
| 90 | 90 | throw exception(ErrorCodeConstants.CONTACT_NOT_EXISTS); |
| 91 | 91 | } |
| 92 | - //1.获取用户名 | |
| 92 | + // 1. 获取用户名 | |
| 93 | 93 | Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(CollUtil.removeNull(Lists.newArrayList( |
| 94 | - NumberUtil.parseLong(contact.getCreator()),contact.getOwnerUserId()))); | |
| 95 | - //2.获取客户信息 | |
| 96 | - List<CrmCustomerDO> crmCustomerDOList = crmCustomerService.getCustomerList(Collections.singletonList(contact.getCustomerId())); | |
| 97 | - //3.直属上级 | |
| 98 | - List<ContactDO> contactList = contactService.getContactList(Collections.singletonList(contact.getParentId())); | |
| 99 | - ContactRespVO contactRespVO = ContactConvert.INSTANCE.convert(contact,userMap,crmCustomerDOList,contactList); | |
| 100 | - return success(contactRespVO); | |
| 94 | + NumberUtil.parseLong(contact.getCreator()), contact.getOwnerUserId()))); | |
| 95 | + // 2. 获取客户信息 | |
| 96 | + List<CrmCustomerDO> customerList = crmCustomerService.getCustomerList(Collections.singletonList(contact.getCustomerId())); | |
| 97 | + // 3. 直属上级 | |
| 98 | + List<ContactDO> parentContactList = contactService.getContactList(Collections.singletonList(contact.getParentId())); | |
| 99 | + return success(ContactConvert.INSTANCE.convert(contact, userMap, customerList, parentContactList)); | |
| 101 | 100 | } |
| 101 | + | |
| 102 | 102 | @GetMapping("/simple-all-list") |
| 103 | 103 | @Operation(summary = "获得联系人列表") |
| 104 | 104 | @PreAuthorize("@ss.hasPermission('crm:contact:query')") |
| 105 | - public CommonResult<List<ContactSimpleRespVO>> simpleAlllist() { | |
| 106 | - // TODO @zyna:方法名改成,getContactList;方法命名,要动名词,get 动词;all 可以去掉,因为没条件,自然是全部 | |
| 105 | + public CommonResult<List<ContactSimpleRespVO>> getContactList() { | |
| 107 | 106 | List<ContactDO> list = contactService.getContactList(); |
| 108 | 107 | return success(ContactConvert.INSTANCE.convertAllList(list)); |
| 109 | 108 | } |
| ... | ... | @@ -112,11 +111,12 @@ public class ContactController { |
| 112 | 111 | @Operation(summary = "获得联系人分页") |
| 113 | 112 | @PreAuthorize("@ss.hasPermission('crm:contact:query')") |
| 114 | 113 | public CommonResult<PageResult<ContactRespVO>> getContactPage(@Valid ContactPageReqVO pageVO) { |
| 115 | - PageResult<ContactDO> pageData = contactService.getContactPage(pageVO); | |
| 116 | - List<ContactRespVO> contactRespVOList = convertFieldValue2Name(pageData.getList()); | |
| 117 | - PageResult<ContactRespVO> pageDataReturn = ContactConvert.INSTANCE.convertPage(pageData); | |
| 118 | - pageDataReturn.setList(contactRespVOList); | |
| 119 | - return success(pageDataReturn); | |
| 114 | + PageResult<ContactDO> pageResult = contactService.getContactPage(pageVO); | |
| 115 | + if (CollUtil.isEmpty(pageResult.getList())) { | |
| 116 | + return success(PageResult.empty(pageResult.getTotal())); | |
| 117 | + } | |
| 118 | + List<ContactRespVO> contactVOList = convertFieldValue2Name(pageResult.getList()); | |
| 119 | + return success(new PageResult<>(contactVOList, pageResult.getTotal())); | |
| 120 | 120 | } |
| 121 | 121 | |
| 122 | 122 | // TODO @zyna:可以看下新的导出写法,这里调整下 |
| ... | ... | @@ -127,27 +127,31 @@ public class ContactController { |
| 127 | 127 | public void exportContactExcel(@Valid ContactPageReqVO exportReqVO, |
| 128 | 128 | HttpServletResponse response) throws IOException { |
| 129 | 129 | List<ContactDO> list = contactService.getContactList(exportReqVO); |
| 130 | + // TODO @zya:可以改成直接调用 getContactPage 方法;只要把 ContactPageReqVO 设置成不分页,PAGE_SIZE_NONE | |
| 130 | 131 | // 导出 Excel |
| 131 | 132 | List<ContactRespVO> contactRespVOList = convertFieldValue2Name(list); |
| 132 | - ExcelUtils.write(response, "crm联系人.xls", "数据", ContactRespVO.class, contactRespVOList); | |
| 133 | + ExcelUtils.write(response, "crm 联系人.xls", "数据", ContactRespVO.class, contactRespVOList); | |
| 133 | 134 | } |
| 134 | 135 | |
| 136 | + // TODO 芋艿:后续会合并下, | |
| 135 | 137 | /** |
| 136 | 138 | * 翻译字段名称 |
| 137 | 139 | * @param contactDOList 联系人List |
| 138 | 140 | * @return List<ContactRespVO> |
| 139 | 141 | */ |
| 140 | 142 | private List<ContactRespVO> convertFieldValue2Name(List<ContactDO> contactDOList){ |
| 141 | - //1.获取客户列表 | |
| 143 | + // 1. 获取客户列表 | |
| 144 | + // TODO @zyna:简单的转换,可以使用 CollectionUtils.convertSet | |
| 142 | 145 | List<Long> customerIdList = contactDOList.stream().map(ContactDO::getCustomerId).distinct().collect(Collectors.toList()); |
| 143 | 146 | List<CrmCustomerDO> crmCustomerDOList = crmCustomerService.getCustomerList(customerIdList); |
| 144 | - //2.获取创建人、责任人列表 | |
| 147 | + // 2. 获取创建人、责任人列表 | |
| 148 | + // TODO @zyna:简单的转换,可以使用 CollectionUtils.convertSetByFlatMap | |
| 145 | 149 | List<Long> userIdsList = contactDOList.stream().flatMap(item-> Stream.of(Long.parseLong(item.getCreator()),item.getOwnerUserId()).distinct()).collect(Collectors.toList()); |
| 146 | 150 | Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(userIdsList); |
| 147 | - //3.直属上级 | |
| 151 | + // 3. 直属上级 | |
| 148 | 152 | List<Long> contactIdsList = contactDOList.stream().map(ContactDO::getParentId).distinct().collect(Collectors.toList()); |
| 149 | 153 | List<ContactDO> contactList = contactService.getContactList(contactIdsList); |
| 150 | - List<ContactRespVO> pageResult =ContactConvert.INSTANCE.converList(contactDOList,userMap,crmCustomerDOList,contactList); | |
| 151 | - return pageResult; | |
| 154 | + return ContactConvert.INSTANCE.converList(contactDOList,userMap,crmCustomerDOList,contactList); | |
| 152 | 155 | } |
| 156 | + | |
| 153 | 157 | } | ... | ... |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contact/vo/ContactBaseVO.java
| ... | ... | @@ -4,11 +4,11 @@ import cn.iocoder.yudao.framework.common.validation.Mobile; |
| 4 | 4 | import cn.iocoder.yudao.framework.common.validation.Telephone; |
| 5 | 5 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| 6 | 6 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; |
| 7 | +import cn.iocoder.yudao.module.infra.enums.DictTypeConstants; | |
| 7 | 8 | import com.alibaba.excel.annotation.ExcelIgnore; |
| 8 | 9 | import com.alibaba.excel.annotation.ExcelProperty; |
| 9 | 10 | import io.swagger.v3.oas.annotations.media.Schema; |
| 10 | 11 | import lombok.Data; |
| 11 | -import org.apache.skywalking.apm.toolkit.trace.IgnoredException; | |
| 12 | 12 | import org.springframework.format.annotation.DateTimeFormat; |
| 13 | 13 | |
| 14 | 14 | import javax.validation.constraints.Email; |
| ... | ... | @@ -35,25 +35,24 @@ public class ContactBaseVO { |
| 35 | 35 | @ExcelIgnore |
| 36 | 36 | private Long customerId; |
| 37 | 37 | |
| 38 | - @ExcelProperty(value = "性别",converter = DictConvert.class ,order = 3) | |
| 38 | + @ExcelProperty(value = "性别", converter = DictConvert.class, order = 3) | |
| 39 | 39 | @DictFormat(cn.iocoder.yudao.module.system.enums.DictTypeConstants.USER_SEX) |
| 40 | 40 | @Schema(description = "性别") |
| 41 | 41 | private Integer sex; |
| 42 | 42 | |
| 43 | 43 | @Schema(description = "职位") |
| 44 | - @ExcelProperty(value = "职位",order = 3) | |
| 44 | + @ExcelProperty(value = "职位", order = 3) | |
| 45 | 45 | private String post; |
| 46 | 46 | |
| 47 | 47 | @Schema(description = "是否关键决策人") |
| 48 | - @ExcelProperty(value = "是否关键决策人",converter = DictConvert.class,order = 3) | |
| 49 | - @DictFormat(cn.iocoder.yudao.module.system.enums.DictTypeConstants.INFRA_BOOLEAN_STRING) | |
| 48 | + @ExcelProperty(value = "是否关键决策人", converter = DictConvert.class, order = 3) | |
| 49 | + @DictFormat(DictTypeConstants.BOOLEAN_STRING) | |
| 50 | 50 | private Boolean master; |
| 51 | 51 | |
| 52 | 52 | @Schema(description = "直属上级", example = "23457") |
| 53 | 53 | @ExcelIgnore |
| 54 | 54 | private Long parentId; |
| 55 | 55 | |
| 56 | - | |
| 57 | 56 | @Schema(description = "手机号",example = "1387171766") |
| 58 | 57 | @Mobile |
| 59 | 58 | @ExcelProperty(value = "手机号",order = 4) |
| ... | ... | @@ -98,7 +97,7 @@ public class ContactBaseVO { |
| 98 | 97 | |
| 99 | 98 | @Schema(description = "负责人用户编号", example = "14334") |
| 100 | 99 | @NotNull(message = "负责人不能为空") |
| 101 | - @ExcelIgnore | |
| 100 | + @ExcelIgnore // TODO @zyna:可以使用 ExcelIgnoreUnannotated | |
| 102 | 101 | private Long ownerUserId; |
| 103 | 102 | |
| 104 | 103 | @Schema(description = "地区编号", example = "20158") | ... | ... |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contact/vo/ContactPageReqVO.java
| ... | ... | @@ -11,13 +11,13 @@ import java.time.LocalDateTime; |
| 11 | 11 | |
| 12 | 12 | import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; |
| 13 | 13 | |
| 14 | -@Schema(description = "管理后台 - crm联系人分页 Request VO") | |
| 14 | +@Schema(description = "管理后台 - CRM 联系人分页 Request VO") | |
| 15 | 15 | @Data |
| 16 | 16 | @EqualsAndHashCode(callSuper = true) |
| 17 | 17 | @ToString(callSuper = true) |
| 18 | 18 | public class ContactPageReqVO extends PageParam { |
| 19 | 19 | |
| 20 | - // TODO @zyna:筛选条件 | |
| 20 | + // TODO @zyna:筛选条件(多余的可以删除哈)还有部分 example 少了,可以补充下; | |
| 21 | 21 | // ●客户: |
| 22 | 22 | // ●姓名: |
| 23 | 23 | // ●手机、电话、座机、QQ、微信、邮箱 |
| ... | ... | @@ -26,13 +26,13 @@ public class ContactPageReqVO extends PageParam { |
| 26 | 26 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 27 | 27 | private LocalDateTime[] nextTime; |
| 28 | 28 | |
| 29 | - @Schema(description = "手机号",example = "13898273941") | |
| 29 | + @Schema(description = "手机号", example = "13898273941") | |
| 30 | 30 | private String mobile; |
| 31 | 31 | |
| 32 | - @Schema(description = "电话",example = "021-383773") | |
| 32 | + @Schema(description = "电话", example = "021-383773") | |
| 33 | 33 | private String telephone; |
| 34 | 34 | |
| 35 | - @Schema(description = "电子邮箱",example = "111@22.com") | |
| 35 | + @Schema(description = "电子邮箱", example = "111@22.com") | |
| 36 | 36 | private String email; |
| 37 | 37 | |
| 38 | 38 | @Schema(description = "客户编号", example = "10795") |
| ... | ... | @@ -61,10 +61,10 @@ public class ContactPageReqVO extends PageParam { |
| 61 | 61 | @Schema(description = "职位") |
| 62 | 62 | private String post; |
| 63 | 63 | |
| 64 | - @Schema(description = "QQ",example = "3882872") | |
| 64 | + @Schema(description = "QQ", example = "3882872") | |
| 65 | 65 | private Long qq; |
| 66 | 66 | |
| 67 | - @Schema(description = "微信",example = "zzZ98373") | |
| 67 | + @Schema(description = "微信", example = "zzZ98373") | |
| 68 | 68 | private String wechat; |
| 69 | 69 | |
| 70 | 70 | @Schema(description = "性别") | ... | ... |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/CrmCustomerController.java
| ... | ... | @@ -172,6 +172,8 @@ public class CrmCustomerController { |
| 172 | 172 | customerService.receiveCustomer(ids, ownerUserId); |
| 173 | 173 | return success(true); |
| 174 | 174 | } |
| 175 | + | |
| 176 | + // TODO 芋艿:这个接口要调整下 | |
| 175 | 177 | @GetMapping("/query-all-list") |
| 176 | 178 | @Operation(summary = "查询客户列表") |
| 177 | 179 | @PreAuthorize("@ss.hasPermission('crm:customer:all')") |
| ... | ... | @@ -180,4 +182,5 @@ public class CrmCustomerController { |
| 180 | 182 | List<CrmCustomerQueryAllRespVO> data = CrmCustomerConvert.INSTANCE.convertQueryAll(crmCustomerDOList); |
| 181 | 183 | return success(data); |
| 182 | 184 | } |
| 185 | + | |
| 183 | 186 | } | ... | ... |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerQueryAllRespVO.java
| ... | ... | @@ -3,13 +3,15 @@ package cn.iocoder.yudao.module.crm.controller.admin.customer.vo; |
| 3 | 3 | import io.swagger.v3.oas.annotations.media.Schema; |
| 4 | 4 | import lombok.Data; |
| 5 | 5 | |
| 6 | - | |
| 6 | +// TODO 芋艿:这块要统一下; | |
| 7 | 7 | @Schema(description = "管理后台 - CRM 全部客户 Response VO") |
| 8 | 8 | @Data |
| 9 | 9 | public class CrmCustomerQueryAllRespVO{ |
| 10 | - @Schema(description = "客户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") | |
| 11 | - private String name; | |
| 10 | + | |
| 12 | 11 | @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "13563") |
| 13 | 12 | private Long id; |
| 14 | 13 | |
| 14 | + @Schema(description = "客户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") | |
| 15 | + private String name; | |
| 16 | + | |
| 15 | 17 | } | ... | ... |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/contact/ContactConvert.java
| ... | ... | @@ -46,7 +46,8 @@ public interface ContactConvert { |
| 46 | 46 | CrmPermissionTransferReqBO convert(CrmContactTransferReqVO reqVO, Long userId); |
| 47 | 47 | |
| 48 | 48 | /** |
| 49 | - * 详情信息 | |
| 49 | + * 转换详情信息 | |
| 50 | + * | |
| 50 | 51 | * @param contactDO 联系人 |
| 51 | 52 | * @param userMap 用户列表 |
| 52 | 53 | * @param crmCustomerDOList 客户 |
| ... | ... | @@ -54,26 +55,28 @@ public interface ContactConvert { |
| 54 | 55 | */ |
| 55 | 56 | default ContactRespVO convert(ContactDO contactDO, Map<Long, AdminUserRespDTO> userMap, List<CrmCustomerDO> crmCustomerDOList, |
| 56 | 57 | List<ContactDO> contactList) { |
| 57 | - ContactRespVO contactRespVO = convert(contactDO); | |
| 58 | - setUserInfo(contactRespVO,userMap); | |
| 59 | - Map<Long,CrmCustomerDO> crmCustomerDOMap = crmCustomerDOList.stream().collect(Collectors.toMap(CrmCustomerDO::getId,v->v)); | |
| 60 | - Map<Long,ContactDO> contactDOMap = contactList.stream().collect(Collectors.toMap(ContactDO::getId,v->v)); | |
| 61 | - findAndThen(crmCustomerDOMap,contactDO.getCustomerId(),customer -> {contactRespVO.setCustomerName(customer.getName());}); | |
| 62 | - findAndThen(contactDOMap,contactDO.getParentId(),contactDOInner -> {contactRespVO.setParentName(contactDOInner.getName());}); | |
| 63 | - return contactRespVO; | |
| 64 | - } | |
| 65 | - default List<ContactRespVO> converList(List<ContactDO> contactDOList, Map<Long, AdminUserRespDTO> userMap, | |
| 66 | - List<CrmCustomerDO> crmCustomerDOList , List<ContactDO> contactList){ | |
| 67 | - List<ContactRespVO> result = convertList(contactDOList); | |
| 58 | + ContactRespVO contactVO = convert(contactDO); | |
| 59 | + setUserInfo(contactVO, userMap); | |
| 60 | + Map<Long,CrmCustomerDO> ustomerMap = crmCustomerDOList.stream().collect(Collectors.toMap(CrmCustomerDO::getId,v->v)); | |
| 68 | 61 | Map<Long,ContactDO> contactMap = contactList.stream().collect(Collectors.toMap(ContactDO::getId,v->v)); |
| 69 | - Map<Long,CrmCustomerDO> customerMap = crmCustomerDOList.stream().collect(Collectors.toMap(CrmCustomerDO::getId,v->v)); | |
| 62 | + findAndThen(ustomerMap, contactDO.getCustomerId(), customer -> contactVO.setCustomerName(customer.getName())); | |
| 63 | + findAndThen(contactMap, contactDO.getParentId(), contact -> contactVO.setParentName(contact.getName())); | |
| 64 | + return contactVO; | |
| 65 | + } | |
| 66 | + default List<ContactRespVO> converList(List<ContactDO> contactList, Map<Long, AdminUserRespDTO> userMap, | |
| 67 | + List<CrmCustomerDO> customerList, List<ContactDO> parentContactList) { | |
| 68 | + List<ContactRespVO> result = convertList(contactList); | |
| 69 | + // TODO @zyna:简单的转换,可以使用 CollectionUtils.convertMap | |
| 70 | + Map<Long, ContactDO> parentContactMap = parentContactList.stream().collect(Collectors.toMap(ContactDO::getId,v->v)); | |
| 71 | + Map<Long, CrmCustomerDO> customerMap = customerList.stream().collect(Collectors.toMap(CrmCustomerDO::getId,v->v)); | |
| 70 | 72 | result.forEach(item -> { |
| 71 | 73 | setUserInfo(item, userMap); |
| 72 | 74 | findAndThen(customerMap,item.getCustomerId(),customer -> {item.setCustomerName(customer.getName());}); |
| 73 | - findAndThen(contactMap,item.getParentId(),contactDO -> {item.setParentName(contactDO.getName());}); | |
| 75 | + findAndThen(parentContactMap,item.getParentId(),contactDO -> {item.setParentName(contactDO.getName());}); | |
| 74 | 76 | }); |
| 75 | 77 | return result; |
| 76 | 78 | } |
| 79 | + | |
| 77 | 80 | /** |
| 78 | 81 | * 设置用户信息 |
| 79 | 82 | * |
| ... | ... | @@ -87,4 +90,5 @@ public interface ContactConvert { |
| 87 | 90 | }); |
| 88 | 91 | findAndThen(userMap, Long.parseLong(contactRespVO.getCreator()), user -> contactRespVO.setCreatorName(user.getNickname())); |
| 89 | 92 | } |
| 93 | + | |
| 90 | 94 | } | ... | ... |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/customer/CrmCustomerConvert.java
| ... | ... | @@ -72,9 +72,7 @@ public interface CrmCustomerConvert { |
| 72 | 72 | default PageResult<CrmCustomerRespVO> convertPage(PageResult<CrmCustomerDO> pageResult, Map<Long, AdminUserRespDTO> userMap, |
| 73 | 73 | Map<Long, DeptRespDTO> deptMap) { |
| 74 | 74 | PageResult<CrmCustomerRespVO> result = convertPage(pageResult); |
| 75 | - result.getList().forEach(item -> { | |
| 76 | - setUserInfo(item, userMap, deptMap); | |
| 77 | - }); | |
| 75 | + result.getList().forEach(item -> setUserInfo(item, userMap, deptMap)); | |
| 78 | 76 | return result; |
| 79 | 77 | } |
| 80 | 78 | |
| ... | ... | @@ -82,6 +80,6 @@ public interface CrmCustomerConvert { |
| 82 | 80 | |
| 83 | 81 | CrmCustomerPoolConfigDO convert(CrmCustomerPoolConfigSaveReqVO updateReqVO); |
| 84 | 82 | |
| 85 | - CrmCustomerQueryAllRespVO convertQueryAll(CrmCustomerDO crmCustomerDO); | |
| 86 | 83 | List<CrmCustomerQueryAllRespVO> convertQueryAll(List<CrmCustomerDO> crmCustomerDO); |
| 84 | + | |
| 87 | 85 | } | ... | ... |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/contact/ContactDO.java
| ... | ... | @@ -4,7 +4,6 @@ import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| 4 | 4 | import com.baomidou.mybatisplus.annotation.KeySequence; |
| 5 | 5 | import com.baomidou.mybatisplus.annotation.TableId; |
| 6 | 6 | import com.baomidou.mybatisplus.annotation.TableName; |
| 7 | -import io.swagger.v3.oas.annotations.media.Schema; | |
| 8 | 7 | import lombok.*; |
| 9 | 8 | |
| 10 | 9 | import java.time.LocalDateTime; |
| ... | ... | @@ -23,6 +22,7 @@ import java.time.LocalDateTime; |
| 23 | 22 | @NoArgsConstructor |
| 24 | 23 | @AllArgsConstructor |
| 25 | 24 | public class ContactDO extends BaseDO { |
| 25 | + | |
| 26 | 26 | /** |
| 27 | 27 | * 主键 |
| 28 | 28 | */ |
| ... | ... | @@ -61,7 +61,9 @@ public class ContactDO extends BaseDO { |
| 61 | 61 | */ |
| 62 | 62 | private LocalDateTime lastTime; |
| 63 | 63 | /** |
| 64 | - * 直属上级 @link ContactDO#id | |
| 64 | + * 直属上级 | |
| 65 | + * | |
| 66 | + * 关联 {@link ContactDO#id} | |
| 65 | 67 | */ |
| 66 | 68 | private Long parentId; |
| 67 | 69 | /** |
| ... | ... | @@ -82,7 +84,8 @@ public class ContactDO extends BaseDO { |
| 82 | 84 | private String wechat; |
| 83 | 85 | /** |
| 84 | 86 | * 性别 |
| 85 | - * @See 字典配置 | |
| 87 | + * | |
| 88 | + * 枚举 {@link cn.iocoder.yudao.module.system.enums.common.SexEnum} | |
| 86 | 89 | */ |
| 87 | 90 | private Integer sex; |
| 88 | 91 | /** |
| ... | ... | @@ -91,8 +94,16 @@ public class ContactDO extends BaseDO { |
| 91 | 94 | private Boolean master; |
| 92 | 95 | /** |
| 93 | 96 | * 负责人用户编号 |
| 97 | + * | |
| 98 | + * 关联 AdminUserDO 的 id 字段 | |
| 94 | 99 | */ |
| 95 | 100 | private Long ownerUserId; |
| 96 | 101 | |
| 102 | + /** | |
| 103 | + * 所在地 | |
| 104 | + * | |
| 105 | + * 关联 {@link cn.iocoder.yudao.framework.ip.core.Area#getId()} 字段 | |
| 106 | + */ | |
| 97 | 107 | private Integer areaId; |
| 108 | + | |
| 98 | 109 | } | ... | ... |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/contact/ContactServiceImpl.java
| ... | ... | @@ -56,7 +56,7 @@ public class ContactServiceImpl implements ContactService { |
| 56 | 56 | |
| 57 | 57 | @Override |
| 58 | 58 | @Transactional(rollbackFor = Exception.class) |
| 59 | - @CrmPermission(bizType = CrmBizTypeEnum.CRM_CONTACTS,bizId = "#updateReqVO.id", level = CrmPermissionLevelEnum.WRITE) | |
| 59 | + @CrmPermission(bizType = CrmBizTypeEnum.CRM_CONTACTS, bizId = "#updateReqVO.id", level = CrmPermissionLevelEnum.WRITE) | |
| 60 | 60 | public void updateContact(ContactUpdateReqVO updateReqVO) { |
| 61 | 61 | // 校验存在 |
| 62 | 62 | validateContactExists(updateReqVO.getId()); |
| ... | ... | @@ -67,7 +67,7 @@ public class ContactServiceImpl implements ContactService { |
| 67 | 67 | |
| 68 | 68 | @Override |
| 69 | 69 | @Transactional(rollbackFor = Exception.class) |
| 70 | - @CrmPermission(bizType = CrmBizTypeEnum.CRM_CONTACTS,bizId = "#id", level = CrmPermissionLevelEnum.WRITE) | |
| 70 | + @CrmPermission(bizType = CrmBizTypeEnum.CRM_CONTACTS, bizId = "#id", level = CrmPermissionLevelEnum.WRITE) | |
| 71 | 71 | public void deleteContact(Long id) { |
| 72 | 72 | // 校验存在 |
| 73 | 73 | validateContactExists(id); |
| ... | ... | @@ -82,7 +82,7 @@ public class ContactServiceImpl implements ContactService { |
| 82 | 82 | } |
| 83 | 83 | |
| 84 | 84 | @Override |
| 85 | - @CrmPermission(bizType = CrmBizTypeEnum.CRM_CONTACTS,bizId = "#id", level = CrmPermissionLevelEnum.READ) | |
| 85 | + @CrmPermission(bizType = CrmBizTypeEnum.CRM_CONTACTS, bizId = "#id", level = CrmPermissionLevelEnum.READ) | |
| 86 | 86 | public ContactDO getContact(Long id) { |
| 87 | 87 | return contactMapper.selectById(id); |
| 88 | 88 | } | ... | ... |
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/DictTypeConstants.java
| ... | ... | @@ -26,6 +26,4 @@ public interface DictTypeConstants { |
| 26 | 26 | String SMS_SEND_STATUS = "system_sms_send_status"; // 短信发送状态 |
| 27 | 27 | String SMS_RECEIVE_STATUS = "system_sms_receive_status"; // 短信接收状态 |
| 28 | 28 | |
| 29 | - String INFRA_BOOLEAN_STRING = "infra_boolean_string"; // boolean字典 | |
| 30 | - | |
| 31 | 29 | } | ... | ... |