| | |
| | | import cn.iocoder.yudao.module.crm.framework.permission.core.annotations.CrmPermission; |
| | | import cn.iocoder.yudao.module.crm.service.business.CrmBusinessService; |
| | | import cn.iocoder.yudao.module.crm.service.contact.CrmContactService; |
| | | import cn.iocoder.yudao.module.crm.api.customer.CrmCustomerApi; |
| | | import cn.iocoder.yudao.module.crm.service.customer.CrmCustomerService; |
| | | import cn.iocoder.yudao.module.crm.service.permission.CrmPermissionService; |
| | | import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionCreateReqBO; |
| | |
| | | @Resource |
| | | private CrmCustomerService customerService; |
| | | @Resource |
| | | private CrmCustomerApi customerApi; |
| | | @Resource |
| | | private CrmBusinessService businessService; |
| | | @Resource |
| | | private CrmContactService contactService; |
| | |
| | | crmPermissionService.createPermission(new CrmPermissionCreateReqBO().setUserId(contract.getOwnerUserId()) |
| | | .setBizType(CrmBizTypeEnum.CRM_CONTRACT.getType()).setBizId(contract.getId()) |
| | | .setLevel(CrmPermissionLevelEnum.OWNER.getLevel())); |
| | | // 3.1 客户负责人自动拥有该合同的读写权限 |
| | | crmPermissionService.createPermissionForCustomerOwner(CrmBizTypeEnum.CRM_CONTRACT.getType(), |
| | | contract.getId(), contract.getCustomerId(), contract.getOwnerUserId()); |
| | | |
| | | // 4. 记录操作日志上下文 |
| | | LogRecordContext.putVariable("contract", contract); |
| | |
| | | return PageResult.empty(); |
| | | } |
| | | } |
| | | // 2. 获取用户有权限的客户 ID 列表 |
| | | List<Long> permittedCustomerIds = customerApi.getPermittedCustomerIds(); |
| | | // 3. 查询分页 |
| | | return contractMapper.selectPage(pageReqVO, userId, config, permittedCustomerIds); |
| | | // 2. 查询分页 |
| | | // 合同可见性完全由 appendPermissionCondition 控制(合同团队 ∪ 客户团队), |
| | | // 不再额外按「有权限的客户」过滤,否则不在客户团队、但属于合同负责人/合同团队的用户会被错误过滤掉 |
| | | return contractMapper.selectPage(pageReqVO, userId, config); |
| | | } |
| | | |
| | | @Override |
| | |
| | | if (!products.isEmpty() || contract.getTotalPrice() == null) calculateTotalPrice(contract, validateContractProducts(products)); |
| | | contractMapper.insert(contract); |
| | | crmPermissionService.createPermission(new CrmPermissionCreateReqBO().setBizType(CrmBizTypeEnum.CRM_CONTRACT.getType()).setBizId(contract.getId()).setUserId(ownerId).setLevel(CrmPermissionLevelEnum.OWNER.getLevel())); |
| | | // 客户负责人自动拥有该合同的读写权限 |
| | | crmPermissionService.createPermissionForCustomerOwner(CrmBizTypeEnum.CRM_CONTRACT.getType(), |
| | | contract.getId(), customer.getId(), ownerId); |
| | | } else { |
| | | contract.setId(existing.getId()); |
| | | List<CrmContractProductDO> amountDetails = products.isEmpty() |