From 6c536caad40a74e25ddad516764317982c0a5d50 Mon Sep 17 00:00:00 2001 From: puhui999 Date: Mon, 27 Nov 2023 21:47:56 +0800 Subject: [PATCH 1/2] =?UTF-8?q?crm=EF=BC=9A=E5=AE=8C=E5=96=84=20code=20rev?= =?UTF-8?q?iew=20=E6=95=B0=E6=8D=AE=E6=9D=83=E9=99=90=E6=8F=90=E5=88=B0?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/admin/customer/CrmCustomerController.java | 6 ++---- .../admin/permission/CrmPermissionController.java | 2 +- .../crm/service/customer/CrmCustomerServiceImpl.java | 8 +++++++- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/CrmCustomerController.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/CrmCustomerController.java index 0da8f8fbf..61489f7e6 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/CrmCustomerController.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/CrmCustomerController.java @@ -31,6 +31,7 @@ import java.util.Map; import java.util.stream.Stream; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.common.pojo.PageParam.PAGE_SIZE_NONE; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSetByFlatMap; import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @@ -115,7 +116,7 @@ public class CrmCustomerController { @OperateLog(type = EXPORT) public void exportCustomerExcel(@Valid CrmCustomerPageReqVO pageVO, HttpServletResponse response) throws IOException { - // TODO @puhui999:看看复用 getCustomerPage 方法;然后可以禁用下分页; + pageVO.setPageSize(PAGE_SIZE_NONE); // 不分页 List list = customerService.getCustomerPage(pageVO, getLoginUserId()).getList(); // 导出 Excel List datas = CrmCustomerConvert.INSTANCE.convertList02(list); @@ -168,9 +169,6 @@ public class CrmCustomerController { @PreAuthorize("@ss.hasPermission('crm:customer:distribute')") public CommonResult distributeCustomer(@RequestParam(value = "ids") List ids, @RequestParam(value = "ownerUserId") Long ownerUserId) { - // 校验负责人是否存在 - // TODO @puhui999:这个校验,是不是可以收到 validateUserList - adminUserApi.validateUserList(singletonList(ownerUserId)); // 领取公海数据 customerService.receiveCustomer(ids, ownerUserId); return success(true); diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/permission/CrmPermissionController.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/permission/CrmPermissionController.java index 2d593c7ce..10b188fbb 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/permission/CrmPermissionController.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/permission/CrmPermissionController.java @@ -80,7 +80,7 @@ public class CrmPermissionController { @DeleteMapping("/delete-self") @Operation(summary = "删除自己的数据权限") @Parameter(name = "id", description = "数据权限编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('crm:permission:delete')") // TODO puhui999: 数据权限在页面上只是已团队成员组件的形式出现,那么这个权限怎么分配? + @PreAuthorize("@ss.hasPermission('crm:permission:delete')") public CommonResult deleteSelfPermission(@RequestParam("id") Long id) { permissionService.deleteSelfPermission(id, getLoginUserId()); return success(true); diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerServiceImpl.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerServiceImpl.java index 925215c23..bb389ac20 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerServiceImpl.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerServiceImpl.java @@ -13,6 +13,7 @@ import cn.iocoder.yudao.module.crm.framework.enums.CrmBizTypeEnum; import cn.iocoder.yudao.module.crm.framework.enums.CrmPermissionLevelEnum; import cn.iocoder.yudao.module.crm.service.permission.CrmPermissionService; import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionCreateReqBO; +import cn.iocoder.yudao.module.system.api.user.AdminUserApi; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; @@ -25,6 +26,7 @@ import java.util.Objects; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.*; +import static java.util.Collections.singletonList; /** * 客户 Service 实现类 @@ -40,6 +42,8 @@ public class CrmCustomerServiceImpl implements CrmCustomerService { @Resource private CrmPermissionService crmPermissionService; + @Resource + private AdminUserApi adminUserApi; @Override @Transactional(rollbackFor = Exception.class) @@ -174,7 +178,9 @@ public class CrmCustomerServiceImpl implements CrmCustomerService { if (customers.size() != ids.size()) { throw exception(CUSTOMER_NOT_EXISTS); } - // 1.2. 校验状态 + // 1.2. 校验负责人是否存在 + adminUserApi.validateUserList(singletonList(ownerUserId)); + // 1.3. 校验状态 customers.forEach(customer -> { // 校验是否已有负责人 validateCustomerOwnerExists(customer, false); From 79600774ecc8f3111361e92c420140f7ffa18dea Mon Sep 17 00:00:00 2001 From: puhui999 Date: Tue, 28 Nov 2023 14:27:36 +0800 Subject: [PATCH 2/2] =?UTF-8?q?crm-=E5=AE=A2=E6=88=B7=EF=BC=9A=E5=88=86?= =?UTF-8?q?=E9=A1=B5=E6=9F=A5=E8=AF=A2=20mapper=20=E8=BF=98=E6=98=AF?= =?UTF-8?q?=E5=BE=97=E6=8B=86=E6=88=90=E4=B8=A4=E4=B8=AA=EF=BC=8C=E6=80=8E?= =?UTF-8?q?=E4=B9=88=E6=9F=A5=E9=80=BB=E8=BE=91=E4=BA=A4=E7=BB=99=20servic?= =?UTF-8?q?e=20=E5=8E=BB=E5=81=9A=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../permission/CrmPermissionConvert.java | 2 +- .../dal/mysql/customer/CrmCustomerMapper.java | 72 ++++++++++--------- .../customer/CrmCustomerServiceImpl.java | 7 +- .../admin/banner/vo/BannerPageReqVO.java | 5 +- 4 files changed, 45 insertions(+), 41 deletions(-) diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/permission/CrmPermissionConvert.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/permission/CrmPermissionConvert.java index 5e2522849..0f3c77e5f 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/permission/CrmPermissionConvert.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/permission/CrmPermissionConvert.java @@ -23,7 +23,7 @@ import static cn.iocoder.yudao.framework.common.util.collection.MapUtils.findAnd /** * Crm 数据权限 Convert * - * @author Wanwan + * @author HUIHUI */ @Mapper public interface CrmPermissionConvert { diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/customer/CrmCustomerMapper.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/customer/CrmCustomerMapper.java index f996b8601..1bd039fb2 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/customer/CrmCustomerMapper.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/customer/CrmCustomerMapper.java @@ -25,47 +25,25 @@ import java.util.List; @Mapper public interface CrmCustomerMapper extends BaseMapperX { - static void appendQueryParams(MPJLambdaWrapperX mpjLambdaWrapperX, CrmCustomerPageReqVO pageReqVO, Long userId) { - if (pageReqVO.getPool()) { // 情况一:公海 - mpjLambdaWrapperX.isNull(CrmCustomerDO::getOwnerUserId); - } else { // 情况二:不是公海 - mpjLambdaWrapperX.isNotNull(CrmCustomerDO::getOwnerUserId); - } - // TODO 场景数据过滤 - if (CrmSceneEnum.isOwner(pageReqVO.getSceneType())) { // 场景一:我负责的数据 - mpjLambdaWrapperX.eq(CrmCustomerDO::getOwnerUserId, userId); - } - } - - static void appendQueryParams(LambdaQueryWrapperX lambdaQueryWrapperX, CrmCustomerPageReqVO pageReqVO, Long userId) { - if (pageReqVO.getPool()) { // 情况一:公海 - lambdaQueryWrapperX.isNull(CrmCustomerDO::getOwnerUserId); - } else { // 情况二:不是公海 - lambdaQueryWrapperX.isNotNull(CrmCustomerDO::getOwnerUserId); - } - // TODO 场景数据过滤 - if (CrmSceneEnum.isOwner(pageReqVO.getSceneType())) { // 场景一:我负责的数据 - lambdaQueryWrapperX.eq(CrmCustomerDO::getOwnerUserId, userId); - } - } - default int updateOwnerUserIdById(Long id, Long ownerUserId) { return update(new LambdaUpdateWrapper() .eq(CrmCustomerDO::getId, id) .set(CrmCustomerDO::getOwnerUserId, ownerUserId)); } - default PageResult selectPage(CrmCustomerPageReqVO pageReqVO, Long userId, Boolean admin) { - if (admin) { // 情况一:管理员查看 - LambdaQueryWrapperX queryWrapperX = new LambdaQueryWrapperX<>(); - appendQueryParams(queryWrapperX, pageReqVO, userId); - return selectPage(pageReqVO, queryWrapperX - .likeIfPresent(CrmCustomerDO::getName, pageReqVO.getName()) - .eqIfPresent(CrmCustomerDO::getMobile, pageReqVO.getMobile()) - .eqIfPresent(CrmCustomerDO::getIndustryId, pageReqVO.getIndustryId()) - .eqIfPresent(CrmCustomerDO::getLevel, pageReqVO.getLevel()) - .eqIfPresent(CrmCustomerDO::getSource, pageReqVO.getSource())); - } + default PageResult selectPageWithAdmin(CrmCustomerPageReqVO pageReqVO, Long userId) { + // 情况一:管理员查看 + LambdaQueryWrapperX queryWrapperX = new LambdaQueryWrapperX<>(); + appendQueryParams(queryWrapperX, pageReqVO, userId); + return selectPage(pageReqVO, queryWrapperX + .likeIfPresent(CrmCustomerDO::getName, pageReqVO.getName()) + .eqIfPresent(CrmCustomerDO::getMobile, pageReqVO.getMobile()) + .eqIfPresent(CrmCustomerDO::getIndustryId, pageReqVO.getIndustryId()) + .eqIfPresent(CrmCustomerDO::getLevel, pageReqVO.getLevel()) + .eqIfPresent(CrmCustomerDO::getSource, pageReqVO.getSource())); + } + + default PageResult selectPage(CrmCustomerPageReqVO pageReqVO, Long userId) { // 情况二:获取当前用户能看的分页数据 IPage mpPage = MyBatisUtils.buildPage(pageReqVO); MPJLambdaWrapperX mpjLambdaWrapperX = new MPJLambdaWrapperX<>(); @@ -91,4 +69,28 @@ public interface CrmCustomerMapper extends BaseMapperX { return new PageResult<>(mpPage.getRecords(), mpPage.getTotal()); } + static void appendQueryParams(MPJLambdaWrapperX mpjLambdaWrapperX, CrmCustomerPageReqVO pageReqVO, Long userId) { + if (pageReqVO.getPool()) { // 情况一:公海 + mpjLambdaWrapperX.isNull(CrmCustomerDO::getOwnerUserId); + } else { // 情况二:不是公海 + mpjLambdaWrapperX.isNotNull(CrmCustomerDO::getOwnerUserId); + } + // TODO 场景数据过滤 + if (CrmSceneEnum.isOwner(pageReqVO.getSceneType())) { // 场景一:我负责的数据 + mpjLambdaWrapperX.eq(CrmCustomerDO::getOwnerUserId, userId); + } + } + + static void appendQueryParams(LambdaQueryWrapperX lambdaQueryWrapperX, CrmCustomerPageReqVO pageReqVO, Long userId) { + if (pageReqVO.getPool()) { // 情况一:公海 + lambdaQueryWrapperX.isNull(CrmCustomerDO::getOwnerUserId); + } else { // 情况二:不是公海 + lambdaQueryWrapperX.isNotNull(CrmCustomerDO::getOwnerUserId); + } + // TODO 场景数据过滤 + if (CrmSceneEnum.isOwner(pageReqVO.getSceneType())) { // 场景一:我负责的数据 + lambdaQueryWrapperX.eq(CrmCustomerDO::getOwnerUserId, userId); + } + } + } diff --git a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerServiceImpl.java b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerServiceImpl.java index bb389ac20..d12943321 100644 --- a/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerServiceImpl.java +++ b/yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/customer/CrmCustomerServiceImpl.java @@ -100,9 +100,12 @@ public class CrmCustomerServiceImpl implements CrmCustomerService { @Override public PageResult getCustomerPage(CrmCustomerPageReqVO pageReqVO, Long userId) { - // 1.1. TODO 如果是超级管理员 boolean admin = false; - return customerMapper.selectPage(pageReqVO, userId, admin); + if (admin) { // 1.1. 情况一: TODO 如果是管理员 + customerMapper.selectPageWithAdmin(pageReqVO, userId); + } + // 1.2. 情况二:获取当前用户能看的分页数据 + return customerMapper.selectPage(pageReqVO, userId); } /** diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/banner/vo/BannerPageReqVO.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/banner/vo/BannerPageReqVO.java index d4efa0df1..c2ac49d71 100644 --- a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/banner/vo/BannerPageReqVO.java +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/banner/vo/BannerPageReqVO.java @@ -19,11 +19,10 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ @ToString(callSuper = true) public class BannerPageReqVO extends PageParam { - // TODO @puhui999:example - @Schema(description = "标题") + @Schema(description = "标题", example = "这是一个标题") private String title; - @Schema(description = "状态") + @Schema(description = "状态", example = "1") @InEnum(CommonStatusEnum.class) private Integer status;