crm:合并最新的数据权限

This commit is contained in:
YunaiV 2023-11-18 22:31:05 +08:00
parent 8c9873c425
commit 716b081464
8 changed files with 45 additions and 28 deletions

View File

@ -34,6 +34,7 @@ import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
// TODO @zyacrm 所有的类dou带 Crm 前缀因为它的名字太通用了可能和后续的 erp 之类的冲突 // TODO @zyacrm 所有的类dou带 Crm 前缀因为它的名字太通用了可能和后续的 erp 之类的冲突
@Tag(name = "管理后台 - CRM 联系人") @Tag(name = "管理后台 - CRM 联系人")
@ -55,7 +56,7 @@ public class ContactController {
@Operation(summary = "创建联系人") @Operation(summary = "创建联系人")
@PreAuthorize("@ss.hasPermission('crm:contact:create')") @PreAuthorize("@ss.hasPermission('crm:contact:create')")
public CommonResult<Long> createContact(@Valid @RequestBody ContactCreateReqVO createReqVO) { public CommonResult<Long> createContact(@Valid @RequestBody ContactCreateReqVO createReqVO) {
return success(contactService.createContact(createReqVO)); return success(contactService.createContact(createReqVO, getLoginUserId()));
} }
@PutMapping("/update") @PutMapping("/update")

View File

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.crm.controller.admin.customer; package cn.iocoder.yudao.module.crm.controller.admin.customer;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
@ -33,8 +34,6 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 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.CollectionUtils.convertMap; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
@ -111,16 +110,16 @@ public class CrmCustomerController {
@Operation(summary = "获得客户分页") @Operation(summary = "获得客户分页")
@PreAuthorize("@ss.hasPermission('crm:customer:query')") @PreAuthorize("@ss.hasPermission('crm:customer:query')")
public CommonResult<PageResult<CrmCustomerRespVO>> getCustomerPage(@Valid CrmCustomerPageReqVO pageVO) { public CommonResult<PageResult<CrmCustomerRespVO>> getCustomerPage(@Valid CrmCustomerPageReqVO pageVO) {
PageResult<CrmCustomerDO> pageResult = customerService.getCustomerPage(pageVO); PageResult<CrmCustomerDO> pageResult = customerService.getCustomerPage(pageVO, getLoginUserId());
if (CollUtil.isEmpty(pageResult.getList())) { if (CollUtil.isEmpty(pageResult.getList())) {
return success(PageResult.empty(pageResult.getTotal())); return success(PageResult.empty(pageResult.getTotal()));
} }
// 拼接数据 // 拼接数据
Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap( // TODO 芋艿需要 review
convertSetByFlatMap(pageResult.getList(), user -> Stream.of(NumberUtil.parseLong(user.getCreator()), user.getOwnerUserId()))); // Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(
Map<Long, DeptRespDTO> deptMap = deptApi.getDeptMap( // convertSetByFlatMap(pageResult.getList(), user -> Stream.of(NumberUtil.parseLong(user.getCreator()), user.getOwnerUserId())));
convertSet(userMap.values(), AdminUserRespDTO::getDeptId)); // Map<Long, DeptRespDTO> deptMap = deptApi.getDeptMap(
return success(CrmCustomerConvert.INSTANCE.convertPage(pageResult, userMap, deptMap)); // convertSet(userMap.values(), AdminUserRespDTO::getDeptId));
return convertPage(customerService.getCustomerPage(pageVO, getLoginUserId())); return convertPage(customerService.getCustomerPage(pageVO, getLoginUserId()));
} }

View File

@ -1,16 +1,15 @@
package cn.iocoder.yudao.module.crm.convert.contact; package cn.iocoder.yudao.module.crm.convert.contact;
import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.crm.controller.admin.contact.vo.*; import cn.iocoder.yudao.module.crm.controller.admin.contact.vo.*;
import cn.iocoder.yudao.module.crm.dal.dataobject.contact.ContactDO; import cn.iocoder.yudao.module.crm.dal.dataobject.contact.ContactDO;
import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionTransferReqBO; import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionTransferReqBO;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers; import org.mapstruct.factory.Mappers;
import cn.iocoder.yudao.module.crm.controller.admin.contact.vo.*;
import cn.iocoder.yudao.module.crm.dal.dataobject.contact.ContactDO; import java.util.List;
/** /**
* crm联系人 Convert * crm联系人 Convert

View File

@ -4,13 +4,9 @@ import cn.hutool.core.util.NumberUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.collection.MapUtils; import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
import cn.iocoder.yudao.framework.ip.core.utils.AreaUtils; import cn.iocoder.yudao.framework.ip.core.utils.AreaUtils;
import cn.iocoder.yudao.framework.ip.core.utils.AreaUtils;
import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.*; import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.*;
import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerDO; import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerDO;
import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerPoolConfigDO; import cn.iocoder.yudao.module.crm.dal.dataobject.customer.CrmCustomerPoolConfigDO;
import cn.iocoder.yudao.module.crm.service.permission.bo.CrmTransferPermissionReqBO;
import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO; import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO;
import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionTransferReqBO; import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionTransferReqBO;
import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO; import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
@ -24,7 +20,6 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import static cn.iocoder.yudao.framework.common.util.collection.MapUtils.findAndThen; import static cn.iocoder.yudao.framework.common.util.collection.MapUtils.findAndThen;
import java.util.Map;
/** /**
* 客户 Convert * 客户 Convert
@ -70,7 +65,7 @@ public interface CrmCustomerConvert {
MapUtils.findAndThen(userMap, customerRespVO.getOwnerUserId(), ownerUser -> { MapUtils.findAndThen(userMap, customerRespVO.getOwnerUserId(), ownerUser -> {
customerRespVO.setOwnerUserName(ownerUser.getNickname()); customerRespVO.setOwnerUserName(ownerUser.getNickname());
MapUtils.findAndThen(deptMap, ownerUser.getDeptId(), dept -> MapUtils.findAndThen(deptMap, ownerUser.getDeptId(), dept ->
customerRespVO.setOwnerUserDept(dept.getName())); customerRespVO.setOwnerUserDeptName(dept.getName()));
}); });
}); });
return result; return result;

View File

@ -97,6 +97,12 @@ public class CrmCustomerDO extends BaseDO {
* 备注 * 备注
*/ */
private String remark; private String remark;
/**
* 负责人的用户编号
*
* 关联 AdminUserDO id 字段
*/
private Long ownerUserId;
/** /**
* 地区编号 * 地区编号
*/ */

View File

@ -1,10 +1,15 @@
package cn.iocoder.yudao.module.crm.service.contact; package cn.iocoder.yudao.module.crm.service.contact;
import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.crm.controller.admin.contact.vo.*;
import cn.iocoder.yudao.module.crm.dal.dataobject.contact.ContactDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.crm.controller.admin.contact.vo.ContactCreateReqVO;
import cn.iocoder.yudao.module.crm.controller.admin.contact.vo.ContactExportReqVO;
import cn.iocoder.yudao.module.crm.controller.admin.contact.vo.ContactPageReqVO;
import cn.iocoder.yudao.module.crm.controller.admin.contact.vo.ContactUpdateReqVO;
import cn.iocoder.yudao.module.crm.dal.dataobject.contact.ContactDO;
import javax.validation.Valid;
import java.util.Collection;
import java.util.List;
/** /**
* crm联系人 Service 接口 * crm联系人 Service 接口
@ -17,9 +22,10 @@ public interface ContactService {
* 创建crm联系人 * 创建crm联系人
* *
* @param createReqVO 创建信息 * @param createReqVO 创建信息
* @param userId 用户编号
* @return 编号 * @return 编号
*/ */
Long createContact(@Valid ContactCreateReqVO createReqVO); Long createContact(@Valid ContactCreateReqVO createReqVO, Long userId);
/** /**
* 更新crm联系人 * 更新crm联系人

View File

@ -10,7 +10,13 @@ import cn.iocoder.yudao.module.crm.controller.admin.contact.vo.ContactUpdateReqV
import cn.iocoder.yudao.module.crm.convert.contact.ContactConvert; import cn.iocoder.yudao.module.crm.convert.contact.ContactConvert;
import cn.iocoder.yudao.module.crm.dal.dataobject.contact.ContactDO; import cn.iocoder.yudao.module.crm.dal.dataobject.contact.ContactDO;
import cn.iocoder.yudao.module.crm.dal.mysql.contact.ContactMapper; import cn.iocoder.yudao.module.crm.dal.mysql.contact.ContactMapper;
import cn.iocoder.yudao.module.crm.framework.core.annotations.CrmPermission;
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 org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -32,8 +38,11 @@ public class ContactServiceImpl implements ContactService {
@Resource @Resource
private ContactMapper contactMapper; private ContactMapper contactMapper;
@Resource
private CrmPermissionService crmPermissionService;
@Override // TODO @zyna新增和修改时关联字段要校验例如说 直属上级是不是真的存在 @Override // TODO @zyna新增和修改时关联字段要校验例如说 直属上级是不是真的存在
public Long createContact(ContactCreateReqVO createReqVO) { public Long createContact(ContactCreateReqVO createReqVO, Long userId) {
// 插入 // 插入
ContactDO contact = ContactConvert.INSTANCE.convert(createReqVO); ContactDO contact = ContactConvert.INSTANCE.convert(createReqVO);
contactMapper.insert(contact); contactMapper.insert(contact);

View File

@ -1,7 +1,8 @@
package cn.iocoder.yudao.module.system.api.dept; package cn.iocoder.yudao.module.system.api.dept;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.system.api.dept.dto.PostRespDTO; import cn.iocoder.yudao.module.system.api.dept.dto.PostRespDTO;
import cn.iocoder.yudao.module.system.convert.dept.PostConvert; import cn.iocoder.yudao.module.system.dal.dataobject.dept.PostDO;
import cn.iocoder.yudao.module.system.service.dept.PostService; import cn.iocoder.yudao.module.system.service.dept.PostService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -27,7 +28,8 @@ public class PostApiImpl implements PostApi {
@Override @Override
public List<PostRespDTO> getPostList(Collection<Long> ids) { public List<PostRespDTO> getPostList(Collection<Long> ids) {
return PostConvert.INSTANCE.convert(postService.getPostList(ids)); List<PostDO> list = postService.getPostList(ids);
return BeanUtils.toBean(list, PostRespDTO.class);
} }
} }