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

View File

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

View File

@ -1,16 +1,15 @@
package cn.iocoder.yudao.module.crm.convert.contact;
import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
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.service.permission.bo.CrmPermissionTransferReqBO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
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

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.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.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.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.service.permission.bo.CrmPermissionTransferReqBO;
import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
@ -24,7 +20,6 @@ import java.util.List;
import java.util.Map;
import static cn.iocoder.yudao.framework.common.util.collection.MapUtils.findAndThen;
import java.util.Map;
/**
* 客户 Convert
@ -70,7 +65,7 @@ public interface CrmCustomerConvert {
MapUtils.findAndThen(userMap, customerRespVO.getOwnerUserId(), ownerUser -> {
customerRespVO.setOwnerUserName(ownerUser.getNickname());
MapUtils.findAndThen(deptMap, ownerUser.getDeptId(), dept ->
customerRespVO.setOwnerUserDept(dept.getName()));
customerRespVO.setOwnerUserDeptName(dept.getName()));
});
});
return result;

View File

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

View File

@ -1,10 +1,15 @@
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.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 接口
@ -17,9 +22,10 @@ public interface ContactService {
* 创建crm联系人
*
* @param createReqVO 创建信息
* @param userId 用户编号
* @return 编号
*/
Long createContact(@Valid ContactCreateReqVO createReqVO);
Long createContact(@Valid ContactCreateReqVO createReqVO, Long userId);
/**
* 更新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.dal.dataobject.contact.ContactDO;
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.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
@ -32,8 +38,11 @@ public class ContactServiceImpl implements ContactService {
@Resource
private ContactMapper contactMapper;
@Resource
private CrmPermissionService crmPermissionService;
@Override // TODO @zyna新增和修改时关联字段要校验例如说 直属上级是不是真的存在
public Long createContact(ContactCreateReqVO createReqVO) {
public Long createContact(ContactCreateReqVO createReqVO, Long userId) {
// 插入
ContactDO contact = ContactConvert.INSTANCE.convert(createReqVO);
contactMapper.insert(contact);

View File

@ -1,7 +1,8 @@
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.convert.dept.PostConvert;
import cn.iocoder.yudao.module.system.dal.dataobject.dept.PostDO;
import cn.iocoder.yudao.module.system.service.dept.PostService;
import org.springframework.stereotype.Service;
@ -27,7 +28,8 @@ public class PostApiImpl implements PostApi {
@Override
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);
}
}