| | |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | |
| | | public IPage<CustomerVo> selectCustomerList(Page<CustomerDto> page, CustomerDto customer) { |
| | | LoginUser loginUser = SecurityUtils.getLoginUser(); |
| | | Long loginUserId = loginUser.getUserId(); |
| | | IPage<CustomerVo> customerPage = customerMapper.listPage(page, customer, loginUserId); |
| | | boolean isAdmin = SecurityUtils.hasPermi("customer:viewAll"); |
| | | IPage<CustomerVo> customerPage = customerMapper.listPage(page, customer, loginUserId, isAdmin); |
| | | |
| | | List<CustomerVo> records = customerPage.getRecords(); |
| | | if (CollectionUtils.isEmpty(records)) { |
| | |
| | | LoginUser loginUser = SecurityUtils.getLoginUser(); |
| | | Long tenantId = loginUser.getTenantId(); |
| | | customer.setTenantId(tenantId); |
| | | return customerMapper.insert(customer); |
| | | int result = customerMapper.insert(customer); |
| | | |
| | | // 私海新增时同步一条到公海 |
| | | if (customer.getType() != null && customer.getType() == 0) { |
| | | Customer publicSeaCustomer = new Customer(); |
| | | BeanUtils.copyProperties(customer, publicSeaCustomer); |
| | | publicSeaCustomer.setId(null); |
| | | publicSeaCustomer.setType(1); |
| | | publicSeaCustomer.setIsAssigned(0); |
| | | publicSeaCustomer.setUsageUser(loginUser.getUserId()); |
| | | publicSeaCustomer.setUsageStatus(1L); |
| | | customerMapper.insert(publicSeaCustomer); |
| | | } |
| | | |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | |
| | | public List<CustomerVo> selectCustomerLists(CustomerDto customer) { |
| | | LoginUser loginUser = SecurityUtils.getLoginUser(); |
| | | Long loginUserId = loginUser.getUserId(); |
| | | return customerMapper.list(customer, loginUserId); |
| | | boolean isAdmin = SecurityUtils.hasPermi("customer:viewAll"); |
| | | return customerMapper.list(customer, loginUserId, isAdmin); |
| | | } |
| | | |
| | | @Override |
| | |
| | | |
| | | @Override |
| | | public List<Map<String, Object>> customerList(Customer customer) { |
| | | LambdaQueryWrapper<Customer> queryWrapper = Wrappers.lambdaQuery(); |
| | | queryWrapper.select(Customer::getId, Customer::getCustomerName, Customer::getTaxpayerIdentificationNumber); |
| | | LoginUser loginUser = SecurityUtils.getLoginUser(); |
| | | Long loginUserId = loginUser.getUserId(); |
| | | boolean isAdmin = SecurityUtils.hasPermi("customer:viewAll"); |
| | | CustomerDto query = new CustomerDto(); |
| | | if (customer != null) { |
| | | BeanUtils.copyProperties(customer, query); |
| | | } |
| | | |
| | | // 获取原始查询结果 |
| | | List<Map<String, Object>> result = customerMapper.selectMaps(queryWrapper); |
| | | // 复用客户列表的可见性规则,避免把别人的私海客户暴露给当前账号 |
| | | List<CustomerVo> visibleCustomers = customerMapper.list(query, loginUserId, isAdmin); |
| | | if (CollectionUtils.isEmpty(visibleCustomers)) { |
| | | return Collections.emptyList(); |
| | | } |
| | | |
| | | // 将下划线命名转换为驼峰命名 |
| | | return result.stream().map(map -> map.entrySet().stream() |
| | | .collect(Collectors.toMap( |
| | | entry -> underlineToCamel(entry.getKey()), |
| | | Map.Entry::getValue)) |
| | | ).collect(Collectors.toList()); |
| | | return visibleCustomers.stream().map(item -> { |
| | | Map<String, Object> map = new LinkedHashMap<>(); |
| | | map.put("id", item.getId()); |
| | | map.put("customerName", item.getCustomerName()); |
| | | map.put("taxpayerIdentificationNumber", item.getTaxpayerIdentificationNumber()); |
| | | return map; |
| | | }).collect(Collectors.toList()); |
| | | } |
| | | |
| | | // 分配公海客户给私海 |
| | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void recycleCustomer(CustomerDto customerDto) { |
| | | Customer customer = customerMapper.selectById(customerDto.getId()); |
| | | if (customer.getType() == 1 && customer.getIsAssigned() == 1) { // 公海且已分配 |
| | | validatePublicSeaRecyclePermission(customer.getId()); |
| | | customer.setIsAssigned(0); |
| | | customer.setUsageStatus(0L); |
| | | customer.setUsageUser(0L); |
| | | customerMapper.updateById(customer); |
| | | |
| | | // 删除该客户的所有共享关系 |
| | | customerUserService.remove( |
| | | new QueryWrapper<CustomerUser>().lambda() |
| | | .eq(CustomerUser::getCustomerId, customerDto.getId()) |
| | | ); |
| | | if (customerDto == null || customerDto.getId() == null) { |
| | | throw new RuntimeException("客户ID不能为空"); |
| | | } |
| | | Customer customer = customerMapper.selectById(customerDto.getId()); |
| | | if (customer == null) { |
| | | throw new RuntimeException("客户档案不存在"); |
| | | } |
| | | boolean assigned = Objects.equals(customer.getIsAssigned(), 1) |
| | | || Objects.equals(customer.getUsageStatus(), 1L) |
| | | || (customer.getUsageUser() != null && customer.getUsageUser() > 0); |
| | | if (!assigned) { |
| | | throw new RuntimeException("该客户当前未处于领用状态,无法回收"); |
| | | } |
| | | validatePublicSeaRecyclePermission(customer.getId()); |
| | | int updated = customerMapper.update(null, new UpdateWrapper<Customer>() |
| | | .eq("id", customer.getId()) |
| | | .set("is_assigned", 0) |
| | | .set("usage_status", 0) |
| | | .set("usage_user", null)); |
| | | if (updated == 0) { |
| | | throw new RuntimeException("客户回收失败,请刷新后重试"); |
| | | } |
| | | |
| | | // 删除该客户的所有共享关系 |
| | | customerUserService.remove( |
| | | new QueryWrapper<CustomerUser>().lambda() |
| | | .eq(CustomerUser::getCustomerId, customerDto.getId()) |
| | | ); |
| | | } |
| | | |
| | | // 客户共享 |