From d9e75c8c09738b31c375e3b843a3f2d4927f325f Mon Sep 17 00:00:00 2001 From: jiangqs <jiangqs> Date: 星期三, 26 七月 2023 09:13:29 +0800 Subject: [PATCH] bug --- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 357 ++++++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 229 insertions(+), 128 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 a3440b9..52cceca 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 @@ -13,24 +13,22 @@ import com.ruoyi.common.security.utils.CodeFactoryUtil; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.order.domain.dto.*; +import com.ruoyi.order.domain.pojo.account.OrderPayment; import com.ruoyi.order.domain.pojo.account.OrderRefund; -import com.ruoyi.order.domain.pojo.account.PaymentMessage; import com.ruoyi.order.domain.pojo.order.ConsumerGoods; import com.ruoyi.order.domain.pojo.order.Order; import com.ruoyi.order.domain.pojo.order.OrderGoods; import com.ruoyi.order.domain.vo.*; import com.ruoyi.order.mapper.order.OrderMapper; -import com.ruoyi.order.mapper.order.UserServiceRecordMapper; import com.ruoyi.order.service.order.ConsumerGoodsService; import com.ruoyi.order.service.order.OrderGoodsService; import com.ruoyi.order.service.order.OrderService; import com.ruoyi.order.service.order.UserServiceRecordService; -import com.ruoyi.order.tools.request.pay.combine.CombineTransactionsJsRequest; -import com.ruoyi.order.tools.service.ProfitsSharingService; import com.ruoyi.system.api.constant.AppErrorConstant; import com.ruoyi.system.api.constant.DelayTaskEnum; import com.ruoyi.system.api.constant.SecurityConstant; import com.ruoyi.system.api.domain.dto.*; +import com.ruoyi.system.api.domain.poji.activity.ActivityRecord; import com.ruoyi.system.api.domain.poji.config.DelayTask; import com.ruoyi.system.api.domain.poji.goods.Goods; import com.ruoyi.system.api.domain.poji.goods.GoodsFile; @@ -42,12 +40,12 @@ import com.ruoyi.system.api.domain.poji.sys.SysUser; import com.ruoyi.system.api.domain.vo.*; import com.ruoyi.system.api.service.*; -import com.wechat.pay.java.service.payments.jsapi.JsapiServiceExtension; -import com.wechat.pay.java.service.payments.jsapi.model.*; +import com.wechat.pay.java.service.partnerpayments.jsapi.model.Transaction; import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; @@ -57,10 +55,6 @@ import java.util.concurrent.TimeUnit; import java.util.function.Function; import java.util.stream.Collectors; - -import com.wechat.pay.java.core.Config; -import com.wechat.pay.java.core.RSAConfig; -import com.wechat.pay.java.service.payments.jsapi.JsapiService; /** * <p> @@ -110,13 +104,11 @@ private RemoteActivityService remoteActivityService; @Resource - private UserServiceRecordMapper userServiceRecordMapper; - - @Resource private RedisService redisService; - @Resource - private ProfitsSharingService profitsSharingService; + //@Resource + //@Qualifier("profitsSharingServiceImpl") + //private ProfitsSharingService profitsSharingService; @Autowired private RedissonClient redissonClient; @@ -182,10 +174,12 @@ merBaseDto.setShopId(appSureOrderDto.getShopId()); // 获取用户优惠券列表 List<AppMemberCouponVo> appMemberCouponVoList = remoteCouponService.listVoMemberCouponByUserId(merBaseDto).getData(); - // 初始化商品优惠券列表 - List<AppMemberCouponVo> appGoodsMemberCouponVoList; + // 将优惠券列表转换为Map,以优惠券ID为键 - Map<String, AppMemberCouponVo> appMemberCouponVoMap = appMemberCouponVoList.stream().collect(Collectors.toMap(AppMemberCouponVo::getMemberCouponId, Function.identity())); + Map<String, AppMemberCouponVo> appMemberCouponVoMap = new HashMap<>(); + if(appMemberCouponVoList!=null&&!appMemberCouponVoList.isEmpty()){ + appMemberCouponVoMap = appMemberCouponVoList.stream().collect(Collectors.toMap(AppMemberCouponVo::getMemberCouponId, Function.identity())); + } AppMemberCouponVo appMemberCouponVo; Integer couponType; BigDecimal moneyThreshold; @@ -268,14 +262,10 @@ } } } - if(appMemberCouponVoList != null && !appMemberCouponVoList.isEmpty()){ - appSureOrderGoodsVo.setAppMemberCouponVoList(appMemberCouponVoList); - } appSureOrderGoodsVo.setUseCoupon(useCoupon); appSureOrderGoodsVo.setGoodsTotalPrice(goodsTotalPrice); appSureOrderGoodsVo.setCouponDiscount(discountMoney); appSureOrderGoodsVo.setGoodsRealPrice(goodsRealPrice); - goodsDeposit = goods.getSubscription(); // 获取商品押金 goodsDeposit = goods.getSubscription(); if (goodsDeposit != null && goodsDeposit.compareTo(BigDecimal.ZERO)>0) { @@ -303,9 +293,26 @@ }else{ entity.setUseFlag(0); } + + } + // 过滤商品优惠券列表 + List<AppMemberCouponVo> appGoodsMemberCouponVoList; for(AppSureOrderGoodsVo sureOrderGoodsVo : appSureOrderGoodsVoList) { - sureOrderGoodsVo.setAppMemberCouponVoList(appMemberCouponVoList); + appGoodsMemberCouponVoList = new ArrayList<>(); + for(AppMemberCouponVo entity : appMemberCouponVoList){ + if(StringUtils.isBlank(entity.getRelGoodsIds())||entity.getRelGoodsIds().contains(sureOrderGoodsVo.getGoodsId())){ + if(entity.getCouponType()!=1){ + appGoodsMemberCouponVoList.add(entity); + }else{ + if(entity.getMoneyThreshold().compareTo(sureOrderGoodsVo.getGoodsTotalPrice())<0){ + appGoodsMemberCouponVoList.add(entity); + } + } + + } + } + sureOrderGoodsVo.setAppMemberCouponVoList(appGoodsMemberCouponVoList); } } /*if (appMemberCouponVoList != null && !appMemberCouponVoList.isEmpty()) { @@ -408,6 +415,9 @@ if (activityGoodsGetVo.getAvailableBuyNum() < 1) { throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_NULL); } + if (activityGoodsGetVo.getAvailableBuyNum() < buyNum) { + throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_BEYOND); + } Goods goods = remoteGoodsService.getGoods(goodsId).getData(); if(goods.getGoodsStatus()!=1){ throw new ServiceException(AppErrorConstant.GOODS_DOWN); @@ -460,6 +470,7 @@ * @return */ @Override + @Transactional public AppPlaceOrderVo placeOrder(AppPlaceOrderDto appPlaceOrderDto) { // 获取用户ID Long userId = appPlaceOrderDto.getUserId(); @@ -663,19 +674,20 @@ order.setReceivableMoney(orderPayMoney); order.setReceivableDeposit(orderPayDeposit); order.setChangeReceivableMoney(orderPayMoney); - order.setPayType(appPlaceOrderDto.getPayType()); // 根据支付类型计算支付金额 - if (order.getPayType() == 1) { + if (appPlaceOrderDto.getPayType() == 1) { order.setPayMoney(orderPayMoney); order.setOnlinePayMoney(orderPayMoney); appPlaceOrderVo.setPayMoney(orderPayMoney); appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney())); + order.setPayType(1); order.setCloseFlag(1); - } else if (order.getPayType() == 2) { + } else if (appPlaceOrderDto.getPayType() == 2) { order.setPayMoney(orderPayDeposit); order.setOnlinePayMoney(orderPayDeposit); appPlaceOrderVo.setPayMoney(orderPayDeposit); appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney())); + order.setPayType(2); order.setCloseFlag(0); } order.setOrderRemark(appPlaceOrderDto.getOrderRemark()); @@ -699,7 +711,7 @@ profitsSharingService.combineTransactions(request);*/ //构建预下单支付对象 - PrepayRequest request = new PrepayRequest(); + /*PrepayRequest request = new PrepayRequest(); Amount amount = new Amount(); amount.setTotal(Integer.parseInt(order.getPayMoney().multiply(new BigDecimal(100)).toString())); request.setAmount(amount); @@ -708,24 +720,21 @@ request.setDescription(order.getGoodsInfo()); request.setNotifyUrl(this.notifyUrl); request.setOutTradeNo(order.getOrderId()); - Payer payer = new Payer(); payer.setOpenid("oLTPCuN5a-nBD4rAL_fa********"); - - request.setPayer(payer); - - + Payer payer = new Payer(); + payer.setOpenid("oLTPCuN5a-nBD4rAL_fa********"); + request.setPayer(payer);*/ //返回前端唤醒支付结果信息 - PrepayWithRequestPaymentResponse res = this.getJsApIResponse(request); - + /*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()); + appPlaceOrderVo.setPaySign(res.getPaySign());*/ //减去优惠券 - if(memberCouponSJ!=null){ + if(memberCouponSJ!=null&&StringUtils.isNotBlank(memberCouponSJ.toString())){ remoteCouponService.useMemberCoupon(memberCouponSJ.toString()); } //生成自动取消订单延时任务 @@ -740,79 +749,8 @@ 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; - } - - /** - * - * 功能描述: 预下单,返回支付数据prePayId - * - * 构建对象参考 - * PrepayRequest request = new PrepayRequest(); - * Amount amount = new Amount(); - * amount.setTotal(100); - * request.setAmount(amount); - * request.setAppid("wxa9d9651ae******"); - * request.setMchid("190000****"); - * request.setDescription("测试商品标题"); - * request.setNotifyUrl("https://notify_url"); - * request.setOutTradeNo("out_trade_no_001"); - * Payer payer = new Payer(); - * payer.setOpenid("oLTPCuN5a-nBD4rAL_fa********"); - * request.setPayer(payer); - * - * @auther: linqingsong - * @date: 2023/7/22 16:13 - */ - /*public String getPrePayId(PrepayRequest request) { - Config config = - new RSAConfig.Builder() - .merchantId(merchantId) - .privateKeyFromPath(privateKeyPath) - .merchantSerialNumber(merchantSerialNumber) - .wechatPayCertificatesFromPath(wechatPayCertificatePath) - .build(); - JsapiService service = new JsapiService.Builder().config(config).build(); - PrepayResponse response = service.prepay(request); - return response.getPrepayId(); - }*/ - - - /** - * - * 功能描述: 预下单,并返回前端需要换起支付的字符串 - * - * 构建对象参考 - * * PrepayRequest request = new PrepayRequest(); - * * Amount amount = new Amount(); - * * amount.setTotal(100); - * * request.setAmount(amount); - * * request.setAppid("wxa9d9651ae******"); - * * request.setMchid("190000****"); - * * request.setDescription("测试商品标题"); - * * request.setNotifyUrl("https://notify_url"); - * * request.setOutTradeNo("out_trade_no_001"); - * * Payer payer = new Payer(); - * * payer.setOpenid("oLTPCuN5a-nBD4rAL_fa********"); - * * request.setPayer(payer); - * - * - * @auther: linqingsong - * @date: 2023/7/22 16:53 - */ - public PrepayWithRequestPaymentResponse getJsApIResponse(PrepayRequest request){ - Config config = - new RSAConfig.Builder() - .merchantId(merchantId) - .privateKeyFromPath(privateKeyPath) - .merchantSerialNumber(merchantSerialNumber) - .wechatPayCertificatesFromPath(wechatPayCertificatePath) - .build(); - JsapiServiceExtension service = new JsapiServiceExtension.Builder().config(config).build(); - - PrepayWithRequestPaymentResponse response = service.prepayWithRequestPayment(request); - - return response; } @@ -824,6 +762,7 @@ * @date 2023/7/6 17:59 */ @Override + @Transactional public AppPlaceOrderVo placeActivityOrder(AppPlaceActivityDto appPlaceActivityDto) { Long userId = appPlaceActivityDto.getUserId(); // 创建订单对象 @@ -883,8 +822,8 @@ if (activityGoodsGetVo.getAvailableBuyNum() < 1) { throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_NULL); } - if (buyNum < activityGoodsGetVo.getAvailableBuyNum()) { - throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_NULL); + if (activityGoodsGetVo.getAvailableBuyNum() < buyNum) { + throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_BEYOND); } // 创建订单ID和订单号 String orderId = IdUtils.simpleUUID(); @@ -993,19 +932,20 @@ order.setReceivableMoney(orderPayMoney); order.setReceivableDeposit(orderPayDeposit); order.setChangeReceivableMoney(orderPayMoney); - order.setPayType(appPlaceActivityDto.getPayType()); // 根据支付类型设置订单支付金额,在线支付金额,订单支付金额,未支付金额,关闭标志 - if (order.getPayType() == 1) { + if (appPlaceActivityDto.getPayType() == 1) { order.setPayMoney(orderPayMoney); order.setOnlinePayMoney(orderPayMoney); appPlaceOrderVo.setPayMoney(orderPayMoney); appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney())); + order.setPayType(1); order.setCloseFlag(1); - } else if (order.getPayType() == 2) { + } else if (appPlaceActivityDto.getPayType() == 2) { order.setPayMoney(orderPayDeposit); order.setOnlinePayMoney(orderPayDeposit); appPlaceOrderVo.setPayMoney(orderPayDeposit); appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney())); + order.setPayType(2); order.setCloseFlag(0); } // 设置订单备注,商品数量,创建时间 @@ -1035,6 +975,52 @@ agStockChangeDto.setUserId(order.getUserId()); remoteActivityService.changeActivityStock(agStockChangeDto); // 调用支付 + /*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(); + // TODO 获取openID + payer.setOpenid("oLTPCuN5a-nBD4rAL_fa********"); + + request.setPayer(payer);*/ + + //设置订单允许分账 秒杀活动才允许分账 + /*if(order.getOrderFrom()==2){ + SettleInfo settleInfo=new SettleInfo(); + settleInfo.setProfitSharing(true); + request.setSettleInfo(settleInfo); + }*/ + + + //返回前端唤醒支付结果信息 + /*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()); +*/ + //生成活动参加记录 + ActivityRecord activityRecord = new ActivityRecord(); + activityRecord.setDelFlag(0); + activityRecord.setActivityId(activityId); + activityRecord.setUserId(userId); + activityRecord.setOrderTime(order.getCreateTime()); + activityRecord.setOrderMoney(order.getOrderMoney()); + activityRecord.setOrderId(orderId); + activityRecord.setCreateTime(new Date()); + activityRecord.setBuyNum(orderGoods.getBuyNum()); + activityRecord.setGoodsId(orderGoods.getGoodsId()); + activityRecord.setActivityMoney(activityGoodsGetVo.getActivityPrice()); + remoteActivityService.addActivityRecord(activityRecord); //生成自动取消订单延时任务 Integer delayTime = 30; if(redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)){ @@ -1047,6 +1033,7 @@ 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; } @@ -1074,6 +1061,10 @@ Shop shopTemp = remoteShopService.getShop(shopIdLong).getData(); shopMap.put(shopIdLong, shopTemp); }); + Integer delayTime = 30; + if(redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)){ + delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME); + } for (AppUserOrderPageVo appUserOrderPageVo : appUserOrderPageVoList) { shop = shopMap.get(appUserOrderPageVo.getShopId()); appUserOrderPageVo.setShopName(shop.getShopName()); @@ -1084,6 +1075,7 @@ appUserOrderPageVo.setSameShop(0); } appUserOrderPageVo.setVerifyCode("1-" + appUserOrderPageVo.getOrderId()); + appUserOrderPageVo.setEndTime(DateUtils.addMinutes(appUserOrderPageVo.getCreateTime(),delayTime)); } } return appUserOrderPageVoList; @@ -1108,6 +1100,7 @@ appUserOrderGetVo.setCouponDiscount(order.getCouponMoney()); appUserOrderGetVo.setReceivableDeposit(order.getReceivableDeposit()); appUserOrderGetVo.setReceivableMoney(order.getReceivableMoney()); + appUserOrderGetVo.setPayType(order.getPayType()); appUserOrderGetVo.setPayMoney(order.getPayMoney()); appUserOrderGetVo.setOrderRemark(order.getOrderRemark()); appUserOrderGetVo.setShopId(order.getShopId()); @@ -1211,9 +1204,9 @@ merVerifyOrderVo.setUseTime(order.getUseTime()); merVerifyOrderVo.setAppUserOrderGoodsPageVoList(appUserOrderGoodsPageVoList); // 根据订单用户ID获取用户信息 - SysUser sysUser = remoteUserService.getSysUser(order.getUserId()).getData(); - merVerifyOrderVo.setUserName(sysUser.getNickName()); - merVerifyOrderVo.setUserMobile(sysUser.getPhonenumber()); + Member member = remoteMemberService.getMember(order.getUserId()).getData(); + merVerifyOrderVo.setUserName(member.getRealName()); + merVerifyOrderVo.setUserMobile(member.getMobile()); merVerifyOrderVo.setCloseFlag(order.getCloseFlag()); // 返回结果 return merVerifyOrderVo; @@ -1226,6 +1219,7 @@ * @return */ @Override + @Transactional public MerVerifyOrderVo sureVerifyOrder(MerVerifyOrderDto merVerifyOrderDto) { String orderId = merVerifyOrderDto.getOrderId(); BigDecimal relReceiveMoney = merVerifyOrderDto.getRelReceiveMoney(); @@ -1235,6 +1229,11 @@ Order order = this.getById(orderId); if (order.getOrderStatus() != 2) { throw new ServiceException(AppErrorConstant.VERIFY_USED); + } + + ShopRelUserVo shopRelUserVo = remoteShopService.getShopByUserId(merVerifyOrderDto.getUserId()).getData(); + if(!shopRelUserVo.getShopId().equals(order.getShopId())){ + throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } order.setOrderStatus(3); order.setUseTime(nowTime); @@ -1300,10 +1299,17 @@ merVerifyOrderVo.setCreateTime(order.getCreateTime()); merVerifyOrderVo.setPayTime(order.getPayTime()); merVerifyOrderVo.setUseTime(order.getUseTime()); - SysUser sysUser = remoteUserService.getSysUser(order.getUserId()).getData(); - merVerifyOrderVo.setUserName(sysUser.getNickName()); - merVerifyOrderVo.setUserMobile(sysUser.getPhonenumber()); + Member member = remoteMemberService.getMember(order.getUserId()).getData(); + merVerifyOrderVo.setUserName(member.getRealName()); + merVerifyOrderVo.setUserMobile(member.getMobile()); + merVerifyOrderVo.setCloseFlag(order.getCloseFlag()); + // + if(order.getOrderFrom()==2){ + + //profitsSharingService.applyProfitSharing(); + } return merVerifyOrderVo; + } /** @@ -1314,8 +1320,13 @@ * @date 2023/6/28 11:26 */ @Override + @Transactional public MerVerifyCouponVo sureVerifyCoupon(MerVerifyCouponDto merVerifyCouponDto) { MerVerifyCouponGetVo verifyCouponGetVo = remoteCouponService.getVerifyCoupon(merVerifyCouponDto.getMemberCouponId()).getData(); + ShopRelUserVo shopRelUserVo = remoteShopService.getShopByUserId(merVerifyCouponDto.getUserId()).getData(); + if(!shopRelUserVo.getShopId().equals(verifyCouponGetVo.getMemberCoupon().getShopId())){ + throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + } // 创建MerVerifyCouponVo对象 MerVerifyCouponVo merVerifyCouponVo = new MerVerifyCouponVo(); // 调用remoteCouponService的getVerifyCoupon方法获取MerVerifyCouponGetVo对象 @@ -1323,7 +1334,7 @@ Long userId = verifyCouponGetVo.getUserId(); // 调用remoteMemberService的getMember方法获取Member对象 Member member = remoteMemberService.getMember(userId).getData(); - merVerifyCouponVo.setUserName(member.getNickName()); + merVerifyCouponVo.setUserName(member.getRealName()); merVerifyCouponVo.setUserMobile(member.getMobile()); merVerifyCouponVo.setCouponFrom(verifyCouponGetVo.getCouponFrom()); merVerifyCouponVo.setCouponName(verifyCouponGetVo.getMemberCoupon().getCouponName()); @@ -1403,14 +1414,19 @@ * @return MerVerifyAwardVo */ @Override + @Transactional public MerVerifyAwardVo sureVerifyPrize(MerVerifyPrizeDto merVerifyPrizeDto){ MerVerifyAwardVo merVerifyAwardVo = new MerVerifyAwardVo(); MemberGiftRecord memberGiftRecord = remoteMemberService.getVerifyPrize(merVerifyPrizeDto.getPrizeId()).getData(); if(memberGiftRecord==null||memberGiftRecord.getVerifyStatus()!=1){ throw new ServiceException(AppErrorConstant.COUPON_USED); } + ShopRelUserVo shopRelUserVo = remoteShopService.getShopByUserId(merVerifyPrizeDto.getUserId()).getData(); + if(!shopRelUserVo.getShopId().equals(memberGiftRecord.getShopId())){ + throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + } Member member = remoteMemberService.getMember(memberGiftRecord.getUserId()).getData(); - merVerifyAwardVo.setUserName(member.getNickName()); + merVerifyAwardVo.setUserName(member.getRealName()); merVerifyAwardVo.setUserMobile(member.getMobile()); if(memberGiftRecord.getGiftFrom()==1){ merVerifyAwardVo.setGiftFrom("平台生日卡"); @@ -1530,6 +1546,8 @@ public void createNewOrder(MerNewOrderDto merNewOrderDto) { Long userId = merNewOrderDto.getBuyUserId(); Date nowTime = new Date(); + Long shopId = merNewOrderDto.getShopId(); + Shop shop = remoteShopService.getShop(shopId).getData(); //如果非指定用户判断是否需要通过手机号创建新用户 if (userId == null) { String name = merNewOrderDto.getName(); @@ -1557,6 +1575,9 @@ member.setMobile(mobile); member.setRealName(name); member.setNickName(name); + member.setBindingFlag(1); + member.setRelationShopId(shopId); + member.setRelationShopName(shop.getShopName()); remoteMemberService.createNewMember(member); } userId = sysUser.getUserId(); @@ -1573,8 +1594,6 @@ BigDecimal goodsPrice; BigDecimal goodsTotalPrice; BigDecimal goodsRealPrice; - Long shopId = merNewOrderDto.getShopId(); - Shop shop = remoteShopService.getShop(shopId).getData(); MerBaseDto merBaseDto = new MerBaseDto(); merBaseDto.setUserId(userId); merBaseDto.setShopId(shopId); @@ -1726,6 +1745,7 @@ order.setOnlinePayMoney(new BigDecimal("0.00")); order.setOfflinePayMoney(merNewOrderDto.getPayMoney()); order.setOffPayTime(nowTime); + order.setPayType(1); order.setCloseFlag(1); this.save(order); //创建服务 @@ -2767,7 +2787,7 @@ Long userId = verifyCouponGetVo.getUserId(); // 调用remoteMemberService的getMember方法获取Member对象 Member member = remoteMemberService.getMember(userId).getData(); - merVerifyCouponVo.setUserName(member.getNickName()); + merVerifyCouponVo.setUserName(member.getRealName()); merVerifyCouponVo.setUserMobile(member.getMobile()); merVerifyCouponVo.setCouponFrom(verifyCouponGetVo.getCouponFrom()); merVerifyCouponVo.setCouponName(verifyCouponGetVo.getMemberCoupon().getCouponName()); @@ -2816,7 +2836,7 @@ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } Member member = remoteMemberService.getMember(memberGiftRecord.getUserId()).getData(); - merVerifyAwardVo.setUserName(member.getNickName()); + merVerifyAwardVo.setUserName(member.getRealName()); merVerifyAwardVo.setUserMobile(member.getMobile()); if(memberGiftRecord.getGiftFrom()==1){ merVerifyAwardVo.setGiftFrom("平台生日卡"); @@ -3082,7 +3102,15 @@ */ @Override public MerTotalOrderVo totalMerOrder(MerBaseDto merBaseDto) { - return orderMapper.totalMerOrder(merBaseDto.getShopId()); + MerTotalOrderVo merTotalOrderVo = new MerTotalOrderVo(); + merTotalOrderVo = orderMapper.totalMerOrder(merBaseDto.getShopId()); + Shop shop = remoteShopService.getShop(merBaseDto.getShopId()).getData(); + if(shop.getShopType()==2){ + merTotalOrderVo.setAgencyFlag(1); + }else{ + merTotalOrderVo.setAgencyFlag(0); + } + return merTotalOrderVo; } /** @@ -3151,6 +3179,7 @@ * @return void */ @Override + @Transactional public void autoCancelOrder(String orderId){ //更新订单信息 Order order = this.getById(orderId); @@ -3181,6 +3210,13 @@ agStockChangeDto.setShopId(order.getShopId()); agStockChangeDto.setUserId(order.getUserId()); remoteActivityService.changeActivityStock(agStockChangeDto); + //删除活动记录 + ActivityRecord activityRecord = new ActivityRecord(); + activityRecord.setActivityId(order.getActivityId()); + activityRecord.setGoodsId(orderGoods.getGoodsId()); + activityRecord.setUserId(order.getUserId()); + activityRecord.setOrderTime(order.getCreateTime()); + remoteActivityService.delActivityRecord(activityRecord); } } }else{ @@ -3205,12 +3241,14 @@ * @description 订单支付回调 * @author jqs * @date 2023/7/13 17:57 - * @param orderId + * @param transaction * @return void */ @Override - public void payBack(String orderId) { + @Transactional + public void payBack(Transaction transaction) { // 更新订单状态 + String orderId=transaction.getOutTradeNo(); Order order = this.getById(orderId); order.setOrderStatus(2); order.setPayTime(new Date()); @@ -3227,6 +3265,8 @@ Boolean haveGoods = false; // 获取订单中的所有商品 List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(orderId); + List<GoodsTotalChangeDto> goodsTotalChangeDtoList = new ArrayList<>(); + GoodsTotalChangeDto goodsTotalChangeDto; // 遍历订单中的所有商品,根据商品类型累加收款金额,并标记商品存在状态 for (OrderGoods orderGoods : orderGoodsList) { switch (orderGoods.getGoodsType()) { @@ -3249,7 +3289,18 @@ default: break; } + goodsTotalChangeDto = new GoodsTotalChangeDto(); + goodsTotalChangeDto.setGoodsId(orderGoods.getGoodsId()); + goodsTotalChangeDto.setChangeType(1); + goodsTotalChangeDto.setChangeNum(orderGoods.getBuyNum()); + goodsTotalChangeDto.setMoney(orderGoods.getGoodsReceivableMoney()); + Integer bugGoodsNum = orderMapper.countUserBuyGoodsNum(order.getUserId(),orderGoods.getGoodsId()); + if(bugGoodsNum==null||bugGoodsNum<1){ + goodsTotalChangeDto.setPersonNum(1); + } + goodsTotalChangeDtoList.add(goodsTotalChangeDto); } + //更新商品统计 // 更新商户统计信息 ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto(); shopTotalChangeDto.setShopId(order.getShopId()); @@ -3304,7 +3355,22 @@ } activityTotalChangeDto.setUserId(order.getUserId()); remoteActivityService.changeActivityTotal(activityTotalChangeDto); + + + //活动订单进行分账 + /*ProfitSharingApplyRequest request=new ProfitSharingApplyRequest(); + request.setAppid(this.appId); + request.setSubMchid(""); + request.setTransactionId(transaction.getTransactionId()); + profitsSharingService.applyProfitSharing(request);*/ } + //生成支付记录 + OrderPayment orderPayment = new OrderPayment(); + + + + + } /** @@ -3315,6 +3381,7 @@ * @return void */ @Override + @Transactional public void refundOrder(String orderId){ //更新订单信息 Order order = this.getById(orderId); @@ -3367,6 +3434,13 @@ agStockChangeDto.setShopId(order.getShopId()); agStockChangeDto.setUserId(order.getUserId()); remoteActivityService.changeActivityStock(agStockChangeDto); + //删除活动记录 + ActivityRecord activityRecord = new ActivityRecord(); + activityRecord.setActivityId(order.getActivityId()); + activityRecord.setGoodsId(orderGoods.getGoodsId()); + activityRecord.setUserId(order.getUserId()); + activityRecord.setOrderTime(order.getCreateTime()); + remoteActivityService.delActivityRecord(activityRecord); }else{ memberCouponSJ.add(orderGoods.getCouponId()); } @@ -3691,4 +3765,31 @@ } return dateList; } + + /** + * @description 检查订单状态定时任务 + * @author jqs + * @date 2023/7/25 14:40 + * @param + * @return void + */ + @Override + public void checkOrderStatus(){ + Integer delayTime = 30; + if(redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)){ + delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME); + } + delayTime = delayTime + 5; + 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){ + autoCancelOrder(order.getOrderId()); + } + } + } } -- Gitblit v1.7.1