From c93e76c57a98e35abbf62d2f514d9ba51efd3243 Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期一, 21 八月 2023 19:03:55 +0800
Subject: [PATCH] bug

---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java |  464 +++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 319 insertions(+), 145 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 b72c487..3c83650 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;
@@ -41,6 +49,7 @@
 import com.ruoyi.system.api.domain.poji.goods.Goods;
 import com.ruoyi.system.api.domain.poji.goods.GoodsFile;
 import com.ruoyi.system.api.domain.poji.goods.ShopGoods;
+import com.ruoyi.system.api.domain.poji.member.BirthdayCard;
 import com.ruoyi.system.api.domain.poji.member.Member;
 import com.ruoyi.system.api.domain.poji.member.MemberCoupon;
 import com.ruoyi.system.api.domain.poji.member.MemberGiftRecord;
@@ -51,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;
 
@@ -118,11 +126,11 @@
     @Resource
     private PayRecordService payRecordService;
 
-    @Autowired
+    @Resource
     private RedissonClient redissonClient;
 
-    /*@Autowired
-    private WxPayService wxService;*/
+    @Resource
+    private WxPayService wxService;
 
     @Resource
     private PaymentMessageService paymentMessageService;
@@ -163,7 +171,7 @@
                 .collect(Collectors.toMap(Goods::getGoodsId, Function.identity()));
         Boolean haveDeposit = false;
         for (Goods goods : goodsList) {
-            if (goods.getSubscription() != null && goods.getSubscription().compareTo(BigDecimal.ZERO) > 0) {
+            if (goods.getSubscriptionFlag()==1&&goods.getSubscription() != null && goods.getSubscription().compareTo(BigDecimal.ZERO) > 0) {
                 haveDeposit = true;
             }
         }
@@ -218,6 +226,7 @@
             appSureOrderGoodsVo.setGoodsName(goods.getGoodsName());
             appSureOrderGoodsVo.setGoodsIntroduction(goods.getGoodsIntroduction());
             appSureOrderGoodsVo.setGoodsType(goods.getGoodsType());
+            appSureOrderGoodsVo.setGoodsTag(goods.getGoodsTags());
             // 获取商品图片
             goodsFile = remoteGoodsService.getGoodsFile(goodsId).getData();
             appSureOrderGoodsVo.setGoodsPicture(goodsFile.getFileUrl());
@@ -274,9 +283,9 @@
             appSureOrderGoodsVo.setGoodsTotalPrice(goodsTotalPrice);
             appSureOrderGoodsVo.setCouponDiscount(discountMoney);
             appSureOrderGoodsVo.setGoodsRealPrice(goodsRealPrice);
-            // 获取商品押金
+            // 获取商品订金
             goodsDeposit = goods.getSubscription();
-            if (goodsDeposit != null && goodsDeposit.compareTo(BigDecimal.ZERO) > 0) {
+            if (goods.getSubscriptionFlag()==1 && goodsDeposit != null && goodsDeposit.compareTo(BigDecimal.ZERO) > 0) {
                 goodsDeposit = goodsDeposit.multiply(buyNumBig);
             } else {
                 if (haveDeposit) {
@@ -311,15 +320,19 @@
                 for (AppMemberCouponVo entity : appMemberCouponVoList) {
                     if (StringUtils.isBlank(entity.getRelGoodsIds()) || entity.getRelGoodsIds().contains(sureOrderGoodsVo.getGoodsId())) {
                         if (entity.getCouponType() == 1) {
-                            if (entity.getMoneyThreshold().compareTo(sureOrderGoodsVo.getGoodsTotalPrice()) < 0 && entity.getDiscountMoney().compareTo(sureOrderGoodsVo.getGoodsTotalPrice()) < 0) {
+                            if (entity.getMoneyThreshold().compareTo(sureOrderGoodsVo.getGoodsTotalPrice()) <= 0) {
                                 appGoodsMemberCouponVoList.add(entity);
                             }
+                            /*if (entity.getMoneyThreshold().compareTo(sureOrderGoodsVo.getGoodsTotalPrice()) < 0 && entity.getDiscountMoney().compareTo(sureOrderGoodsVo.getGoodsTotalPrice()) < 0) {
+                                appGoodsMemberCouponVoList.add(entity);
+                            }*/
                         } else if (entity.getCouponType() == 2) {
                             appGoodsMemberCouponVoList.add(entity);
                         } else if (entity.getCouponType() == 3) {
-                            if (entity.getDiscountMoney().compareTo(sureOrderGoodsVo.getGoodsTotalPrice()) < 0) {
+                            appGoodsMemberCouponVoList.add(entity);
+                            /*if (entity.getDiscountMoney().compareTo(sureOrderGoodsVo.getGoodsTotalPrice()) < 0) {
                                 appGoodsMemberCouponVoList.add(entity);
-                            }
+                            }*/
                         }
 
                     }
@@ -443,6 +456,7 @@
         appPanicBuyVo.setGoodsName(goods.getGoodsName());
         appPanicBuyVo.setGoodsIntroduction(goods.getGoodsIntroduction());
         appPanicBuyVo.setGoodsType(goods.getGoodsType());
+        appPanicBuyVo.setGoodsTag(goods.getGoodsTags());
         //商品图片
         goodsFile = remoteGoodsService.getGoodsFile(goodsId).getData();
         appPanicBuyVo.setGoodsPicture(goodsFile.getFileUrl());
@@ -615,6 +629,10 @@
                         goodsRealPrice = goodsTotalPrice.subtract(discountMoney);
                         useCoupon = 1;
                     }
+                    if(goodsRealPrice.compareTo(BigDecimal.ZERO)<0){
+                        goodsRealPrice = BigDecimal.ZERO;
+                        discountMoney = goodsTotalPrice;
+                    }
                 }
                 memberCouponSJ.add(memberCouponId);
             }
@@ -694,13 +712,14 @@
         order.setDiscountMoney(couponDiscount);
         order.setReceivableMoney(orderPayMoney);
         order.setReceivableDeposit(orderPayDeposit);
-        order.setChangeReceivableMoney(orderPayMoney);
+        order.setOfflinePayMoney(BigDecimal.ZERO);
         // 根据支付类型计算支付金额
         if (appPlaceOrderDto.getPayType() == 1) {
             order.setPayMoney(orderPayMoney);
             order.setOnlinePayMoney(orderPayMoney);
             appPlaceOrderVo.setPayMoney(orderPayMoney);
             appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney()));
+            order.setChangeReceivableMoney(orderGoodsMoney.subtract(couponDiscount));
             order.setPayType(1);
             order.setCloseFlag(1);
         } else if (appPlaceOrderDto.getPayType() == 2) {
@@ -708,6 +727,7 @@
             order.setOnlinePayMoney(orderPayDeposit);
             appPlaceOrderVo.setPayMoney(orderPayDeposit);
             appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney()));
+            order.setChangeReceivableMoney(orderGoodsMoney.subtract(couponDiscount).subtract(orderPayDeposit));
             order.setPayType(2);
             order.setCloseFlag(0);
         }
@@ -727,8 +747,8 @@
         appPlaceOrderVo.setOrderNo(orderNo);
 
         String goodsName = "";
-        if (null != goods) {
-            goodsName = goods.getGoodsName();
+        if (null != goodsNameList) {
+            goodsName = String.join(",", goodsNameList);
         }
 
         // 小程序微信下单支付
@@ -771,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("获取微信商户号失败");
             }
@@ -846,7 +866,7 @@
         } catch (WxPayException e) {
             throw new ServiceException(e.getMessage());
         }
-    }*/
+    }
 
 
     /**
@@ -1028,9 +1048,9 @@
         order.setDiscountMoney(couponDiscount);
         order.setReceivableMoney(orderPayMoney);
         order.setReceivableDeposit(orderPayDeposit);
-        order.setChangeReceivableMoney(orderPayMoney);
         order.setActivityId(activityId);
         order.setActivityName(activityGoodsGetVo.getActivityName());
+        order.setOfflinePayMoney(BigDecimal.ZERO);
         // 根据支付类型设置订单支付金额,在线支付金额,订单支付金额,未支付金额,关闭标志
         if (appPlaceActivityDto.getPayType() == 1) {
             order.setPayMoney(orderPayMoney);
@@ -1039,6 +1059,7 @@
             appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney()));
             order.setPayType(1);
             order.setCloseFlag(1);
+            order.setChangeReceivableMoney(orderGoodsMoney.subtract(couponDiscount));
         } else if (appPlaceActivityDto.getPayType() == 2) {
             order.setPayMoney(orderPayDeposit);
             order.setOnlinePayMoney(orderPayDeposit);
@@ -1046,6 +1067,7 @@
             appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney()));
             order.setPayType(2);
             order.setCloseFlag(0);
+            order.setChangeReceivableMoney(orderGoodsMoney.subtract(couponDiscount).subtract(orderPayDeposit));
         }
         // 设置订单备注,商品数量,创建时间
         order.setOrderRemark(appPlaceActivityDto.getOrderRemark());
@@ -1272,9 +1294,15 @@
     @Override
     public MerHomeShopTotalVo getMerHomeTotal(MerHomeShopTotalVo merHomeShopTotalVo) {
         Long shopId = merHomeShopTotalVo.getShopId();
+        //获取今日到店
         Integer todayShop = userServiceRecordService.countShopServicePerson(shopId);
+        //获取待处理订单和营业额
         merHomeShopTotalVo = orderMapper.getMerHomeShopTotalVo(shopId);
+        //获取服务统计
+        MerHomeShopTotalVo serviceTotalVo = orderMapper.getMerHomeShopServiceTotalVo(shopId);
         merHomeShopTotalVo.setTodayShop(todayShop);
+        merHomeShopTotalVo.setCycleSurp(serviceTotalVo.getCycleSurp());
+        merHomeShopTotalVo.setExplorationSurp(serviceTotalVo.getExplorationSurp());
         return merHomeShopTotalVo;
     }
 
@@ -1288,6 +1316,9 @@
     public MerVerifyOrderVo verifyOrder(String orderId, Long shopId) {
         // 创建返回对象
         MerVerifyOrderVo merVerifyOrderVo = new MerVerifyOrderVo();
+        if(orderId.contains("+")){
+            orderId = orderId.substring(0, orderId.indexOf("+"));
+        }
         // 根据订单ID获取订单信息
         Order order = this.getById(orderId);
         if (order.getOrderStatus() != 2) {
@@ -1306,7 +1337,11 @@
         merVerifyOrderVo.setOrderGoodsMoney(order.getOrderMoney());
         merVerifyOrderVo.setCouponDiscount(order.getCouponMoney());
         merVerifyOrderVo.setReceivableDeposit(order.getReceivableDeposit());
-        merVerifyOrderVo.setReceivableMoney(order.getReceivableMoney());
+        if(order.getPayType()==1){
+            merVerifyOrderVo.setReceivableMoney(order.getReceivableMoney());
+        }else{
+            merVerifyOrderVo.setReceivableMoney(order.getOrderMoney().subtract(order.getCouponMoney()).subtract(order.getReceivableDeposit()));
+        }
         merVerifyOrderVo.setPayMoney(order.getPayMoney());
         merVerifyOrderVo.setOrderRemark(order.getOrderRemark());
         merVerifyOrderVo.setCreateTime(order.getCreateTime());
@@ -1324,7 +1359,7 @@
                 merVerifyOrderVo.setReceiveMoney(BigDecimal.ZERO);
             }
         }
-        merVerifyOrderVo.setUnReceiveMoney(merVerifyOrderVo.getRealReceiveMoney().subtract(order.getReceivableMoney()));
+        merVerifyOrderVo.setUnReceiveMoney(merVerifyOrderVo.getRealReceiveMoney().subtract(merVerifyOrderVo.getReceiveMoney()));
         // 根据订单用户ID获取用户信息
         Member member = remoteMemberService.getMember(order.getUserId()).getData();
         merVerifyOrderVo.setUserId(order.getUserId());
@@ -1450,7 +1485,11 @@
         merVerifyOrderVo.setOrderGoodsMoney(order.getOrderMoney());
         merVerifyOrderVo.setCouponDiscount(order.getCouponMoney());
         merVerifyOrderVo.setReceivableDeposit(order.getReceivableDeposit());
-        merVerifyOrderVo.setReceivableMoney(order.getReceivableMoney());
+        if(order.getPayType()==1){
+            merVerifyOrderVo.setReceivableMoney(order.getOrderMoney().subtract(order.getPayMoney()));
+        }else{
+            merVerifyOrderVo.setReceivableMoney(order.getOrderMoney().subtract(order.getCouponMoney()).subtract(order.getReceivableDeposit()));
+        }
         merVerifyOrderVo.setPayMoney(order.getPayMoney());
         merVerifyOrderVo.setOrderRemark(order.getOrderRemark());
         merVerifyOrderVo.setAppUserOrderGoodsPageVoList(appUserOrderGoodsPageVoList);
@@ -1468,7 +1507,7 @@
                 merVerifyOrderVo.setReceiveMoney(BigDecimal.ZERO);
             }
         }
-        merVerifyOrderVo.setUnReceiveMoney(merVerifyOrderVo.getRealReceiveMoney().subtract(order.getReceivableMoney()));
+        merVerifyOrderVo.setUnReceiveMoney(merVerifyOrderVo.getRealReceiveMoney().subtract(merVerifyOrderVo.getReceiveMoney()));
         Member member = remoteMemberService.getMember(order.getUserId()).getData();
         merVerifyOrderVo.setUserId(order.getUserId());
         merVerifyOrderVo.setUserName(member.getRealName());
@@ -1480,14 +1519,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;
@@ -1581,22 +1621,41 @@
     @Transactional
     public MerVerifyCouponVo sureVerifyCoupon(MerVerifyCouponDto merVerifyCouponDto) {
         MerVerifyCouponGetVo verifyCouponGetVo = remoteCouponService.getVerifyCoupon(merVerifyCouponDto.getMemberCouponId()).getData();
+        MemberCoupon memberCoupon = verifyCouponGetVo.getMemberCoupon();
         ShopRelUserVo shopRelUserVo = remoteShopService.getShopByUserId(merVerifyCouponDto.getUserId()).getData();
-        if (!shopRelUserVo.getShopId().equals(verifyCouponGetVo.getMemberCoupon().getShopId())) {
-            throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+        Long userId = verifyCouponGetVo.getUserId();
+        Long shopId = shopRelUserVo.getShopId();
+        Shop shop = remoteShopService.getShop(shopId).getData();
+        // 调用remoteMemberService的getMember方法获取Member对象
+        Member member = remoteMemberService.getMember(userId).getData();
+        //如果是商户优惠券,验证商户一致
+        if (memberCoupon.getCouponFrom() == 2 && !memberCoupon.getShopId().equals(shopId)) {
+            if(!memberCoupon.getShopId().equals(member.getRelationShopId())){
+                throw new ServiceException(AppErrorConstant.BLINDING_VERIFY_SHOP_ERROR);
+            }
+            if(!memberCoupon.getShopId().equals(shopId)){
+                throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+            }
         }
+        //如果是平台优惠券,当用户绑定商户时验证商户一致
+        if (memberCoupon.getCouponFrom() == 1 && member.getBindingFlag() == 1) {
+            /*if(!memberCoupon.getShopId().equals(member.getRelationShopId())){
+                throw new ServiceException(AppErrorConstant.BLINDING_VERIFY_SHOP_ERROR);
+            }*/
+            if(!member.getRelationShopId().equals(shopId)){
+                throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+            }
+        }
+        memberCoupon.setShopId(shopId);
         // 创建MerVerifyCouponVo对象
         MerVerifyCouponVo merVerifyCouponVo = new MerVerifyCouponVo();
         // 调用remoteCouponService的getVerifyCoupon方法获取MerVerifyCouponGetVo对象
         List<Goods> goodsList = verifyCouponGetVo.getGoodsList();
-        Long userId = verifyCouponGetVo.getUserId();
-        // 调用remoteMemberService的getMember方法获取Member对象
-        Member member = remoteMemberService.getMember(userId).getData();
         merVerifyCouponVo.setUserName(member.getRealName());
         merVerifyCouponVo.setUserMobile(member.getMobile());
         merVerifyCouponVo.setCouponFrom(verifyCouponGetVo.getCouponFrom());
-        merVerifyCouponVo.setCouponName(verifyCouponGetVo.getMemberCoupon().getCouponName());
-        merVerifyCouponVo.setCreateTime(verifyCouponGetVo.getMemberCoupon().getReceiveTime());
+        merVerifyCouponVo.setCouponName(memberCoupon.getCouponName());
+        merVerifyCouponVo.setCreateTime(memberCoupon.getReceiveTime());
         // 将goodsList转换为MerCouponGoodsListVo列表,并设置相应属性
         List<MerCouponGoodsListVo> merCouponGoodsList = goodsList.stream()
                 .map(goods -> {
@@ -1618,7 +1677,6 @@
                 .collect(Collectors.toList());
         // 设置merVerifyCouponVo的goodsList属性为merCouponGoodsList
         merVerifyCouponVo.setGoodsList(merCouponGoodsList);
-        MemberCoupon memberCoupon = verifyCouponGetVo.getMemberCoupon();
         //生成服务
         ConsumerGoods consumerGoods;
         String consumerGoodsId;
@@ -1659,7 +1717,20 @@
             consumerGoods.setSourceFrom(1);
             consumerGoodsList.add(consumerGoods);
         }
+        MerVerifyMemberCouponDto merVerifyMemberCouponDto = new MerVerifyMemberCouponDto();
+        merVerifyMemberCouponDto.setCouponId(memberCoupon.getId());
+        merVerifyMemberCouponDto.setShopId(shopId);
+        remoteCouponService.sureMemberCoupon(merVerifyMemberCouponDto);
         consumerGoodsService.saveBatchConsumerGoods(consumerGoodsList);
+        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());
+            remoteMemberService.updateMemberBinding(appMemberBindingDto);
+        }
         merVerifyCouponVo.setVerifyStatus(2);
         return merVerifyCouponVo;
     }
@@ -1681,10 +1752,32 @@
             throw new ServiceException(AppErrorConstant.COUPON_USED);
         }
         ShopRelUserVo shopRelUserVo = remoteShopService.getShopByUserId(merVerifyPrizeDto.getUserId()).getData();
-        if (!shopRelUserVo.getShopId().equals(memberGiftRecord.getShopId())) {
+        Long shopId = shopRelUserVo.getShopId();
+        Shop shop = remoteShopService.getShop(shopId).getData();
+        //平台奖品判断
+        if (memberGiftRecord.getGiftFrom() == 1) {
+            BirthdayCard birthdayCard = remoteMemberService.getBirthdayCard().getData();
+            //判断生日活动状态
+            if(birthdayCard!=null&&birthdayCard.getCardStatus()==1){
+                shop = remoteShopService.getShop(shopId).getData();
+                //判断指定区域全部店铺
+                if(birthdayCard.getAreaFlag()==2&&birthdayCard.getShopFlag()==1&&!StringUtils.checkString(birthdayCard.getDesignatedArea(),shop.getShopCityCode())){
+                    throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+                }
+                //判断指定店铺
+                if(birthdayCard.getShopFlag()==2&&!StringUtils.checkString(birthdayCard.getApplicableShop(),shopId.toString())){
+                    throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+                }
+            }else{
+                throw new ServiceException(AppErrorConstant.BIRTHDAY_CARD_ERROR);
+            }
+        }
+        //商户奖品判断
+        if (memberGiftRecord.getGiftFrom() == 2 && !memberGiftRecord.getShopId().equals(shopId)) {
             throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
         }
         Member member = remoteMemberService.getMember(memberGiftRecord.getUserId()).getData();
+
         merVerifyAwardVo.setUserName(member.getRealName());
         merVerifyAwardVo.setUserMobile(member.getMobile());
         if (memberGiftRecord.getGiftFrom() == 1) {
@@ -1742,15 +1835,17 @@
                 break;
         }
         merVerifyAwardVo.setCreateTime(memberGiftRecord.getCreateTime());
-        memberGiftRecord.setVerifyStatus(2);
-        memberGiftRecord.setVerifyTime(new Date());
+        MerVerifyPrizeFinalDto merVerifyPrizeFinalDto = new MerVerifyPrizeFinalDto();
+        merVerifyPrizeFinalDto.setPrizeId(memberGiftRecord.getPrizeId());
+        merVerifyPrizeFinalDto.setShopId(shop.getShopId());
+        remoteMemberService.verifyPrize(merVerifyPrizeFinalDto);
         if (member.getBindingFlag() != 1) {
             AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto();
             appMemberBindingDto.setBindingFlag(1);
-            appMemberBindingDto.setShopId(merVerifyPrizeDto.getShopId());
-            Shop shop = remoteShopService.getShop(merVerifyPrizeDto.getShopId()).getData();
+            appMemberBindingDto.setBindingType(5);
+            appMemberBindingDto.setShopId(shop.getShopId());
             appMemberBindingDto.setShopName(shop.getShopName());
-            appMemberBindingDto.setUserId(merVerifyPrizeDto.getUserId());
+            appMemberBindingDto.setUserId(memberGiftRecord.getUserId());
             remoteMemberService.updateMemberBinding(appMemberBindingDto);
         }
         merVerifyAwardVo.setPrizeId(merVerifyPrizeDto.getPrizeId());
@@ -1769,15 +1864,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;
     }
 
@@ -1793,9 +1890,9 @@
         order.setOffPayTime(new Date());
         order.setPayMoney(order.getPayMoney().add(merCloseOrderDto.getPayMoney()));
         if (order.getPayMoney().compareTo(order.getChangeReceivableMoney()) >= 0) {
-            order.setCloseFlag(0);
-        } else {
             order.setCloseFlag(1);
+        } else {
+            order.setCloseFlag(0);
         }
         this.saveOrUpdate(order);
         //创建支付记录
@@ -1838,7 +1935,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);
@@ -1847,6 +1943,7 @@
                 member.setRealName(name);
                 member.setNickName(name);
                 member.setBindingFlag(1);
+                member.setBindingType(3);
                 member.setRelationShopId(shopId);
                 member.setRelationShopName(shop.getShopName());
                 remoteMemberService.createNewMember(member);
@@ -1892,6 +1989,12 @@
         BigDecimal experienceMoney = new BigDecimal("0.00");
         BigDecimal serviceMoney = new BigDecimal("0.00");
         BigDecimal goodsMoney = new BigDecimal("0.00");
+        List<OrderGoods> orderGoodsList = new ArrayList<>();
+        ConsumerGoods consumerGoods;
+        String consumerGoodsId;
+        List<ConsumerGoods> consumerGoodsList = new ArrayList<>();
+        //使用优惠券
+        StringJoiner memberCouponSJ = new StringJoiner(",");
         for (AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList) {
             goodsId = appBuyGoodsDto.getGoodsId();
             memberCouponId = appBuyGoodsDto.getMemberCouponId();
@@ -1926,14 +2029,18 @@
                     } 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);
                     }
+                    if(goodsRealPrice.compareTo(BigDecimal.ZERO)<0){
+                        goodsRealPrice = BigDecimal.ZERO;
+                        discountMoney = goodsTotalPrice.subtract(goodsRealPrice);
+                    }
+                    memberCouponSJ.add(memberCouponId);
                 }
             }
-
             goodsDeposit = goods.getSubscription();
             if (goodsDeposit == null || goodsDeposit.compareTo(BigDecimal.ZERO) == 0) {
                 goodsDeposit = new BigDecimal("0.00");
@@ -1945,6 +2052,7 @@
             couponDiscount = couponDiscount.add(discountMoney);
             orderPayDeposit = orderPayDeposit.add(goodsDeposit);
             orderPayMoney = orderPayMoney.add(goodsRealPrice);
+
             //创建OrderGoods
             orderGoods = new OrderGoods();
             orderGoodsId = IdUtils.simpleUUID();
@@ -1966,7 +2074,63 @@
             orderGoods.setGoodsName(goods.getGoodsName());
             orderGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
             orderGoods.setGoodsPicture(goodsFile.getFileUrl());
-            orderGoodsService.save(orderGoods);
+            orderGoodsList.add(orderGoods);
+
+            //创建服务
+            Integer buyGoodsNum = orderGoods.getBuyNum();
+            //判断是否确认次数
+            if (orderGoods.getCycleNumFlag() == 0) {
+                consumerGoods = new ConsumerGoods();
+                consumerGoodsId = IdUtils.simpleUUID();
+                consumerGoods.setConsumerGoodsId(consumerGoodsId);
+                consumerGoods.setDelFlag(0);
+                consumerGoods.setServiceStatus(1);
+                consumerGoods.setShopId(shopId);
+                consumerGoods.setUserId(userId);
+                consumerGoods.setOrderId(orderId);
+                consumerGoods.setOrderGoodsId(orderGoodsId);
+                consumerGoods.setGoodsId(orderGoods.getGoodsId());
+                consumerGoods.setGoodsName(orderGoods.getGoodsName());
+                consumerGoods.setCycleNumFlag(orderGoods.getCycleNumFlag());
+                consumerGoods.setServiceNum(orderGoods.getServiceNum());
+                consumerGoods.setUsedNum(0);
+                consumerGoods.setGoodsType(orderGoods.getGoodsType());
+                consumerGoods.setGoodsTag(orderGoods.getGoodsTag());
+                consumerGoods.setCreateTime(nowTime);
+                consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
+                consumerGoods.setGoodsPicture(orderGoods.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();
+                    consumerGoodsId = IdUtils.simpleUUID();
+                    consumerGoods.setConsumerGoodsId(consumerGoodsId);
+                    consumerGoods.setDelFlag(0);
+                    consumerGoods.setServiceStatus(1);
+                    consumerGoods.setShopId(shopId);
+                    consumerGoods.setUserId(userId);
+                    consumerGoods.setOrderId(orderId);
+                    consumerGoods.setOrderGoodsId(orderGoodsId);
+                    consumerGoods.setGoodsId(orderGoods.getGoodsId());
+                    consumerGoods.setGoodsName(orderGoods.getGoodsName());
+                    consumerGoods.setCycleNumFlag(orderGoods.getCycleNumFlag());
+                    consumerGoods.setServiceNum(orderGoods.getServiceNum());
+                    consumerGoods.setUsedNum(0);
+                    consumerGoods.setGoodsType(orderGoods.getGoodsType());
+                    consumerGoods.setGoodsTag(orderGoods.getGoodsTag());
+                    consumerGoods.setCreateTime(nowTime);
+                    consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
+                    consumerGoods.setGoodsPicture(orderGoods.getGoodsPicture());
+                    consumerGoods.setGoodsNurses(goods.getGoodsNurses());
+                    consumerGoods.setSourceFrom(1);
+                    consumerGoodsList.add(consumerGoods);
+                }
+            }
+
+            //商户变更计算
             switch (orderGoods.getGoodsType()) {
                 case 1:
                     cycleMoney = cycleMoney.add(orderGoods.getGoodsReceivableMoney());
@@ -1997,16 +2161,14 @@
         order.setCouponMoney(couponDiscount);
         order.setDiscountMoney(couponDiscount);
         order.setReceivableMoney(orderPayMoney);
-        order.setReceivableDeposit(new BigDecimal("0.00"));
+        order.setReceivableDeposit(orderPayDeposit);
         order.setPayType(1);
+        //判断实收金额
         if (merNewOrderDto.getChangeMoney() != null) {
             order.setChangeReceivableMoney(merNewOrderDto.getChangeMoney());
         } else {
             order.setChangeReceivableMoney(orderPayMoney);
         }
-        order.setPayMoney(orderPayMoney);
-        order.setOnlinePayMoney(new BigDecimal("0.00"));
-        order.setOfflinePayMoney(orderPayMoney);
         order.setOrderRemark(merNewOrderDto.getOrderRemark());
         order.setGoodsNum(goodsNum);
         order.setCreateTime(nowTime);
@@ -2015,75 +2177,24 @@
         order.setPayMoney(merNewOrderDto.getPayMoney());
         order.setOnlinePayMoney(new BigDecimal("0.00"));
         order.setOfflinePayMoney(merNewOrderDto.getPayMoney());
+        order.setPayMoney(merNewOrderDto.getPayMoney());
         order.setOffPayTime(nowTime);
         order.setPayType(1);
+        //判断结清
         if (order.getPayMoney().compareTo(order.getChangeReceivableMoney()) >= 0) {
-            order.setCloseFlag(0);
-        } else {
             order.setCloseFlag(1);
+        } else {
+            order.setCloseFlag(0);
         }
+        //保存订单和服务
         this.save(order);
-        //创建服务
-        List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listAppVoByOrderId(orderId);
-        ConsumerGoods consumerGoods;
-        String consumerGoodsId;
-        List<ConsumerGoods> consumerGoodsList = new ArrayList<>();
-        for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) {
-            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.setGoodsTag(appUserOrderGoodsPageVo.getGoodsTag());
-                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.setGoodsTag(appUserOrderGoodsPageVo.getGoodsTag());
-                    consumerGoods.setCreateTime(nowTime);
-                    consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction());
-                    consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture());
-                    consumerGoods.setGoodsNurses(goods.getGoodsNurses());
-                    consumerGoods.setSourceFrom(1);
-                    consumerGoodsList.add(consumerGoods);
-                }
-            }
-        }
+        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) {
             //绑定商户
@@ -2092,23 +2203,25 @@
             appMemberBindingDto.setShopName(shop.getShopName());
             appMemberBindingDto.setUserId(userId);
             appMemberBindingDto.setBindingFlag(1);
+            appMemberBindingDto.setBindingType(3);
             remoteMemberService.updateMemberBinding(appMemberBindingDto);
         }
-        ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto();
+        //更新商户统计
+        /*ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto();
         shopTotalChangeDto.setShopId(order.getShopId());
         shopTotalChangeDto.setOrderType(1);
         shopTotalChangeDto.setCycleMoney(cycleMoney);
         shopTotalChangeDto.setServiceMoney(serviceMoney);
         shopTotalChangeDto.setExperienceMoney(experienceMoney);
         shopTotalChangeDto.setGoodsMoney(goodsMoney);
-        remoteShopService.changeShopTotal(shopTotalChangeDto);
+        remoteShopService.changeShopTotal(shopTotalChangeDto);*/
         //创建支付记录
         PayRecord payRecord = new PayRecord();
         payRecord.setDelFlag(0);
         payRecord.setOrderId(orderId);
         payRecord.setPayMoney(order.getPayMoney());
-        payRecord.setPayTime(order.getPayTime());
-        payRecord.setPayType(2);
+        payRecord.setPayTime(order.getOffPayTime());
+        payRecord.setPayType(merNewOrderDto.getPayType());
         payRecordService.save(payRecord);
     }
 
@@ -2120,10 +2233,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());
@@ -2131,6 +2246,8 @@
                 merOrderPageDto.setMemberUserId(null);
             }
         }
+
+        // 获取订单列表
         List<MerOrderPageVo> merOrderPageVoList = orderMapper.pageMerOrder(page, merOrderPageDto);
         if (merOrderPageVoList != null && !merOrderPageVoList.isEmpty()) {
             Long userId;
@@ -2139,16 +2256,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 = "线下创建";
                     }
@@ -2156,16 +2274,22 @@
                     orderFromDesc = "商城订单";
                 }
                 merOrderPageVo.setOrderFromDesc(orderFromDesc);
-                merOrderPageVo.setUnPaidMoney(merOrderPageVo.getPayMoney().subtract(merOrderPageVo.getReceiveMoney()));
+                // 设置未支付金额为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());
@@ -2185,13 +2309,15 @@
      * @return
      */
     @Override
-    public List<MerMemberNoClearOrderVo> pageMerMemberOrder(Page page, MerMemberNoClearOrderDto merMemberNoClearOrderDto) {
-        List<MerMemberNoClearOrderVo> merMemberNoClearOrderVoList = orderMapper.pageMerMemberOrder(page, merMemberNoClearOrderDto.getMemberUserId());
+    public List<MerMemberOrderVo> pageMerMemberOrder(Page page, MerMemberNoClearOrderDto merMemberNoClearOrderDto) {
+        List<MerMemberOrderVo> merMemberNoClearOrderVoList = orderMapper.pageMerMemberOrder(page, merMemberNoClearOrderDto.getMemberUserId(),merMemberNoClearOrderDto.getShopId());
         if (merMemberNoClearOrderVoList != null && !merMemberNoClearOrderVoList.isEmpty()) {
             BigDecimal zeroBig = new BigDecimal("0.00");
-            for (MerMemberNoClearOrderVo merMemberNoClearOrderVo : merMemberNoClearOrderVoList) {
-                merMemberNoClearOrderVo.setUnPaidMoney(merMemberNoClearOrderVo.getReceivableMoney().subtract(merMemberNoClearOrderVo.getPayMoney()));
+            for (MerMemberOrderVo merMemberNoClearOrderVo : merMemberNoClearOrderVoList) {
                 if (merMemberNoClearOrderVo.getUnPaidMoney() == null) {
+                    merMemberNoClearOrderVo.setUnPaidMoney(zeroBig);
+                }
+                if(merMemberNoClearOrderVo.getUnPaidMoney().compareTo(zeroBig)<0){
                     merMemberNoClearOrderVo.setUnPaidMoney(zeroBig);
                 }
             }
@@ -3119,6 +3245,9 @@
      */
     @Override
     public MerVerifyCouponVo verifyCoupon(String verifyCode, Long shopId) {
+        if(verifyCode.contains("+")){
+            verifyCode = verifyCode.substring(0, verifyCode.indexOf("+"));
+        }
         // 创建MerVerifyCouponVo对象
         MerVerifyCouponVo merVerifyCouponVo = new MerVerifyCouponVo();
         // 调用remoteCouponService的getVerifyCoupon方法获取MerVerifyCouponGetVo对象
@@ -3133,28 +3262,40 @@
         } else if (couponStatus != 1) {
             throw new ServiceException(AppErrorConstant.COUPON_NO_FIND);
         }
+        Long userId = verifyCouponGetVo.getUserId();
+        Member member = remoteMemberService.getMember(userId).getData();
+        //如果是商户优惠券,验证商户一致
         if (memberCoupon.getCouponFrom() == 2 && !memberCoupon.getShopId().equals(shopId)) {
-            throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+            if(!memberCoupon.getShopId().equals(member.getRelationShopId())){
+                throw new ServiceException(AppErrorConstant.BLINDING_VERIFY_SHOP_ERROR);
+            }
+            if(!memberCoupon.getShopId().equals(shopId)){
+                throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+            }
         }
-        //如果是平台优惠券
-        if (memberCoupon.getCouponFrom() == 1 && memberCoupon.getShopId() == null) {
-            memberCoupon.setShopId(shopId);
+        //如果是平台优惠券,当用户绑定商户时验证商户一致
+        if (memberCoupon.getCouponFrom() == 1 && member.getBindingFlag() == 1) {
+            /*if(!memberCoupon.getShopId().equals(member.getRelationShopId())){
+                throw new ServiceException(AppErrorConstant.BLINDING_VERIFY_SHOP_ERROR);
+            }*/
+            if(!member.getRelationShopId().equals(shopId)){
+                throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+            }
         }
         List<Goods> goodsList = verifyCouponGetVo.getGoodsList();
-        Long userId = verifyCouponGetVo.getUserId();
         // 调用remoteMemberService的getMember方法获取Member对象
-        Member member = remoteMemberService.getMember(userId).getData();
         merVerifyCouponVo.setUserName(member.getRealName());
         merVerifyCouponVo.setUserMobile(member.getMobile());
         merVerifyCouponVo.setCouponFrom(verifyCouponGetVo.getCouponFrom());
-        merVerifyCouponVo.setCouponName(verifyCouponGetVo.getMemberCoupon().getCouponName());
-        merVerifyCouponVo.setCreateTime(verifyCouponGetVo.getMemberCoupon().getReceiveTime());
+        merVerifyCouponVo.setCouponName(memberCoupon.getCouponName());
+        merVerifyCouponVo.setCreateTime(memberCoupon.getReceiveTime());
         // 将goodsList转换为MerCouponGoodsListVo列表,并设置相应属性
         List<MerCouponGoodsListVo> merCouponGoodsList = goodsList.stream()
                 .map(goods -> {
                     MerCouponGoodsListVo merCouponGoods = new MerCouponGoodsListVo();
                     merCouponGoods.setGoodsId(goods.getGoodsId());
                     merCouponGoods.setGoodsName(goods.getGoodsName());
+                    merCouponGoods.setGoodsNum(1);
                     if (goods.getGoodsType() == 1) {
                         merCouponGoods.setGoodsType("周期");
                     } else if (goods.getGoodsType() == 2) {
@@ -3171,6 +3312,7 @@
         // 设置merVerifyCouponVo的goodsList属性为merCouponGoodsList
         merVerifyCouponVo.setGoodsList(merCouponGoodsList);
         merVerifyCouponVo.setVerifyStatus(1);
+        merVerifyCouponVo.setMemberCouponId(memberCoupon.getId());
         return merVerifyCouponVo;
     }
 
@@ -3189,10 +3331,37 @@
         if (memberGiftRecord == null || memberGiftRecord.getVerifyStatus() != 1) {
             throw new ServiceException(AppErrorConstant.COUPON_USED);
         }
+        Shop shop = null;
+        Member member = remoteMemberService.getMember(memberGiftRecord.getUserId()).getData();
+        //判断是否在绑定店铺核销
+        if(member.getBindingFlag()==1){
+            if(!member.getRelationShopId().equals(shopId)){
+                throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+            }
+        }
+        //平台奖品判断
+        if (memberGiftRecord.getGiftFrom() == 1) {
+            BirthdayCard birthdayCard = remoteMemberService.getBirthdayCard().getData();
+            //判断生日活动状态
+            if(birthdayCard!=null&&birthdayCard.getCardStatus()==1){
+                shop = remoteShopService.getShop(shopId).getData();
+                //判断指定区域全部店铺
+                if(birthdayCard.getAreaFlag()==2&&birthdayCard.getShopFlag()==1&&!StringUtils.checkString(birthdayCard.getDesignatedArea(),shop.getShopCityCode())){
+                    throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+                }
+                //判断指定店铺
+                if(birthdayCard.getShopFlag()==2&&!StringUtils.checkString(birthdayCard.getApplicableShop(),shopId.toString())){
+                    throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+                }
+            }else{
+                throw new ServiceException(AppErrorConstant.BIRTHDAY_CARD_ERROR);
+            }
+        }
+        //商户奖品判断
         if (memberGiftRecord.getGiftFrom() == 2 && !memberGiftRecord.getShopId().equals(shopId)) {
             throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
         }
-        Member member = remoteMemberService.getMember(memberGiftRecord.getUserId()).getData();
+
         merVerifyAwardVo.setUserName(member.getRealName());
         merVerifyAwardVo.setUserMobile(member.getMobile());
         if (memberGiftRecord.getGiftFrom() == 1) {
@@ -3200,8 +3369,8 @@
         } else {
             merVerifyAwardVo.setGiftFrom("商户生日卡");
         }
-
         merVerifyAwardVo.setGiftType(memberGiftRecord.getGiftType());
+        //礼物类型1优惠券2商品3现金4实物
         switch (memberGiftRecord.getGiftType()) {
             case 1:
                 merVerifyAwardVo.setGiftName(memberGiftRecord.getCouponName());
@@ -3265,7 +3434,9 @@
             merTotalDto.setShopIdList(shopIdList);
             merTotalDto.setShopId(null);
         }
+        //线上线下活动订单
         MerOrderTotalVo orderTotalVo = orderMapper.getMerOrderTotalOrderFrom(merTotalDto);
+        //分类型订单
         MerOrderTotalVo goodsTypeVo = orderMapper.getMerTotalOrderTotalGoodsType(merTotalDto);
         orderTotalVo.setCycleTotal(goodsTypeVo.getCycleTotal());
         orderTotalVo.setCycleMoney(goodsTypeVo.getCycleMoney());
@@ -3672,14 +3843,14 @@
         //更新商品统计
         remoteGoodsService.changeGoodsTotal(goodsTotalChangeDtoList);
         // 更新商户统计信息
-        ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto();
+        /*ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto();
         shopTotalChangeDto.setShopId(order.getShopId());
         shopTotalChangeDto.setOrderType(1);
         shopTotalChangeDto.setCycleMoney(cycleMoney);
         shopTotalChangeDto.setServiceMoney(serviceMoney);
         shopTotalChangeDto.setExperienceMoney(experienceMoney);
         shopTotalChangeDto.setGoodsMoney(goodsMoney);
-        remoteShopService.changeShopTotal(shopTotalChangeDto);
+        remoteShopService.changeShopTotal(shopTotalChangeDto);*/
         // 初始化会员统计信息
         MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto();
         memberTotalChangeDto.setUserId(order.getUserId());
@@ -3848,14 +4019,14 @@
             }
         }
         // 更新商户统计信息
-        ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto();
+        /*ShopTotalChangeDto shopTotalChangeDto = new ShopTotalChangeDto();
         shopTotalChangeDto.setOrderType(2);
         shopTotalChangeDto.setShopId(order.getShopId());
         shopTotalChangeDto.setCycleMoney(cycleMoney);
         shopTotalChangeDto.setServiceMoney(serviceMoney);
         shopTotalChangeDto.setExperienceMoney(experienceMoney);
         shopTotalChangeDto.setGoodsMoney(goodsMoney);
-        remoteShopService.changeShopTotal(shopTotalChangeDto);
+        remoteShopService.changeShopTotal(shopTotalChangeDto);*/
         // 初始化会员统计信息
         MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto();
         memberTotalChangeDto.setUserId(order.getUserId());
@@ -4363,6 +4534,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