Commit dd6981d90128d72d5e3d5fe678934969a691ea21
Merge remote-tracking branch 'yudao/develop' into develop
# Conflicts: # yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivablePlanServiceImpl.java
Showing
20 changed files
with
83 additions
and
193 deletions
yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/permission/CrmPermissionLevelEnum.java
| @@ -10,6 +10,8 @@ import java.util.Arrays; | @@ -10,6 +10,8 @@ import java.util.Arrays; | ||
| 10 | /** | 10 | /** |
| 11 | * CRM 数据权限级别枚举 | 11 | * CRM 数据权限级别枚举 |
| 12 | * | 12 | * |
| 13 | + * OWNER > WRITE > READ | ||
| 14 | + * | ||
| 13 | * @author HUIHUI | 15 | * @author HUIHUI |
| 14 | */ | 16 | */ |
| 15 | @Getter | 17 | @Getter |
| @@ -17,8 +19,8 @@ import java.util.Arrays; | @@ -17,8 +19,8 @@ import java.util.Arrays; | ||
| 17 | public enum CrmPermissionLevelEnum implements IntArrayValuable { | 19 | public enum CrmPermissionLevelEnum implements IntArrayValuable { |
| 18 | 20 | ||
| 19 | OWNER(1, "负责人"), | 21 | OWNER(1, "负责人"), |
| 20 | - READ(2, "读"), | ||
| 21 | - WRITE(3, "写"); | 22 | + READ(2, "只读"), |
| 23 | + WRITE(3, "读写"); | ||
| 22 | 24 | ||
| 23 | public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(CrmPermissionLevelEnum::getLevel).toArray(); | 25 | public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(CrmPermissionLevelEnum::getLevel).toArray(); |
| 24 | 26 |
yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/permission/CrmPermissionRoleCodeEnum.java deleted
| 1 | -package cn.iocoder.yudao.module.crm.enums.permission; | ||
| 2 | - | ||
| 3 | -import lombok.AllArgsConstructor; | ||
| 4 | -import lombok.Getter; | ||
| 5 | - | ||
| 6 | -/** | ||
| 7 | - * Crm 数据权限角色枚举 | ||
| 8 | - * | ||
| 9 | - * @author HUIHUI | ||
| 10 | - */ | ||
| 11 | -@Getter | ||
| 12 | -@AllArgsConstructor | ||
| 13 | -public enum CrmPermissionRoleCodeEnum { | ||
| 14 | - | ||
| 15 | - CRM_ADMIN("crm_admin", "CRM 管理员"); | ||
| 16 | - | ||
| 17 | - /** | ||
| 18 | - * 角色标识 | ||
| 19 | - */ | ||
| 20 | - private String code; | ||
| 21 | - /** | ||
| 22 | - * 角色名称 | ||
| 23 | - */ | ||
| 24 | - private String name; | ||
| 25 | - | ||
| 26 | -} | ||
| 27 | - |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/CrmCustomerLimitConfigController.java
| @@ -3,10 +3,11 @@ package cn.iocoder.yudao.module.crm.controller.admin.customer; | @@ -3,10 +3,11 @@ package cn.iocoder.yudao.module.crm.controller.admin.customer; | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; | 4 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | ||
| 7 | +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | ||
| 6 | import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigPageReqVO; | 8 | import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigPageReqVO; |
| 7 | import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigRespVO; | 9 | import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigRespVO; |
| 8 | import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigSaveReqVO; | 10 | import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigSaveReqVO; |
| 9 | -import cn.iocoder.yudao.module.crm.convert.customer.CrmCustomerLimitConfigConvert; | ||
| 10 | import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerLimitConfigDO; | 11 | import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerLimitConfigDO; |
| 11 | import cn.iocoder.yudao.module.crm.service.customer.CrmCustomerLimitConfigService; | 12 | import cn.iocoder.yudao.module.crm.service.customer.CrmCustomerLimitConfigService; |
| 12 | import cn.iocoder.yudao.module.system.api.dept.DeptApi; | 13 | import cn.iocoder.yudao.module.system.api.dept.DeptApi; |
| @@ -71,11 +72,14 @@ public class CrmCustomerLimitConfigController { | @@ -71,11 +72,14 @@ public class CrmCustomerLimitConfigController { | ||
| 71 | @Parameter(name = "id", description = "编号", required = true, example = "1024") | 72 | @Parameter(name = "id", description = "编号", required = true, example = "1024") |
| 72 | @PreAuthorize("@ss.hasPermission('crm:customer-limit-config:query')") | 73 | @PreAuthorize("@ss.hasPermission('crm:customer-limit-config:query')") |
| 73 | public CommonResult<CrmCustomerLimitConfigRespVO> getCustomerLimitConfig(@RequestParam("id") Long id) { | 74 | public CommonResult<CrmCustomerLimitConfigRespVO> getCustomerLimitConfig(@RequestParam("id") Long id) { |
| 74 | - CrmCustomerLimitConfigDO customerLimitConfig = customerLimitConfigService.getCustomerLimitConfig(id); | 75 | + CrmCustomerLimitConfigDO limitConfig = customerLimitConfigService.getCustomerLimitConfig(id); |
| 75 | // 拼接数据 | 76 | // 拼接数据 |
| 76 | - Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(customerLimitConfig.getUserIds()); | ||
| 77 | - Map<Long, DeptRespDTO> deptMap = deptApi.getDeptMap(customerLimitConfig.getDeptIds()); | ||
| 78 | - return success(CrmCustomerLimitConfigConvert.INSTANCE.convert(customerLimitConfig, userMap, deptMap)); | 77 | + Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(limitConfig.getUserIds()); |
| 78 | + Map<Long, DeptRespDTO> deptMap = deptApi.getDeptMap(limitConfig.getDeptIds()); | ||
| 79 | + return success(BeanUtils.toBean(limitConfig, CrmCustomerLimitConfigRespVO.class, configVO -> { | ||
| 80 | + configVO.setUsers(CollectionUtils.convertList(configVO.getUserIds(), userMap::get)); | ||
| 81 | + configVO.setDepts(CollectionUtils.convertList(configVO.getDeptIds(), deptMap::get)); | ||
| 82 | + })); | ||
| 79 | } | 83 | } |
| 80 | 84 | ||
| 81 | @GetMapping("/page") | 85 | @GetMapping("/page") |
| @@ -91,7 +95,10 @@ public class CrmCustomerLimitConfigController { | @@ -91,7 +95,10 @@ public class CrmCustomerLimitConfigController { | ||
| 91 | convertSetByFlatMap(pageResult.getList(), CrmCustomerLimitConfigDO::getUserIds, Collection::stream)); | 95 | convertSetByFlatMap(pageResult.getList(), CrmCustomerLimitConfigDO::getUserIds, Collection::stream)); |
| 92 | Map<Long, DeptRespDTO> deptMap = deptApi.getDeptMap( | 96 | Map<Long, DeptRespDTO> deptMap = deptApi.getDeptMap( |
| 93 | convertSetByFlatMap(pageResult.getList(), CrmCustomerLimitConfigDO::getDeptIds, Collection::stream)); | 97 | convertSetByFlatMap(pageResult.getList(), CrmCustomerLimitConfigDO::getDeptIds, Collection::stream)); |
| 94 | - return success(CrmCustomerLimitConfigConvert.INSTANCE.convertPage(pageResult, userMap, deptMap)); | 98 | + return success(BeanUtils.toBean(pageResult, CrmCustomerLimitConfigRespVO.class, configVO -> { |
| 99 | + configVO.setUsers(CollectionUtils.convertList(configVO.getUserIds(), userMap::get)); | ||
| 100 | + configVO.setDepts(CollectionUtils.convertList(configVO.getDeptIds(), deptMap::get)); | ||
| 101 | + })); | ||
| 95 | } | 102 | } |
| 96 | 103 | ||
| 97 | } | 104 | } |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/customer/CrmCustomerLimitConfigConvert.java deleted
| 1 | -package cn.iocoder.yudao.module.crm.convert.customer; | ||
| 2 | - | ||
| 3 | -import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 4 | -import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | ||
| 5 | -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | ||
| 6 | -import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.limitconfig.CrmCustomerLimitConfigRespVO; | ||
| 7 | -import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerLimitConfigDO; | ||
| 8 | -import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO; | ||
| 9 | -import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; | ||
| 10 | -import org.mapstruct.Mapper; | ||
| 11 | -import org.mapstruct.factory.Mappers; | ||
| 12 | - | ||
| 13 | -import java.util.List; | ||
| 14 | -import java.util.Map; | ||
| 15 | - | ||
| 16 | -/** | ||
| 17 | - * 客户限制配置 Convert | ||
| 18 | - * | ||
| 19 | - * @author Wanwan | ||
| 20 | - */ | ||
| 21 | -@Mapper | ||
| 22 | -public interface CrmCustomerLimitConfigConvert { | ||
| 23 | - | ||
| 24 | - CrmCustomerLimitConfigConvert INSTANCE = Mappers.getMapper(CrmCustomerLimitConfigConvert.class); | ||
| 25 | - | ||
| 26 | - default PageResult<CrmCustomerLimitConfigRespVO> convertPage( | ||
| 27 | - PageResult<CrmCustomerLimitConfigDO> pageResult, | ||
| 28 | - Map<Long, AdminUserRespDTO> userMap, Map<Long, DeptRespDTO> deptMap) { | ||
| 29 | - List<CrmCustomerLimitConfigRespVO> list = CollectionUtils.convertList(pageResult.getList(), | ||
| 30 | - limitConfig -> convert(limitConfig, userMap, deptMap)); | ||
| 31 | - return new PageResult<>(list, pageResult.getTotal()); | ||
| 32 | - } | ||
| 33 | - | ||
| 34 | - default CrmCustomerLimitConfigRespVO convert(CrmCustomerLimitConfigDO limitConfig, | ||
| 35 | - Map<Long, AdminUserRespDTO> userMap, Map<Long, DeptRespDTO> deptMap) { | ||
| 36 | - CrmCustomerLimitConfigRespVO limitConfigVO = BeanUtils.toBean(limitConfig, CrmCustomerLimitConfigRespVO.class); | ||
| 37 | - limitConfigVO.setUsers(CollectionUtils.convertList(limitConfigVO.getUserIds(), userMap::get)); | ||
| 38 | - limitConfigVO.setDepts(CollectionUtils.convertList(limitConfigVO.getDeptIds(), deptMap::get)); | ||
| 39 | - return limitConfigVO; | ||
| 40 | - } | ||
| 41 | - | ||
| 42 | -} |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/business/CrmBusinessMapper.java
| @@ -7,7 +7,7 @@ import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX; | @@ -7,7 +7,7 @@ import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX; | ||
| 7 | import cn.iocoder.yudao.module.crm.controller.admin.business.vo.business.CrmBusinessPageReqVO; | 7 | import cn.iocoder.yudao.module.crm.controller.admin.business.vo.business.CrmBusinessPageReqVO; |
| 8 | import cn.iocoder.yudao.module.crm.dal.dataobject.business.CrmBusinessDO; | 8 | import cn.iocoder.yudao.module.crm.dal.dataobject.business.CrmBusinessDO; |
| 9 | import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; | 9 | import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; |
| 10 | -import cn.iocoder.yudao.module.crm.util.CrmQueryWrapperUtils; | 10 | +import cn.iocoder.yudao.module.crm.util.CrmPermissionUtils; |
| 11 | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; | 11 | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| 12 | import org.apache.ibatis.annotations.Mapper; | 12 | import org.apache.ibatis.annotations.Mapper; |
| 13 | 13 | ||
| @@ -45,7 +45,7 @@ public interface CrmBusinessMapper extends BaseMapperX<CrmBusinessDO> { | @@ -45,7 +45,7 @@ public interface CrmBusinessMapper extends BaseMapperX<CrmBusinessDO> { | ||
| 45 | default PageResult<CrmBusinessDO> selectPage(CrmBusinessPageReqVO pageReqVO, Long userId) { | 45 | default PageResult<CrmBusinessDO> selectPage(CrmBusinessPageReqVO pageReqVO, Long userId) { |
| 46 | MPJLambdaWrapperX<CrmBusinessDO> query = new MPJLambdaWrapperX<>(); | 46 | MPJLambdaWrapperX<CrmBusinessDO> query = new MPJLambdaWrapperX<>(); |
| 47 | // 拼接数据权限的查询条件 | 47 | // 拼接数据权限的查询条件 |
| 48 | - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_BUSINESS.getType(), | 48 | + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_BUSINESS.getType(), |
| 49 | CrmBusinessDO::getId, userId, pageReqVO.getSceneType(), Boolean.FALSE); | 49 | CrmBusinessDO::getId, userId, pageReqVO.getSceneType(), Boolean.FALSE); |
| 50 | // 拼接自身的查询条件 | 50 | // 拼接自身的查询条件 |
| 51 | query.selectAll(CrmBusinessDO.class) | 51 | query.selectAll(CrmBusinessDO.class) |
| @@ -57,7 +57,7 @@ public interface CrmBusinessMapper extends BaseMapperX<CrmBusinessDO> { | @@ -57,7 +57,7 @@ public interface CrmBusinessMapper extends BaseMapperX<CrmBusinessDO> { | ||
| 57 | default List<CrmBusinessDO> selectBatchIds(Collection<Long> ids, Long userId) { | 57 | default List<CrmBusinessDO> selectBatchIds(Collection<Long> ids, Long userId) { |
| 58 | MPJLambdaWrapperX<CrmBusinessDO> query = new MPJLambdaWrapperX<>(); | 58 | MPJLambdaWrapperX<CrmBusinessDO> query = new MPJLambdaWrapperX<>(); |
| 59 | // 拼接数据权限的查询条件 | 59 | // 拼接数据权限的查询条件 |
| 60 | - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_BUSINESS.getType(), ids, userId); | 60 | + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_BUSINESS.getType(), ids, userId); |
| 61 | // 拼接自身的查询条件 | 61 | // 拼接自身的查询条件 |
| 62 | query.selectAll(CrmBusinessDO.class).in(CrmBusinessDO::getId, ids).orderByDesc(CrmBusinessDO::getId); | 62 | query.selectAll(CrmBusinessDO.class).in(CrmBusinessDO::getId, ids).orderByDesc(CrmBusinessDO::getId); |
| 63 | return selectJoinList(CrmBusinessDO.class, query); | 63 | return selectJoinList(CrmBusinessDO.class, query); |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/clue/CrmClueMapper.java
| @@ -7,7 +7,7 @@ import cn.iocoder.yudao.module.crm.controller.admin.clue.vo.CrmCluePageReqVO; | @@ -7,7 +7,7 @@ import cn.iocoder.yudao.module.crm.controller.admin.clue.vo.CrmCluePageReqVO; | ||
| 7 | import cn.iocoder.yudao.module.crm.dal.dataobject.clue.CrmClueDO; | 7 | import cn.iocoder.yudao.module.crm.dal.dataobject.clue.CrmClueDO; |
| 8 | import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; | 8 | import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; |
| 9 | import cn.iocoder.yudao.module.crm.enums.common.CrmSceneTypeEnum; | 9 | import cn.iocoder.yudao.module.crm.enums.common.CrmSceneTypeEnum; |
| 10 | -import cn.iocoder.yudao.module.crm.util.CrmQueryWrapperUtils; | 10 | +import cn.iocoder.yudao.module.crm.util.CrmPermissionUtils; |
| 11 | import org.apache.ibatis.annotations.Mapper; | 11 | import org.apache.ibatis.annotations.Mapper; |
| 12 | 12 | ||
| 13 | import java.util.Collection; | 13 | import java.util.Collection; |
| @@ -24,7 +24,7 @@ public interface CrmClueMapper extends BaseMapperX<CrmClueDO> { | @@ -24,7 +24,7 @@ public interface CrmClueMapper extends BaseMapperX<CrmClueDO> { | ||
| 24 | default PageResult<CrmClueDO> selectPage(CrmCluePageReqVO pageReqVO, Long userId) { | 24 | default PageResult<CrmClueDO> selectPage(CrmCluePageReqVO pageReqVO, Long userId) { |
| 25 | MPJLambdaWrapperX<CrmClueDO> query = new MPJLambdaWrapperX<>(); | 25 | MPJLambdaWrapperX<CrmClueDO> query = new MPJLambdaWrapperX<>(); |
| 26 | // 拼接数据权限的查询条件 | 26 | // 拼接数据权限的查询条件 |
| 27 | - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CLUE.getType(), | 27 | + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CLUE.getType(), |
| 28 | CrmClueDO::getId, userId, pageReqVO.getSceneType(), pageReqVO.getPool()); | 28 | CrmClueDO::getId, userId, pageReqVO.getSceneType(), pageReqVO.getPool()); |
| 29 | // 拼接自身的查询条件 | 29 | // 拼接自身的查询条件 |
| 30 | query.selectAll(CrmClueDO.class) | 30 | query.selectAll(CrmClueDO.class) |
| @@ -43,7 +43,7 @@ public interface CrmClueMapper extends BaseMapperX<CrmClueDO> { | @@ -43,7 +43,7 @@ public interface CrmClueMapper extends BaseMapperX<CrmClueDO> { | ||
| 43 | default List<CrmClueDO> selectBatchIds(Collection<Long> ids, Long userId) { | 43 | default List<CrmClueDO> selectBatchIds(Collection<Long> ids, Long userId) { |
| 44 | MPJLambdaWrapperX<CrmClueDO> query = new MPJLambdaWrapperX<>(); | 44 | MPJLambdaWrapperX<CrmClueDO> query = new MPJLambdaWrapperX<>(); |
| 45 | // 拼接数据权限的查询条件 | 45 | // 拼接数据权限的查询条件 |
| 46 | - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CLUE.getType(), ids, userId); | 46 | + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CLUE.getType(), ids, userId); |
| 47 | query.selectAll(CrmClueDO.class).in(CrmClueDO::getId, ids).orderByDesc(CrmClueDO::getId); | 47 | query.selectAll(CrmClueDO.class).in(CrmClueDO::getId, ids).orderByDesc(CrmClueDO::getId); |
| 48 | // 拼接自身的查询条件 | 48 | // 拼接自身的查询条件 |
| 49 | return selectJoinList(CrmClueDO.class, query); | 49 | return selectJoinList(CrmClueDO.class, query); |
| @@ -52,7 +52,7 @@ public interface CrmClueMapper extends BaseMapperX<CrmClueDO> { | @@ -52,7 +52,7 @@ public interface CrmClueMapper extends BaseMapperX<CrmClueDO> { | ||
| 52 | default Long selectCountByFollow(Long userId) { | 52 | default Long selectCountByFollow(Long userId) { |
| 53 | MPJLambdaWrapperX<CrmClueDO> query = new MPJLambdaWrapperX<>(); | 53 | MPJLambdaWrapperX<CrmClueDO> query = new MPJLambdaWrapperX<>(); |
| 54 | // 我负责的 + 非公海 | 54 | // 我负责的 + 非公海 |
| 55 | - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CLUE.getType(), | 55 | + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CLUE.getType(), |
| 56 | CrmClueDO::getId, userId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE); | 56 | CrmClueDO::getId, userId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE); |
| 57 | // 未跟进 + 未转化 | 57 | // 未跟进 + 未转化 |
| 58 | query.eq(CrmClueDO::getFollowUpStatus, false) | 58 | query.eq(CrmClueDO::getFollowUpStatus, false) |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/contact/CrmContactMapper.java
| @@ -7,7 +7,7 @@ import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX; | @@ -7,7 +7,7 @@ import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX; | ||
| 7 | import cn.iocoder.yudao.module.crm.controller.admin.contact.vo.CrmContactPageReqVO; | 7 | import cn.iocoder.yudao.module.crm.controller.admin.contact.vo.CrmContactPageReqVO; |
| 8 | import cn.iocoder.yudao.module.crm.dal.dataobject.contact.CrmContactDO; | 8 | import cn.iocoder.yudao.module.crm.dal.dataobject.contact.CrmContactDO; |
| 9 | import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; | 9 | import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; |
| 10 | -import cn.iocoder.yudao.module.crm.util.CrmQueryWrapperUtils; | 10 | +import cn.iocoder.yudao.module.crm.util.CrmPermissionUtils; |
| 11 | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; | 11 | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| 12 | import org.apache.ibatis.annotations.Mapper; | 12 | import org.apache.ibatis.annotations.Mapper; |
| 13 | 13 | ||
| @@ -55,7 +55,7 @@ public interface CrmContactMapper extends BaseMapperX<CrmContactDO> { | @@ -55,7 +55,7 @@ public interface CrmContactMapper extends BaseMapperX<CrmContactDO> { | ||
| 55 | default PageResult<CrmContactDO> selectPage(CrmContactPageReqVO pageReqVO, Long userId) { | 55 | default PageResult<CrmContactDO> selectPage(CrmContactPageReqVO pageReqVO, Long userId) { |
| 56 | MPJLambdaWrapperX<CrmContactDO> query = new MPJLambdaWrapperX<>(); | 56 | MPJLambdaWrapperX<CrmContactDO> query = new MPJLambdaWrapperX<>(); |
| 57 | // 拼接数据权限的查询条件 | 57 | // 拼接数据权限的查询条件 |
| 58 | - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTACT.getType(), | 58 | + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTACT.getType(), |
| 59 | CrmContactDO::getId, userId, pageReqVO.getSceneType(), Boolean.FALSE); | 59 | CrmContactDO::getId, userId, pageReqVO.getSceneType(), Boolean.FALSE); |
| 60 | // 拼接自身的查询条件 | 60 | // 拼接自身的查询条件 |
| 61 | query.selectAll(CrmContactDO.class) | 61 | query.selectAll(CrmContactDO.class) |
| @@ -72,7 +72,7 @@ public interface CrmContactMapper extends BaseMapperX<CrmContactDO> { | @@ -72,7 +72,7 @@ public interface CrmContactMapper extends BaseMapperX<CrmContactDO> { | ||
| 72 | default List<CrmContactDO> selectBatchIds(Collection<Long> ids, Long ownerUserId) { | 72 | default List<CrmContactDO> selectBatchIds(Collection<Long> ids, Long ownerUserId) { |
| 73 | MPJLambdaWrapperX<CrmContactDO> query = new MPJLambdaWrapperX<>(); | 73 | MPJLambdaWrapperX<CrmContactDO> query = new MPJLambdaWrapperX<>(); |
| 74 | // 拼接数据权限的查询条件 | 74 | // 拼接数据权限的查询条件 |
| 75 | - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTACT.getType(), ids, ownerUserId); | 75 | + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTACT.getType(), ids, ownerUserId); |
| 76 | query.selectAll(CrmContactDO.class).in(CrmContactDO::getId, ids).orderByDesc(CrmContactDO::getId); | 76 | query.selectAll(CrmContactDO.class).in(CrmContactDO::getId, ids).orderByDesc(CrmContactDO::getId); |
| 77 | return selectJoinList(CrmContactDO.class, query); | 77 | return selectJoinList(CrmContactDO.class, query); |
| 78 | } | 78 | } |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/contract/CrmContractMapper.java
| @@ -10,7 +10,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractDO; | @@ -10,7 +10,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.contract.CrmContractDO; | ||
| 10 | import cn.iocoder.yudao.module.crm.enums.common.CrmAuditStatusEnum; | 10 | import cn.iocoder.yudao.module.crm.enums.common.CrmAuditStatusEnum; |
| 11 | import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; | 11 | import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; |
| 12 | import cn.iocoder.yudao.module.crm.enums.common.CrmSceneTypeEnum; | 12 | import cn.iocoder.yudao.module.crm.enums.common.CrmSceneTypeEnum; |
| 13 | -import cn.iocoder.yudao.module.crm.util.CrmQueryWrapperUtils; | 13 | +import cn.iocoder.yudao.module.crm.util.CrmPermissionUtils; |
| 14 | import org.apache.ibatis.annotations.Mapper; | 14 | import org.apache.ibatis.annotations.Mapper; |
| 15 | 15 | ||
| 16 | import java.time.LocalDateTime; | 16 | import java.time.LocalDateTime; |
| @@ -42,7 +42,7 @@ public interface CrmContractMapper extends BaseMapperX<CrmContractDO> { | @@ -42,7 +42,7 @@ public interface CrmContractMapper extends BaseMapperX<CrmContractDO> { | ||
| 42 | default PageResult<CrmContractDO> selectPage(CrmContractPageReqVO pageReqVO, Long userId) { | 42 | default PageResult<CrmContractDO> selectPage(CrmContractPageReqVO pageReqVO, Long userId) { |
| 43 | MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>(); | 43 | MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>(); |
| 44 | // 拼接数据权限的查询条件 | 44 | // 拼接数据权限的查询条件 |
| 45 | - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(), | 45 | + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(), |
| 46 | CrmContractDO::getId, userId, pageReqVO.getSceneType(), Boolean.FALSE); | 46 | CrmContractDO::getId, userId, pageReqVO.getSceneType(), Boolean.FALSE); |
| 47 | // 拼接自身的查询条件 | 47 | // 拼接自身的查询条件 |
| 48 | query.selectAll(CrmContractDO.class) | 48 | query.selectAll(CrmContractDO.class) |
| @@ -71,7 +71,7 @@ public interface CrmContractMapper extends BaseMapperX<CrmContractDO> { | @@ -71,7 +71,7 @@ public interface CrmContractMapper extends BaseMapperX<CrmContractDO> { | ||
| 71 | default List<CrmContractDO> selectBatchIds(Collection<Long> ids, Long userId) { | 71 | default List<CrmContractDO> selectBatchIds(Collection<Long> ids, Long userId) { |
| 72 | MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>(); | 72 | MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>(); |
| 73 | // 构建数据权限连表条件 | 73 | // 构建数据权限连表条件 |
| 74 | - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(), ids, userId); | 74 | + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(), ids, userId); |
| 75 | // 拼接自身的查询条件 | 75 | // 拼接自身的查询条件 |
| 76 | query.selectAll(CrmContractDO.class).in(CrmContractDO::getId, ids).orderByDesc(CrmContractDO::getId); | 76 | query.selectAll(CrmContractDO.class).in(CrmContractDO::getId, ids).orderByDesc(CrmContractDO::getId); |
| 77 | return selectJoinList(CrmContractDO.class, query); | 77 | return selectJoinList(CrmContractDO.class, query); |
| @@ -88,7 +88,7 @@ public interface CrmContractMapper extends BaseMapperX<CrmContractDO> { | @@ -88,7 +88,7 @@ public interface CrmContractMapper extends BaseMapperX<CrmContractDO> { | ||
| 88 | default Long selectCheckContractCount(Long userId) { | 88 | default Long selectCheckContractCount(Long userId) { |
| 89 | MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>(); | 89 | MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>(); |
| 90 | // 我负责的 + 非公海 | 90 | // 我负责的 + 非公海 |
| 91 | - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(), | 91 | + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(), |
| 92 | CrmContractDO::getId, userId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE); | 92 | CrmContractDO::getId, userId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE); |
| 93 | // 未提交 or 审核不通过 | 93 | // 未提交 or 审核不通过 |
| 94 | query.in(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.DRAFT.getStatus(), CrmAuditStatusEnum.REJECT.getStatus()); | 94 | query.in(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.DRAFT.getStatus(), CrmAuditStatusEnum.REJECT.getStatus()); |
| @@ -98,7 +98,7 @@ public interface CrmContractMapper extends BaseMapperX<CrmContractDO> { | @@ -98,7 +98,7 @@ public interface CrmContractMapper extends BaseMapperX<CrmContractDO> { | ||
| 98 | default Long selectEndContractCount(Long userId) { | 98 | default Long selectEndContractCount(Long userId) { |
| 99 | MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>(); | 99 | MPJLambdaWrapperX<CrmContractDO> query = new MPJLambdaWrapperX<>(); |
| 100 | // 我负责的 + 非公海 | 100 | // 我负责的 + 非公海 |
| 101 | - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(), | 101 | + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CONTRACT.getType(), |
| 102 | CrmContractDO::getId, userId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE); | 102 | CrmContractDO::getId, userId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE); |
| 103 | // 即将到期 | 103 | // 即将到期 |
| 104 | LocalDateTime beginOfToday = LocalDateTimeUtil.beginOfDay(LocalDateTime.now()); | 104 | LocalDateTime beginOfToday = LocalDateTimeUtil.beginOfDay(LocalDateTime.now()); |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/customer/CrmCustomerMapper.java
| @@ -12,7 +12,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerDO; | @@ -12,7 +12,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerDO; | ||
| 12 | import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerPoolConfigDO; | 12 | import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerPoolConfigDO; |
| 13 | import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; | 13 | import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; |
| 14 | import cn.iocoder.yudao.module.crm.enums.common.CrmSceneTypeEnum; | 14 | import cn.iocoder.yudao.module.crm.enums.common.CrmSceneTypeEnum; |
| 15 | -import cn.iocoder.yudao.module.crm.util.CrmQueryWrapperUtils; | 15 | +import cn.iocoder.yudao.module.crm.util.CrmPermissionUtils; |
| 16 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 16 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| 17 | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; | 17 | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| 18 | import org.apache.ibatis.annotations.Mapper; | 18 | import org.apache.ibatis.annotations.Mapper; |
| @@ -52,7 +52,7 @@ public interface CrmCustomerMapper extends BaseMapperX<CrmCustomerDO> { | @@ -52,7 +52,7 @@ public interface CrmCustomerMapper extends BaseMapperX<CrmCustomerDO> { | ||
| 52 | default PageResult<CrmCustomerDO> selectPage(CrmCustomerPageReqVO pageReqVO, Long ownerUserId) { | 52 | default PageResult<CrmCustomerDO> selectPage(CrmCustomerPageReqVO pageReqVO, Long ownerUserId) { |
| 53 | MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>(); | 53 | MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>(); |
| 54 | // 拼接数据权限的查询条件 | 54 | // 拼接数据权限的查询条件 |
| 55 | - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(), | 55 | + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(), |
| 56 | CrmCustomerDO::getId, ownerUserId, pageReqVO.getSceneType(), pageReqVO.getPool()); | 56 | CrmCustomerDO::getId, ownerUserId, pageReqVO.getSceneType(), pageReqVO.getPool()); |
| 57 | // 拼接自身的查询条件 | 57 | // 拼接自身的查询条件 |
| 58 | query.selectAll(CrmCustomerDO.class) | 58 | query.selectAll(CrmCustomerDO.class) |
| @@ -84,7 +84,7 @@ public interface CrmCustomerMapper extends BaseMapperX<CrmCustomerDO> { | @@ -84,7 +84,7 @@ public interface CrmCustomerMapper extends BaseMapperX<CrmCustomerDO> { | ||
| 84 | default List<CrmCustomerDO> selectBatchIds(Collection<Long> ids, Long ownerUserId) { | 84 | default List<CrmCustomerDO> selectBatchIds(Collection<Long> ids, Long ownerUserId) { |
| 85 | MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>(); | 85 | MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>(); |
| 86 | // 拼接数据权限的查询条件 | 86 | // 拼接数据权限的查询条件 |
| 87 | - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(), ids, ownerUserId); | 87 | + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(), ids, ownerUserId); |
| 88 | // 拼接自身的查询条件 | 88 | // 拼接自身的查询条件 |
| 89 | query.selectAll(CrmCustomerDO.class).in(CrmCustomerDO::getId, ids).orderByDesc(CrmCustomerDO::getId); | 89 | query.selectAll(CrmCustomerDO.class).in(CrmCustomerDO::getId, ids).orderByDesc(CrmCustomerDO::getId); |
| 90 | return selectJoinList(CrmCustomerDO.class, query); | 90 | return selectJoinList(CrmCustomerDO.class, query); |
| @@ -113,7 +113,7 @@ public interface CrmCustomerMapper extends BaseMapperX<CrmCustomerDO> { | @@ -113,7 +113,7 @@ public interface CrmCustomerMapper extends BaseMapperX<CrmCustomerDO> { | ||
| 113 | Long ownerUserId) { | 113 | Long ownerUserId) { |
| 114 | MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>(); | 114 | MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>(); |
| 115 | // 拼接数据权限的查询条件 | 115 | // 拼接数据权限的查询条件 |
| 116 | - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(), | 116 | + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(), |
| 117 | CrmCustomerDO::getId, ownerUserId, pageReqVO.getSceneType(), null); | 117 | CrmCustomerDO::getId, ownerUserId, pageReqVO.getSceneType(), null); |
| 118 | 118 | ||
| 119 | // 未锁定 + 未成交 | 119 | // 未锁定 + 未成交 |
| @@ -167,7 +167,7 @@ public interface CrmCustomerMapper extends BaseMapperX<CrmCustomerDO> { | @@ -167,7 +167,7 @@ public interface CrmCustomerMapper extends BaseMapperX<CrmCustomerDO> { | ||
| 167 | default Long selectCountByTodayContact(Long ownerUserId) { | 167 | default Long selectCountByTodayContact(Long ownerUserId) { |
| 168 | MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>(); | 168 | MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>(); |
| 169 | // 我负责的 + 非公海 | 169 | // 我负责的 + 非公海 |
| 170 | - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(), | 170 | + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(), |
| 171 | CrmCustomerDO::getId, ownerUserId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE); | 171 | CrmCustomerDO::getId, ownerUserId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE); |
| 172 | // 今天需联系 | 172 | // 今天需联系 |
| 173 | LocalDateTime beginOfToday = LocalDateTimeUtil.beginOfDay(LocalDateTime.now()); | 173 | LocalDateTime beginOfToday = LocalDateTimeUtil.beginOfDay(LocalDateTime.now()); |
| @@ -179,7 +179,7 @@ public interface CrmCustomerMapper extends BaseMapperX<CrmCustomerDO> { | @@ -179,7 +179,7 @@ public interface CrmCustomerMapper extends BaseMapperX<CrmCustomerDO> { | ||
| 179 | default Long selectCountByFollow(Long ownerUserId) { | 179 | default Long selectCountByFollow(Long ownerUserId) { |
| 180 | MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>(); | 180 | MPJLambdaWrapperX<CrmCustomerDO> query = new MPJLambdaWrapperX<>(); |
| 181 | // 我负责的 + 非公海 | 181 | // 我负责的 + 非公海 |
| 182 | - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(), | 182 | + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_CUSTOMER.getType(), |
| 183 | CrmCustomerDO::getId, ownerUserId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE); | 183 | CrmCustomerDO::getId, ownerUserId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE); |
| 184 | // 未跟进 | 184 | // 未跟进 |
| 185 | query.eq(CrmClueDO::getFollowUpStatus, false); | 185 | query.eq(CrmClueDO::getFollowUpStatus, false); |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/receivable/CrmReceivableMapper.java
| @@ -10,8 +10,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivableDO; | @@ -10,8 +10,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivableDO; | ||
| 10 | import cn.iocoder.yudao.module.crm.enums.common.CrmAuditStatusEnum; | 10 | import cn.iocoder.yudao.module.crm.enums.common.CrmAuditStatusEnum; |
| 11 | import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; | 11 | import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; |
| 12 | import cn.iocoder.yudao.module.crm.enums.common.CrmSceneTypeEnum; | 12 | import cn.iocoder.yudao.module.crm.enums.common.CrmSceneTypeEnum; |
| 13 | -import cn.iocoder.yudao.module.crm.util.CrmQueryWrapperUtils; | ||
| 14 | -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; | 13 | +import cn.iocoder.yudao.module.crm.util.CrmPermissionUtils; |
| 15 | import org.apache.ibatis.annotations.Mapper; | 14 | import org.apache.ibatis.annotations.Mapper; |
| 16 | 15 | ||
| 17 | import java.util.Collection; | 16 | import java.util.Collection; |
| @@ -25,12 +24,6 @@ import java.util.List; | @@ -25,12 +24,6 @@ import java.util.List; | ||
| 25 | @Mapper | 24 | @Mapper |
| 26 | public interface CrmReceivableMapper extends BaseMapperX<CrmReceivableDO> { | 25 | public interface CrmReceivableMapper extends BaseMapperX<CrmReceivableDO> { |
| 27 | 26 | ||
| 28 | - default int updateOwnerUserIdById(Long id, Long ownerUserId) { | ||
| 29 | - return update(new LambdaUpdateWrapper<CrmReceivableDO>() | ||
| 30 | - .eq(CrmReceivableDO::getId, id) | ||
| 31 | - .set(CrmReceivableDO::getOwnerUserId, ownerUserId)); | ||
| 32 | - } | ||
| 33 | - | ||
| 34 | default PageResult<CrmReceivableDO> selectPageByCustomerId(CrmReceivablePageReqVO reqVO) { | 27 | default PageResult<CrmReceivableDO> selectPageByCustomerId(CrmReceivablePageReqVO reqVO) { |
| 35 | return selectPage(reqVO, new LambdaQueryWrapperX<CrmReceivableDO>() | 28 | return selectPage(reqVO, new LambdaQueryWrapperX<CrmReceivableDO>() |
| 36 | .eq(CrmReceivableDO::getCustomerId, reqVO.getCustomerId()) // 必须传递 | 29 | .eq(CrmReceivableDO::getCustomerId, reqVO.getCustomerId()) // 必须传递 |
| @@ -42,7 +35,7 @@ public interface CrmReceivableMapper extends BaseMapperX<CrmReceivableDO> { | @@ -42,7 +35,7 @@ public interface CrmReceivableMapper extends BaseMapperX<CrmReceivableDO> { | ||
| 42 | default PageResult<CrmReceivableDO> selectPage(CrmReceivablePageReqVO pageReqVO, Long userId) { | 35 | default PageResult<CrmReceivableDO> selectPage(CrmReceivablePageReqVO pageReqVO, Long userId) { |
| 43 | MPJLambdaWrapperX<CrmReceivableDO> query = new MPJLambdaWrapperX<>(); | 36 | MPJLambdaWrapperX<CrmReceivableDO> query = new MPJLambdaWrapperX<>(); |
| 44 | // 拼接数据权限的查询条件 | 37 | // 拼接数据权限的查询条件 |
| 45 | - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE.getType(), | 38 | + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE.getType(), |
| 46 | CrmReceivableDO::getId, userId, pageReqVO.getSceneType(), Boolean.FALSE); | 39 | CrmReceivableDO::getId, userId, pageReqVO.getSceneType(), Boolean.FALSE); |
| 47 | // 拼接自身的查询条件 | 40 | // 拼接自身的查询条件 |
| 48 | query.selectAll(CrmReceivableDO.class) | 41 | query.selectAll(CrmReceivableDO.class) |
| @@ -56,7 +49,7 @@ public interface CrmReceivableMapper extends BaseMapperX<CrmReceivableDO> { | @@ -56,7 +49,7 @@ public interface CrmReceivableMapper extends BaseMapperX<CrmReceivableDO> { | ||
| 56 | default List<CrmReceivableDO> selectBatchIds(Collection<Long> ids, Long userId) { | 49 | default List<CrmReceivableDO> selectBatchIds(Collection<Long> ids, Long userId) { |
| 57 | MPJLambdaWrapperX<CrmReceivableDO> query = new MPJLambdaWrapperX<>(); | 50 | MPJLambdaWrapperX<CrmReceivableDO> query = new MPJLambdaWrapperX<>(); |
| 58 | // 拼接数据权限的查询条件 | 51 | // 拼接数据权限的查询条件 |
| 59 | - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE.getType(), ids, userId); | 52 | + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE.getType(), ids, userId); |
| 60 | // 拼接自身的查询条件 | 53 | // 拼接自身的查询条件 |
| 61 | query.selectAll(CrmReceivableDO.class).in(CrmReceivableDO::getId, ids).orderByDesc(CrmReceivableDO::getId); | 54 | query.selectAll(CrmReceivableDO.class).in(CrmReceivableDO::getId, ids).orderByDesc(CrmReceivableDO::getId); |
| 62 | return selectJoinList(CrmReceivableDO.class, query); | 55 | return selectJoinList(CrmReceivableDO.class, query); |
| @@ -65,7 +58,7 @@ public interface CrmReceivableMapper extends BaseMapperX<CrmReceivableDO> { | @@ -65,7 +58,7 @@ public interface CrmReceivableMapper extends BaseMapperX<CrmReceivableDO> { | ||
| 65 | default Long selectCheckReceivablesCount(Long userId) { | 58 | default Long selectCheckReceivablesCount(Long userId) { |
| 66 | MPJLambdaWrapperX<CrmReceivableDO> query = new MPJLambdaWrapperX<>(); | 59 | MPJLambdaWrapperX<CrmReceivableDO> query = new MPJLambdaWrapperX<>(); |
| 67 | // 我负责的 + 非公海 | 60 | // 我负责的 + 非公海 |
| 68 | - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE.getType(), | 61 | + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE.getType(), |
| 69 | CrmReceivableDO::getId, userId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE); | 62 | CrmReceivableDO::getId, userId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE); |
| 70 | // 未提交 or 审核不通过 | 63 | // 未提交 or 审核不通过 |
| 71 | query.in(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.DRAFT.getStatus(), CrmAuditStatusEnum.REJECT.getStatus()); | 64 | query.in(CrmContractDO::getAuditStatus, CrmAuditStatusEnum.DRAFT.getStatus(), CrmAuditStatusEnum.REJECT.getStatus()); |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/receivable/CrmReceivablePlanMapper.java
| @@ -9,7 +9,7 @@ import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.plan.CrmReceiv | @@ -9,7 +9,7 @@ import cn.iocoder.yudao.module.crm.controller.admin.receivable.vo.plan.CrmReceiv | ||
| 9 | import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivablePlanDO; | 9 | import cn.iocoder.yudao.module.crm.dal.dataobject.receivable.CrmReceivablePlanDO; |
| 10 | import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; | 10 | import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; |
| 11 | import cn.iocoder.yudao.module.crm.enums.common.CrmSceneTypeEnum; | 11 | import cn.iocoder.yudao.module.crm.enums.common.CrmSceneTypeEnum; |
| 12 | -import cn.iocoder.yudao.module.crm.util.CrmQueryWrapperUtils; | 12 | +import cn.iocoder.yudao.module.crm.util.CrmPermissionUtils; |
| 13 | import org.apache.ibatis.annotations.Mapper; | 13 | import org.apache.ibatis.annotations.Mapper; |
| 14 | 14 | ||
| 15 | import java.time.LocalDateTime; | 15 | import java.time.LocalDateTime; |
| @@ -34,7 +34,7 @@ public interface CrmReceivablePlanMapper extends BaseMapperX<CrmReceivablePlanDO | @@ -34,7 +34,7 @@ public interface CrmReceivablePlanMapper extends BaseMapperX<CrmReceivablePlanDO | ||
| 34 | default PageResult<CrmReceivablePlanDO> selectPage(CrmReceivablePlanPageReqVO pageReqVO, Long userId) { | 34 | default PageResult<CrmReceivablePlanDO> selectPage(CrmReceivablePlanPageReqVO pageReqVO, Long userId) { |
| 35 | MPJLambdaWrapperX<CrmReceivablePlanDO> query = new MPJLambdaWrapperX<>(); | 35 | MPJLambdaWrapperX<CrmReceivablePlanDO> query = new MPJLambdaWrapperX<>(); |
| 36 | // 拼接数据权限的查询条件 | 36 | // 拼接数据权限的查询条件 |
| 37 | - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE_PLAN.getType(), | 37 | + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE_PLAN.getType(), |
| 38 | CrmReceivablePlanDO::getId, userId, pageReqVO.getSceneType(), Boolean.FALSE); | 38 | CrmReceivablePlanDO::getId, userId, pageReqVO.getSceneType(), Boolean.FALSE); |
| 39 | // 拼接自身的查询条件 | 39 | // 拼接自身的查询条件 |
| 40 | query.selectAll(CrmReceivablePlanDO.class) | 40 | query.selectAll(CrmReceivablePlanDO.class) |
| @@ -64,7 +64,7 @@ public interface CrmReceivablePlanMapper extends BaseMapperX<CrmReceivablePlanDO | @@ -64,7 +64,7 @@ public interface CrmReceivablePlanMapper extends BaseMapperX<CrmReceivablePlanDO | ||
| 64 | default List<CrmReceivablePlanDO> selectBatchIds(Collection<Long> ids, Long userId) { | 64 | default List<CrmReceivablePlanDO> selectBatchIds(Collection<Long> ids, Long userId) { |
| 65 | MPJLambdaWrapperX<CrmReceivablePlanDO> query = new MPJLambdaWrapperX<>(); | 65 | MPJLambdaWrapperX<CrmReceivablePlanDO> query = new MPJLambdaWrapperX<>(); |
| 66 | // 拼接数据权限的查询条件 | 66 | // 拼接数据权限的查询条件 |
| 67 | - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE_PLAN.getType(), ids, userId); | 67 | + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE_PLAN.getType(), ids, userId); |
| 68 | // 拼接自身的查询条件 | 68 | // 拼接自身的查询条件 |
| 69 | query.selectAll(CrmReceivablePlanDO.class).in(CrmReceivablePlanDO::getId, ids).orderByDesc(CrmReceivablePlanDO::getId); | 69 | query.selectAll(CrmReceivablePlanDO.class).in(CrmReceivablePlanDO::getId, ids).orderByDesc(CrmReceivablePlanDO::getId); |
| 70 | return selectJoinList(CrmReceivablePlanDO.class, query); | 70 | return selectJoinList(CrmReceivablePlanDO.class, query); |
| @@ -73,7 +73,7 @@ public interface CrmReceivablePlanMapper extends BaseMapperX<CrmReceivablePlanDO | @@ -73,7 +73,7 @@ public interface CrmReceivablePlanMapper extends BaseMapperX<CrmReceivablePlanDO | ||
| 73 | default Long selectRemindReceivablePlanCount(Long userId) { | 73 | default Long selectRemindReceivablePlanCount(Long userId) { |
| 74 | MPJLambdaWrapperX<CrmReceivablePlanDO> query = new MPJLambdaWrapperX<>(); | 74 | MPJLambdaWrapperX<CrmReceivablePlanDO> query = new MPJLambdaWrapperX<>(); |
| 75 | // 我负责的 + 非公海 | 75 | // 我负责的 + 非公海 |
| 76 | - CrmQueryWrapperUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE_PLAN.getType(), | 76 | + CrmPermissionUtils.appendPermissionCondition(query, CrmBizTypeEnum.CRM_RECEIVABLE_PLAN.getType(), |
| 77 | CrmReceivablePlanDO::getId, userId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE); | 77 | CrmReceivablePlanDO::getId, userId, CrmSceneTypeEnum.OWNER.getType(), Boolean.FALSE); |
| 78 | // TODO: @dhb52 需要配置 提前提醒天数 | 78 | // TODO: @dhb52 需要配置 提前提醒天数 |
| 79 | int REMIND_DAYS = 20; | 79 | int REMIND_DAYS = 20; |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/framework/permission/core/aop/CrmPermissionAspect.java
| @@ -9,7 +9,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO; | @@ -9,7 +9,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO; | ||
| 9 | import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; | 9 | import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; |
| 10 | import cn.iocoder.yudao.module.crm.enums.permission.CrmPermissionLevelEnum; | 10 | import cn.iocoder.yudao.module.crm.enums.permission.CrmPermissionLevelEnum; |
| 11 | import cn.iocoder.yudao.module.crm.framework.permission.core.annotations.CrmPermission; | 11 | import cn.iocoder.yudao.module.crm.framework.permission.core.annotations.CrmPermission; |
| 12 | -import cn.iocoder.yudao.module.crm.framework.permission.core.util.CrmPermissionUtils; | 12 | +import cn.iocoder.yudao.module.crm.util.CrmPermissionUtils; |
| 13 | import cn.iocoder.yudao.module.crm.service.permission.CrmPermissionService; | 13 | import cn.iocoder.yudao.module.crm.service.permission.CrmPermissionService; |
| 14 | import jakarta.annotation.Resource; | 14 | import jakarta.annotation.Resource; |
| 15 | import lombok.extern.slf4j.Slf4j; | 15 | import lombok.extern.slf4j.Slf4j; |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/framework/permission/core/util/CrmPermissionUtils.java deleted
| 1 | -package cn.iocoder.yudao.module.crm.framework.permission.core.util; | ||
| 2 | - | ||
| 3 | -import cn.hutool.extra.spring.SpringUtil; | ||
| 4 | -import cn.iocoder.yudao.module.crm.enums.permission.CrmPermissionRoleCodeEnum; | ||
| 5 | -import cn.iocoder.yudao.module.system.api.permission.PermissionApi; | ||
| 6 | - | ||
| 7 | -import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; | ||
| 8 | - | ||
| 9 | -/** | ||
| 10 | - * 数据权限工具类 | ||
| 11 | - * | ||
| 12 | - * @author HUIHUI | ||
| 13 | - */ | ||
| 14 | -public class CrmPermissionUtils { | ||
| 15 | - | ||
| 16 | - /** | ||
| 17 | - * 校验用户是否是 CRM 管理员 | ||
| 18 | - * | ||
| 19 | - * @return 是/否 | ||
| 20 | - */ | ||
| 21 | - public static boolean isCrmAdmin() { | ||
| 22 | - return SingletonManager.getPermissionApi().hasAnyRoles(getLoginUserId(), CrmPermissionRoleCodeEnum.CRM_ADMIN.getCode()); | ||
| 23 | - } | ||
| 24 | - | ||
| 25 | - /** | ||
| 26 | - * 静态内部类实现单例获取 | ||
| 27 | - * | ||
| 28 | - * @author HUIHUI | ||
| 29 | - */ | ||
| 30 | - private static class SingletonManager { | ||
| 31 | - | ||
| 32 | - private static final PermissionApi PERMISSION_API = SpringUtil.getBean(PermissionApi.class); | ||
| 33 | - | ||
| 34 | - public static PermissionApi getPermissionApi() { | ||
| 35 | - return PERMISSION_API; | ||
| 36 | - } | ||
| 37 | - | ||
| 38 | - } | ||
| 39 | - | ||
| 40 | -} |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/contract/CrmContractServiceImpl.java
| @@ -63,7 +63,7 @@ public class CrmContractServiceImpl implements CrmContractService { | @@ -63,7 +63,7 @@ public class CrmContractServiceImpl implements CrmContractService { | ||
| 63 | /** | 63 | /** |
| 64 | * BPM 合同审批流程标识 | 64 | * BPM 合同审批流程标识 |
| 65 | */ | 65 | */ |
| 66 | - public static final String CONTRACT_APPROVE = "contract-approve"; | 66 | + public static final String BPM_PROCESS_DEFINITION_KEY = "crm-contract-audit"; |
| 67 | 67 | ||
| 68 | @Resource | 68 | @Resource |
| 69 | private CrmContractMapper contractMapper; | 69 | private CrmContractMapper contractMapper; |
| @@ -288,7 +288,7 @@ public class CrmContractServiceImpl implements CrmContractService { | @@ -288,7 +288,7 @@ public class CrmContractServiceImpl implements CrmContractService { | ||
| 288 | 288 | ||
| 289 | // 2. 创建合同审批流程实例 | 289 | // 2. 创建合同审批流程实例 |
| 290 | String processInstanceId = bpmProcessInstanceApi.createProcessInstance(userId, new BpmProcessInstanceCreateReqDTO() | 290 | String processInstanceId = bpmProcessInstanceApi.createProcessInstance(userId, new BpmProcessInstanceCreateReqDTO() |
| 291 | - .setProcessDefinitionKey(CONTRACT_APPROVE).setBusinessKey(String.valueOf(id))); | 291 | + .setProcessDefinitionKey(BPM_PROCESS_DEFINITION_KEY).setBusinessKey(String.valueOf(id))); |
| 292 | 292 | ||
| 293 | // 3. 更新合同工作流编号 | 293 | // 3. 更新合同工作流编号 |
| 294 | contractMapper.updateById(new CrmContractDO().setId(id).setProcessInstanceId(processInstanceId) | 294 | contractMapper.updateById(new CrmContractDO().setId(id).setProcessInstanceId(processInstanceId) |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/contract/listener/CrmContractResultListener.java
| @@ -20,7 +20,7 @@ public class CrmContractResultListener extends BpmProcessInstanceResultEventList | @@ -20,7 +20,7 @@ public class CrmContractResultListener extends BpmProcessInstanceResultEventList | ||
| 20 | 20 | ||
| 21 | @Override | 21 | @Override |
| 22 | public String getProcessDefinitionKey() { | 22 | public String getProcessDefinitionKey() { |
| 23 | - return CrmContractServiceImpl.CONTRACT_APPROVE; | 23 | + return CrmContractServiceImpl.BPM_PROCESS_DEFINITION_KEY; |
| 24 | } | 24 | } |
| 25 | 25 | ||
| 26 | @Override | 26 | @Override |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerServiceImpl.java
| @@ -241,9 +241,9 @@ public class CrmCustomerServiceImpl implements CrmCustomerService { | @@ -241,9 +241,9 @@ public class CrmCustomerServiceImpl implements CrmCustomerService { | ||
| 241 | @Transactional(rollbackFor = Exception.class) | 241 | @Transactional(rollbackFor = Exception.class) |
| 242 | @LogRecord(type = CRM_CUSTOMER_TYPE, subType = CRM_CUSTOMER_CREATE_SUB_TYPE, bizNo = "{{#customer.id}}", | 242 | @LogRecord(type = CRM_CUSTOMER_TYPE, subType = CRM_CUSTOMER_CREATE_SUB_TYPE, bizNo = "{{#customer.id}}", |
| 243 | success = CRM_CUSTOMER_CREATE_SUCCESS) | 243 | success = CRM_CUSTOMER_CREATE_SUCCESS) |
| 244 | - public Long createCustomer(CrmCustomerCreateReqBO customerCreateReq, Long userId) { | 244 | + public Long createCustomer(CrmCustomerCreateReqBO createReqBO, Long userId) { |
| 245 | // 1. 插入客户 | 245 | // 1. 插入客户 |
| 246 | - CrmCustomerDO customer = BeanUtils.toBean(customerCreateReq, CrmCustomerDO.class).setOwnerUserId(userId); | 246 | + CrmCustomerDO customer = initCustomer(createReqBO, userId); |
| 247 | customerMapper.insert(customer); | 247 | customerMapper.insert(customer); |
| 248 | 248 | ||
| 249 | // 2. 创建数据权限 | 249 | // 2. 创建数据权限 |
| @@ -422,12 +422,14 @@ public class CrmCustomerServiceImpl implements CrmCustomerService { | @@ -422,12 +422,14 @@ public class CrmCustomerServiceImpl implements CrmCustomerService { | ||
| 422 | if (updateOwnerUserIncr == 0) { | 422 | if (updateOwnerUserIncr == 0) { |
| 423 | throw exception(CUSTOMER_UPDATE_OWNER_USER_FAIL); | 423 | throw exception(CUSTOMER_UPDATE_OWNER_USER_FAIL); |
| 424 | } | 424 | } |
| 425 | - // 2. 删除负责人数据权限 | ||
| 426 | - permissionService.deletePermission(CrmBizTypeEnum.CRM_CUSTOMER.getType(), customer.getId(), | ||
| 427 | - CrmPermissionLevelEnum.OWNER.getLevel()); | ||
| 428 | 425 | ||
| 429 | - // 3. 联系人的负责人,也要设置为 null。因为:因为领取后,负责人也要关联过来,这块和 receiveCustomer 是对应的 | 426 | + // 2. 联系人的负责人,也要设置为 null。因为:因为领取后,负责人也要关联过来,这块和 receiveCustomer 是对应的 |
| 430 | contactService.updateOwnerUserIdByCustomerId(customer.getId(), null); | 427 | contactService.updateOwnerUserIdByCustomerId(customer.getId(), null); |
| 428 | + | ||
| 429 | + // 3. 删除负责人数据权限 | ||
| 430 | + // 注意:需要放在 contactService 后面,不然【客户】数据权限已经被删除,无法操作! | ||
| 431 | + permissionService.deletePermission(CrmBizTypeEnum.CRM_CUSTOMER.getType(), customer.getId(), | ||
| 432 | + CrmPermissionLevelEnum.OWNER.getLevel()); | ||
| 431 | } | 433 | } |
| 432 | 434 | ||
| 433 | @LogRecord(type = CRM_CUSTOMER_TYPE, subType = CRM_CUSTOMER_RECEIVE_SUB_TYPE, bizNo = "{{#customer.id}}", | 435 | @LogRecord(type = CRM_CUSTOMER_TYPE, subType = CRM_CUSTOMER_RECEIVE_SUB_TYPE, bizNo = "{{#customer.id}}", |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/permission/CrmPermissionServiceImpl.java
| @@ -9,7 +9,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO; | @@ -9,7 +9,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO; | ||
| 9 | import cn.iocoder.yudao.module.crm.dal.mysql.permission.CrmPermissionMapper; | 9 | import cn.iocoder.yudao.module.crm.dal.mysql.permission.CrmPermissionMapper; |
| 10 | import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; | 10 | import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; |
| 11 | import cn.iocoder.yudao.module.crm.enums.permission.CrmPermissionLevelEnum; | 11 | import cn.iocoder.yudao.module.crm.enums.permission.CrmPermissionLevelEnum; |
| 12 | -import cn.iocoder.yudao.module.crm.framework.permission.core.util.CrmPermissionUtils; | 12 | +import cn.iocoder.yudao.module.crm.util.CrmPermissionUtils; |
| 13 | import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionCreateReqBO; | 13 | import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionCreateReqBO; |
| 14 | import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionTransferReqBO; | 14 | import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionTransferReqBO; |
| 15 | import cn.iocoder.yudao.module.system.api.user.AdminUserApi; | 15 | import cn.iocoder.yudao.module.system.api.user.AdminUserApi; |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/receivable/CrmReceivablePlanServiceImpl.java
| @@ -70,10 +70,11 @@ public class CrmReceivablePlanServiceImpl implements CrmReceivablePlanService { | @@ -70,10 +70,11 @@ public class CrmReceivablePlanServiceImpl implements CrmReceivablePlanService { | ||
| 70 | validateRelationDataExists(createReqVO); | 70 | validateRelationDataExists(createReqVO); |
| 71 | // 1.2 查验关联合同回款数量 | 71 | // 1.2 查验关联合同回款数量 |
| 72 | Long count = receivableService.getReceivableCountByContractId(createReqVO.getContractId()); | 72 | Long count = receivableService.getReceivableCountByContractId(createReqVO.getContractId()); |
| 73 | + int period = (int) (count + 1); | ||
| 73 | 74 | ||
| 74 | // 2. 插入还款计划 | 75 | // 2. 插入还款计划 |
| 75 | - CrmReceivablePlanDO receivablePlan = BeanUtils.toBean(createReqVO, CrmReceivablePlanDO.class).setId(null) | ||
| 76 | - .setPeriod((int) (count + 1)).setFinishStatus(false); | 76 | + CrmReceivablePlanDO receivablePlan = BeanUtils.toBean(createReqVO, CrmReceivablePlanDO.class) |
| 77 | + .setPeriod(period).setFinishStatus(false); | ||
| 77 | receivablePlanMapper.insert(receivablePlan); | 78 | receivablePlanMapper.insert(receivablePlan); |
| 78 | 79 | ||
| 79 | // 3. 创建数据权限 | 80 | // 3. 创建数据权限 |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/util/CrmQueryWrapperUtils.java renamed to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/util/CrmPermissionUtils.java
| @@ -7,9 +7,10 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO; | @@ -7,9 +7,10 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO; | ||
| 7 | import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; | 7 | import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; |
| 8 | import cn.iocoder.yudao.module.crm.enums.common.CrmSceneTypeEnum; | 8 | import cn.iocoder.yudao.module.crm.enums.common.CrmSceneTypeEnum; |
| 9 | import cn.iocoder.yudao.module.crm.enums.permission.CrmPermissionLevelEnum; | 9 | import cn.iocoder.yudao.module.crm.enums.permission.CrmPermissionLevelEnum; |
| 10 | -import cn.iocoder.yudao.module.crm.framework.permission.core.util.CrmPermissionUtils; | 10 | +import cn.iocoder.yudao.module.system.api.permission.PermissionApi; |
| 11 | import cn.iocoder.yudao.module.system.api.user.AdminUserApi; | 11 | import cn.iocoder.yudao.module.system.api.user.AdminUserApi; |
| 12 | import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; | 12 | import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; |
| 13 | +import cn.iocoder.yudao.module.system.enums.permission.RoleCodeEnum; | ||
| 13 | import com.baomidou.mybatisplus.core.toolkit.support.SFunction; | 14 | import com.baomidou.mybatisplus.core.toolkit.support.SFunction; |
| 14 | import com.github.yulichang.autoconfigure.MybatisPlusJoinProperties; | 15 | import com.github.yulichang.autoconfigure.MybatisPlusJoinProperties; |
| 15 | import com.github.yulichang.wrapper.MPJLambdaWrapper; | 16 | import com.github.yulichang.wrapper.MPJLambdaWrapper; |
| @@ -18,13 +19,24 @@ import java.util.Collection; | @@ -18,13 +19,24 @@ import java.util.Collection; | ||
| 18 | import java.util.List; | 19 | import java.util.List; |
| 19 | 20 | ||
| 20 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; | 21 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; |
| 22 | +import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; | ||
| 21 | 23 | ||
| 22 | /** | 24 | /** |
| 23 | - * CRM 查询工具类 | 25 | + * 数据权限工具类 |
| 24 | * | 26 | * |
| 25 | * @author HUIHUI | 27 | * @author HUIHUI |
| 26 | */ | 28 | */ |
| 27 | -public class CrmQueryWrapperUtils { | 29 | +public class CrmPermissionUtils { |
| 30 | + | ||
| 31 | + /** | ||
| 32 | + * 校验用户是否是 CRM 管理员 | ||
| 33 | + * | ||
| 34 | + * @return 是/否 | ||
| 35 | + */ | ||
| 36 | + public static boolean isCrmAdmin() { | ||
| 37 | + PermissionApi permissionApi = SpringUtil.getBean(PermissionApi.class); | ||
| 38 | + return permissionApi.hasAnyRoles(getLoginUserId(), RoleCodeEnum.CRM_ADMIN.getCode()); | ||
| 39 | + } | ||
| 28 | 40 | ||
| 29 | /** | 41 | /** |
| 30 | * 构造 CRM 数据类型数据分页查询条件 | 42 | * 构造 CRM 数据类型数据分页查询条件 |
| @@ -38,7 +50,8 @@ public class CrmQueryWrapperUtils { | @@ -38,7 +50,8 @@ public class CrmQueryWrapperUtils { | ||
| 38 | */ | 50 | */ |
| 39 | public static <T extends MPJLambdaWrapper<?>, S> void appendPermissionCondition(T query, Integer bizType, SFunction<S, ?> bizId, | 51 | public static <T extends MPJLambdaWrapper<?>, S> void appendPermissionCondition(T query, Integer bizType, SFunction<S, ?> bizId, |
| 40 | Long userId, Integer sceneType, Boolean pool) { | 52 | Long userId, Integer sceneType, Boolean pool) { |
| 41 | - final String ownerUserIdField = SingletonManager.getMybatisPlusJoinProperties().getTableAlias() + ".owner_user_id"; | 53 | + MybatisPlusJoinProperties mybatisPlusJoinProperties = SpringUtil.getBean(MybatisPlusJoinProperties.class); |
| 54 | + final String ownerUserIdField = mybatisPlusJoinProperties.getTableAlias() + ".owner_user_id"; | ||
| 42 | // 1. 构建数据权限连表条件 | 55 | // 1. 构建数据权限连表条件 |
| 43 | if (!CrmPermissionUtils.isCrmAdmin() && ObjUtil.notEqual(pool, Boolean.TRUE)) { // 管理员,公海不需要数据权限 | 56 | if (!CrmPermissionUtils.isCrmAdmin() && ObjUtil.notEqual(pool, Boolean.TRUE)) { // 管理员,公海不需要数据权限 |
| 44 | query.innerJoin(CrmPermissionDO.class, on -> on.eq(CrmPermissionDO::getBizType, bizType) | 57 | query.innerJoin(CrmPermissionDO.class, on -> on.eq(CrmPermissionDO::getBizType, bizType) |
| @@ -56,7 +69,8 @@ public class CrmQueryWrapperUtils { | @@ -56,7 +69,8 @@ public class CrmQueryWrapperUtils { | ||
| 56 | } | 69 | } |
| 57 | // 2.3 场景三:下属负责的数据 | 70 | // 2.3 场景三:下属负责的数据 |
| 58 | if (CrmSceneTypeEnum.isSubordinate(sceneType)) { | 71 | if (CrmSceneTypeEnum.isSubordinate(sceneType)) { |
| 59 | - List<AdminUserRespDTO> subordinateUsers = SingletonManager.getAdminUserApi().getUserListBySubordinate(userId); | 72 | + AdminUserApi adminUserApi = SpringUtil.getBean(AdminUserApi.class); |
| 73 | + List<AdminUserRespDTO> subordinateUsers = adminUserApi.getUserListBySubordinate(userId); | ||
| 60 | if (CollUtil.isEmpty(subordinateUsers)) { | 74 | if (CollUtil.isEmpty(subordinateUsers)) { |
| 61 | query.eq(ownerUserIdField, -1); // 不返回任何结果 | 75 | query.eq(ownerUserIdField, -1); // 不返回任何结果 |
| 62 | } else { | 76 | } else { |
| @@ -81,7 +95,7 @@ public class CrmQueryWrapperUtils { | @@ -81,7 +95,7 @@ public class CrmQueryWrapperUtils { | ||
| 81 | * @param userId 用户编号 | 95 | * @param userId 用户编号 |
| 82 | */ | 96 | */ |
| 83 | public static <T extends MPJLambdaWrapper<?>> void appendPermissionCondition(T query, Integer bizType, Collection<Long> bizIds, Long userId) { | 97 | public static <T extends MPJLambdaWrapper<?>> void appendPermissionCondition(T query, Integer bizType, Collection<Long> bizIds, Long userId) { |
| 84 | - if (CrmPermissionUtils.isCrmAdmin()) {// 管理员不需要数据权限 | 98 | + if (isCrmAdmin()) {// 管理员不需要数据权限 |
| 85 | return; | 99 | return; |
| 86 | } | 100 | } |
| 87 | query.innerJoin(CrmPermissionDO.class, on -> | 101 | query.innerJoin(CrmPermissionDO.class, on -> |
| @@ -89,25 +103,4 @@ public class CrmQueryWrapperUtils { | @@ -89,25 +103,4 @@ public class CrmQueryWrapperUtils { | ||
| 89 | .eq(CollUtil.isNotEmpty(bizIds), CrmPermissionDO::getUserId, userId)); | 103 | .eq(CollUtil.isNotEmpty(bizIds), CrmPermissionDO::getUserId, userId)); |
| 90 | } | 104 | } |
| 91 | 105 | ||
| 92 | - /** | ||
| 93 | - * 静态内部类实现单例获取 | ||
| 94 | - * | ||
| 95 | - * @author HUIHUI | ||
| 96 | - */ | ||
| 97 | - private static class SingletonManager { | ||
| 98 | - | ||
| 99 | - private static final AdminUserApi ADMIN_USER_API = SpringUtil.getBean(AdminUserApi.class); | ||
| 100 | - | ||
| 101 | - private static final MybatisPlusJoinProperties MYBATIS_PLUS_JOIN_PROPERTIES = SpringUtil.getBean(MybatisPlusJoinProperties.class); | ||
| 102 | - | ||
| 103 | - public static AdminUserApi getAdminUserApi() { | ||
| 104 | - return ADMIN_USER_API; | ||
| 105 | - } | ||
| 106 | - | ||
| 107 | - public static MybatisPlusJoinProperties getMybatisPlusJoinProperties() { | ||
| 108 | - return MYBATIS_PLUS_JOIN_PROPERTIES; | ||
| 109 | - } | ||
| 110 | - | ||
| 111 | - } | ||
| 112 | - | ||
| 113 | } | 106 | } |
yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/permission/RoleCodeEnum.java
| @@ -13,6 +13,7 @@ public enum RoleCodeEnum { | @@ -13,6 +13,7 @@ public enum RoleCodeEnum { | ||
| 13 | 13 | ||
| 14 | SUPER_ADMIN("super_admin", "超级管理员"), | 14 | SUPER_ADMIN("super_admin", "超级管理员"), |
| 15 | TENANT_ADMIN("tenant_admin", "租户管理员"), | 15 | TENANT_ADMIN("tenant_admin", "租户管理员"), |
| 16 | + CRM_ADMIN("crm_admin", "CRM 管理员"); // CRM 系统专用 | ||
| 16 | ; | 17 | ; |
| 17 | 18 | ||
| 18 | /** | 19 | /** |