Commit a5d33692c1d6967ee6d9dd34fa0d84b4339d18df

Authored by dhb52
1 parent 72113bbb

refactor: TodayCustomer利用CrmCustomerController#getCustomerPage

yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/backlog/CrmBacklogController.java deleted
1   -package cn.iocoder.yudao.module.crm.controller.admin.backlog;
2   -
3   -import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
5   -import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
6   -import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.CrmCustomerRespVO;
7   -import cn.iocoder.yudao.module.crm.controller.admin.backlog.vo.CrmTodayCustomerPageReqVO;
8   -import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerDO;
9   -import cn.iocoder.yudao.module.crm.service.message.CrmBacklogService;
10   -import io.swagger.v3.oas.annotations.Operation;
11   -import io.swagger.v3.oas.annotations.tags.Tag;
12   -import jakarta.annotation.Resource;
13   -import jakarta.validation.Valid;
14   -import org.springframework.security.access.prepost.PreAuthorize;
15   -import org.springframework.validation.annotation.Validated;
16   -import org.springframework.web.bind.annotation.GetMapping;
17   -import org.springframework.web.bind.annotation.RequestMapping;
18   -import org.springframework.web.bind.annotation.RestController;
19   -
20   -import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
21   -import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
22   -
23   -@Tag(name = "管理后台 - CRM待办消息")
24   -@RestController
25   -@RequestMapping("/crm/backlog")
26   -@Validated
27   -public class CrmBacklogController {
28   -
29   - @Resource
30   - private CrmBacklogService crmMessageService;
31   -
32   - // TODO 芋艿:未来可能合并到 CrmCustomerController
33   - @GetMapping("/today-customer-page")
34   - @Operation(summary = "今日需联系客户")
35   - @PreAuthorize("@ss.hasPermission('crm:customer:query')")
36   - public CommonResult<PageResult<CrmCustomerRespVO>> getTodayCustomerPage(@Valid CrmTodayCustomerPageReqVO pageReqVO) {
37   - PageResult<CrmCustomerDO> pageResult = crmMessageService.getTodayCustomerPage(pageReqVO, getLoginUserId());
38   - return success(BeanUtils.toBean(pageResult, CrmCustomerRespVO.class));
39   - }
40   -
41   -}
42 0 \ No newline at end of file
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/backlog/vo/CrmTodayCustomerPageReqVO.java deleted
1   -package cn.iocoder.yudao.module.crm.controller.admin.backlog.vo;
2   -
3   -import cn.iocoder.yudao.framework.common.pojo.PageParam;
4   -import cn.iocoder.yudao.framework.common.validation.InEnum;
5   -import cn.iocoder.yudao.module.crm.enums.common.CrmSceneTypeEnum;
6   -import io.swagger.v3.oas.annotations.media.Schema;
7   -import lombok.Data;
8   -import lombok.EqualsAndHashCode;
9   -import lombok.ToString;
10   -
11   -@Schema(description = "管理后台 - 今日需联系客户 Request VO")
12   -@Data
13   -@EqualsAndHashCode(callSuper = true)
14   -@ToString(callSuper = true)
15   -public class CrmTodayCustomerPageReqVO extends PageParam {
16   -
17   - /**
18   - * 联系状态 - 今日需联系
19   - */
20   - public static final int CONTACT_TODAY = 1;
21   - /**
22   - * 联系状态 - 已逾期
23   - */
24   - public static final int CONTACT_EXPIRED = 2;
25   - /**
26   - * 联系状态 - 已联系
27   - */
28   - public static final int CONTACT_ALREADY = 3;
29   -
30   - @Schema(description = "联系状态", example = "1")
31   - private Integer contactStatus;
32   -
33   - @Schema(description = "场景类型", example = "1")
34   - @InEnum(CrmSceneTypeEnum.class)
35   - private Integer sceneType;
36   -
37   -}
38 0 \ No newline at end of file
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/CrmCustomerController.java
... ... @@ -130,8 +130,7 @@ public class CrmCustomerController {
130 130 CrmCustomerPoolConfigDO poolConfigDO = customerPoolConfigService.getCustomerPoolConfig();
131 131 if (ObjUtil.isNull(poolConfigDO)
132 132 || Boolean.FALSE.equals(poolConfigDO.getEnabled())
133   - || Boolean.FALSE.equals(poolConfigDO.getNotifyEnabled())
134   - ) { // TODO @dbh52:这个括号,一般不换行,在 java 这里;
  133 + || Boolean.FALSE.equals(poolConfigDO.getNotifyEnabled())) {
135 134 throw exception(CUSTOMER_POOL_CONFIG_NOT_EXISTS_OR_DISABLED);
136 135 }
137 136  
... ...
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/vo/CrmCustomerPageReqVO.java
... ... @@ -14,6 +14,19 @@ import lombok.ToString;
14 14 @ToString(callSuper = true)
15 15 public class CrmCustomerPageReqVO extends PageParam {
16 16  
  17 + /**
  18 + * 联系状态 - 今日需联系
  19 + */
  20 + public static final int CONTACT_TODAY = 1;
  21 + /**
  22 + * 联系状态 - 已逾期
  23 + */
  24 + public static final int CONTACT_EXPIRED = 2;
  25 + /**
  26 + * 联系状态 - 已联系
  27 + */
  28 + public static final int CONTACT_ALREADY = 3;
  29 +
17 30 @Schema(description = "客户名称", example = "赵六")
18 31 private String name;
19 32  
... ... @@ -36,4 +49,10 @@ public class CrmCustomerPageReqVO extends PageParam {
36 49 @Schema(description = "是否为公海数据", requiredMode = Schema.RequiredMode.REQUIRED, example = "false")
37 50 private Boolean pool; // null 则表示为不是公海数据
38 51  
  52 + @Schema(description = "联系状态", example = "1")
  53 + private Integer contactStatus; // backlog查询条件, null 则表示为不做查询
  54 +
  55 + @Schema(description = "跟进状态", example = "true")
  56 + private Boolean followUpStatus; // backlog查询条件, null 则表示为不做查询
  57 +
39 58 }
... ...
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/customer/CrmCustomerMapper.java
1 1 package cn.iocoder.yudao.module.crm.dal.mysql.customer;
2 2  
3 3 import cn.hutool.core.date.LocalDateTimeUtil;
  4 +import cn.hutool.core.util.ObjUtil;
4 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 6 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
6 7 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
7 8 import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
8   -import cn.iocoder.yudao.module.crm.controller.admin.backlog.vo.CrmTodayCustomerPageReqVO;
9 9 import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.CrmCustomerPageReqVO;
10 10 import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerDO;
11 11 import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerPoolConfigDO;
... ... @@ -15,6 +15,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
15 15 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
16 16 import org.apache.ibatis.annotations.Mapper;
17 17 import org.springframework.lang.Nullable;
  18 +import org.springframework.util.Assert;
18 19  
19 20 import java.time.LocalDateTime;
20 21 import java.util.Collection;
... ... @@ -58,49 +59,36 @@ public interface CrmCustomerMapper extends BaseMapperX&lt;CrmCustomerDO&gt; {
58 59 .eqIfPresent(CrmCustomerDO::getIndustryId, pageReqVO.getIndustryId())
59 60 .eqIfPresent(CrmCustomerDO::getLevel, pageReqVO.getLevel())
60 61 .eqIfPresent(CrmCustomerDO::getSource, pageReqVO.getSource());
61   - return selectJoinPage(pageReqVO, CrmCustomerDO.class, query);
62   - }
63   -
64   - default List<CrmCustomerDO> selectBatchIds(Collection<Long> ids, Long userId) {
65   - MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>();
66   - // 拼接数据权限的查询条件
67   - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(), ids, userId);
68   - // 拼接自身的查询条件
69   - query.selectAll(CrmCustomerDO.class).in(CrmCustomerDO::getId, ids).orderByDesc(CrmCustomerDO::getId);
70   - return selectJoinList(CrmCustomerDO.class, query);
71   - }
72 62  
73   - /**
74   - * 待办事项 - 今日需联系客户
75   - *
76   - * @param pageReqVO 分页请求参数
77   - * @param userId 当前用户ID
78   - * @return 分页结果
79   - */
80   - default PageResult<CrmCustomerDO> selectTodayCustomerPage(CrmTodayCustomerPageReqVO pageReqVO, Long userId) {
81   - MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>();
82   - // 拼接数据权限的查询条件
83   - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(),
84   - CrmCustomerDO::getId, userId, pageReqVO.getSceneType(), null);
  63 + // backlog 查询
  64 + if (ObjUtil.isNotNull(pageReqVO.getContactStatus())) {
  65 + Assert.isNull(pageReqVO.getPool(), "[是否为公海数据]必须是null");
85 66  
86   - // 拼接自身的查询条件
87   - query.selectAll(CrmCustomerDO.class);
88   - if (pageReqVO.getContactStatus() != null) {
89 67 LocalDateTime beginOfToday = LocalDateTimeUtil.beginOfDay(LocalDateTime.now());
90 68 LocalDateTime endOfToday = LocalDateTimeUtil.endOfDay(LocalDateTime.now());
91   - if (pageReqVO.getContactStatus().equals(CrmTodayCustomerPageReqVO.CONTACT_TODAY)) { // 今天需联系
  69 + if (pageReqVO.getContactStatus().equals(CrmCustomerPageReqVO.CONTACT_TODAY)) { // 今天需联系
92 70 query.between(CrmCustomerDO::getContactNextTime, beginOfToday, endOfToday);
93   - } else if (pageReqVO.getContactStatus().equals(CrmTodayCustomerPageReqVO.CONTACT_EXPIRED)) { // 已逾期
  71 + } else if (pageReqVO.getContactStatus().equals(CrmCustomerPageReqVO.CONTACT_EXPIRED)) { // 已逾期
94 72 query.lt(CrmCustomerDO::getContactNextTime, beginOfToday);
95   - } else if (pageReqVO.getContactStatus().equals(CrmTodayCustomerPageReqVO.CONTACT_ALREADY)) { // 已联系
  73 + } else if (pageReqVO.getContactStatus().equals(CrmCustomerPageReqVO.CONTACT_ALREADY)) { // 已联系
96 74 query.between(CrmCustomerDO::getContactLastTime, beginOfToday, endOfToday);
97 75 } else {
98 76 throw new IllegalArgumentException("未知联系状态:" + pageReqVO.getContactStatus());
99 77 }
100 78 }
  79 +
101 80 return selectJoinPage(pageReqVO, CrmCustomerDO.class, query);
102 81 }
103 82  
  83 + default List<CrmCustomerDO> selectBatchIds(Collection<Long> ids, Long userId) {
  84 + MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>();
  85 + // 拼接数据权限的查询条件
  86 + CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(), ids, userId);
  87 + // 拼接自身的查询条件
  88 + query.selectAll(CrmCustomerDO.class).in(CrmCustomerDO::getId, ids).orderByDesc(CrmCustomerDO::getId);
  89 + return selectJoinList(CrmCustomerDO.class, query);
  90 + }
  91 +
104 92 default List<CrmCustomerDO> selectListByLockAndNotPool(Boolean lockStatus) {
105 93 return selectList(new LambdaQueryWrapper<CrmCustomerDO>()
106 94 .eq(CrmCustomerDO::getLockStatus, lockStatus)
... ... @@ -118,7 +106,9 @@ public interface CrmCustomerMapper extends BaseMapperX&lt;CrmCustomerDO&gt; {
118 106 // 拼接数据权限的查询条件
119 107 CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(),
120 108 CrmCustomerDO::getId, userId, pageReqVO.getSceneType(), null);
121   - // TODO @dhb52:lock 的情况,不需要提醒哈;
  109 +
  110 + // 锁定状态不需要提醒
  111 + query.ne(CrmCustomerDO::getLockStatus, true);
122 112  
123 113 // 拼接自身的查询条件
124 114 query.selectAll(CrmCustomerDO.class);
... ...
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/message/CrmBacklogService.java deleted
1   -package cn.iocoder.yudao.module.crm.service.message;
2   -
3   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.module.crm.controller.admin.backlog.vo.CrmTodayCustomerPageReqVO;
5   -import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerDO;
6   -import jakarta.validation.Valid;
7   -
8   -/**
9   - * CRM 待办消息 Service 接口
10   - *
11   - * @author dhb52
12   - */
13   -public interface CrmBacklogService {
14   -
15   - /**
16   - * 根据【联系状态】、【场景类型】筛选客户分页
17   - *
18   - * @param pageReqVO 分页查询
19   - * @return 分页数据
20   - */
21   - PageResult<CrmCustomerDO> getTodayCustomerPage(@Valid CrmTodayCustomerPageReqVO pageReqVO, Long userId);
22   -
23   -}
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/message/CrmBacklogServiceImpl.java deleted
1   -package cn.iocoder.yudao.module.crm.service.message;
2   -
3   -import cn.iocoder.yudao.framework.common.pojo.PageResult;
4   -import cn.iocoder.yudao.module.crm.controller.admin.backlog.vo.CrmTodayCustomerPageReqVO;
5   -import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerDO;
6   -import cn.iocoder.yudao.module.crm.dal.mysql.customer.CrmCustomerMapper;
7   -import jakarta.annotation.Resource;
8   -import org.springframework.stereotype.Component;
9   -import org.springframework.validation.annotation.Validated;
10   -
11   -/**
12   - * 待办消息 Service 实现类
13   - *
14   - * @author dhb52
15   - */
16   -@Component
17   -@Validated
18   -public class CrmBacklogServiceImpl implements CrmBacklogService {
19   -
20   - @Resource
21   - private CrmCustomerMapper customerMapper;
22   -
23   - @Override
24   - public PageResult<CrmCustomerDO> getTodayCustomerPage(CrmTodayCustomerPageReqVO pageReqVO, Long userId) {
25   - return customerMapper.selectTodayCustomerPage(pageReqVO, userId);
26   - }
27   -
28   -}