feat(order): 添加订单数量统计功能
- 新增 OrderNumVO 类用于订单数量统计 - 在 OrderService 接口中添加 getOrderNumVO 方法 - 在 OrderServiceImpl 类中实现 getOrderNumVO 方法 - 在 OrderMapper 接口中添加 getOrderNumVO SQL 查询 - 在 OrderManagerController 和 OrderStoreController 中添加获取订单数量的 API 接口- 优化物流公司的获取方式,
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
package cn.lili.modules.order.aftersale.entity.vo;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 售后数量VO
|
||||
*
|
||||
* @author Bulbasaur
|
||||
* @since 2021/3/12 10:32 上午
|
||||
*/
|
||||
@Data
|
||||
public class AfterSaleNumVO {
|
||||
|
||||
@ApiModelProperty(value = "申请中售后数量")
|
||||
private Integer applyNum;
|
||||
@ApiModelProperty(value = "已通过售后数量")
|
||||
private Integer passNum;
|
||||
@ApiModelProperty(value = "已拒绝售后数量")
|
||||
private Integer refuseNum;
|
||||
@ApiModelProperty(value = "待卖家收货售后数量")
|
||||
private Integer buyerReturnNum;
|
||||
@ApiModelProperty(value = "卖家确认收货售后数量")
|
||||
private Integer sellerConfirmNum;
|
||||
@ApiModelProperty(value = "卖家终止售后售后数量")
|
||||
private Integer sellerTerminationNum;
|
||||
@ApiModelProperty(value = "买家取消售后售后数量")
|
||||
private Integer buyerCancelNum;
|
||||
@ApiModelProperty(value = "等待平台退款售后数量")
|
||||
private Integer waitRefundNum;
|
||||
@ApiModelProperty(value = "已完成售后数量")
|
||||
private Integer completeNum;
|
||||
}
|
||||
@@ -4,6 +4,7 @@ package cn.lili.modules.order.aftersale.service;
|
||||
import cn.lili.modules.order.aftersale.entity.dos.AfterSale;
|
||||
import cn.lili.modules.order.aftersale.entity.dto.AfterSaleDTO;
|
||||
import cn.lili.modules.order.aftersale.entity.vo.AfterSaleApplyVO;
|
||||
import cn.lili.modules.order.aftersale.entity.vo.AfterSaleNumVO;
|
||||
import cn.lili.modules.order.aftersale.entity.vo.AfterSaleSearchParams;
|
||||
import cn.lili.modules.order.aftersale.entity.vo.AfterSaleVO;
|
||||
import cn.lili.modules.store.entity.dto.StoreAfterSaleAddressDTO;
|
||||
@@ -30,6 +31,9 @@ public interface AfterSaleService extends IService<AfterSale> {
|
||||
*/
|
||||
IPage<AfterSaleVO> getAfterSalePages(AfterSaleSearchParams saleSearchParams);
|
||||
|
||||
|
||||
AfterSaleNumVO getAfterSaleNumVO(AfterSaleSearchParams saleSearchParams);
|
||||
|
||||
/**
|
||||
* 查询导出售后信息
|
||||
*
|
||||
|
||||
@@ -2,7 +2,6 @@ package cn.lili.modules.order.aftersale.serviceimpl;
|
||||
|
||||
import cn.hutool.core.text.CharSequenceUtil;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.event.TransactionCommitSendMQEvent;
|
||||
@@ -18,6 +17,7 @@ import cn.lili.modules.order.aftersale.aop.AfterSaleLogPoint;
|
||||
import cn.lili.modules.order.aftersale.entity.dos.AfterSale;
|
||||
import cn.lili.modules.order.aftersale.entity.dto.AfterSaleDTO;
|
||||
import cn.lili.modules.order.aftersale.entity.vo.AfterSaleApplyVO;
|
||||
import cn.lili.modules.order.aftersale.entity.vo.AfterSaleNumVO;
|
||||
import cn.lili.modules.order.aftersale.entity.vo.AfterSaleSearchParams;
|
||||
import cn.lili.modules.order.aftersale.entity.vo.AfterSaleVO;
|
||||
import cn.lili.modules.order.aftersale.mapper.AfterSaleMapper;
|
||||
@@ -39,16 +39,13 @@ import cn.lili.modules.system.entity.dos.Logistics;
|
||||
import cn.lili.modules.system.entity.vo.Traces;
|
||||
import cn.lili.modules.system.service.LogisticsService;
|
||||
import cn.lili.mybatis.util.PageUtil;
|
||||
import cn.lili.rocketmq.RocketmqSendCallbackBuilder;
|
||||
import cn.lili.rocketmq.tags.AfterSaleTagsEnum;
|
||||
import cn.lili.rocketmq.tags.OrderTagsEnum;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.apache.rocketmq.spring.core.RocketMQTemplate;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationEventPublisher;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -56,6 +53,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -98,11 +96,6 @@ public class AfterSaleServiceImpl extends ServiceImpl<AfterSaleMapper, AfterSale
|
||||
*/
|
||||
@Autowired
|
||||
private RocketmqCustomProperties rocketmqCustomProperties;
|
||||
/**
|
||||
* RocketMQ
|
||||
*/
|
||||
@Autowired
|
||||
private RocketMQTemplate rocketMQTemplate;
|
||||
@Autowired
|
||||
private ApplicationEventPublisher applicationEventPublisher;
|
||||
|
||||
@@ -112,6 +105,55 @@ public class AfterSaleServiceImpl extends ServiceImpl<AfterSaleMapper, AfterSale
|
||||
return baseMapper.queryByParams(PageUtil.initPage(saleSearchParams), saleSearchParams.queryWrapper());
|
||||
}
|
||||
|
||||
@Override
|
||||
public AfterSaleNumVO getAfterSaleNumVO(AfterSaleSearchParams saleSearchParams) {
|
||||
AfterSaleNumVO afterSaleNumVO = new AfterSaleNumVO();
|
||||
|
||||
// 获取基础查询条件
|
||||
QueryWrapper<AfterSale> baseWrapper = saleSearchParams.queryWrapper();
|
||||
|
||||
// 使用聚合查询一次性获取所有状态的售后数量
|
||||
List<Map<String, Object>> results = this.baseMapper.selectMaps(
|
||||
baseWrapper.select(
|
||||
"COUNT(CASE WHEN service_status = 'APPLY' THEN 1 END) as applyNum",
|
||||
"COUNT(CASE WHEN service_status = 'PASS' THEN 1 END) as passNum",
|
||||
"COUNT(CASE WHEN service_status = 'REFUSE' THEN 1 END) as refuseNum",
|
||||
"COUNT(CASE WHEN service_status = 'BUYER_RETURN' THEN 1 END) as buyerReturnNum",
|
||||
"COUNT(CASE WHEN service_status = 'SELLER_CONFIRM' THEN 1 END) as sellerConfirmNum",
|
||||
"COUNT(CASE WHEN service_status = 'SELLER_TERMINATION' THEN 1 END) as sellerTerminationNum",
|
||||
"COUNT(CASE WHEN service_status = 'BUYER_CANCEL' THEN 1 END) as buyerCancelNum",
|
||||
"COUNT(CASE WHEN service_status = 'WAIT_REFUND' THEN 1 END) as waitRefundNum",
|
||||
"COUNT(CASE WHEN service_status = 'COMPLETE' THEN 1 END) as completeNum"
|
||||
)
|
||||
);
|
||||
|
||||
if (!results.isEmpty()) {
|
||||
Map<String, Object> result = results.get(0);
|
||||
afterSaleNumVO.setApplyNum(((Number) result.get("applyNum")).intValue());
|
||||
afterSaleNumVO.setPassNum(((Number) result.get("passNum")).intValue());
|
||||
afterSaleNumVO.setRefuseNum(((Number) result.get("refuseNum")).intValue());
|
||||
afterSaleNumVO.setBuyerReturnNum(((Number) result.get("buyerReturnNum")).intValue());
|
||||
afterSaleNumVO.setSellerConfirmNum(((Number) result.get("sellerConfirmNum")).intValue());
|
||||
afterSaleNumVO.setSellerTerminationNum(((Number) result.get("sellerTerminationNum")).intValue());
|
||||
afterSaleNumVO.setBuyerCancelNum(((Number) result.get("buyerCancelNum")).intValue());
|
||||
afterSaleNumVO.setWaitRefundNum(((Number) result.get("waitRefundNum")).intValue());
|
||||
afterSaleNumVO.setCompleteNum(((Number) result.get("completeNum")).intValue());
|
||||
} else {
|
||||
// 如果没有结果,设置默认值为0
|
||||
afterSaleNumVO.setApplyNum(0);
|
||||
afterSaleNumVO.setPassNum(0);
|
||||
afterSaleNumVO.setRefuseNum(0);
|
||||
afterSaleNumVO.setBuyerReturnNum(0);
|
||||
afterSaleNumVO.setSellerConfirmNum(0);
|
||||
afterSaleNumVO.setSellerTerminationNum(0);
|
||||
afterSaleNumVO.setBuyerCancelNum(0);
|
||||
afterSaleNumVO.setWaitRefundNum(0);
|
||||
afterSaleNumVO.setCompleteNum(0);
|
||||
}
|
||||
|
||||
return afterSaleNumVO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<AfterSale> exportAfterSaleOrder(AfterSaleSearchParams saleSearchParams) {
|
||||
return this.list(saleSearchParams.queryWrapper());
|
||||
|
||||
@@ -4,6 +4,7 @@ import cn.lili.common.aop.annotation.PreventDuplicateSubmissions;
|
||||
import cn.lili.common.enums.ResultUtil;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.order.aftersale.entity.dos.AfterSale;
|
||||
import cn.lili.modules.order.aftersale.entity.vo.AfterSaleNumVO;
|
||||
import cn.lili.modules.order.aftersale.entity.vo.AfterSaleSearchParams;
|
||||
import cn.lili.modules.order.aftersale.entity.vo.AfterSaleVO;
|
||||
import cn.lili.modules.order.aftersale.service.AfterSaleService;
|
||||
@@ -43,6 +44,12 @@ public class AfterSaleManagerController {
|
||||
return ResultUtil.data(afterSaleService.getAfterSalePages(searchParams));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "获取售后数量")
|
||||
@GetMapping(value = "/afterSaleNumVO")
|
||||
public ResultMessage<AfterSaleNumVO> getAfterSaleNumVO(AfterSaleSearchParams afterSaleSearchParams) {
|
||||
return ResultUtil.data(afterSaleService.getAfterSaleNumVO(afterSaleSearchParams));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "获取导出售后服务列表列表")
|
||||
@GetMapping(value = "/exportAfterSaleOrder")
|
||||
public ResultMessage<List<AfterSale>> exportAfterSaleOrder(AfterSaleSearchParams searchParams) {
|
||||
|
||||
@@ -6,6 +6,7 @@ import cn.lili.common.security.OperationalJudgment;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.vo.ResultMessage;
|
||||
import cn.lili.modules.order.aftersale.entity.dos.AfterSale;
|
||||
import cn.lili.modules.order.aftersale.entity.vo.AfterSaleNumVO;
|
||||
import cn.lili.modules.order.aftersale.entity.vo.AfterSaleSearchParams;
|
||||
import cn.lili.modules.order.aftersale.entity.vo.AfterSaleVO;
|
||||
import cn.lili.modules.order.aftersale.service.AfterSaleService;
|
||||
@@ -53,6 +54,12 @@ public class AfterSaleStoreController {
|
||||
return ResultUtil.data(afterSaleService.getAfterSalePages(searchParams));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "获取售后数量")
|
||||
@GetMapping(value = "/afterSaleNumVO")
|
||||
public ResultMessage<AfterSaleNumVO> getAfterSaleNumVO(AfterSaleSearchParams afterSaleSearchParams) {
|
||||
return ResultUtil.data(afterSaleService.getAfterSaleNumVO(afterSaleSearchParams));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "获取导出售后服务列表列表")
|
||||
@GetMapping(value = "/exportAfterSaleOrder")
|
||||
public ResultMessage<List<AfterSale>> exportAfterSaleOrder(AfterSaleSearchParams searchParams) {
|
||||
|
||||
Reference in New Issue
Block a user