mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-01 02:38:43 +08:00 
			
		
		
		
	✨ CRM:code review 客户导出的实现
This commit is contained in:
		| @@ -3,11 +3,11 @@ package cn.iocoder.yudao.module.crm.controller.admin.permission; | ||||
| import cn.hutool.core.collection.CollUtil; | ||||
| import cn.iocoder.yudao.framework.common.pojo.CommonResult; | ||||
| import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | ||||
| import cn.iocoder.yudao.framework.common.util.collection.MapUtils; | ||||
| import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.permission.vo.CrmPermissionCreateReqVO; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.permission.vo.CrmPermissionRespVO; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.permission.vo.CrmPermissionUpdateReqVO; | ||||
| import cn.iocoder.yudao.module.crm.convert.permission.CrmPermissionConvert; | ||||
| import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO; | ||||
| import cn.iocoder.yudao.module.crm.enums.permission.CrmPermissionLevelEnum; | ||||
| import cn.iocoder.yudao.module.crm.framework.permission.core.annotations.CrmPermission; | ||||
| @@ -19,6 +19,7 @@ import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO; | ||||
| import cn.iocoder.yudao.module.system.api.dept.dto.PostRespDTO; | ||||
| import cn.iocoder.yudao.module.system.api.user.AdminUserApi; | ||||
| import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; | ||||
| import com.google.common.collect.Multimaps; | ||||
| import io.swagger.v3.oas.annotations.Operation; | ||||
| import io.swagger.v3.oas.annotations.Parameter; | ||||
| import io.swagger.v3.oas.annotations.Parameters; | ||||
| @@ -29,11 +30,16 @@ import org.springframework.security.access.prepost.PreAuthorize; | ||||
| import org.springframework.validation.annotation.Validated; | ||||
| import org.springframework.web.bind.annotation.*; | ||||
|  | ||||
| import java.util.*; | ||||
| import java.util.Collection; | ||||
| import java.util.Collections; | ||||
| import java.util.List; | ||||
| 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.util.collection.CollectionUtils.convertSet; | ||||
| import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSetByFlatMap; | ||||
| import static cn.iocoder.yudao.framework.common.util.collection.MapUtils.findAndThen; | ||||
| import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; | ||||
|  | ||||
| @Tag(name = "管理后台 - CRM 数据权限") | ||||
| @@ -98,18 +104,32 @@ public class CrmPermissionController { | ||||
|     @PreAuthorize("@ss.hasPermission('crm:permission:query')") | ||||
|     public CommonResult<List<CrmPermissionRespVO>> getPermissionList(@RequestParam("bizType") Integer bizType, | ||||
|                                                                      @RequestParam("bizId") Long bizId) { | ||||
|         List<CrmPermissionDO> permission = permissionService.getPermissionListByBiz(bizType, bizId); | ||||
|         if (CollUtil.isEmpty(permission)) { | ||||
|         List<CrmPermissionDO> permissions = permissionService.getPermissionListByBiz(bizType, bizId); | ||||
|         if (CollUtil.isEmpty(permissions)) { | ||||
|             return success(Collections.emptyList()); | ||||
|         } | ||||
|  | ||||
|         // 查询相关数据 | ||||
|         Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap( | ||||
|                 convertSet(permissions, CrmPermissionDO::getUserId)); | ||||
|         Map<Long, DeptRespDTO> deptMap = deptApi.getDeptMap(convertSet(userMap.values(), AdminUserRespDTO::getDeptId)); | ||||
|         Map<Long, PostRespDTO> postMap = postApi.getPostMap( | ||||
|                 convertSetByFlatMap(userMap.values(), AdminUserRespDTO::getPostIds, | ||||
|                         item -> item != null ? item.stream() : Stream.empty())); | ||||
|         // 拼接数据 | ||||
|         List<AdminUserRespDTO> userList = adminUserApi.getUserList(convertSet(permission, CrmPermissionDO::getUserId)); | ||||
|         Map<Long, DeptRespDTO> deptMap = deptApi.getDeptMap(convertSet(userList, AdminUserRespDTO::getDeptId)); | ||||
|         Set<Long> postIds = CollectionUtils.convertSetByFlatMap(userList, AdminUserRespDTO::getPostIds, | ||||
|                 item -> item != null ? item.stream() : Stream.empty()); | ||||
|         Map<Long, PostRespDTO> postMap = postApi.getPostMap(postIds); | ||||
|         return success(CrmPermissionConvert.INSTANCE.convert(permission, userList, deptMap, postMap)); | ||||
|         return success(CollectionUtils.convertList(BeanUtils.toBean(permissions, CrmPermissionRespVO.class), item -> { | ||||
|             findAndThen(userMap, item.getUserId(), user -> { | ||||
|                 item.setNickname(user.getNickname()); | ||||
|                 findAndThen(deptMap, user.getDeptId(), deptRespDTO -> item.setDeptName(deptRespDTO.getName())); | ||||
|                 if (CollUtil.isEmpty(user.getPostIds())) { | ||||
|                     item.setPostNames(Collections.emptySet()); | ||||
|                     return; | ||||
|                 } | ||||
|                 List<PostRespDTO> postList = MapUtils.getList(Multimaps.forMap(postMap), user.getPostIds()); | ||||
|                 item.setPostNames(CollectionUtils.convertSet(postList, PostRespDTO::getName)); | ||||
|             }); | ||||
|             return item; | ||||
|         })); | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -1,57 +0,0 @@ | ||||
| package cn.iocoder.yudao.module.crm.convert.permission; | ||||
|  | ||||
| import cn.hutool.core.collection.CollUtil; | ||||
| import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | ||||
| import cn.iocoder.yudao.framework.common.util.collection.MapUtils; | ||||
| import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.permission.vo.CrmPermissionRespVO; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.permission.vo.CrmPermissionUpdateReqVO; | ||||
| import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO; | ||||
| import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO; | ||||
| import cn.iocoder.yudao.module.system.api.dept.dto.PostRespDTO; | ||||
| import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; | ||||
| import com.google.common.collect.Multimaps; | ||||
| import org.mapstruct.Mapper; | ||||
| import org.mapstruct.factory.Mappers; | ||||
|  | ||||
| import java.util.Collections; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
|  | ||||
| import static cn.iocoder.yudao.framework.common.util.collection.MapUtils.findAndThen; | ||||
|  | ||||
| // TODO @芋艿:要干掉 | ||||
| /** | ||||
|  * Crm 数据权限 Convert | ||||
|  * | ||||
|  * @author HUIHUI | ||||
|  */ | ||||
| @Mapper | ||||
| public interface CrmPermissionConvert { | ||||
|  | ||||
|     CrmPermissionConvert INSTANCE = Mappers.getMapper(CrmPermissionConvert.class); | ||||
|  | ||||
|     default List<CrmPermissionRespVO> convert(List<CrmPermissionDO> permissions, List<AdminUserRespDTO> userList, | ||||
|                                               Map<Long, DeptRespDTO> deptMap, Map<Long, PostRespDTO> postMap) { | ||||
|         Map<Long, AdminUserRespDTO> userMap = CollectionUtils.convertMap(userList, AdminUserRespDTO::getId); | ||||
|         return CollectionUtils.convertList(BeanUtils.toBean(permissions, CrmPermissionRespVO.class), item -> { | ||||
|             findAndThen(userMap, item.getUserId(), user -> { | ||||
|                 item.setNickname(user.getNickname()); | ||||
|                 findAndThen(deptMap, user.getDeptId(), deptRespDTO -> item.setDeptName(deptRespDTO.getName())); | ||||
|                 if (CollUtil.isEmpty(user.getPostIds())) { | ||||
|                     item.setPostNames(Collections.emptySet()); | ||||
|                     return; | ||||
|                 } | ||||
|                 List<PostRespDTO> postList = MapUtils.getList(Multimaps.forMap(postMap), user.getPostIds()); | ||||
|                 item.setPostNames(CollectionUtils.convertSet(postList, PostRespDTO::getName)); | ||||
|             }); | ||||
|             return item; | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     default List<CrmPermissionDO> convertList(CrmPermissionUpdateReqVO updateReqVO) { | ||||
|         return CollectionUtils.convertList(updateReqVO.getIds(), | ||||
|                 id -> new CrmPermissionDO().setId(id).setLevel(updateReqVO.getLevel())); | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -258,11 +258,13 @@ public class CrmCustomerServiceImpl implements CrmCustomerService { | ||||
|     @Override | ||||
|     public CrmCustomerImportRespVO importCustomerList(List<CrmCustomerImportExcelVO> importCustomers, | ||||
|                                                       CrmCustomerImportReqVO importReqVO) { | ||||
|         // 校验非空 | ||||
|         importCustomers = filterList(importCustomers, item -> Objects.nonNull(item.getName())); | ||||
|         if (CollUtil.isEmpty(importCustomers)) { | ||||
|             throw exception(CUSTOMER_IMPORT_LIST_IS_EMPTY); | ||||
|         } | ||||
|         // 因为有下拉所以需要过滤掉空行 | ||||
|         importCustomers = filterList(importCustomers, item -> Objects.nonNull(item.getName())); | ||||
|  | ||||
|         // 逐条处理 | ||||
|         CrmCustomerImportRespVO respVO = CrmCustomerImportRespVO.builder().createCustomerNames(new ArrayList<>()) | ||||
|                 .updateCustomerNames(new ArrayList<>()).failureCustomerNames(new LinkedHashMap<>()).build(); | ||||
|         importCustomers.forEach(importCustomer -> { | ||||
|   | ||||
| @@ -2,16 +2,16 @@ package cn.iocoder.yudao.module.crm.service.permission; | ||||
|  | ||||
| import cn.hutool.core.collection.CollUtil; | ||||
| import cn.hutool.core.util.ObjUtil; | ||||
| import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | ||||
| import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | ||||
| import cn.iocoder.yudao.module.crm.controller.admin.permission.vo.CrmPermissionUpdateReqVO; | ||||
| import cn.iocoder.yudao.module.crm.convert.permission.CrmPermissionConvert; | ||||
| import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO; | ||||
| import cn.iocoder.yudao.module.crm.dal.mysql.permission.CrmPermissionMapper; | ||||
| import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum; | ||||
| import cn.iocoder.yudao.module.crm.enums.permission.CrmPermissionLevelEnum; | ||||
| import cn.iocoder.yudao.module.crm.util.CrmPermissionUtils; | ||||
| import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionCreateReqBO; | ||||
| import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionTransferReqBO; | ||||
| import cn.iocoder.yudao.module.crm.util.CrmPermissionUtils; | ||||
| import cn.iocoder.yudao.module.system.api.user.AdminUserApi; | ||||
| import jakarta.annotation.Resource; | ||||
| import org.springframework.stereotype.Service; | ||||
| @@ -74,8 +74,9 @@ public class CrmPermissionServiceImpl implements CrmPermissionService { | ||||
|         // 1. 校验存在 | ||||
|         validatePermissionExists(updateReqVO.getIds()); | ||||
|         // 2. 更新 | ||||
|         List<CrmPermissionDO> updateDO = CrmPermissionConvert.INSTANCE.convertList(updateReqVO); | ||||
|         permissionMapper.updateBatch(updateDO); | ||||
|         List<CrmPermissionDO> updateList = CollectionUtils.convertList(updateReqVO.getIds(), | ||||
|                 id -> new CrmPermissionDO().setId(id).setLevel(updateReqVO.getLevel())); | ||||
|         permissionMapper.updateBatch(updateList); | ||||
|     } | ||||
|  | ||||
|     private void validatePermissionExists(Collection<Long> ids) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 YunaiV
					YunaiV