From ba714629588e22f9ffaab83819f6b9200a6397b3 Mon Sep 17 00:00:00 2001 From: zhanglin8526 <852614290@qq.com> Date: 星期五, 04 八月 2023 22:59:08 +0800 Subject: [PATCH] 1、定时任务 商户进件状态查询 2、小程序下单统一支付提交 3、订单核销分账(未完成) --- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 448 +++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 319 insertions(+), 129 deletions(-) diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java index 14598a7..6303951 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java @@ -5,6 +5,17 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult; +import com.github.binarywang.wxpay.bean.profitsharingV3.ProfitSharingReceiver; +import com.github.binarywang.wxpay.bean.profitsharingV3.ProfitSharingRequest; +import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest; +import com.github.binarywang.wxpay.config.WxPayConfig; +import com.github.binarywang.wxpay.constant.WxPayConstants; +import com.github.binarywang.wxpay.exception.WxPayException; +import com.github.binarywang.wxpay.service.WxPayService; +import com.google.common.base.Joiner; +import com.google.gson.Gson; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.core.utils.StringUtils; @@ -12,6 +23,7 @@ import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.security.utils.CodeFactoryUtil; import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.order.config.MyWxPayConfig; import com.ruoyi.order.domain.dto.*; import com.ruoyi.order.domain.pojo.account.OrderPayment; import com.ruoyi.order.domain.pojo.account.OrderRefund; @@ -21,6 +33,8 @@ import com.ruoyi.order.domain.pojo.order.PayRecord; import com.ruoyi.order.domain.vo.*; import com.ruoyi.order.mapper.order.OrderMapper; +import com.ruoyi.order.service.account.OrderPaymentService; +import com.ruoyi.order.service.account.PaymentMessageService; import com.ruoyi.order.service.order.*; import com.ruoyi.system.api.constant.AppErrorConstant; import com.ruoyi.system.api.constant.DelayTaskEnum; @@ -35,6 +49,7 @@ import com.ruoyi.system.api.domain.poji.member.MemberCoupon; import com.ruoyi.system.api.domain.poji.member.MemberGiftRecord; import com.ruoyi.system.api.domain.poji.shop.Shop; +import com.ruoyi.system.api.domain.poji.shop.ShopProportionVo; import com.ruoyi.system.api.domain.poji.sys.SysUser; import com.ruoyi.system.api.domain.vo.*; import com.ruoyi.system.api.service.*; @@ -110,24 +125,16 @@ @Autowired private RedissonClient redissonClient; - /** 商户号 */ - public static String merchantId = ""; - /** 商户API私钥路径 */ - public static String privateKeyPath = ""; - /** 商户证书序列号 */ - public static String merchantSerialNumber = ""; - /** 微信支付平台证书路径 */ - public static String wechatPayCertificatePath = ""; - /** 微信支付 APIv3 密钥 */ - public static String apiV3Key = ""; - /** 微信支付APPID */ - public static String appId=""; - /** 微信支付商户ID */ - public static String mchId=""; - /** 通知地址 */ - public static String notifyUrl=""; + @Autowired + private WxPayService wxService; - /** + @Resource + private PaymentMessageService paymentMessageService; + + @Resource + private OrderPaymentService orderPaymentService; + + /** * @description: buyGoods * @param: appSureOrderDto * @return: AppSureOrderVo @@ -243,7 +250,7 @@ } else if (couponType == 2 && appMemberCouponVo.getDiscountPercent() != null) { discountPercent = appMemberCouponVo.getDiscountPercent(); goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN,2,BigDecimal.ROUND_HALF_UP); - discountMoney = goodsRealPrice.subtract(goodsTotalPrice); + discountMoney = goodsTotalPrice.subtract(goodsRealPrice); useCoupon = 1; userCouponIdSet.add(memberCouponId); appSureOrderGoodsVo.setMemberCouponId(memberCouponId); @@ -415,8 +422,12 @@ if (activityGoodsGetVo.getActivityStatus() == 2) { throw new ServiceException(AppErrorConstant.ACTIVITY_END); } - if (activityGoodsGetVo.getAvailableBuyNum() < 1) { + Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+activityId+"-"+goodsId); + if(surpNum==null||surpNum<1){ throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_NULL); + } + if (activityGoodsGetVo.getAvailableBuyNum() < 1) { + throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_BEYOND); } if (activityGoodsGetVo.getAvailableBuyNum() < buyNum) { throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_BEYOND); @@ -506,7 +517,7 @@ Integer serviceNum; Integer goodsNum = 0; String memberCouponId; - Goods goods; + Goods goods = null; GoodsFile goodsFile; BigDecimal goodsPrice; BigDecimal goodsTotalPrice; @@ -538,6 +549,7 @@ HashSet<String> goodsTypeSet = new HashSet<>(); //使用优惠券 StringJoiner memberCouponSJ = new StringJoiner(","); + List<String> goodsNameList = new ArrayList<>(); // 遍历购买的商品列表 for (AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList) { appSureOrderGoodsVo = new AppSureOrderGoodsVo(); @@ -547,6 +559,7 @@ memberCouponId = appBuyGoodsDto.getMemberCouponId(); // 获取商品信息 goods = goodsMap.get(goodsId); + goodsNameList.add(goods.getGoodsName()); // 设置商品信息 appSureOrderGoodsVo.setGoodsId(goodsId); appSureOrderGoodsVo.setGoodsName(goods.getGoodsName()); @@ -593,7 +606,7 @@ } else if (couponType == 2 && appMemberCouponVo.getDiscountPercent() != null) { discountPercent = appMemberCouponVo.getDiscountPercent(); goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN,2, BigDecimal.ROUND_HALF_UP); - discountMoney = goodsRealPrice.subtract(goodsTotalPrice); + discountMoney = goodsTotalPrice.subtract(goodsRealPrice); useCoupon = 1; } else if (couponType == 3 && appMemberCouponVo.getDiscountMoney() != null) { discountMoney = appMemberCouponVo.getDiscountMoney(); @@ -709,53 +722,90 @@ } appPlaceOrderVo.setOrderId(orderId); appPlaceOrderVo.setOrderNo(orderNo); - // 调用支付 - /* CombineTransactionsJsRequest request=new CombineTransactionsJsRequest(); - request.setCombineAppid(); - request.setCombineMchid(); - profitsSharingService.combineTransactions(request);*/ - //构建预下单支付对象 - /*PrepayRequest request = new PrepayRequest(); - Amount amount = new Amount(); - amount.setTotal(Integer.parseInt(order.getPayMoney().multiply(new BigDecimal(100)).toString())); - request.setAmount(amount); - request.setAppid(this.appId); - request.setMchid(this.mchId); - request.setDescription(order.getGoodsInfo()); - request.setNotifyUrl(this.notifyUrl); - request.setOutTradeNo(order.getOrderId()); - Payer payer = new Payer(); - payer.setOpenid("oLTPCuN5a-nBD4rAL_fa********"); - request.setPayer(payer);*/ - //返回前端唤醒支付结果信息 - /*PrepayWithRequestPaymentResponse res = this.getJsApIResponse(request); - appPlaceOrderVo.setAppId(this.appId); - appPlaceOrderVo.setTimeStamp(res.getTimeStamp()); - appPlaceOrderVo.setNonceStr(res.getNonceStr()); - appPlaceOrderVo.setPackageStr(res.getPackageVal()); - appPlaceOrderVo.setTradeType(res.getSignType()); - appPlaceOrderVo.setPaySign(res.getPaySign());*/ + try { + // 创建支付订单 + Long shopId = appPlaceOrderDto.getShopId(); + R<String> resultMch = remoteShopService.getShopSubMchId(shopId); + String subMchId = resultMch.getData(); + if(StringUtils.isEmpty(subMchId)){ + throw new ServiceException("获取微信商户号失败"); + } + + WxPayConfig config = wxService.getConfig(); + config.setSubMchId(subMchId); + + WxPayUnifiedOrderRequest request = new WxPayUnifiedOrderRequest(); + request.setTradeType(WxPayConstants.TradeType.JSAPI); + request.setSubMchId(subMchId); + // 商户订单号 + request.setOutTradeNo(orderNo); + // 订单总金额 + Integer totalFee = order.getPayMoney().multiply(new BigDecimal(100)).intValue(); + request.setTotalFee(totalFee); + request.setProductId(orderNo); + request.setNotifyUrl(config.getNotifyUrl()); + request.setProfitSharing("Y"); + request.setOpenid(appPlaceOrderDto.getOpenid()); + request.setSpbillCreateIp(appPlaceOrderDto.getSpbillCreateIp()); + // 商品描述 body + String body = "商品购买"; + if(null != goods){ + body = goods.getGoodsName() + "-" + body; + } + request.setBody(body); + + request.checkAndSign(config); + + // 请求参数 + Gson gson = new Gson(); + String payRequestJson = gson.toJson(request); + + WxPayMpOrderResult result = wxService.createOrder(request); + + String payResponseJson = gson.toJson(request); + + // 支付相关信息返回 + appPlaceOrderVo.setAppId(result.getAppId()); + appPlaceOrderVo.setMchId(config.getMchId()); + appPlaceOrderVo.setTimeStamp(result.getTimeStamp()); + appPlaceOrderVo.setNonceStr(result.getNonceStr()); + appPlaceOrderVo.setPackageStr(result.getPackageValue()); + appPlaceOrderVo.setSignType(result.getSignType()); + appPlaceOrderVo.setPaySign(result.getPaySign()); + appPlaceOrderVo.setPrepayId(result.getPackageValue()); + + //减去优惠券 + if(StringUtils.isNotBlank(memberCouponSJ.toString())){ + remoteCouponService.useMemberCoupon(memberCouponSJ.toString()); + } + //生成自动取消订单延时任务 + Integer delayTime = 30; + if(redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)){ + delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME); + } + redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId, orderId, delayTime.longValue(), TimeUnit.MINUTES); + DelayTask delayTask = new DelayTask(); + delayTask.setDelFlag(0); + delayTask.setCreateTime(new Date()); + delayTask.setEndTime(DateUtils.addMinutes(new Date(),delayTime)); + delayTask.setRedisKey(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId); + remoteConfigService.addDelayTask(delayTask); + appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(),delayTime)); - //减去优惠券 - if(memberCouponSJ!=null&&StringUtils.isNotBlank(memberCouponSJ.toString())){ - remoteCouponService.useMemberCoupon(memberCouponSJ.toString()); + // 保存支付订单统一下单日志 + paymentMessageService.savePaymentMessage("1", 0L, payRequestJson, payResponseJson); + + // 保存支付订单统一下单支付记录 + orderPaymentService.saveOrderPayment(userId, shopId, orderId, order.getPayMoney(), + appPlaceOrderVo.getEndTime(), "Y", appPlaceOrderDto.getOpenid(), + Joiner.on(";").join(goodsNameList),result.getPackageValue()); + + return appPlaceOrderVo; + } catch (WxPayException e){ + throw new ServiceException(e.getMessage()); } - //生成自动取消订单延时任务 - Integer delayTime = 30; - if(redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)){ - delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME); - } - redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId, orderId, delayTime.longValue(), TimeUnit.MINUTES); - DelayTask delayTask = new DelayTask(); - delayTask.setDelFlag(0); - delayTask.setCreateTime(new Date()); - delayTask.setEndTime(DateUtils.addMinutes(new Date(),delayTime)); - delayTask.setRedisKey(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId); - remoteConfigService.addDelayTask(delayTask); - appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(),delayTime)); - return appPlaceOrderVo; } @@ -1122,6 +1172,12 @@ appUserOrderGetVo.setShopName(shop.getShopName()); appUserOrderGetVo.setAppUserOrderGoodsPageVoList(appUserOrderGoodsPageVoList); appUserOrderGetVo.setVerifyCode("1-" + orderId); + //生成自动取消订单延时任务 + Integer delayTime = 30; + if(redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)){ + delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME); + } + appUserOrderGetVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(),delayTime)); return appUserOrderGetVo; } @@ -1274,28 +1330,57 @@ Goods goods; List<ConsumerGoods> consumerGoodsList = new ArrayList<>(); for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) { - consumerGoods = new ConsumerGoods(); - goods = goodsMap.get(appUserOrderGoodsPageVo.getGoodsId()); - consumerGoodsId = IdUtils.simpleUUID(); - consumerGoods.setConsumerGoodsId(consumerGoodsId); - consumerGoods.setDelFlag(0); - consumerGoods.setServiceStatus(1); - consumerGoods.setShopId(order.getShopId()); - consumerGoods.setUserId(order.getUserId()); - consumerGoods.setOrderId(orderId); - consumerGoods.setOrderGoodsId(appUserOrderGoodsPageVo.getOrderGoodsId()); - consumerGoods.setGoodsId(appUserOrderGoodsPageVo.getGoodsId()); - consumerGoods.setGoodsName(appUserOrderGoodsPageVo.getGoodsName()); - consumerGoods.setCycleNumFlag(appUserOrderGoodsPageVo.getCycleNumFlag()); - consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum()); - consumerGoods.setUsedNum(0); - consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType()); - consumerGoods.setCreateTime(nowTime); - consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); - consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture()); - consumerGoods.setGoodsNurses(goods.getGoodsNurses()); - consumerGoods.setSourceFrom(1); - consumerGoodsList.add(consumerGoods); + Integer buyNum = appUserOrderGoodsPageVo.getBuyNum(); + if(appUserOrderGoodsPageVo.getCycleNumFlag()==0){ + consumerGoods = new ConsumerGoods(); + goods = goodsMap.get(appUserOrderGoodsPageVo.getGoodsId()); + consumerGoodsId = IdUtils.simpleUUID(); + consumerGoods.setConsumerGoodsId(consumerGoodsId); + consumerGoods.setDelFlag(0); + consumerGoods.setServiceStatus(1); + consumerGoods.setShopId(order.getShopId()); + consumerGoods.setUserId(order.getUserId()); + consumerGoods.setOrderId(orderId); + consumerGoods.setOrderGoodsId(appUserOrderGoodsPageVo.getOrderGoodsId()); + consumerGoods.setGoodsId(appUserOrderGoodsPageVo.getGoodsId()); + consumerGoods.setGoodsName(appUserOrderGoodsPageVo.getGoodsName()); + consumerGoods.setCycleNumFlag(appUserOrderGoodsPageVo.getCycleNumFlag()); + consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum()); + consumerGoods.setUsedNum(0); + consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType()); + consumerGoods.setCreateTime(nowTime); + consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); + consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture()); + consumerGoods.setGoodsNurses(goods.getGoodsNurses()); + consumerGoods.setSourceFrom(1); + consumerGoods.setSureNum(buyNum); + consumerGoodsList.add(consumerGoods); + }else{ + for(int i=0;i<buyNum;i++){ + consumerGoods = new ConsumerGoods(); + goods = goodsMap.get(appUserOrderGoodsPageVo.getGoodsId()); + consumerGoodsId = IdUtils.simpleUUID(); + consumerGoods.setConsumerGoodsId(consumerGoodsId); + consumerGoods.setDelFlag(0); + consumerGoods.setServiceStatus(1); + consumerGoods.setShopId(order.getShopId()); + consumerGoods.setUserId(order.getUserId()); + consumerGoods.setOrderId(orderId); + consumerGoods.setOrderGoodsId(appUserOrderGoodsPageVo.getOrderGoodsId()); + consumerGoods.setGoodsId(appUserOrderGoodsPageVo.getGoodsId()); + consumerGoods.setGoodsName(appUserOrderGoodsPageVo.getGoodsName()); + consumerGoods.setCycleNumFlag(appUserOrderGoodsPageVo.getCycleNumFlag()); + consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum()); + consumerGoods.setUsedNum(0); + consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType()); + consumerGoods.setCreateTime(nowTime); + consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); + consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture()); + consumerGoods.setGoodsNurses(goods.getGoodsNurses()); + consumerGoods.setSourceFrom(1); + consumerGoodsList.add(consumerGoods); + } + } } consumerGoodsService.saveBatchConsumerGoods(consumerGoodsList); //生成返回 @@ -1319,9 +1404,8 @@ merVerifyOrderVo.setUserMobile(member.getMobile()); merVerifyOrderVo.setCloseFlag(order.getCloseFlag()); // - if(order.getOrderFrom()==2){ - - //profitsSharingService.applyProfitSharing(); + if(order.getOrderFrom() == 2){ + // profitsSharingService.applyProfitSharing(); } //创建支付记录 @@ -1332,8 +1416,39 @@ payRecord.setPayTime(new Date()); payRecord.setPayType(2); payRecordService.save(payRecord); - return merVerifyOrderVo; + // TODO 核销完成 开始分账(平台收取服务费) + OrderPayment payment = orderPaymentService.getByOrderId(orderId); + String transactionId = payment.getTransactionId(); + + String platformTyMacId = MyWxPayConfig.getPlatformTyMacId(); + + R<String> resultMch = remoteShopService.getShopSubMchId(order.getShopId()); + String subMchId = resultMch.getData(); + if(StringUtils.isEmpty(subMchId)){ + throw new ServiceException("获取微信商户号失败"); + } + + R<ShopProportionVo> resultShopProportion = remoteShopService.getShopProportion(order.getShopId()); + ShopProportionVo shopProportion = resultShopProportion.getData(); + if(null == shopProportion){ + throw new ServiceException("获取商户分成失败"); + } + + ProfitSharingRequest request = new ProfitSharingRequest(); + request.setSubMchId(subMchId); + request.setTransactionId(transactionId); + request.setOutOrderNo(order.getOrderNo()); + List<ProfitSharingReceiver> receiverList = new ArrayList<>(); + ProfitSharingReceiver receiver = new ProfitSharingReceiver(); + // TODO 分账 + // receiver.set + // request.setReceivers(); + + // platformTyMacId + // wxService.getProfitSharingV3Service().profitSharing() + + return merVerifyOrderVo; } /** @@ -1792,29 +1907,61 @@ List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listAppVoByOrderId(orderId); ConsumerGoods consumerGoods; String consumerGoodsId; + List<ConsumerGoods> consumerGoodsList = new ArrayList<>(); for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) { - consumerGoods = new ConsumerGoods(); - goods = remoteGoodsService.getGoods(appUserOrderGoodsPageVo.getGoodsId()).getData(); - consumerGoodsId = IdUtils.simpleUUID(); - consumerGoods.setConsumerGoodsId(consumerGoodsId); - consumerGoods.setDelFlag(0); - consumerGoods.setServiceStatus(1); - consumerGoods.setShopId(order.getShopId()); - consumerGoods.setUserId(order.getUserId()); - consumerGoods.setOrderId(orderId); - consumerGoods.setOrderGoodsId(appUserOrderGoodsPageVo.getOrderGoodsId()); - consumerGoods.setGoodsId(appUserOrderGoodsPageVo.getGoodsId()); - consumerGoods.setGoodsName(appUserOrderGoodsPageVo.getGoodsName()); - consumerGoods.setCycleNumFlag(appUserOrderGoodsPageVo.getCycleNumFlag()); - consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum()); - consumerGoods.setUsedNum(0); - consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType()); - consumerGoods.setCreateTime(nowTime); - consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); - consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture()); - consumerGoods.setGoodsNurses(goods.getGoodsNurses()); - consumerGoodsService.save(consumerGoods); + Integer buyGoodsNum = appUserOrderGoodsPageVo.getBuyNum(); + if(appUserOrderGoodsPageVo.getCycleNumFlag()==0){ + consumerGoods = new ConsumerGoods(); + goods = remoteGoodsService.getGoods(appUserOrderGoodsPageVo.getGoodsId()).getData(); + consumerGoodsId = IdUtils.simpleUUID(); + consumerGoods.setConsumerGoodsId(consumerGoodsId); + consumerGoods.setDelFlag(0); + consumerGoods.setServiceStatus(1); + consumerGoods.setShopId(order.getShopId()); + consumerGoods.setUserId(order.getUserId()); + consumerGoods.setOrderId(orderId); + consumerGoods.setOrderGoodsId(appUserOrderGoodsPageVo.getOrderGoodsId()); + consumerGoods.setGoodsId(appUserOrderGoodsPageVo.getGoodsId()); + consumerGoods.setGoodsName(appUserOrderGoodsPageVo.getGoodsName()); + consumerGoods.setCycleNumFlag(appUserOrderGoodsPageVo.getCycleNumFlag()); + consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum()); + consumerGoods.setUsedNum(0); + consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType()); + consumerGoods.setCreateTime(nowTime); + consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); + consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture()); + consumerGoods.setGoodsNurses(goods.getGoodsNurses()); + consumerGoods.setSourceFrom(1); + consumerGoods.setSureNum(buyGoodsNum); + consumerGoodsList.add(consumerGoods); + }else{ + for(int i=0;i<buyGoodsNum;i++) { + consumerGoods = new ConsumerGoods(); + goods = remoteGoodsService.getGoods(appUserOrderGoodsPageVo.getGoodsId()).getData(); + consumerGoodsId = IdUtils.simpleUUID(); + consumerGoods.setConsumerGoodsId(consumerGoodsId); + consumerGoods.setDelFlag(0); + consumerGoods.setServiceStatus(1); + consumerGoods.setShopId(order.getShopId()); + consumerGoods.setUserId(order.getUserId()); + consumerGoods.setOrderId(orderId); + consumerGoods.setOrderGoodsId(appUserOrderGoodsPageVo.getOrderGoodsId()); + consumerGoods.setGoodsId(appUserOrderGoodsPageVo.getGoodsId()); + consumerGoods.setGoodsName(appUserOrderGoodsPageVo.getGoodsName()); + consumerGoods.setCycleNumFlag(appUserOrderGoodsPageVo.getCycleNumFlag()); + consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum()); + consumerGoods.setUsedNum(0); + consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType()); + consumerGoods.setCreateTime(nowTime); + consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); + consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture()); + consumerGoods.setGoodsNurses(goods.getGoodsNurses()); + consumerGoods.setSourceFrom(1); + consumerGoodsList.add(consumerGoods); + } + } } + consumerGoodsService.saveBatchConsumerGoods(consumerGoodsList); Member member = remoteMemberService.getMember(userId).getData(); if (member != null && member.getBindingFlag() != 1) { //绑定商户 @@ -1850,6 +1997,18 @@ */ @Override public List<MerOrderPageVo> pageMerOrder(Page page, MerOrderPageDto merOrderPageDto) { + if(StringUtils.isNotBlank(merOrderPageDto.getKeyword())){ + MgtUserIdByKeywordDto userIdByKeywordDto = new MgtUserIdByKeywordDto(); + userIdByKeywordDto.setKeyword(merOrderPageDto.getKeyword()); + MgtUserIdByKeywordVo userIdByKeywordVo = remoteMemberService.getUserIdByKeyword(userIdByKeywordDto).getData(); + if(StringUtils.isNotBlank(userIdByKeywordVo.getUserIds())){ + List<Long> userIdList = Arrays.stream(userIdByKeywordVo.getUserIds().split(",")) + .map(Long::parseLong) + .collect(Collectors.toList()); + merOrderPageDto.setMemberUserIdList(userIdList); + merOrderPageDto.setMemberUserId(null); + } + } List<MerOrderPageVo> merOrderPageVoList = orderMapper.pageMerOrder(page, merOrderPageDto); if (merOrderPageVoList != null && !merOrderPageVoList.isEmpty()) { Long userId; @@ -1883,9 +2042,13 @@ Map<Long, MgtSimpleMemberVo> userMap = simpleMemberVoList.stream() .collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity())); for (MerOrderPageVo merOrderPageVo : merOrderPageVoList) { - merOrderPageVo.setUserName(userMap.get(merOrderPageVo.getUserId()).getRealName()); - merOrderPageVo.setNickName(userMap.get(merOrderPageVo.getUserId()).getNickName()); - merOrderPageVo.setUserMobile(userMap.get(merOrderPageVo.getUserId()).getUserMobile()); + if(merOrderPageVo.getUserId()!=null&&userMap.get(merOrderPageVo.getUserId())!=null){ + merOrderPageVo.setUserName(userMap.get(merOrderPageVo.getUserId()).getRealName()); + merOrderPageVo.setNickName(userMap.get(merOrderPageVo.getUserId()).getNickName()); + merOrderPageVo.setUserMobile(userMap.get(merOrderPageVo.getUserId()).getUserMobile()); + }else{ + log.debug("订单merOrderPageVo"+merOrderPageVo.getOrderId()+"缺少用户"); + } } } return merOrderPageVoList; @@ -2251,7 +2414,11 @@ mgtOrderDetailVo.setCancelTime(order.getCancelTime()); mgtOrderDetailVo.setOrderRemark(order.getOrderRemark()); mgtOrderDetailVo.setShopId(order.getShopId()); - mgtOrderDetailVo.setShopName(shop.getShopName()); + if(shop!=null){ + mgtOrderDetailVo.setShopName(shop.getShopName()); + }else{ + mgtOrderDetailVo.setShopName("商户已被删除"); + } mgtOrderDetailVo.setVerifyTime(order.getUseTime()); //获取支付记录 List<MgtOrderPayListVo> orderPayListVoList = payRecordService.listMgtOrderPayVo(orderId); @@ -3004,9 +3171,9 @@ } MerOrderDistributionTotalVo orderDistributionTotalVo = new MerOrderDistributionTotalVo(); // 获取订单年龄用户列表 - List<MerOrderAgeUserVo> orderAgeUserVoList = remoteMemberService.listOrderAgeUser(merTotalDto).getData(); + //List<MerOrderAgeUserVo> orderAgeUserVoList = remoteMemberService.listOrderAgeUser(merTotalDto).getData(); // 如果订单年龄用户列表不为空 - if (orderAgeUserVoList != null && !orderAgeUserVoList.isEmpty()) { + /*if (orderAgeUserVoList != null && !orderAgeUserVoList.isEmpty()) { // 定义变量 Integer ageType; List<Long> userIdList; @@ -3047,12 +3214,23 @@ orderTotalValue[i] = 0; orderMoneyValue[i] = BigDecimal.ZERO; } + }*/ + List<MgtMapTotalPlusVo> mgtMapTotalPlusVoList = orderMapper.listMerOrderDistributionTotal(merTotalDto); + if(mgtMapTotalPlusVoList!=null&&!mgtMapTotalPlusVoList.isEmpty()) { + String[] orderTotalKey = new String[mgtMapTotalPlusVoList.size()]; + Integer[] orderTotalValue = new Integer[mgtMapTotalPlusVoList.size()]; + BigDecimal[] orderMoneyValue = new BigDecimal[mgtMapTotalPlusVoList.size()]; + MgtMapTotalPlusVo mgtMapTotalPlusVo; + for (int i = 0; i < mgtMapTotalPlusVoList.size(); i++) { + mgtMapTotalPlusVo = mgtMapTotalPlusVoList.get(i); + orderTotalKey[i] = mgtMapTotalPlusVo.getMapKey(); + orderTotalValue[i] = mgtMapTotalPlusVo.getMapValueFirst(); + orderMoneyValue[i] = mgtMapTotalPlusVo.getMapValueSecond(); + } + orderDistributionTotalVo.setOrderTotalKey(orderTotalKey); + orderDistributionTotalVo.setOrderTotalValue(orderTotalValue); + orderDistributionTotalVo.setOrderMoneyValue(orderMoneyValue); } - // 设置订单分布总数对象的属性值 - orderDistributionTotalVo.setOrderTotalKey(orderTotalKey); - orderDistributionTotalVo.setOrderTotalValue(orderTotalValue); - orderDistributionTotalVo.setOrderMoneyValue(orderMoneyValue); - } // 返回订单分布总数对象 return orderDistributionTotalVo; } @@ -3157,15 +3335,27 @@ } /** - * @param merBaseDto - * @return MerTotalOrderVo - * @description 商户端订单管理统计 - * @author jqs - * @date 2023/7/4 16:27 + * @description 商户端订单管理统计 + * @author jqs + * @date 2023/7/31 10:53 + * @param merOrderPageDto + * @return MerTotalOrderVo */ @Override public MerTotalOrderVo totalMerOrder(MerOrderPageDto merOrderPageDto) { MerTotalOrderVo merTotalOrderVo = new MerTotalOrderVo(); + if(StringUtils.isNotBlank(merOrderPageDto.getKeyword())){ + MgtUserIdByKeywordDto userIdByKeywordDto = new MgtUserIdByKeywordDto(); + userIdByKeywordDto.setKeyword(merOrderPageDto.getKeyword()); + MgtUserIdByKeywordVo userIdByKeywordVo = remoteMemberService.getUserIdByKeyword(userIdByKeywordDto).getData(); + if(StringUtils.isNotBlank(userIdByKeywordVo.getUserIds())){ + List<Long> userIdList = Arrays.stream(userIdByKeywordVo.getUserIds().split(",")) + .map(Long::parseLong) + .collect(Collectors.toList()); + merOrderPageDto.setMemberUserIdList(userIdList); + merOrderPageDto.setMemberUserId(null); + } + } merTotalOrderVo = orderMapper.totalMerOrder(merOrderPageDto); return merTotalOrderVo; } @@ -3839,14 +4029,14 @@ delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME); } delayTime = delayTime + 5; - Date checkTime = DateUtils.addMinutes(new Date(),delayTime); + Date checkTime = DateUtils.addMinutes(new Date(),-delayTime); LambdaQueryWrapper<Order> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(Order::getDelFlag,0); queryWrapper.lt(Order::getCreateTime,checkTime); queryWrapper.eq(Order::getOrderStatus,1); List<Order> orderList = this.list(queryWrapper); if(orderList!=null&&!orderList.isEmpty()){ - for(Order order: orderList){ + for(Order order: orderList){ autoTimeCancelOrder(order); } } -- Gitblit v1.7.1