Commit 4dab376ca968941b99ca75029193698ae36f00fb

Authored by zhijiantianya@gmail.com
1 parent 9f1b92ab

code review:数据权限的实现

Showing 50 changed files with 80 additions and 66 deletions
yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/ErrorCodeConstants.java
@@ -34,6 +34,7 @@ public interface ErrorCodeConstants { @@ -34,6 +34,7 @@ public interface ErrorCodeConstants {
34 // ========== 客户管理 1_020_006_000 ========== 34 // ========== 客户管理 1_020_006_000 ==========
35 ErrorCode CUSTOMER_NOT_EXISTS = new ErrorCode(1_020_006_000, "客户不存在"); 35 ErrorCode CUSTOMER_NOT_EXISTS = new ErrorCode(1_020_006_000, "客户不存在");
36 36
  37 + // TODO @puhui999:权限管理???
37 // ========== 客户管理 1_020_007_000 ========== 38 // ========== 客户管理 1_020_007_000 ==========
38 ErrorCode CRM_PERMISSION_NOT_EXISTS = new ErrorCode(1_020_007_000, "数据权限不存在"); 39 ErrorCode CRM_PERMISSION_NOT_EXISTS = new ErrorCode(1_020_007_000, "数据权限不存在");
39 ErrorCode CRM_PERMISSION_DENIED = new ErrorCode(1_020_007_001, "{}操作失败,原因:没有权限"); 40 ErrorCode CRM_PERMISSION_DENIED = new ErrorCode(1_020_007_001, "{}操作失败,原因:没有权限");
yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/common/TransferTypeEnum.java
@@ -6,6 +6,7 @@ import lombok.Getter; @@ -6,6 +6,7 @@ import lombok.Getter;
6 6
7 import java.util.Arrays; 7 import java.util.Arrays;
8 8
  9 +// TODO @puhui999:这个可以不用哈
9 /** 10 /**
10 * Crm 负责人转移后原负责人的处理方式 11 * Crm 负责人转移后原负责人的处理方式
11 * 12 *
@@ -17,6 +18,7 @@ public enum TransferTypeEnum implements IntArrayValuable { @@ -17,6 +18,7 @@ public enum TransferTypeEnum implements IntArrayValuable {
17 18
18 REMOVE(1, "移除"), 19 REMOVE(1, "移除"),
19 TEAM(2, "转为团队成员"); 20 TEAM(2, "转为团队成员");
  21 +
20 public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(TransferTypeEnum::getType).toArray(); 22 public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(TransferTypeEnum::getType).toArray();
21 23
22 /** 24 /**
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contact/ContactController.java
@@ -26,7 +26,7 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -26,7 +26,7 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
26 import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; 26 import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
27 import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; 27 import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
28 28
29 -@Tag(name = "管理后台 - crm联系人") 29 +@Tag(name = "管理后台 - CRM 联系人")
30 @RestController 30 @RestController
31 @RequestMapping("/crm/contact") 31 @RequestMapping("/crm/contact")
32 @Validated 32 @Validated
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contact/vo/ContactCreateReqVO.java
@@ -5,7 +5,7 @@ import lombok.Data; @@ -5,7 +5,7 @@ import lombok.Data;
5 import lombok.EqualsAndHashCode; 5 import lombok.EqualsAndHashCode;
6 import lombok.ToString; 6 import lombok.ToString;
7 7
8 -@Schema(description = "管理后台 - crm联系人创建 Request VO") 8 +@Schema(description = "管理后台 - CRM 联系人创建 Request VO")
9 @Data 9 @Data
10 @EqualsAndHashCode(callSuper = true) 10 @EqualsAndHashCode(callSuper = true)
11 @ToString(callSuper = true) 11 @ToString(callSuper = true)
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contact/vo/ContactExportReqVO.java
@@ -9,7 +9,7 @@ import org.springframework.format.annotation.DateTimeFormat; @@ -9,7 +9,7 @@ import org.springframework.format.annotation.DateTimeFormat;
9 9
10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11 11
12 -@Schema(description = "管理后台 - crm联系人 Excel 导出 Request VO,参数和 ContactPageReqVO 是一致的") 12 +@Schema(description = "管理后台 - CRM 联系人 Excel 导出 Request VO,参数和 ContactPageReqVO 是一致的")
13 @Data 13 @Data
14 public class ContactExportReqVO { 14 public class ContactExportReqVO {
15 15
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contact/vo/ContactPageReqVO.java
@@ -11,7 +11,7 @@ import java.time.LocalDateTime; @@ -11,7 +11,7 @@ import java.time.LocalDateTime;
11 11
12 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 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 @Data 15 @Data
16 @EqualsAndHashCode(callSuper = true) 16 @EqualsAndHashCode(callSuper = true)
17 @ToString(callSuper = true) 17 @ToString(callSuper = true)
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contact/vo/ContactRespVO.java
@@ -4,7 +4,7 @@ import io.swagger.v3.oas.annotations.media.Schema; @@ -4,7 +4,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.*; 4 import lombok.*;
5 import java.time.LocalDateTime; 5 import java.time.LocalDateTime;
6 6
7 -@Schema(description = "管理后台 - crm联系人 Response VO") 7 +@Schema(description = "管理后台 - CRM 联系人 Response VO")
8 @Data 8 @Data
9 @EqualsAndHashCode(callSuper = true) 9 @EqualsAndHashCode(callSuper = true)
10 @ToString(callSuper = true) 10 @ToString(callSuper = true)
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contact/vo/ContactUpdateReqVO.java
@@ -5,7 +5,7 @@ import lombok.Data; @@ -5,7 +5,7 @@ import lombok.Data;
5 import lombok.EqualsAndHashCode; 5 import lombok.EqualsAndHashCode;
6 import lombok.ToString; 6 import lombok.ToString;
7 7
8 -@Schema(description = "管理后台 - crm联系人更新 Request VO") 8 +@Schema(description = "管理后台 - CRM 联系人更新 Request VO")
9 @Data 9 @Data
10 @EqualsAndHashCode(callSuper = true) 10 @EqualsAndHashCode(callSuper = true)
11 @ToString(callSuper = true) 11 @ToString(callSuper = true)
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contact/vo/CrmTransferContactReqVO.java
@@ -5,7 +5,7 @@ import lombok.Data; @@ -5,7 +5,7 @@ import lombok.Data;
5 5
6 import javax.validation.constraints.NotNull; 6 import javax.validation.constraints.NotNull;
7 7
8 -@Schema(description = "管理后台 - 联系人转移 Request VO") 8 +@Schema(description = "管理后台 - CRM 联系人转移 Request VO")
9 @Data 9 @Data
10 public class CrmTransferContactReqVO { 10 public class CrmTransferContactReqVO {
11 11
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contract/ContractController.java
@@ -25,7 +25,7 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -25,7 +25,7 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
25 import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; 25 import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
26 import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; 26 import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
27 27
28 -@Tag(name = "管理后台 - 合同") 28 +@Tag(name = "管理后台 - CRM 合同")
29 @RestController 29 @RestController
30 @RequestMapping("/crm/contract") 30 @RequestMapping("/crm/contract")
31 @Validated 31 @Validated
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contract/package-info.java deleted
1 -/**  
2 - * 合同  
3 - */  
4 -package cn.iocoder.yudao.module.crm.controller.admin.contract;  
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contract/vo/ContractCreateReqVO.java
@@ -5,7 +5,7 @@ import lombok.Data; @@ -5,7 +5,7 @@ import lombok.Data;
5 import lombok.EqualsAndHashCode; 5 import lombok.EqualsAndHashCode;
6 import lombok.ToString; 6 import lombok.ToString;
7 7
8 -@Schema(description = "管理后台 - 合同创建 Request VO") 8 +@Schema(description = "管理后台 - CRM 合同创建 Request VO")
9 @Data 9 @Data
10 @EqualsAndHashCode(callSuper = true) 10 @EqualsAndHashCode(callSuper = true)
11 @ToString(callSuper = true) 11 @ToString(callSuper = true)
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contract/vo/ContractExcelVO.java
@@ -6,7 +6,7 @@ import lombok.Data; @@ -6,7 +6,7 @@ import lombok.Data;
6 import java.time.LocalDateTime; 6 import java.time.LocalDateTime;
7 7
8 /** 8 /**
9 - * 合同 Excel VO 9 + * CRM 合同 Excel VO
10 * 10 *
11 * @author dhb52 11 * @author dhb52
12 */ 12 */
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contract/vo/ContractExportReqVO.java
@@ -8,7 +8,7 @@ import java.time.LocalDateTime; @@ -8,7 +8,7 @@ import java.time.LocalDateTime;
8 8
9 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 9 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
10 10
11 -@Schema(description = "管理后台 - 合同 Excel 导出 Request VO,参数和 ContractPageReqVO 是一致的") 11 +@Schema(description = "管理后台 - CRM 合同 Excel 导出 Request VO,参数和 ContractPageReqVO 是一致的")
12 @Data 12 @Data
13 public class ContractExportReqVO { 13 public class ContractExportReqVO {
14 14
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contract/vo/ContractPageReqVO.java
@@ -11,7 +11,7 @@ import java.time.LocalDateTime; @@ -11,7 +11,7 @@ import java.time.LocalDateTime;
11 11
12 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 12 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
13 13
14 -@Schema(description = "管理后台 - 合同分页 Request VO") 14 +@Schema(description = "管理后台 - CRM 合同分页 Request VO")
15 @Data 15 @Data
16 @EqualsAndHashCode(callSuper = true) 16 @EqualsAndHashCode(callSuper = true)
17 @ToString(callSuper = true) 17 @ToString(callSuper = true)
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contract/vo/ContractRespVO.java
@@ -7,7 +7,7 @@ import lombok.ToString; @@ -7,7 +7,7 @@ import lombok.ToString;
7 7
8 import java.time.LocalDateTime; 8 import java.time.LocalDateTime;
9 9
10 -@Schema(description = "管理后台 - 合同 Response VO") 10 +@Schema(description = "管理后台 - CRM 合同 Response VO")
11 @Data 11 @Data
12 @EqualsAndHashCode(callSuper = true) 12 @EqualsAndHashCode(callSuper = true)
13 @ToString(callSuper = true) 13 @ToString(callSuper = true)
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contract/vo/ContractUpdateReqVO.java
@@ -7,7 +7,7 @@ import lombok.ToString; @@ -7,7 +7,7 @@ import lombok.ToString;
7 7
8 import javax.validation.constraints.NotNull; 8 import javax.validation.constraints.NotNull;
9 9
10 -@Schema(description = "管理后台 - 合同更新 Request VO") 10 +@Schema(description = "管理后台 - CRM 合同更新 Request VO")
11 @Data 11 @Data
12 @EqualsAndHashCode(callSuper = true) 12 @EqualsAndHashCode(callSuper = true)
13 @ToString(callSuper = true) 13 @ToString(callSuper = true)
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/contract/vo/CrmTransferContractReqVO.java
@@ -5,7 +5,8 @@ import lombok.Data; @@ -5,7 +5,8 @@ import lombok.Data;
5 5
6 import javax.validation.constraints.NotNull; 6 import javax.validation.constraints.NotNull;
7 7
8 -@Schema(description = "管理后台 - 合同转移 Request VO") 8 +// TODO @puhui999:CrmContractTransferReqVO,模块名字要放前面;看看还有没其它类似的
  9 +@Schema(description = "管理后台 - CRM 合同转移 Request VO")
9 @Data 10 @Data
10 public class CrmTransferContractReqVO { 11 public class CrmTransferContractReqVO {
11 12
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/CrmCustomerController.java
@@ -25,7 +25,7 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -25,7 +25,7 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
25 import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; 25 import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
26 import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; 26 import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
27 27
28 -@Tag(name = "管理后台 - 客户") 28 +@Tag(name = "管理后台 - CRM 客户")
29 @RestController 29 @RestController
30 @RequestMapping("/crm/customer") 30 @RequestMapping("/crm/customer")
31 @Validated 31 @Validated
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerCreateReqVO.java
@@ -5,7 +5,7 @@ import lombok.Data; @@ -5,7 +5,7 @@ import lombok.Data;
5 import lombok.EqualsAndHashCode; 5 import lombok.EqualsAndHashCode;
6 import lombok.ToString; 6 import lombok.ToString;
7 7
8 -@Schema(description = "管理后台 - 客户创建 Request VO") 8 +@Schema(description = "管理后台 - CRM 客户创建 Request VO")
9 @Data 9 @Data
10 @EqualsAndHashCode(callSuper = true) 10 @EqualsAndHashCode(callSuper = true)
11 @ToString(callSuper = true) 11 @ToString(callSuper = true)
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerExcelVO.java
@@ -11,7 +11,7 @@ import java.time.LocalDateTime; @@ -11,7 +11,7 @@ import java.time.LocalDateTime;
11 11
12 // TODO 芋艿:导出最后做,等基本确认的差不多之后; 12 // TODO 芋艿:导出最后做,等基本确认的差不多之后;
13 /** 13 /**
14 - * 客户 Excel VO 14 + * CRM 客户 Excel VO
15 * 15 *
16 * @author Wanwan 16 * @author Wanwan
17 */ 17 */
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerExportReqVO.java
@@ -4,7 +4,7 @@ import io.swagger.v3.oas.annotations.media.Schema; @@ -4,7 +4,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.Data; 4 import lombok.Data;
5 5
6 // TODO 芋艿:导出最后做,等基本确认的差不多之后; 6 // TODO 芋艿:导出最后做,等基本确认的差不多之后;
7 -@Schema(description = "管理后台 - 客户 Excel 导出 Request VO,参数和 CrmCustomerPageReqVO 是一致的") 7 +@Schema(description = "管理后台 - CRM 客户 Excel 导出 Request VO,参数和 CrmCustomerPageReqVO 是一致的")
8 @Data 8 @Data
9 public class CrmCustomerExportReqVO { 9 public class CrmCustomerExportReqVO {
10 10
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerPageReqVO.java
@@ -6,7 +6,7 @@ import lombok.Data; @@ -6,7 +6,7 @@ import lombok.Data;
6 import lombok.EqualsAndHashCode; 6 import lombok.EqualsAndHashCode;
7 import lombok.ToString; 7 import lombok.ToString;
8 8
9 -@Schema(description = "管理后台 - 客户分页 Request VO") 9 +@Schema(description = "管理后台 - CRM 客户分页 Request VO")
10 @Data 10 @Data
11 @EqualsAndHashCode(callSuper = true) 11 @EqualsAndHashCode(callSuper = true)
12 @ToString(callSuper = true) 12 @ToString(callSuper = true)
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerRespVO.java
@@ -10,7 +10,7 @@ import java.time.LocalDateTime; @@ -10,7 +10,7 @@ import java.time.LocalDateTime;
10 10
11 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 11 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
12 12
13 -@Schema(description = "管理后台 - 客户 Response VO") 13 +@Schema(description = "管理后台 - CRM 客户 Response VO")
14 @Data 14 @Data
15 @EqualsAndHashCode(callSuper = true) 15 @EqualsAndHashCode(callSuper = true)
16 @ToString(callSuper = true) 16 @ToString(callSuper = true)
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerUpdateReqVO.java
@@ -7,7 +7,7 @@ import lombok.ToString; @@ -7,7 +7,7 @@ import lombok.ToString;
7 7
8 import javax.validation.constraints.NotNull; 8 import javax.validation.constraints.NotNull;
9 9
10 -@Schema(description = "管理后台 - 客户更新 Request VO") 10 +@Schema(description = "管理后台 - CRM 客户更新 Request VO")
11 @Data 11 @Data
12 @EqualsAndHashCode(callSuper = true) 12 @EqualsAndHashCode(callSuper = true)
13 @ToString(callSuper = true) 13 @ToString(callSuper = true)
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmTransferCustomerReqVO.java
@@ -5,7 +5,7 @@ import lombok.Data; @@ -5,7 +5,7 @@ import lombok.Data;
5 5
6 import javax.validation.constraints.NotNull; 6 import javax.validation.constraints.NotNull;
7 7
8 -@Schema(description = "管理后台 - 客户转移 Request VO") 8 +@Schema(description = "管理后台 - CRM 客户转移 Request VO")
9 @Data 9 @Data
10 public class CrmTransferCustomerReqVO { 10 public class CrmTransferCustomerReqVO {
11 11
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/ReceivableController.java
@@ -24,10 +24,7 @@ import java.util.List; @@ -24,10 +24,7 @@ import java.util.List;
24 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 24 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
25 import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; 25 import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
26 26
27 -/**  
28 - * @author 赤焰  
29 - */  
30 -@Tag(name = "管理后台 - 回款管理") 27 +@Tag(name = "管理后台 - CRM 回款管理")
31 @RestController 28 @RestController
32 @RequestMapping("/crm/receivable") 29 @RequestMapping("/crm/receivable")
33 @Validated 30 @Validated
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/ReceivablePlanController.java
@@ -24,10 +24,7 @@ import java.util.List; @@ -24,10 +24,7 @@ import java.util.List;
24 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 24 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
25 import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; 25 import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
26 26
27 -/**  
28 - * @author 赤焰  
29 - */  
30 -@Tag(name = "管理后台 - 回款计划") 27 +@Tag(name = "管理后台 - CRM 回款计划")
31 @RestController 28 @RestController
32 @RequestMapping("/crm/receivable-plan") 29 @RequestMapping("/crm/receivable-plan")
33 @Validated 30 @Validated
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivableCreateReqVO.java
@@ -5,7 +5,7 @@ import java.util.*; @@ -5,7 +5,7 @@ import java.util.*;
5 import io.swagger.v3.oas.annotations.media.Schema; 5 import io.swagger.v3.oas.annotations.media.Schema;
6 import javax.validation.constraints.*; 6 import javax.validation.constraints.*;
7 7
8 -@Schema(description = "管理后台 - 回款管理创建 Request VO") 8 +@Schema(description = "管理后台 - CRM 回款创建 Request VO")
9 @Data 9 @Data
10 @EqualsAndHashCode(callSuper = true) 10 @EqualsAndHashCode(callSuper = true)
11 @ToString(callSuper = true) 11 @ToString(callSuper = true)
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivableExcelVO.java
@@ -14,7 +14,7 @@ import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; @@ -14,7 +14,7 @@ import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
14 14
15 15
16 /** 16 /**
17 - * 回款管理 Excel VO 17 + * CRM 回款管理 Excel VO
18 * 18 *
19 * @author 赤焰 19 * @author 赤焰
20 */ 20 */
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivableExportReqVO.java
@@ -12,7 +12,7 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ @@ -12,7 +12,7 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
12 /** 12 /**
13 * @author 赤焰 13 * @author 赤焰
14 */ 14 */
15 -@Schema(description = "管理后台 - 回款管理 Excel 导出 Request VO,参数和 ReceivablePageReqVO 是一致的") 15 +@Schema(description = "管理后台 - CRM 回款 Excel 导出 Request VO,参数和 ReceivablePageReqVO 是一致的")
16 @Data 16 @Data
17 public class ReceivableExportReqVO { 17 public class ReceivableExportReqVO {
18 18
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivablePageReqVO.java
@@ -12,7 +12,7 @@ import java.time.LocalDateTime; @@ -12,7 +12,7 @@ import java.time.LocalDateTime;
12 12
13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 13 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
14 14
15 -@Schema(description = "管理后台 - 回款管理分页 Request VO") 15 +@Schema(description = "管理后台 - CRM 回款分页 Request VO")
16 @Data 16 @Data
17 @EqualsAndHashCode(callSuper = true) 17 @EqualsAndHashCode(callSuper = true)
18 @ToString(callSuper = true) 18 @ToString(callSuper = true)
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivablePlanCreateReqVO.java
@@ -5,7 +5,7 @@ import java.util.*; @@ -5,7 +5,7 @@ import java.util.*;
5 import io.swagger.v3.oas.annotations.media.Schema; 5 import io.swagger.v3.oas.annotations.media.Schema;
6 import javax.validation.constraints.*; 6 import javax.validation.constraints.*;
7 7
8 -@Schema(description = "管理后台 - 回款计划创建 Request VO") 8 +@Schema(description = "管理后台 - CRM 回款计划创建 Request VO")
9 @Data 9 @Data
10 @EqualsAndHashCode(callSuper = true) 10 @EqualsAndHashCode(callSuper = true)
11 @ToString(callSuper = true) 11 @ToString(callSuper = true)
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivablePlanExcelVO.java
1 package cn.iocoder.yudao.module.crm.controller.admin.receivable.vo; 1 package cn.iocoder.yudao.module.crm.controller.admin.receivable.vo;
2 2
3 -import io.swagger.v3.oas.annotations.media.Schema;  
4 import lombok.*; 3 import lombok.*;
5 -import java.util.*; 4 +
6 import java.math.BigDecimal; 5 import java.math.BigDecimal;
7 import java.time.LocalDateTime; 6 import java.time.LocalDateTime;
8 -import java.time.LocalDateTime;  
9 -import java.time.LocalDateTime;  
10 -import java.time.LocalDateTime;  
11 7
12 import com.alibaba.excel.annotation.ExcelProperty; 8 import com.alibaba.excel.annotation.ExcelProperty;
13 import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; 9 import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
@@ -15,7 +11,7 @@ import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; @@ -15,7 +11,7 @@ import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
15 11
16 12
17 /** 13 /**
18 - * 回款计划 Excel VO 14 + * CRM 回款计划 Excel VO
19 * 15 *
20 * @author 芋道源码 16 * @author 芋道源码
21 */ 17 */
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivablePlanExportReqVO.java
@@ -9,7 +9,7 @@ import org.springframework.format.annotation.DateTimeFormat; @@ -9,7 +9,7 @@ import org.springframework.format.annotation.DateTimeFormat;
9 9
10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 10 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
11 11
12 -@Schema(description = "管理后台 - 回款计划 Excel 导出 Request VO,参数和 ReceivablePlanPageReqVO 是一致的") 12 +@Schema(description = "管理后台 - CRM 回款计划 Excel 导出 Request VO,参数和 ReceivablePlanPageReqVO 是一致的")
13 @Data 13 @Data
14 public class ReceivablePlanExportReqVO { 14 public class ReceivablePlanExportReqVO {
15 15
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivablePlanPageReqVO.java
@@ -11,7 +11,7 @@ import java.time.LocalDateTime; @@ -11,7 +11,7 @@ import java.time.LocalDateTime;
11 11
12 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; 12 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
13 13
14 -@Schema(description = "管理后台 - 回款计划分页 Request VO") 14 +@Schema(description = "管理后台 - CRM 回款计划分页 Request VO")
15 @Data 15 @Data
16 @EqualsAndHashCode(callSuper = true) 16 @EqualsAndHashCode(callSuper = true)
17 @ToString(callSuper = true) 17 @ToString(callSuper = true)
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivablePlanRespVO.java
@@ -4,7 +4,7 @@ import io.swagger.v3.oas.annotations.media.Schema; @@ -4,7 +4,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.*; 4 import lombok.*;
5 import java.time.LocalDateTime; 5 import java.time.LocalDateTime;
6 6
7 -@Schema(description = "管理后台 - 回款计划 Response VO") 7 +@Schema(description = "管理后台 - CRM 回款计划 Response VO")
8 @Data 8 @Data
9 @EqualsAndHashCode(callSuper = true) 9 @EqualsAndHashCode(callSuper = true)
10 @ToString(callSuper = true) 10 @ToString(callSuper = true)
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivablePlanUpdateReqVO.java
@@ -5,7 +5,7 @@ import lombok.*; @@ -5,7 +5,7 @@ import lombok.*;
5 import java.util.*; 5 import java.util.*;
6 import javax.validation.constraints.*; 6 import javax.validation.constraints.*;
7 7
8 -@Schema(description = "管理后台 - 回款计划更新 Request VO") 8 +@Schema(description = "管理后台 - CRM 回款计划更新 Request VO")
9 @Data 9 @Data
10 @EqualsAndHashCode(callSuper = true) 10 @EqualsAndHashCode(callSuper = true)
11 @ToString(callSuper = true) 11 @ToString(callSuper = true)
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivableRespVO.java
@@ -4,7 +4,7 @@ import io.swagger.v3.oas.annotations.media.Schema; @@ -4,7 +4,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.*; 4 import lombok.*;
5 import java.time.LocalDateTime; 5 import java.time.LocalDateTime;
6 6
7 -@Schema(description = "管理后台 - 回款管理 Response VO") 7 +@Schema(description = "管理后台 - CRM 回款 Response VO")
8 @Data 8 @Data
9 @EqualsAndHashCode(callSuper = true) 9 @EqualsAndHashCode(callSuper = true)
10 @ToString(callSuper = true) 10 @ToString(callSuper = true)
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/receivable/vo/ReceivableUpdateReqVO.java
@@ -5,7 +5,7 @@ import lombok.*; @@ -5,7 +5,7 @@ import lombok.*;
5 import java.util.*; 5 import java.util.*;
6 import javax.validation.constraints.*; 6 import javax.validation.constraints.*;
7 7
8 -@Schema(description = "管理后台 - 回款管理更新 Request VO") 8 +@Schema(description = "管理后台 - CRM 回款更新 Request VO")
9 @Data 9 @Data
10 @EqualsAndHashCode(callSuper = true) 10 @EqualsAndHashCode(callSuper = true)
11 @ToString(callSuper = true) 11 @ToString(callSuper = true)
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/contact/ContactConvert.java
@@ -12,7 +12,7 @@ import org.mapstruct.factory.Mappers; @@ -12,7 +12,7 @@ import org.mapstruct.factory.Mappers;
12 import java.util.List; 12 import java.util.List;
13 13
14 /** 14 /**
15 - * crm联系人 Convert 15 + * crm 联系人 Convert
16 * 16 *
17 * @author 芋道源码 17 * @author 芋道源码
18 */ 18 */
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/framework/core/aop/CrmPermissionAspect.java
@@ -47,19 +47,21 @@ public class CrmPermissionAspect { @@ -47,19 +47,21 @@ public class CrmPermissionAspect {
47 try { 47 try {
48 Integer crmType = crmPermission.crmType().getType(); 48 Integer crmType = crmPermission.crmType().getType();
49 Integer operationType = crmPermission.operationType().getType(); 49 Integer operationType = crmPermission.operationType().getType();
  50 + // TODO @puhui999:不一定是 id 参数噢;例如说,ContactServiceImpl 的 updateContact
50 Long id = (Long) joinPoint.getArgs()[0];// 获取操作数据的编号 51 Long id = (Long) joinPoint.getArgs()[0];// 获取操作数据的编号
51 52
52 - // 1. 获取数据权限 53 + // 1.1 获取数据权限
53 CrmPermissionDO permission = crmPermissionService.getCrmPermissionByCrmTypeAndCrmDataId(crmType, id); 54 CrmPermissionDO permission = crmPermissionService.getCrmPermissionByCrmTypeAndCrmDataId(crmType, id);
54 if (permission == null) { 55 if (permission == null) {
55 // 不存在说明数据也不存在 56 // 不存在说明数据也不存在
56 throw exception(CRM_PERMISSION_MODEL_NOT_EXISTS, crmPermission.crmType().getName()); 57 throw exception(CRM_PERMISSION_MODEL_NOT_EXISTS, crmPermission.crmType().getName());
57 } 58 }
58 - // 1.2. 校验是否为公海数据 59 + // 1.2 校验是否为公海数据
  60 + // TODO @puhui999:这个判断去掉比较合适哈。这里更多是业务逻辑,不算权限判断。例如说,公海的客户,只要没负责人,就可以领取了;
59 if (permission.getOwnerUserId() == null) { 61 if (permission.getOwnerUserId() == null) {
60 return; 62 return;
61 } 63 }
62 - // 1.3. 校验当前负责人是不是自己 64 + // 1.3 校验当前负责人是不是自己
63 if (ObjUtil.equal(permission.getOwnerUserId(), getUserId())) { 65 if (ObjUtil.equal(permission.getOwnerUserId(), getUserId())) {
64 return; 66 return;
65 } 67 }
@@ -68,6 +70,7 @@ public class CrmPermissionAspect { @@ -68,6 +70,7 @@ public class CrmPermissionAspect {
68 // 2. 校验是否有读权限 70 // 2. 校验是否有读权限
69 if (OperationTypeEnum.isRead(operationType)) { 71 if (OperationTypeEnum.isRead(operationType)) {
70 // 校验该数据当前用户是否可读 72 // 校验该数据当前用户是否可读
  73 + // TODO @puhui999:直接 CollUtil.contains 就好,因为就是有某个 userId 呀
71 boolean isRead = CollUtil.contains(permission.getRoUserIds(), item -> ObjUtil.equal(item, getUserId())) 74 boolean isRead = CollUtil.contains(permission.getRoUserIds(), item -> ObjUtil.equal(item, getUserId()))
72 || CollUtil.contains(permission.getRwUserIds(), item -> ObjUtil.equal(item, getUserId())); 75 || CollUtil.contains(permission.getRwUserIds(), item -> ObjUtil.equal(item, getUserId()));
73 if (isRead) { 76 if (isRead) {
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/framework/enums/CrmEnum.java
@@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjUtil; @@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjUtil;
4 import lombok.Getter; 4 import lombok.Getter;
5 import lombok.RequiredArgsConstructor; 5 import lombok.RequiredArgsConstructor;
6 6
  7 +// TODO @puhui999:可以改成 CrmBizTypeEnum,CRM 业务类型枚举
7 /** 8 /**
8 * Crm 类型枚举 9 * Crm 类型枚举
9 * 10 *
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/framework/enums/OperationTypeEnum.java
@@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjUtil; @@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjUtil;
4 import lombok.Getter; 4 import lombok.Getter;
5 import lombok.RequiredArgsConstructor; 5 import lombok.RequiredArgsConstructor;
6 6
  7 +// TODO @puhui999:是不是可以和 PermissionTypeEnum 合并,就是 CrmPermissionEnum,负责人、读取、读写;目前阶段,不用做的特别细致;类似 linux 的 acl;
7 /** 8 /**
8 * Crm 数据操作类型枚举 9 * Crm 数据操作类型枚举
9 * 10 *
@@ -13,6 +14,7 @@ import lombok.RequiredArgsConstructor; @@ -13,6 +14,7 @@ import lombok.RequiredArgsConstructor;
13 @Getter 14 @Getter
14 public enum OperationTypeEnum { 15 public enum OperationTypeEnum {
15 16
  17 + // TODO @puhui999:抽象上,就分三种,会更合理。一个 OWNER 负责人,一个 READ 读,一个 WRITE 写;
16 DELETE(1, "删除"), 18 DELETE(1, "删除"),
17 UPDATE(2, "修改"), 19 UPDATE(2, "修改"),
18 READ(3, "查询"); 20 READ(3, "查询");
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerServiceImpl.java
@@ -115,8 +115,8 @@ public class CrmCustomerServiceImpl implements CrmCustomerService { @@ -115,8 +115,8 @@ public class CrmCustomerServiceImpl implements CrmCustomerService {
115 /** 115 /**
116 * 校验客户是否存在 116 * 校验客户是否存在
117 * 117 *
118 - * @param customerId 客户id  
119 - * @return 118 + * @param customerId 客户 id
  119 + * @return 客户
120 */ 120 */
121 @Override 121 @Override
122 public CrmCustomerDO validateCustomer(Long customerId) { 122 public CrmCustomerDO validateCustomer(Long customerId) {
@@ -130,7 +130,7 @@ public class CrmCustomerServiceImpl implements CrmCustomerService { @@ -130,7 +130,7 @@ public class CrmCustomerServiceImpl implements CrmCustomerService {
130 @Override 130 @Override
131 @Transactional(rollbackFor = Exception.class) 131 @Transactional(rollbackFor = Exception.class)
132 public void transferCustomer(CrmTransferCustomerReqVO reqVO, Long userId) { 132 public void transferCustomer(CrmTransferCustomerReqVO reqVO, Long userId) {
133 - // 1 校验合同是否存在 133 + // 1. 校验合同是否存在
134 validateCustomer(reqVO.getId()); 134 validateCustomer(reqVO.getId());
135 135
136 // 2. 数据权限转移 136 // 2. 数据权限转移
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/permission/CrmPermissionService.java
@@ -16,6 +16,7 @@ import javax.validation.Valid; @@ -16,6 +16,7 @@ import javax.validation.Valid;
16 */ 16 */
17 public interface CrmPermissionService { 17 public interface CrmPermissionService {
18 18
  19 + // TODO @puhui999:方法名上,不用 Crm
19 /** 20 /**
20 * 创建数据权限 21 * 创建数据权限
21 * 22 *
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/permission/CrmPermissionServiceImpl.java
@@ -41,6 +41,7 @@ public class CrmPermissionServiceImpl implements CrmPermissionService { @@ -41,6 +41,7 @@ public class CrmPermissionServiceImpl implements CrmPermissionService {
41 @Override 41 @Override
42 @Transactional(rollbackFor = Exception.class) 42 @Transactional(rollbackFor = Exception.class)
43 public Long createCrmPermission(CrmPermissionCreateBO createBO) { 43 public Long createCrmPermission(CrmPermissionCreateBO createBO) {
  44 + // TODO @puhui999:createDO 改成 permission,保持统一哈;
44 CrmPermissionDO createDO = CrmPermissionConvert.INSTANCE.convert(createBO); 45 CrmPermissionDO createDO = CrmPermissionConvert.INSTANCE.convert(createBO);
45 crmPermissionMapper.insert(createDO); 46 crmPermissionMapper.insert(createDO);
46 return createDO.getId(); 47 return createDO.getId();
@@ -50,7 +51,7 @@ public class CrmPermissionServiceImpl implements CrmPermissionService { @@ -50,7 +51,7 @@ public class CrmPermissionServiceImpl implements CrmPermissionService {
50 @Transactional(rollbackFor = Exception.class) 51 @Transactional(rollbackFor = Exception.class)
51 public void updateCrmPermission(CrmPermissionUpdateBO updateBO) { 52 public void updateCrmPermission(CrmPermissionUpdateBO updateBO) {
52 validateCrmPermissionExists(updateBO.getId()); 53 validateCrmPermissionExists(updateBO.getId());
53 - 54 + // 更新操作
54 CrmPermissionDO updateDO = CrmPermissionConvert.INSTANCE.convert(updateBO); 55 CrmPermissionDO updateDO = CrmPermissionConvert.INSTANCE.convert(updateBO);
55 crmPermissionMapper.updateById(updateDO); 56 crmPermissionMapper.updateById(updateDO);
56 } 57 }
@@ -59,7 +60,7 @@ public class CrmPermissionServiceImpl implements CrmPermissionService { @@ -59,7 +60,7 @@ public class CrmPermissionServiceImpl implements CrmPermissionService {
59 @Transactional(rollbackFor = Exception.class) 60 @Transactional(rollbackFor = Exception.class)
60 public void deleteCrmPermission(Long id) { 61 public void deleteCrmPermission(Long id) {
61 validateCrmPermissionExists(id); 62 validateCrmPermissionExists(id);
62 - 63 + // 删除
63 crmPermissionMapper.deleteById(id); 64 crmPermissionMapper.deleteById(id);
64 } 65 }
65 66
@@ -74,9 +75,11 @@ public class CrmPermissionServiceImpl implements CrmPermissionService { @@ -74,9 +75,11 @@ public class CrmPermissionServiceImpl implements CrmPermissionService {
74 return crmPermissionMapper.selectByCrmTypeAndCrmDataId(crmType, crmDataId); 75 return crmPermissionMapper.selectByCrmTypeAndCrmDataId(crmType, crmDataId);
75 } 76 }
76 77
  78 + // TODO @puhui999:参数名,是不是 transferReqBO
77 @Override 79 @Override
78 public void transferCrmPermission(TransferCrmPermissionBO transferCrmPermissionBO) { 80 public void transferCrmPermission(TransferCrmPermissionBO transferCrmPermissionBO) {
79 - // 1 校验商机是否存在 81 + // 1.1 校验商机是否存在
  82 + // TODO puhui999:这里直接调用 crmPermissionMapper 的 selectByCrmTypeAndCrmDataId 方法,会更简洁一点;
80 CrmPermissionDO permission = getCrmPermissionByCrmTypeAndCrmDataId(transferCrmPermissionBO.getCrmType(), 83 CrmPermissionDO permission = getCrmPermissionByCrmTypeAndCrmDataId(transferCrmPermissionBO.getCrmType(),
81 transferCrmPermissionBO.getCrmDataId()); 84 transferCrmPermissionBO.getCrmDataId());
82 String crmName = CrmEnum.getNameByType(transferCrmPermissionBO.getCrmType()); 85 String crmName = CrmEnum.getNameByType(transferCrmPermissionBO.getCrmType());
@@ -85,6 +88,7 @@ public class CrmPermissionServiceImpl implements CrmPermissionService { @@ -85,6 +88,7 @@ public class CrmPermissionServiceImpl implements CrmPermissionService {
85 } 88 }
86 // 1.2 校验转移对象是否已经是该负责人 89 // 1.2 校验转移对象是否已经是该负责人
87 if (ObjUtil.equal(permission.getOwnerUserId(), permission.getOwnerUserId())) { 90 if (ObjUtil.equal(permission.getOwnerUserId(), permission.getOwnerUserId())) {
  91 + // TODO @puhui999:是不是这个错误码不太对。。。
88 throw exception(CRM_PERMISSION_MODEL_TRANSFER_FAIL_OWNER_USER_NOT_EXISTS, crmName); 92 throw exception(CRM_PERMISSION_MODEL_TRANSFER_FAIL_OWNER_USER_NOT_EXISTS, crmName);
89 } 93 }
90 // 1.3 校验新负责人是否存在 94 // 1.3 校验新负责人是否存在
@@ -94,11 +98,12 @@ public class CrmPermissionServiceImpl implements CrmPermissionService { @@ -94,11 +98,12 @@ public class CrmPermissionServiceImpl implements CrmPermissionService {
94 } 98 }
95 // TODO 校验是否为超级管理员 || 1.4 99 // TODO 校验是否为超级管理员 || 1.4
96 // 1.4 校验是否有写权限 100 // 1.4 校验是否有写权限
  101 + // TODO puhui999:CollUtil.contains 就够了,不用后面写个表达式;
97 if (!CollUtil.contains(permission.getRwUserIds(), id -> ObjUtil.equal(id, transferCrmPermissionBO.getUserId()))) { 102 if (!CollUtil.contains(permission.getRwUserIds(), id -> ObjUtil.equal(id, transferCrmPermissionBO.getUserId()))) {
98 throw exception(CRM_PERMISSION_DENIED, crmName); 103 throw exception(CRM_PERMISSION_DENIED, crmName);
99 } 104 }
100 105
101 - // 2 权限转移 106 + // 2. 权限转移
102 CrmPermissionDO updateCrmPermission = new CrmPermissionDO().setId(permission.getId()) 107 CrmPermissionDO updateCrmPermission = new CrmPermissionDO().setId(permission.getId())
103 .setOwnerUserId(transferCrmPermissionBO.getOwnerUserId()); 108 .setOwnerUserId(transferCrmPermissionBO.getOwnerUserId());
104 if (ObjUtil.equal(TransferTypeEnum.TEAM.getType(), transferCrmPermissionBO.getTransferType())) { 109 if (ObjUtil.equal(TransferTypeEnum.TEAM.getType(), transferCrmPermissionBO.getTransferType())) {
@@ -116,6 +121,7 @@ public class CrmPermissionServiceImpl implements CrmPermissionService { @@ -116,6 +121,7 @@ public class CrmPermissionServiceImpl implements CrmPermissionService {
116 crmPermissionMapper.updateById(updateCrmPermission); 121 crmPermissionMapper.updateById(updateCrmPermission);
117 122
118 // 3. TODO 记录机转移日志 123 // 3. TODO 记录机转移日志
  124 + // TODO @puhui999:是不是交给业务记录哈;
119 } 125 }
120 126
121 } 127 }
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/permission/bo/CrmPermissionCreateBO.java
@@ -6,6 +6,7 @@ import lombok.Data; @@ -6,6 +6,7 @@ import lombok.Data;
6 import javax.validation.constraints.NotNull; 6 import javax.validation.constraints.NotNull;
7 import java.util.Set; 7 import java.util.Set;
8 8
  9 +// TODO @puhui999:,一个是 Crm 前缀,一个 Req 表示入参
9 /** 10 /**
10 * crm 数据权限 Create BO 11 * crm 数据权限 Create BO
11 * 12 *
@@ -14,6 +15,8 @@ import java.util.Set; @@ -14,6 +15,8 @@ import java.util.Set;
14 @Data 15 @Data
15 public class CrmPermissionCreateBO { 16 public class CrmPermissionCreateBO {
16 17
  18 + // TODO @puhui999:如果是关联字段,换一行写它的注释;不然看着略乱哈
  19 +
17 /** 20 /**
18 * Crm 类型 关联 {@link CrmEnum} 21 * Crm 类型 关联 {@link CrmEnum}
19 */ 22 */
@@ -24,6 +27,7 @@ public class CrmPermissionCreateBO { @@ -24,6 +27,7 @@ public class CrmPermissionCreateBO {
24 */ 27 */
25 @NotNull(message = "Crm 数据编号不能为空") 28 @NotNull(message = "Crm 数据编号不能为空")
26 private Long crmDataId; 29 private Long crmDataId;
  30 +
27 /** 31 /**
28 * 负责人的用户编号 关联 AdminUser#id, null 则为公海数据 32 * 负责人的用户编号 关联 AdminUser#id, null 则为公海数据
29 */ 33 */
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/permission/bo/CrmPermissionUpdateBO.java
@@ -7,6 +7,7 @@ import lombok.Data; @@ -7,6 +7,7 @@ import lombok.Data;
7 import javax.validation.constraints.NotNull; 7 import javax.validation.constraints.NotNull;
8 import java.util.Set; 8 import java.util.Set;
9 9
  10 +// TODO @puhui999:,一个是 Crm 前缀,一个 Req 表示入参
10 /** 11 /**
11 * crm 数据权限 Update BO 12 * crm 数据权限 Update BO
12 * 13 *
@@ -15,6 +16,7 @@ import java.util.Set; @@ -15,6 +16,7 @@ import java.util.Set;
15 @Data 16 @Data
16 public class CrmPermissionUpdateBO { 17 public class CrmPermissionUpdateBO {
17 18
  19 + // TODO @puhui999:id 和 crmType + crmDataId 是不是重叠了;
18 /** 20 /**
19 * 数据权限编号 {@link CrmPermissionDO#getId()} 21 * 数据权限编号 {@link CrmPermissionDO#getId()}
20 */ 22 */
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/permission/bo/TransferCrmPermissionBO.java
@@ -7,6 +7,7 @@ import lombok.Data; @@ -7,6 +7,7 @@ import lombok.Data;
7 7
8 import javax.validation.constraints.NotNull; 8 import javax.validation.constraints.NotNull;
9 9
  10 +// TODO @puhui999:CrmTransferPermissionReqBO,一个是 Crm 前缀,一个 Req 表示入参
10 /** 11 /**
11 * 数据权限转移 BO 12 * 数据权限转移 BO
12 * 13 *
@@ -15,26 +16,30 @@ import javax.validation.constraints.NotNull; @@ -15,26 +16,30 @@ import javax.validation.constraints.NotNull;
15 @Data 16 @Data
16 public class TransferCrmPermissionBO { 17 public class TransferCrmPermissionBO {
17 18
  19 + // TODO @puhui999:参数的注释
18 @NotNull(message = "用户编号不能为空") 20 @NotNull(message = "用户编号不能为空")
19 private Long userId; 21 private Long userId;
20 22
  23 + // TODO @puhui999:bizType
21 /** 24 /**
22 - * Crm 类型 关联 {@link CrmEnum} 25 + * Crm 类型 关联 {@link CrmEnum} TODO 这种不用再写关联了,直接 @InEnum 参数校验
23 */ 26 */
24 @NotNull(message = "Crm 类型不能为空") 27 @NotNull(message = "Crm 类型不能为空")
25 private Integer crmType; 28 private Integer crmType;
26 29
  30 + // TODO @puhui999:bizId
27 /** 31 /**
28 - * 数据编号 关联 {@link CrmEnum} 对应模块 DO#getId() 32 + * 数据编号
29 */ 33 */
30 @NotNull(message = "Crm 数据编号不能为空") 34 @NotNull(message = "Crm 数据编号不能为空")
31 private Long crmDataId; 35 private Long crmDataId;
32 36
  37 + // TODO @puhui999:要不这里改成 newOwnerUserId;然后,transferType 和 permissionType,合并成 oldOwnerPermission(空就是移除)
33 @NotNull(message = "新负责人的用户编号不能为空") 38 @NotNull(message = "新负责人的用户编号不能为空")
34 private Long ownerUserId; 39 private Long ownerUserId;
35 40
36 /** 41 /**
37 - * 原负责人移除方式, 关联 {@link TransferTypeEnum} 42 + * 原负责人移除方式, 关联 {@link TransferTypeEnum} TODO 这种不用再写关联了,直接 @InEnum 参数校验
38 */ 43 */
39 @NotNull(message = "原负责人移除方式不能为空") 44 @NotNull(message = "原负责人移除方式不能为空")
40 private Integer transferType; 45 private Integer transferType;