From 0b413f3fd67110cfd7752f27eb171bde06edc4b4 Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期五, 18 八月 2023 18:56:39 +0800
Subject: [PATCH] bug

---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java |   93 +++++++++++++++++++++++++++++++++-------------
 1 files changed, 66 insertions(+), 27 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 498dc32..d1cce04 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,9 +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.ecommerce.PartnerTransactionsRequest;
 import com.github.binarywang.wxpay.bean.ecommerce.PartnerTransactionsResult;
 import com.github.binarywang.wxpay.bean.ecommerce.RefundNotifyResult;
+import com.github.binarywang.wxpay.bean.ecommerce.TransactionsResult;
+import com.github.binarywang.wxpay.bean.ecommerce.enums.TradeTypeEnum;
 import com.github.binarywang.wxpay.bean.profitsharingV3.ProfitSharingNotifyResult;
+import com.github.binarywang.wxpay.config.WxPayConfig;
+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.exception.ServiceException;
 import com.ruoyi.common.core.utils.DateUtils;
 import com.ruoyi.common.core.utils.StringUtils;
@@ -52,7 +60,6 @@
 import lombok.extern.slf4j.Slf4j;
 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;
 
@@ -119,11 +126,11 @@
     @Resource
     private PayRecordService payRecordService;
 
-    @Autowired
+    @Resource
     private RedissonClient redissonClient;
 
-    /*@Autowired
-    private WxPayService wxService;*/
+    @Resource
+    private WxPayService wxService;
 
     @Resource
     private PaymentMessageService paymentMessageService;
@@ -740,8 +747,8 @@
         appPlaceOrderVo.setOrderNo(orderNo);
 
         String goodsName = "";
-        if (null != goods) {
-            goodsName = goods.getGoodsName();
+        if (null != goodsNameList) {
+            goodsName = String.join(",", goodsNameList);
         }
 
         // 小程序微信下单支付
@@ -784,14 +791,14 @@
      * @param payerClientIp
      * @param goodsNameList
      */
-    /*private void createWxPayInfo(AppPlaceOrderVo appPlaceOrderVo, Long userId, Long shopId,
+    public void createWxPayInfo(AppPlaceOrderVo appPlaceOrderVo, Long userId, Long shopId,
                                  String goodsName, String orderNo,
                                  String orderId, BigDecimal payMoney,
                                  String openid, String payerClientIp, List<String> goodsNameList){
         try {
             // 创建支付订单
-            R<String> resultMch = remoteShopService.getShopSubMchId(shopId);
-            String subMchId = resultMch.getData();
+            //R<String> resultMch = remoteShopService.getShopSubMchId(shopId);
+            String subMchId = "1650744551";
             if (StringUtils.isEmpty(subMchId)) {
                 throw new ServiceException("获取微信商户号失败");
             }
@@ -859,7 +866,7 @@
         } catch (WxPayException e) {
             throw new ServiceException(e.getMessage());
         }
-    }*/
+    }
 
 
     /**
@@ -1506,14 +1513,15 @@
         }
 
         //创建支付记录
-        PayRecord payRecord = new PayRecord();
-        payRecord.setDelFlag(0);
-        payRecord.setOrderId(order.getOrderId());
-        payRecord.setPayMoney(merVerifyOrderDto.getRelPayMoney());
-        payRecord.setPayTime(new Date());
-        payRecord.setPayType(merVerifyOrderDto.getPayType());
-        payRecordService.save(payRecord);
-
+        if(merVerifyOrderDto.getRelPayMoney().compareTo(BigDecimal.ZERO)>0){
+            PayRecord payRecord = new PayRecord();
+            payRecord.setDelFlag(0);
+            payRecord.setOrderId(order.getOrderId());
+            payRecord.setPayMoney(merVerifyOrderDto.getRelPayMoney());
+            payRecord.setPayTime(new Date());
+            payRecord.setPayType(merVerifyOrderDto.getPayType());
+            payRecordService.save(payRecord);
+        }
         //submitProfitSharing(orderId, order.getOrderNo(), order.getShopId(), order.getOrderMoney());
 
         return merVerifyOrderVo;
@@ -1626,7 +1634,7 @@
         //如果是平台优惠券,当用户绑定商户时验证商户一致
         if (memberCoupon.getCouponFrom() == 1 && member.getBindingFlag() == 1) {
             if(!memberCoupon.getShopId().equals(member.getRelationShopId())){
-                throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+                throw new ServiceException(AppErrorConstant.BLINDING_VERIFY_SHOP_ERROR);
             }
             if(memberCoupon.getShopId().equals(shopId)){
                 throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
@@ -1711,6 +1719,7 @@
         if (member.getBindingFlag() != 1) {
             AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto();
             appMemberBindingDto.setBindingFlag(1);
+            appMemberBindingDto.setBindingType(4);
             appMemberBindingDto.setShopId(shop.getShopId());
             appMemberBindingDto.setShopName(shop.getShopName());
             appMemberBindingDto.setUserId(memberCoupon.getUserId());
@@ -1827,6 +1836,7 @@
         if (member.getBindingFlag() != 1) {
             AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto();
             appMemberBindingDto.setBindingFlag(1);
+            appMemberBindingDto.setBindingType(5);
             appMemberBindingDto.setShopId(shop.getShopId());
             appMemberBindingDto.setShopName(shop.getShopName());
             appMemberBindingDto.setUserId(memberGiftRecord.getUserId());
@@ -1848,15 +1858,17 @@
     @Override
     public List<MerMemberNoClearOrderVo> pageMerMemberNoClearOrder(Page page, MerMemberNoClearOrderDto merMemberNoClearOrderDto) {
         List<MerMemberNoClearOrderVo> merMemberNoClearOrderVoList = orderMapper.pageMerMemberNoClearOrder(page, merMemberNoClearOrderDto.getMemberUserId());
-        /*if (merMemberNoClearOrderVoList != null && !merMemberNoClearOrderVoList.isEmpty()) {
+        if (merMemberNoClearOrderVoList != null && !merMemberNoClearOrderVoList.isEmpty()) {
             BigDecimal zeroBig = new BigDecimal("0.00");
             for (MerMemberNoClearOrderVo merMemberNoClearOrderVo : merMemberNoClearOrderVoList) {
-                merMemberNoClearOrderVo.setUnPaidMoney(merMemberNoClearOrderVo.getReceivableMoney().subtract(merMemberNoClearOrderVo.getPayMoney()));
                 if (merMemberNoClearOrderVo.getUnPaidMoney() == null) {
                     merMemberNoClearOrderVo.setUnPaidMoney(zeroBig);
                 }
+                if(merMemberNoClearOrderVo.getUnPaidMoney().compareTo(zeroBig)<0){
+                    merMemberNoClearOrderVo.setUnPaidMoney(zeroBig);
+                }
             }
-        }*/
+        }
         return merMemberNoClearOrderVoList;
     }
 
@@ -1917,7 +1929,6 @@
                 sysUser.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
                 String password = "hongruitang";
                 sysUser.setPassword(SecurityUtils.encryptPassword(password));
-                log.debug("sysUser" + sysUser.toString());
                 sysUser = remoteUserService.registerUser(sysUser).getData();
                 member = new Member();
                 member.setMemberId(memberId);
@@ -1926,6 +1937,7 @@
                 member.setRealName(name);
                 member.setNickName(name);
                 member.setBindingFlag(1);
+                member.setBindingType(3);
                 member.setRelationShopId(shopId);
                 member.setRelationShopName(shop.getShopName());
                 remoteMemberService.createNewMember(member);
@@ -1975,6 +1987,8 @@
         ConsumerGoods consumerGoods;
         String consumerGoodsId;
         List<ConsumerGoods> consumerGoodsList = new ArrayList<>();
+        //使用优惠券
+        StringJoiner memberCouponSJ = new StringJoiner(",");
         for (AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList) {
             goodsId = appBuyGoodsDto.getGoodsId();
             memberCouponId = appBuyGoodsDto.getMemberCouponId();
@@ -2009,7 +2023,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);
                     } else if (couponType == 3 && appMemberCouponVo.getDiscountMoney() != null) {
                         discountMoney = appMemberCouponVo.getDiscountMoney();
                         goodsRealPrice = goodsTotalPrice.subtract(discountMoney);
@@ -2018,6 +2032,7 @@
                         goodsRealPrice = BigDecimal.ZERO;
                         discountMoney = goodsTotalPrice.subtract(goodsRealPrice);
                     }
+                    memberCouponSJ.add(memberCouponId);
                 }
             }
             goodsDeposit = goods.getSubscription();
@@ -2169,6 +2184,10 @@
         this.save(order);
         orderGoodsService.saveBatch(orderGoodsList);
         consumerGoodsService.saveBatchConsumerGoods(consumerGoodsList);
+        //减去优惠券
+        if (StringUtils.isNotBlank(memberCouponSJ.toString())) {
+            remoteCouponService.useMemberCoupon(memberCouponSJ.toString());
+        }
         //用户未绑定则绑定商户
         Member member = remoteMemberService.getMember(userId).getData();
         if (member != null && member.getBindingFlag() != 1) {
@@ -2178,6 +2197,7 @@
             appMemberBindingDto.setShopName(shop.getShopName());
             appMemberBindingDto.setUserId(userId);
             appMemberBindingDto.setBindingFlag(1);
+            appMemberBindingDto.setBindingType(3);
             remoteMemberService.updateMemberBinding(appMemberBindingDto);
         }
         //更新商户统计
@@ -2207,10 +2227,12 @@
     @Override
     public List<MerOrderPageVo> pageMerOrder(Page page, MerOrderPageDto merOrderPageDto) {
         if (StringUtils.isNotBlank(merOrderPageDto.getKeyword())) {
+            // 获取关键字对应的用户ID
             MgtUserIdByKeywordDto userIdByKeywordDto = new MgtUserIdByKeywordDto();
             userIdByKeywordDto.setKeyword(merOrderPageDto.getKeyword());
             MgtUserIdByKeywordVo userIdByKeywordVo = remoteMemberService.getUserIdByKeyword(userIdByKeywordDto).getData();
             if (StringUtils.isNotBlank(userIdByKeywordVo.getUserIds())) {
+                // 将用户ID转换成List<Long>类型
                 List<Long> userIdList = Arrays.stream(userIdByKeywordVo.getUserIds().split(","))
                         .map(Long::parseLong)
                         .collect(Collectors.toList());
@@ -2218,6 +2240,8 @@
                 merOrderPageDto.setMemberUserId(null);
             }
         }
+
+        // 获取订单列表
         List<MerOrderPageVo> merOrderPageVoList = orderMapper.pageMerOrder(page, merOrderPageDto);
         if (merOrderPageVoList != null && !merOrderPageVoList.isEmpty()) {
             Long userId;
@@ -2226,15 +2250,17 @@
             String orderFromDesc;
             BigDecimal zeroBig = new BigDecimal("0.00");
             StringJoiner userIdSj = new StringJoiner(",");
+            // 遍历订单列表
             for (MerOrderPageVo merOrderPageVo : merOrderPageVoList) {
                 userId = merOrderPageVo.getUserId();
                 userIdSj.add(userId.toString());
                 orderFrom = merOrderPageVo.getOrderFrom();
+                // 根据订单来源设置订单来源描述
                 if (orderFrom != null) {
                     if (orderFrom == 1) {
                         orderFromDesc = "商城订单";
-                    } else if(orderFrom == 2){
-                        orderFromDesc = "店铺砍价活动("+merOrderPageVo.getActivityName()+")";
+                    } else if (orderFrom == 2) {
+                        orderFromDesc = "店铺砍价活动(" + merOrderPageVo.getActivityName() + ")";
                     } else {
                         orderFromDesc = "线下创建";
                     }
@@ -2242,15 +2268,22 @@
                     orderFromDesc = "商城订单";
                 }
                 merOrderPageVo.setOrderFromDesc(orderFromDesc);
+                // 设置未支付金额为0.00,如果未支付金额小于0,则设置为0.00
                 if (merOrderPageVo.getUnPaidMoney() == null) {
                     merOrderPageVo.setUnPaidMoney(zeroBig);
                 }
+                if (merOrderPageVo.getUnPaidMoney().compareTo(zeroBig) < 0) {
+                    merOrderPageVo.setUnPaidMoney(zeroBig);
+                }
             }
+
+            // 根据用户ID列表获取用户信息
             MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
             mgtBaseBathDto.setIds(userIdSj.toString());
             List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(mgtBaseBathDto).getData();
             Map<Long, MgtSimpleMemberVo> userMap = simpleMemberVoList.stream()
                     .collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity()));
+            // 遍历订单列表,设置用户信息
             for (MerOrderPageVo merOrderPageVo : merOrderPageVoList) {
                 if (merOrderPageVo.getUserId() != null && userMap.get(merOrderPageVo.getUserId()) != null) {
                     merOrderPageVo.setUserName(userMap.get(merOrderPageVo.getUserId()).getRealName());
@@ -2276,6 +2309,9 @@
             BigDecimal zeroBig = new BigDecimal("0.00");
             for (MerMemberOrderVo merMemberNoClearOrderVo : merMemberNoClearOrderVoList) {
                 if (merMemberNoClearOrderVo.getUnPaidMoney() == null) {
+                    merMemberNoClearOrderVo.setUnPaidMoney(zeroBig);
+                }
+                if(merMemberNoClearOrderVo.getUnPaidMoney().compareTo(zeroBig)<0){
                     merMemberNoClearOrderVo.setUnPaidMoney(zeroBig);
                 }
             }
@@ -3234,7 +3270,7 @@
         //如果是平台优惠券,当用户绑定商户时验证商户一致
         if (memberCoupon.getCouponFrom() == 1 && member.getBindingFlag() == 1) {
             if(!memberCoupon.getShopId().equals(member.getRelationShopId())){
-                throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+                throw new ServiceException(AppErrorConstant.BLINDING_VERIFY_SHOP_ERROR);
             }
             if(memberCoupon.getShopId().equals(shopId)){
                 throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
@@ -4490,6 +4526,9 @@
                 if (merOrderPageVo.getUnPaidMoney() == null) {
                     merOrderPageVo.setUnPaidMoney(zeroBig);
                 }
+                if(merOrderPageVo.getUnPaidMoney().compareTo(zeroBig)<0){
+                    merOrderPageVo.setUnPaidMoney(zeroBig);
+                }
             }
             MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
             mgtBaseBathDto.setIds(userIdSj.toString());

--
Gitblit v1.7.1