Commit 455f8e49fb4263c015981ef9b66ba0d8c439a7b9

Authored by YunaiV
1 parent 16084d46

crm:code review 联系人

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 }
... ...