|  | @@ -5,7 +5,11 @@ import cn.hutool.core.collection.CollUtil;
 | 
											
												
													
														|  |  import com.alibaba.fastjson.JSON;
 |  |  import com.alibaba.fastjson.JSON;
 | 
											
												
													
														|  |  import com.github.pagehelper.PageHelper;
 |  |  import com.github.pagehelper.PageHelper;
 | 
											
												
													
														|  |  import com.yonge.cooleshow.api.feign.AdminFeignService;
 |  |  import com.yonge.cooleshow.api.feign.AdminFeignService;
 | 
											
												
													
														|  | 
 |  | +import com.yonge.cooleshow.api.feign.StudentFeignService;
 | 
											
												
													
														|  |  import com.yonge.cooleshow.api.feign.dto.CouponInfoApi;
 |  |  import com.yonge.cooleshow.api.feign.dto.CouponInfoApi;
 | 
											
												
													
														|  | 
 |  | +import com.yonge.cooleshow.api.feign.dto.StudentWrapper;
 | 
											
												
													
														|  | 
 |  | +import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 | 
											
												
													
														|  | 
 |  | +import com.yonge.cooleshow.auth.api.entity.SysUser;
 | 
											
												
													
														|  |  import com.yonge.cooleshow.common.entity.HttpResponseResult;
 |  |  import com.yonge.cooleshow.common.entity.HttpResponseResult;
 | 
											
												
													
														|  |  import com.yonge.cooleshow.common.entity.MallOrderItemDto;
 |  |  import com.yonge.cooleshow.common.entity.MallOrderItemDto;
 | 
											
												
													
														|  |  import com.yonge.cooleshow.common.enums.PostStatusEnum;
 |  |  import com.yonge.cooleshow.common.enums.PostStatusEnum;
 | 
											
										
											
												
													
														|  | @@ -22,6 +26,7 @@ import com.yonge.cooleshow.portal.dao.PortalOrderDao;
 | 
											
												
													
														|  |  import com.yonge.cooleshow.portal.dao.PortalOrderItemDao;
 |  |  import com.yonge.cooleshow.portal.dao.PortalOrderItemDao;
 | 
											
												
													
														|  |  import com.yonge.cooleshow.portal.dao.PortalProductDao;
 |  |  import com.yonge.cooleshow.portal.dao.PortalProductDao;
 | 
											
												
													
														|  |  import com.yonge.cooleshow.portal.domain.*;
 |  |  import com.yonge.cooleshow.portal.domain.*;
 | 
											
												
													
														|  | 
 |  | +import com.yonge.cooleshow.portal.dto.OrderCreate;
 | 
											
												
													
														|  |  import com.yonge.cooleshow.portal.dto.OrderPayReq;
 |  |  import com.yonge.cooleshow.portal.dto.OrderPayReq;
 | 
											
												
													
														|  |  import com.yonge.cooleshow.portal.dto.OrderPayRes;
 |  |  import com.yonge.cooleshow.portal.dto.OrderPayRes;
 | 
											
												
													
														|  |  import com.yonge.cooleshow.portal.service.*;
 |  |  import com.yonge.cooleshow.portal.service.*;
 | 
											
										
											
												
													
														|  | @@ -111,13 +116,17 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      @Autowired
 |  |      @Autowired
 | 
											
												
													
														|  |      private PmsProductMapper pmsProductMapper;
 |  |      private PmsProductMapper pmsProductMapper;
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | 
 |  | +    @Autowired
 | 
											
												
													
														|  | 
 |  | +    private SysUserFeignService sysUserFeignService;
 | 
											
												
													
														|  |      @Autowired
 |  |      @Autowired
 | 
											
												
													
														|  |      private UserOrderRefundMapper userOrderRefundMapper;
 |  |      private UserOrderRefundMapper userOrderRefundMapper;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      @Autowired
 |  |      @Autowired
 | 
											
												
													
														|  |      private RedissonClient redissonClient;
 |  |      private RedissonClient redissonClient;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +    @Autowired
 | 
											
												
													
														|  | 
 |  | +    private OmsOrderCourierService orderCourierService;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      @Autowired
 |  |      @Autowired
 | 
											
												
													
														|  |      private PortalProductDao productDao;
 |  |      private PortalProductDao productDao;
 | 
											
										
											
												
													
														|  | @@ -352,7 +361,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
 | 
											
												
													
														|  |          int count = portalOrderDao.updateSkuStock(orderDetail.getOrderItemList());
 |  |          int count = portalOrderDao.updateSkuStock(orderDetail.getOrderItemList());
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          // 减商品库存
 |  |          // 减商品库存
 | 
											
												
													
														|  | -        updateProductStock(orderDetail);
 |  | 
 | 
											
												
													
														|  | 
 |  | +        updateProductStock(orderDetail,true);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          // 查询订单
 |  |          // 查询订单
 | 
											
												
													
														|  |          OmsOrderDetail detail = detail(orderId);
 |  |          OmsOrderDetail detail = detail(orderId);
 | 
											
										
											
												
													
														|  | @@ -407,7 +416,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
 | 
											
												
													
														|  |      /**
 |  |      /**
 | 
											
												
													
														|  |       * 减商品库存
 |  |       * 减商品库存
 | 
											
												
													
														|  |       */
 |  |       */
 | 
											
												
													
														|  | -    private void updateProductStock(OmsOrderDetail orderDetail) {
 |  | 
 | 
											
												
													
														|  | 
 |  | +    private void updateProductStock(OmsOrderDetail orderDetail,Boolean status) {
 | 
											
												
													
														|  |          Map<Long, List<OmsOrderItem>> collect = orderDetail.getOrderItemList()
 |  |          Map<Long, List<OmsOrderItem>> collect = orderDetail.getOrderItemList()
 | 
											
												
													
														|  |                                                             .stream()
 |  |                                                             .stream()
 | 
											
												
													
														|  |                                                             .collect(Collectors.groupingBy(OmsOrderItem::getProductId));
 |  |                                                             .collect(Collectors.groupingBy(OmsOrderItem::getProductId));
 | 
											
										
											
												
													
														|  | @@ -424,7 +433,11 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
 | 
											
												
													
														|  |              stock.setStock(sum);
 |  |              stock.setStock(sum);
 | 
											
												
													
														|  |              productStockList.add(stock);
 |  |              productStockList.add(stock);
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  | -        productDao.updateProductStock(productStockList);
 |  | 
 | 
											
												
													
														|  | 
 |  | +        if (status) {
 | 
											
												
													
														|  | 
 |  | +            productDao.updateProductStock(productStockList);
 | 
											
												
													
														|  | 
 |  | +        } else {
 | 
											
												
													
														|  | 
 |  | +            productDao.refundProductStock(productStockList);
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      @Override
 |  |      @Override
 | 
											
										
											
												
													
														|  | @@ -881,6 +894,157 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
 | 
											
												
													
														|  |          return omsOrders.size();
 |  |          return omsOrders.size();
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +    @Override
 | 
											
												
													
														|  | 
 |  | +    @Transactional
 | 
											
												
													
														|  | 
 |  | +    public Boolean jmeduOrderRefund(String orderNo) {
 | 
											
												
													
														|  | 
 |  | +        OmsOrderDetail detail = detail(orderNo);
 | 
											
												
													
														|  | 
 |  | +        if (detail == null) {
 | 
											
												
													
														|  | 
 |  | +            throw new BizException("订单不存在");
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        if(detail.getStatus() != 1) {
 | 
											
												
													
														|  | 
 |  | +            throw new BizException("当前订单不能退款");
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        OmsOrder order = new OmsOrder();
 | 
											
												
													
														|  | 
 |  | +        order.setStatus(4);
 | 
											
												
													
														|  | 
 |  | +        order.setId(detail.getId());
 | 
											
												
													
														|  | 
 |  | +        orderMapper.updateByPrimaryKeySelective(order);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        // 减sku库存
 | 
											
												
													
														|  | 
 |  | +        portalOrderDao.updateRefundSkuStock(detail.getOrderItemList());
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        // 减商品库存
 | 
											
												
													
														|  | 
 |  | +        updateProductStock(detail,false);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        return true;
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    @Override
 | 
											
												
													
														|  | 
 |  | +    public void jmeduProductOrderCreate(OrderCreate order) {
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        // 查询订单是否已存在
 | 
											
												
													
														|  | 
 |  | +        OmsOrder detail = orderMapper.getByOrderSn(order.getOrderNo());
 | 
											
												
													
														|  | 
 |  | +        if (detail != null) {
 | 
											
												
													
														|  | 
 |  | +            throw new BizException("订单已存在");
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        // 1.查询酷乐秀学生账户
 | 
											
												
													
														|  | 
 |  | +        HttpResponseResult<StudentWrapper.UnionStudentResp> unionStudent = adminFeignService.unionStudent(
 | 
											
												
													
														|  | 
 |  | +            StudentWrapper.UnionStudent.builder().tokenCheck(false).mobile(order.getMobile()).build());
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        Long userId = unionStudent.getData().getUserId();
 | 
											
												
													
														|  | 
 |  | +        UmsMember umsMember = memberService.getById(userId);
 | 
											
												
													
														|  | 
 |  | +        if (umsMember == null) {
 | 
											
												
													
														|  | 
 |  | +            umsMember = memberService.createUmsMember(
 | 
											
												
													
														|  | 
 |  | +                JSON.parseObject(JSON.toJSONString(unionStudent.getData().getSysUser()), SysUser.class));
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        // 创建订单
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        //设置自动收货天数
 | 
											
												
													
														|  | 
 |  | +        List<OmsOrderSetting> orderSettings = orderSettingMapper.selectByExample(new OmsOrderSettingExample());
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        detail = new OmsOrder();
 | 
											
												
													
														|  | 
 |  | +        detail.setMemberId(umsMember.getId());
 | 
											
												
													
														|  | 
 |  | +        detail.setPlatformType("JMEDU");
 | 
											
												
													
														|  | 
 |  | +        detail.setOrderSn(order.getOrderNo());
 | 
											
												
													
														|  | 
 |  | +        detail.setCreateTime(new Date());
 | 
											
												
													
														|  | 
 |  | +        detail.setMemberUsername(umsMember.getUsername());
 | 
											
												
													
														|  | 
 |  | +        detail.setTotalAmount(order.getTotalAmount());
 | 
											
												
													
														|  | 
 |  | +        detail.setPayAmount(order.getTotalAmount());
 | 
											
												
													
														|  | 
 |  | +        detail.setFreightAmount(BigDecimal.ZERO);
 | 
											
												
													
														|  | 
 |  | +        detail.setPromotionAmount(BigDecimal.ZERO);
 | 
											
												
													
														|  | 
 |  | +        detail.setIntegrationAmount(BigDecimal.ZERO);
 | 
											
												
													
														|  | 
 |  | +        detail.setCouponAmount(BigDecimal.ZERO);
 | 
											
												
													
														|  | 
 |  | +        detail.setDiscountAmount(BigDecimal.ZERO);
 | 
											
												
													
														|  | 
 |  | +        detail.setPayType(order.getPayType());
 | 
											
												
													
														|  | 
 |  | +        detail.setConfirmStatus(0);
 | 
											
												
													
														|  | 
 |  | +        detail.setSourceType(1);
 | 
											
												
													
														|  | 
 |  | +        detail.setStatus(1);
 | 
											
												
													
														|  | 
 |  | +        detail.setOrderType(0);
 | 
											
												
													
														|  | 
 |  | +        if (CollUtil.isNotEmpty(orderSettings)) {
 | 
											
												
													
														|  | 
 |  | +            detail.setAutoConfirmDay(orderSettings.get(0).getConfirmOvertime());
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        detail.setReceiverName(order.getReceiverName());
 | 
											
												
													
														|  | 
 |  | +        detail.setReceiverPhone(order.getReceiverPhone());
 | 
											
												
													
														|  | 
 |  | +        detail.setReceiverPostCode(order.getReceiverPostCode());
 | 
											
												
													
														|  | 
 |  | +        detail.setReceiverProvince(order.getReceiverProvince());
 | 
											
												
													
														|  | 
 |  | +        detail.setReceiverCity(order.getReceiverCity());
 | 
											
												
													
														|  | 
 |  | +        detail.setReceiverRegion(order.getReceiverRegion());
 | 
											
												
													
														|  | 
 |  | +        detail.setReceiverDetailAddress(order.getReceiverDetailAddress());
 | 
											
												
													
														|  | 
 |  | +        detail.setDeleteStatus(0);
 | 
											
												
													
														|  | 
 |  | +        detail.setPaymentTime(new Date());
 | 
											
												
													
														|  | 
 |  | +        detail.setAfterSale(1);
 | 
											
												
													
														|  | 
 |  | +        detail.setModifyTime(new Date());
 | 
											
												
													
														|  | 
 |  | +        orderMapper.insert(detail);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        List<OmsOrderItem> orderItemList = new ArrayList<>();
 | 
											
												
													
														|  | 
 |  | +        // 创建订单详情
 | 
											
												
													
														|  | 
 |  | +        for (OrderCreate.OrderItem orderItem : order.getOrderItemList()) {
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +            // 获取商品信息
 | 
											
												
													
														|  | 
 |  | +            PmsSkuStock pmsSkuStock = skuStockMapper.selectByPrimaryKey(orderItem.getProductSkuId());
 | 
											
												
													
														|  | 
 |  | +            if (pmsSkuStock == null) {
 | 
											
												
													
														|  | 
 |  | +                throw new BizException("商品规格不存在");
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +            PmsProduct pmsProduct = pmsProductMapper.selectByPrimaryKey(pmsSkuStock.getProductId());
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +            if (pmsProduct == null) {
 | 
											
												
													
														|  | 
 |  | +                throw new BizException("商品不存在");
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +            OmsOrderItem omsOrderItem = new OmsOrderItem();
 | 
											
												
													
														|  | 
 |  | +            omsOrderItem.setOrderId(detail.getId());
 | 
											
												
													
														|  | 
 |  | +            omsOrderItem.setOrderSn(detail.getOrderSn());
 | 
											
												
													
														|  | 
 |  | +            omsOrderItem.setProductId(pmsProduct.getId());
 | 
											
												
													
														|  | 
 |  | +            omsOrderItem.setProductPic(pmsProduct.getPic());
 | 
											
												
													
														|  | 
 |  | +            omsOrderItem.setProductName(pmsProduct.getName());
 | 
											
												
													
														|  | 
 |  | +            omsOrderItem.setProductBrand(pmsProduct.getBrandName());
 | 
											
												
													
														|  | 
 |  | +            omsOrderItem.setProductPrice(pmsProduct.getPrice());
 | 
											
												
													
														|  | 
 |  | +            omsOrderItem.setProductQuantity(1);
 | 
											
												
													
														|  | 
 |  | +            omsOrderItem.setProductSkuId(pmsSkuStock.getId());
 | 
											
												
													
														|  | 
 |  | +            omsOrderItem.setProductSkuCode(pmsSkuStock.getSkuCode());
 | 
											
												
													
														|  | 
 |  | +            omsOrderItem.setProductCategoryId(pmsProduct.getProductCategoryId());
 | 
											
												
													
														|  | 
 |  | +            omsOrderItem.setPromotionAmount(BigDecimal.ZERO);
 | 
											
												
													
														|  | 
 |  | +            omsOrderItem.setCouponAmount(BigDecimal.ZERO);
 | 
											
												
													
														|  | 
 |  | +            omsOrderItem.setIntegrationAmount(BigDecimal.ZERO);
 | 
											
												
													
														|  | 
 |  | +            omsOrderItem.setRealAmount(orderItem.getRealAmount());
 | 
											
												
													
														|  | 
 |  | +            omsOrderItem.setProductAttr(pmsSkuStock.getSpData());
 | 
											
												
													
														|  | 
 |  | +            omsOrderItem.setReturnStatus(-1);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +            orderItemList.add(omsOrderItem);
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        // 保存数据
 | 
											
												
													
														|  | 
 |  | +        if (!CollectionUtils.isEmpty(orderItemList)) {
 | 
											
												
													
														|  | 
 |  | +            orderItemDao.insertList(orderItemList);
 | 
											
												
													
														|  | 
 |  | +            // 减sku库存
 | 
											
												
													
														|  | 
 |  | +            OmsOrderDetail orderDetail = detail(order.getOrderNo());
 | 
											
												
													
														|  | 
 |  | +            portalOrderDao.updateSkuStock(orderDetail.getOrderItemList());
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +            // 减商品库存
 | 
											
												
													
														|  | 
 |  | +            updateProductStock(orderDetail,true);
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    @Override
 | 
											
												
													
														|  | 
 |  | +    public OmsOrderCourier productOrderCourier(String orderNo) {
 | 
											
												
													
														|  | 
 |  | +        OmsOrderDetail detail = detail(orderNo);
 | 
											
												
													
														|  | 
 |  | +        if (!StringUtil.isEmpty(detail.getDeliverySn()) ) {
 | 
											
												
													
														|  | 
 |  | +            return orderCourierService.getCourierInfo(orderNo);
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        return null;
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |      private void FinishReceiveOrder(Long orderId) {
 |  |      private void FinishReceiveOrder(Long orderId) {
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          // UmsMember member = memberService.getCurrentMember();
 |  |          // UmsMember member = memberService.getCurrentMember();
 |