|
@@ -3,12 +3,14 @@ package com.zhongzheng.modules.top.goods.service.impl;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.lang.Validator;
|
|
import cn.hutool.core.lang.Validator;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.github.pagehelper.Page;
|
|
import com.github.pagehelper.Page;
|
|
import com.zhongzheng.common.exception.CustomException;
|
|
import com.zhongzheng.common.exception.CustomException;
|
|
|
|
+import com.zhongzheng.common.type.EncryptHandler;
|
|
import com.zhongzheng.common.utils.DateUtils;
|
|
import com.zhongzheng.common.utils.DateUtils;
|
|
import com.zhongzheng.modules.course.domain.CourseSubject;
|
|
import com.zhongzheng.modules.course.domain.CourseSubject;
|
|
import com.zhongzheng.modules.course.service.ICourseSubjectService;
|
|
import com.zhongzheng.modules.course.service.ICourseSubjectService;
|
|
@@ -16,29 +18,29 @@ import com.zhongzheng.modules.grade.domain.ClassGradeUser;
|
|
import com.zhongzheng.modules.grade.domain.UserPeriod;
|
|
import com.zhongzheng.modules.grade.domain.UserPeriod;
|
|
import com.zhongzheng.modules.grade.service.IClassGradeUserService;
|
|
import com.zhongzheng.modules.grade.service.IClassGradeUserService;
|
|
import com.zhongzheng.modules.grade.service.IUserPeriodService;
|
|
import com.zhongzheng.modules.grade.service.IUserPeriodService;
|
|
|
|
+import com.zhongzheng.modules.order.domain.Order;
|
|
|
|
+import com.zhongzheng.modules.order.domain.OrderGoods;
|
|
import com.zhongzheng.modules.order.service.IOrderGoodsService;
|
|
import com.zhongzheng.modules.order.service.IOrderGoodsService;
|
|
|
|
+import com.zhongzheng.modules.order.service.IOrderService;
|
|
import com.zhongzheng.modules.top.goods.bo.*;
|
|
import com.zhongzheng.modules.top.goods.bo.*;
|
|
-import com.zhongzheng.modules.top.goods.domain.TopOldOrder;
|
|
|
|
-import com.zhongzheng.modules.top.goods.domain.TopOldOrderAttachment;
|
|
|
|
-import com.zhongzheng.modules.top.goods.domain.TopOldOrderCheck;
|
|
|
|
-import com.zhongzheng.modules.top.goods.domain.TopOldOrderGoods;
|
|
|
|
|
|
+import com.zhongzheng.modules.top.goods.domain.*;
|
|
import com.zhongzheng.modules.top.goods.mapper.TopOldOrderMapper;
|
|
import com.zhongzheng.modules.top.goods.mapper.TopOldOrderMapper;
|
|
-import com.zhongzheng.modules.top.goods.service.ITopOldOrderAttachmentService;
|
|
|
|
-import com.zhongzheng.modules.top.goods.service.ITopOldOrderCheckService;
|
|
|
|
-import com.zhongzheng.modules.top.goods.service.ITopOldOrderGoodsService;
|
|
|
|
-import com.zhongzheng.modules.top.goods.service.ITopOldOrderService;
|
|
|
|
-import com.zhongzheng.modules.top.goods.vo.TopOldOrderAttachmentVo;
|
|
|
|
-import com.zhongzheng.modules.top.goods.vo.TopOldOrderGoodsListVo;
|
|
|
|
-import com.zhongzheng.modules.top.goods.vo.TopOldOrderVo;
|
|
|
|
|
|
+import com.zhongzheng.modules.top.goods.service.*;
|
|
|
|
+import com.zhongzheng.modules.top.goods.vo.*;
|
|
|
|
+import com.zhongzheng.modules.top.user.domain.TopSysRole;
|
|
|
|
+import com.zhongzheng.modules.top.user.domain.TopSysUserRole;
|
|
|
|
+import com.zhongzheng.modules.top.user.service.ITopSysRoleService;
|
|
|
|
+import com.zhongzheng.modules.top.user.service.ITopSysUserRoleService;
|
|
import com.zhongzheng.modules.top.order.vo.TopOldOrderExportVo;
|
|
import com.zhongzheng.modules.top.order.vo.TopOldOrderExportVo;
|
|
import com.zhongzheng.modules.top.user.service.ITopSysUserService;
|
|
import com.zhongzheng.modules.top.user.service.ITopSysUserService;
|
|
|
|
+import com.zhongzheng.modules.user.domain.User;
|
|
|
|
+import com.zhongzheng.modules.user.service.IUserService;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
-import java.util.Arrays;
|
|
|
|
-import java.util.Collection;
|
|
|
|
-import java.util.List;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
|
+import java.util.*;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -74,6 +76,27 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
|
|
@Autowired
|
|
@Autowired
|
|
private ITopSysUserService topSysUserService;
|
|
private ITopSysUserService topSysUserService;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private ITopSysUserRoleService topSysUserRoleService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private ITopOldOrderRefundService topOldOrderRefundService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private IOrderService orderService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private IUserService userService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private ITopOldOrderCheckService topOldOrderCheckService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private ITopOldOrderCheckLogService topOldOrderCheckLogService;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private ITopSysRoleService topSysRoleService;
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public TopOldOrderVo queryById(String orderSn){
|
|
public TopOldOrderVo queryById(String orderSn){
|
|
//查询视图 v_top_order
|
|
//查询视图 v_top_order
|
|
@@ -135,7 +158,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
|
|
validEntityBeforeSave(add);
|
|
validEntityBeforeSave(add);
|
|
add.setCreateTime(DateUtils.getNowTime());
|
|
add.setCreateTime(DateUtils.getNowTime());
|
|
add.setUpdateTime(DateUtils.getNowTime());
|
|
add.setUpdateTime(DateUtils.getNowTime());
|
|
- //根据默认业务分类计算订单盈亏
|
|
|
|
|
|
+ //TODO 根据默认业务分类计算订单盈亏
|
|
this.save(add);
|
|
this.save(add);
|
|
//订单商品
|
|
//订单商品
|
|
if (CollectionUtils.isNotEmpty(bo.getOrderGoodsList())){
|
|
if (CollectionUtils.isNotEmpty(bo.getOrderGoodsList())){
|
|
@@ -225,7 +248,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
|
|
if (CollectionUtils.isNotEmpty(goodsList)){
|
|
if (CollectionUtils.isNotEmpty(goodsList)){
|
|
userCount = goodsList.stream().map(TopOldOrderGoods::getUserCard).collect(Collectors.toSet()).size();
|
|
userCount = goodsList.stream().map(TopOldOrderGoods::getUserCard).collect(Collectors.toSet()).size();
|
|
}
|
|
}
|
|
- //老系统查询学习状态
|
|
|
|
|
|
+ //TODO 老系统查询学习状态
|
|
|
|
|
|
//数据处理
|
|
//数据处理
|
|
for (TopOldOrderGoodsListVo item : list) {
|
|
for (TopOldOrderGoodsListVo item : list) {
|
|
@@ -237,16 +260,285 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public boolean checkOrder(TopOldOrderCheckBo bo) {
|
|
public boolean checkOrder(TopOldOrderCheckBo bo) {
|
|
|
|
+ TopOldOrder oldOrder = getOne(new LambdaQueryWrapper<TopOldOrder>().eq(TopOldOrder::getOrderSn, bo.getOrderSn()).last("limit 1"));
|
|
|
|
+ if (ObjectUtils.isNull(oldOrder)){
|
|
|
|
+ throw new CustomException("订单号有误!请检查");
|
|
|
|
+ }
|
|
//校验当前登入角色
|
|
//校验当前登入角色
|
|
- List<String> roleKeys = topSysUserService.getRoleKeyById(bo.getLoginId());
|
|
|
|
|
|
+ List<TopSysUserRole> userRoles = topSysUserRoleService.list(new LambdaQueryWrapper<TopSysUserRole>().eq(TopSysUserRole::getUserId, bo.getOrderId()));
|
|
|
|
+ if (CollectionUtils.isEmpty(userRoles)){
|
|
|
|
+ throw new CustomException("当前账号没有审核权限");
|
|
|
|
+ }
|
|
List<TopOldOrderCheck> list = topOrderCheckService
|
|
List<TopOldOrderCheck> list = topOrderCheckService
|
|
.list(new LambdaQueryWrapper<TopOldOrderCheck>().eq(TopOldOrderCheck::getCheckType, 1));
|
|
.list(new LambdaQueryWrapper<TopOldOrderCheck>().eq(TopOldOrderCheck::getCheckType, 1));
|
|
if (CollectionUtils.isEmpty(list)){
|
|
if (CollectionUtils.isEmpty(list)){
|
|
- throw new CustomException("");
|
|
|
|
|
|
+ throw new CustomException("没有匹配的审核流程!请检查");
|
|
|
|
+ }
|
|
|
|
+ List<Long> roleIdList = userRoles.stream().map(TopSysUserRole::getRoleId).collect(Collectors.toList());
|
|
|
|
+ if (!list.stream().anyMatch(x -> roleIdList.contains(x.getCheckRole()))){
|
|
|
|
+ throw new CustomException("当前账号没有审核权限");
|
|
|
|
+ }
|
|
|
|
+ oldOrder.setCheckStatus(bo.getCheckStatus());
|
|
|
|
+ oldOrder.setCheckReason(bo.getCheckReason());
|
|
|
|
+ updateById(oldOrder);
|
|
|
|
+ //TODO 订单审核通知业务系统
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public boolean orderRefundApply(TopOrderRefundApplyBo bo) {
|
|
|
|
+ //B端订单退款申请
|
|
|
|
+ TopOldOrder order = getOne(new LambdaQueryWrapper<TopOldOrder>().eq(TopOldOrder::getOrderSn, bo.getOrderSn()).eq(TopOldOrder::getStatus, 1));
|
|
|
|
+ if (ObjectUtils.isNull(order)){
|
|
|
|
+ throw new CustomException("订单号有误");
|
|
|
|
+ }
|
|
|
|
+ Long tenantId = order.getTenantId();
|
|
|
|
+ if (order.getRefundStatus() == 2 || order.getRefundStatus() == 0){
|
|
|
|
+ throw new CustomException("订单正在审核中!请先处理");
|
|
|
|
+ }
|
|
|
|
+ List<TopOldOrderGoods> orderGoods = topOrderGoodsService
|
|
|
|
+ .list(new LambdaQueryWrapper<TopOldOrderGoods>()
|
|
|
|
+ .eq(TopOldOrderGoods::getOrderSn, bo.getOrderSn())
|
|
|
|
+ .eq(TopOldOrderGoods::getStatus, 1)
|
|
|
|
+ .in(TopOldOrderGoods::getSignId, bo.getSignIds()));
|
|
|
|
+ if (CollectionUtils.isEmpty(orderGoods)){
|
|
|
|
+ throw new CustomException("订单学员课程信息获取有误");
|
|
}
|
|
}
|
|
|
|
+ if (orderGoods.stream().allMatch(x -> x.getRefundStatus()!=0 || x.getRefundStatus()!=3)){
|
|
|
|
+ throw new CustomException("订单申请退款学员有误,请检查");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //创建退款申请
|
|
|
|
+ String refundSn = DateUtils.getDateOrderSn();//退款单号
|
|
|
|
+ List<TopOldOrderRefund> orderRefundRefund = orderGoods.stream().map(item -> {
|
|
|
|
+ TopOldOrderRefund orderRefund = new TopOldOrderRefund();
|
|
|
|
+ orderRefund.setRefundSn(refundSn);
|
|
|
|
+ orderRefund.setUserName(item.getUserName());
|
|
|
|
+ orderRefund.setOrderSn(order.getOrderSn());
|
|
|
|
+ orderRefund.setOrderGoodsId(item.getOrderGoodsId());
|
|
|
|
+ orderRefund.setGoodsId(item.getGoodsId());
|
|
|
|
+ orderRefund.setGoodsName(item.getGoodsName());
|
|
|
|
+ orderRefund.setRefundFee(item.getGoodsRealPrice());
|
|
|
|
+ orderRefund.setUpdateTime(DateUtils.getNowTime());
|
|
|
|
+ orderRefund.setCreateTime(DateUtils.getNowTime());
|
|
|
|
+ orderRefund.setTenantId(item.getTenantId());
|
|
|
|
+ orderRefund.setWxpayRefundId(bo.getWxpayRefundId());
|
|
|
|
+ orderRefund.setApplyReason(bo.getApplyReason());
|
|
|
|
+ orderRefund.setApplyImgs(bo.getApplyImgs());
|
|
|
|
+ orderRefund.setType(bo.getType());
|
|
|
|
+ orderRefund.setPeriodStatus(0);//待审核
|
|
|
|
+ orderRefund.setTenantId(tenantId);
|
|
|
|
+ return orderRefund;
|
|
|
|
+ }).collect(Collectors.toList());
|
|
|
|
+ topOldOrderRefundService.saveBatch(orderRefundRefund);
|
|
|
|
+ //修改订单状态
|
|
|
|
+ topOrderGoodsService.update(new LambdaUpdateWrapper<TopOldOrderGoods>()
|
|
|
|
+ .in(TopOldOrderGoods::getOrderGoodsId,orderGoods.stream().map(TopOldOrderGoods::getOrderGoodsId).collect(Collectors.toList()))
|
|
|
|
+ .set(TopOldOrderGoods::getRefundStatus,1));
|
|
|
|
+
|
|
|
|
+ order.setRefundStatus(0);//订单待审核
|
|
|
|
+ updateById(order);
|
|
|
|
+
|
|
|
|
+ //处理新系统订单
|
|
|
|
+ if (ObjectUtils.isNotNull(order.getInputOrderSn())){
|
|
|
|
+ orderGoods.forEach(item -> {
|
|
|
|
+ User user = userService.getOne(new LambdaQueryWrapper<User>()
|
|
|
|
+ .eq(User::getIdCard, EncryptHandler.encrypt(item.getUserCard())));
|
|
|
|
+ if (ObjectUtils.isNotNull(user)){
|
|
|
|
+ //处理新系统订单商品
|
|
|
|
+ List<Order> list = orderService
|
|
|
|
+ .list(new LambdaUpdateWrapper<Order>()
|
|
|
|
+ .eq(Order::getInputOrderSn, order.getInputOrderSn())
|
|
|
|
+ .eq(Order::getStatus, 1)
|
|
|
|
+ .eq(Order::getUserId,user.getUserId()));
|
|
|
|
+ if (CollectionUtils.isNotEmpty(list)){
|
|
|
|
+ List<OrderGoods> goodsList = orderGoodsService.list(new LambdaQueryWrapper<OrderGoods>()
|
|
|
|
+ .in(OrderGoods::getOrderSn, list.stream().map(Order::getOrderSn).collect(Collectors.toList()))
|
|
|
|
+ .eq(OrderGoods::getStatus, 1));
|
|
|
|
+ //过滤找出要退款的商品
|
|
|
|
+ List<OrderGoods> collect = goodsList.stream().filter(x -> x.getGoodsId().equals(item.getGoodsId())).collect(Collectors.toList());
|
|
|
|
+ if (CollectionUtils.isNotEmpty(collect)){
|
|
|
|
+ //修改订单状态
|
|
|
|
+ List<Long> orderGoodsIds = collect.stream().map(OrderGoods::getOrderGoodsId).collect(Collectors.toList());
|
|
|
|
+ orderGoodsService.update(new LambdaUpdateWrapper<OrderGoods>()
|
|
|
|
+ .set(OrderGoods::getRefundStatus,1)//申请退款
|
|
|
|
+ .in(OrderGoods::getOrderGoodsId,orderGoodsIds));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //创建订单退款审核流程
|
|
|
|
+ List<TopOldOrderCheck> checkList = topOldOrderCheckService
|
|
|
|
+ .list(new LambdaQueryWrapper<TopOldOrderCheck>().eq(TopOldOrderCheck::getCheckType, 2)
|
|
|
|
+ .orderByAsc(TopOldOrderCheck::getCheckSort));
|
|
|
|
+ if (CollectionUtils.isNotEmpty(checkList)){
|
|
|
|
+ List<TopOldOrderCheckLog> logs = new ArrayList<>();
|
|
|
|
+ for (int i = 0; i < checkList.size(); i++) {
|
|
|
|
+ TopOldOrderCheck check = checkList.get(i);
|
|
|
|
+ TopOldOrderCheckLog log = new TopOldOrderCheckLog();
|
|
|
|
+ log.setRefundSn(refundSn);
|
|
|
|
+ log.setRoleId(check.getCheckRole());
|
|
|
|
+ log.setCheckStatus(0);
|
|
|
|
+ log.setUpdateTime(DateUtils.getNowTime());
|
|
|
|
+ log.setCreateTime(DateUtils.getNowTime());
|
|
|
|
+ log.setTenantId(tenantId);
|
|
|
|
+ log.setCheckSign(i>0?0:1);
|
|
|
|
+ logs.add(log);
|
|
|
|
+ }
|
|
|
|
+ topOldOrderCheckLogService.saveBatch(logs);
|
|
|
|
+ }
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 订单退款审核详情
|
|
|
|
+ * @author change
|
|
|
|
+ * @date 2023/4/24 19:18
|
|
|
|
+ * @param orderSn
|
|
|
|
+ * @return com.zhongzheng.modules.top.goods.vo.TopRefundOrderDetailVo
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public TopRefundOrderDetailVo refundOrderDetail(String orderSn) {
|
|
|
|
+ TopRefundOrderDetailVo vo = new TopRefundOrderDetailVo();
|
|
|
|
+ //查询视图 v_top_order
|
|
|
|
+ TopOldOrderVo orderVo = baseMapper.queryById(orderSn);
|
|
|
|
+ if (ObjectUtils.isNull(orderVo)){
|
|
|
|
+ throw new CustomException("订单号错误!");
|
|
|
|
+ }
|
|
|
|
+ List<TopOldOrderRefund> refunds = topOldOrderRefundService
|
|
|
|
+ .list(new LambdaQueryWrapper<TopOldOrderRefund>().eq(TopOldOrderRefund::getOrderSn, orderSn)
|
|
|
|
+ .eq(TopOldOrderRefund::getStatus,1));
|
|
|
|
+ if (CollectionUtils.isEmpty(refunds)){
|
|
|
|
+ return vo;
|
|
|
|
+ }
|
|
|
|
+ vo.setOrderId(orderVo.getOrderId());
|
|
|
|
+ vo.setOrderSn(orderVo.getOrderSn());
|
|
|
|
+ Map<String, List<TopOldOrderRefund>> map = refunds.stream().collect(Collectors.groupingBy(TopOldOrderRefund::getRefundSn));
|
|
|
|
+ if (map.keySet().size() > 1){
|
|
|
|
+ //订单多次提交申请
|
|
|
|
+ map.forEach((k,v) -> {
|
|
|
|
+ if (v.get(0).getPeriodStatus() == 0 || v.get(0).getPeriodStatus() == 1 || v.get(0).getPeriodStatus() == 2){
|
|
|
|
+ vo.setRefundSn(k);
|
|
|
|
+ BigDecimal reduce = v.stream().map(TopOldOrderRefund::getRefundFee).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
+ vo.setRefundFee(reduce);
|
|
|
|
+ vo.setRefundReason(v.get(0).getApplyReason());
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }else {
|
|
|
|
+ vo.setRefundSn(refunds.get(0).getRefundSn());
|
|
|
|
+ BigDecimal reduce = refunds.stream().map(TopOldOrderRefund::getRefundFee).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
+ vo.setRefundFee(reduce);
|
|
|
|
+ vo.setRefundReason(refunds.get(0).getApplyReason());
|
|
|
|
+ }
|
|
|
|
+ //审核进度
|
|
|
|
+ List<TopOldOrderCheckLog> checkLogs = topOldOrderCheckLogService
|
|
|
|
+ .list(new LambdaQueryWrapper<TopOldOrderCheckLog>().eq(TopOldOrderCheckLog::getRefundSn, vo.getRefundSn()).eq(TopOldOrderCheckLog::getStatus, 1));
|
|
|
|
+ if (CollectionUtils.isNotEmpty(checkLogs)){
|
|
|
|
+ List<TopOldOrderCheckLogVo> checkLogVoList = checkLogs.stream().map(item -> {
|
|
|
|
+ TopOldOrderCheckLogVo logVo = BeanUtil.toBean(item, TopOldOrderCheckLogVo.class);
|
|
|
|
+ //角色名称
|
|
|
|
+ TopSysRole role = topSysRoleService.getById(logVo.getRoleId());
|
|
|
|
+ logVo.setRoleName(role.getRoleName());
|
|
|
|
+ return logVo;
|
|
|
|
+ }).collect(Collectors.toList());
|
|
|
|
+ vo.setCheckLogVos(checkLogVoList);
|
|
|
|
+ }
|
|
|
|
+ return vo;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 订单退款审核
|
|
|
|
+ * @author change
|
|
|
|
+ * @date 2023/4/24 20:05
|
|
|
|
+ * @param bo
|
|
|
|
+ * @return boolean
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public boolean refundOrderCheck(TopRefundOrderCheckBo bo) {
|
|
|
|
+
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public boolean updateRemark(TopUpdateRemarkBo bo) {
|
|
|
|
+ //查询视图 v_top_order
|
|
|
|
+ List<TopOldOrderVo> orderVos = baseMapper.queryByOrderSns(bo.getOrderSnList());
|
|
|
|
+ if (CollectionUtils.isEmpty(orderVos)){
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ Map<Integer, List<TopOldOrderVo>> map = orderVos.stream().collect(Collectors.groupingBy(TopOldOrderVo::getOrderFrom));
|
|
|
|
+ map.forEach((k,v) -> {
|
|
|
|
+ if (k == 1){
|
|
|
|
+ //新系统订单
|
|
|
|
+ orderService.update(new LambdaUpdateWrapper<Order>()
|
|
|
|
+ .set(Order::getRemark,bo.getRemark())
|
|
|
|
+ .in(Order::getOrderSn,v.stream().map(TopOldOrderVo::getOrderSn).collect(Collectors.toList())));
|
|
|
|
+ }else {
|
|
|
|
+ update(new LambdaUpdateWrapper<TopOldOrder>()
|
|
|
|
+ .set(TopOldOrder::getRemark,bo.getRemark())
|
|
|
|
+ .in(TopOldOrder::getOrderSn,v.stream().map(TopOldOrderVo::getOrderSn).collect(Collectors.toList())));
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public boolean finishOrder(TopFinishOrderBo bo) {
|
|
|
|
+ //todo 完单角色校验
|
|
|
|
+
|
|
|
|
+ return update(new LambdaUpdateWrapper<TopOldOrder>()
|
|
|
|
+ .set(TopOldOrder::getFinishStatus,bo.getFinishStatus())
|
|
|
|
+ .in(TopOldOrder::getOrderSn,bo.getOrderSnList()));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public TopOrderStatisticsVo statisticsOrder() {
|
|
|
|
+ TopOrderStatisticsVo vo = new TopOrderStatisticsVo();
|
|
|
|
+ //订单统计
|
|
|
|
+ //查询视图 v_top_order
|
|
|
|
+ List<TopOldOrderVo> vos = baseMapper.queryListAll();
|
|
|
|
+ if (CollectionUtils.isEmpty(vos)){
|
|
|
|
+ return vo;
|
|
|
|
+ }
|
|
|
|
+ BigDecimal profit = vos.stream().filter(x -> ObjectUtils.isNotNull(x.getOrderProfit())).map(TopOldOrderVo::getOrderProfit).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
+ BigDecimal price = vos.stream().filter(x -> ObjectUtils.isNotNull(x.getOrderPrice())).map(TopOldOrderVo::getOrderPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
+ BigDecimal received = vos.stream().filter(x -> ObjectUtils.isNotNull(x.getOrderReceived())).map(TopOldOrderVo::getOrderReceived).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
+ BigDecimal refunded = vos.stream().filter(x -> ObjectUtils.isNotNull(x.getOrderRefunded())).map(TopOldOrderVo::getOrderRefunded).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
+ BigDecimal uncollected = vos.stream().filter(x -> ObjectUtils.isNotNull(x.getOrderUncollected())).map(TopOldOrderVo::getOrderUncollected).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
+ BigDecimal practical = received.subtract(refunded);
|
|
|
|
+ BigDecimal cost = vos.stream().filter(x -> ObjectUtils.isNotNull(x.getOrderCost())).map(TopOldOrderVo::getOrderCost).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
+ //订单学员数
|
|
|
|
+ Integer orderUserNum = 0;
|
|
|
|
+ for (TopOldOrderVo orderVo : vos) {
|
|
|
|
+ if (orderVo.getOrderFrom() == 2){
|
|
|
|
+ //业务系统B端订单
|
|
|
|
+ List<TopOldOrderGoods> list = topOrderGoodsService
|
|
|
|
+ .list(new LambdaQueryWrapper<TopOldOrderGoods>().eq(TopOldOrderGoods::getOrderSn, orderVo.getOrderSn()).eq(TopOldOrderGoods::getStatus, 1));
|
|
|
|
+ if (CollectionUtils.isNotEmpty(list)){
|
|
|
|
+ Set<String> collect = list.stream().map(TopOldOrderGoods::getUserCard).collect(Collectors.toSet());
|
|
|
|
+ orderUserNum += collect.size();
|
|
|
|
+ }
|
|
|
|
+ }else {
|
|
|
|
+ //C端 一单一人
|
|
|
|
+ orderUserNum += 1;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ Integer orderNum = vos.size();
|
|
|
|
+
|
|
|
|
+ vo.setOrderProfitTotal(profit);
|
|
|
|
+ vo.setOrderPriceTotal(price);
|
|
|
|
+ vo.setOrderReceivedTotal(received);
|
|
|
|
+ vo.setOrderRefundedTotal(refunded);
|
|
|
|
+ vo.setOrderUncollectedTotal(uncollected);
|
|
|
|
+ vo.setPracticalPriceTotal(practical);
|
|
|
|
+ vo.setOrderCostTotal(cost);
|
|
|
|
+ vo.setOrderUserNum(orderUserNum);
|
|
|
|
+ vo.setOrderNum(orderNum);
|
|
|
|
+ return vo;
|
|
|
|
+ }
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public List<TopOldOrderVo> queryReceiveList(TopOldOrderQueryBo bo) {
|
|
public List<TopOldOrderVo> queryReceiveList(TopOldOrderQueryBo bo) {
|
|
List<TopOldOrderVo> list = this.baseMapper.queryReceiveList(bo);
|
|
List<TopOldOrderVo> list = this.baseMapper.queryReceiveList(bo);
|