gaoluyang
5 天以前 f412b5b671a91d7e01dac12507cad9df3648c524
yudao-module-crm/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/customer/CrmCustomerController.java
@@ -15,8 +15,10 @@
import cn.iocoder.yudao.module.crm.controller.admin.customer.vo.customer.*;
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.CrmCustomerProgressDO;
import cn.iocoder.yudao.module.crm.service.contract.CrmContractService;
import cn.iocoder.yudao.module.crm.service.customer.CrmCustomerPoolConfigService;
import cn.iocoder.yudao.module.crm.service.customer.CrmCustomerProgressService;
import cn.iocoder.yudao.module.crm.service.customer.CrmCustomerService;
import cn.iocoder.yudao.module.system.api.dept.DeptApi;
import cn.iocoder.yudao.module.system.api.dept.dto.DeptRespDTO;
@@ -61,6 +63,8 @@
    private CrmCustomerPoolConfigService customerPoolConfigService;
    @Resource
    private CrmContractService contractService;
    @Resource
    private CrmCustomerProgressService customerProgressService;
    @Resource
    private DeptApi deptApi;
@@ -106,11 +110,19 @@
    @GetMapping("/get")
    @Operation(summary = "获得客户")
    @Parameter(name = "id", description = "编号", required = true, example = "1024")
    @PreAuthorize("@ss.hasPermission('crm:customer:query')")
    public CommonResult<CrmCustomerRespVO> getCustomer(@RequestParam("id") Long id) {
        // 1. 获取客户
        CrmCustomerDO customer = customerService.getCustomer(id);
        // 2. 拼接数据
        return success(buildCustomerDetail(customer));
    }
    @GetMapping("/business-get")
    @Operation(summary = "获得业务模块关联客户详情")
    @PreAuthorize("isAuthenticated()")
    public CommonResult<CrmCustomerRespVO> getBusinessCustomer(@RequestParam("id") Long id) {
        CrmCustomerDO customer = customerService.getCustomerList(java.util.Collections.singleton(id))
                .stream().findFirst().orElse(null);
        return success(buildCustomerDetail(customer));
    }
@@ -123,7 +135,6 @@
    @GetMapping("/page")
    @Operation(summary = "获得客户分页")
    @PreAuthorize("@ss.hasPermission('crm:customer:query')")
    public CommonResult<PageResult<CrmCustomerRespVO>> getCustomerPage(@Valid CrmCustomerPageReqVO pageVO) {
        // 1. 查询客户分页
        PageResult<CrmCustomerDO> pageResult = customerService.getCustomerPage(pageVO, getLoginUserId());
@@ -131,6 +142,18 @@
            return success(PageResult.empty(pageResult.getTotal()));
        }
        // 2. 拼接数据
        return success(new PageResult<>(buildCustomerDetailList(pageResult.getList()), pageResult.getTotal()));
    }
    @GetMapping("/business-page")
    @Operation(summary = "获得业务模块客户分页")
    @PreAuthorize("isAuthenticated()")
    public CommonResult<PageResult<CrmCustomerRespVO>> getBusinessCustomerPage(
            @Valid CrmCustomerPageReqVO pageVO) {
        PageResult<CrmCustomerDO> pageResult = customerService.getBusinessCustomerPage(pageVO);
        if (CollUtil.isEmpty(pageResult.getList())) {
            return success(PageResult.empty(pageResult.getTotal()));
        }
        return success(new PageResult<>(buildCustomerDetailList(pageResult.getList()), pageResult.getTotal()));
    }
@@ -148,6 +171,8 @@
        Set<Long> customerIds = convertSet(list, CrmCustomerDO::getId);
        Map<Long, Long> contractCountMap = contractService.getContractCountMapByCustomerIds(customerIds);
        Map<Long, BigDecimal> contractPriceMap = contractService.getContractPriceMapByCustomerIds(customerIds);
        // 1.4 获取每个客户最新的一条洽谈进度(客户导出时带出)
        Map<Long, CrmCustomerProgressDO> latestProgressMap = customerProgressService.getLatestProgressMap(customerIds);
        // 2. 转换成 VO
        return BeanUtils.toBean(list, CrmCustomerRespVO.class, customerVO -> {
            customerVO.setAreaName(AreaUtils.format(customerVO.getAreaId()));
@@ -166,12 +191,14 @@
            customerVO.setContractCount(
                    contractCountMap.getOrDefault(customerVO.getId(), 0L).intValue());
            customerVO.setContractTotalPrice(contractPriceMap.get(customerVO.getId()));
            // 2.4 设置最新洽谈进度
            MapUtils.findAndThen(latestProgressMap, customerVO.getId(),
                    progress -> customerVO.setNegotiationProgress(progress.getContent()));
        });
    }
    @GetMapping("/put-pool-remind-page")
    @Operation(summary = "获得待进入公海客户分页")
    @PreAuthorize("@ss.hasPermission('crm:customer:query')")
    public CommonResult<PageResult<CrmCustomerRespVO>> getPutPoolRemindCustomerPage(@Valid CrmCustomerPageReqVO pageVO) {
        // 1. 查询客户分页
        PageResult<CrmCustomerDO> pageResult = customerService.getPutPoolRemindCustomerPage(pageVO, getLoginUserId());
@@ -181,21 +208,18 @@
    @GetMapping("/put-pool-remind-count")
    @Operation(summary = "获得待进入公海客户数量")
    @PreAuthorize("@ss.hasPermission('crm:customer:query')")
    public CommonResult<Long> getPutPoolRemindCustomerCount() {
        return success(customerService.getPutPoolRemindCustomerCount(getLoginUserId()));
    }
    @GetMapping("/today-contact-count")
    @Operation(summary = "获得今日需联系客户数量")
    @PreAuthorize("@ss.hasPermission('crm:customer:query')")
    public CommonResult<Long> getTodayContactCustomerCount() {
        return success(customerService.getTodayContactCustomerCount(getLoginUserId()));
    }
    @GetMapping("/follow-count")
    @Operation(summary = "获得分配给我、待跟进的线索数量的客户数量")
    @PreAuthorize("@ss.hasPermission('crm:customer:query')")
    public CommonResult<Long> getFollowCustomerCount() {
        return success(customerService.getFollowCustomerCount(getLoginUserId()));
    }