From 4b759541dfa1de220f176b5688e0e46b3414e388 Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期一, 18 九月 2023 18:08:28 +0800
Subject: [PATCH] bug

---
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/AppGetAbleCouponPageVo.java            |    8 
 ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml                                  |    8 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerCouponGetVo.java                    |    6 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java |   55 ++++---
 ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberCouponMapper.xml                         |    2 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppCouponController.java      |    3 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java       |  108 +++++++++++----
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java               |    2 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java       |    4 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtCouponGetVo.java                    |    4 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java           |   84 ++++++++----
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtCouponEditDto.java                 |    4 
 ruoyi-modules/ruoyi-member/src/main/resources/mapper/coupon/CouponMapper.xml                               |   13 +
 ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml                               |    3 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffShopTaskPageVo.java                   |    3 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskServiceImpl.java           |   33 +++-
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerCouponEditDto.java                 |    6 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberCouponService.java          |    3 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/AppMemberCouponPageVo.java             |    8 
 ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml                                     |    2 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerGoodsCouponListDto.java            |   12 +
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/coupon/Coupon.java                   |    4 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/coupon/CouponMapper.java                  |    9 +
 23 files changed, 264 insertions(+), 120 deletions(-)

diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppCouponController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppCouponController.java
index 959450a..bb0db64 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppCouponController.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppCouponController.java
@@ -73,10 +73,11 @@
     public R<Page<AppMemberCouponPageVo>> pageAppUserGetCoupon(@RequestBody AppMemberCouponPageDto appMemberCouponPageDto) {
         Long userId = SecurityUtils.getUserId();
         appMemberCouponPageDto.setUserId(userId);
+        Member member = memberService.getByUserId(userId);
         Page<AppMemberCouponPageVo> page = new Page<>();
         page.setSize(appMemberCouponPageDto.getPageSize());
         page.setCurrent(appMemberCouponPageDto.getPageNum());
-        List<AppMemberCouponPageVo> memberCouponPageVoList = memberCouponService.pageAppUserGetCoupon(page,appMemberCouponPageDto);
+        List<AppMemberCouponPageVo> memberCouponPageVoList = memberCouponService.pageAppUserGetCoupon(page,appMemberCouponPageDto, member);
         return R.ok(page.setRecords(memberCouponPageVoList));
     }
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerCouponEditDto.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerCouponEditDto.java
index 1eafcec..87d178c 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerCouponEditDto.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerCouponEditDto.java
@@ -76,4 +76,10 @@
     @ApiModelProperty(value = "宣传海报")
     private String propagandaPoster;
 
+    @ApiModelProperty(value = "发放限制数量")
+    private Integer sendLimitNumber;
+
+    @ApiModelProperty(value = "发放限制0否1是")
+    private Integer sendLimitFlag;
+
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerGoodsCouponListDto.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerGoodsCouponListDto.java
index aed3e14..53d779a 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerGoodsCouponListDto.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerGoodsCouponListDto.java
@@ -20,15 +20,17 @@
     @ApiModelProperty(value = "会员用户id")
     private Long memberUserId;
 
-    @ApiModelProperty(value = "商品id")
+    @ApiModelProperty(value = "商品id 可不传 传了只获取对应商品可用优惠券")
     private String goodsId;
 
-    @ApiModelProperty(value = "购买数量")
+    @ApiModelProperty(value = "已选优惠券表 可不传 和goodsId关联 传了自动过滤非本goodsId已选优惠券")
+    private List<MemberSelectCouponDto> goodsCpuponList;
+
+    @ApiModelProperty(value = "购买数量 可不传 和salesPrice关联 传了自动过滤不满足金额门槛的优惠券")
     private Integer buyNum;
 
-    @ApiModelProperty(value = "商品售价")
+    @ApiModelProperty(value = "商品售价 可不传 和buyNum关联 传了自动过滤不满足金额门槛的满减优惠券")
     private BigDecimal salesPrice;
 
-    @ApiModelProperty(value = "已选优惠券表")
-    private List<MemberSelectCouponDto> goodsCpuponList;
+
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtCouponEditDto.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtCouponEditDto.java
index 48b1153..010ef12 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtCouponEditDto.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtCouponEditDto.java
@@ -89,8 +89,8 @@
     private String propagandaPoster;
 
     @ApiModelProperty(value = "发放限制数量")
-    private String sendLimitNumber;
+    private Integer sendLimitNumber;
 
     @ApiModelProperty(value = "发放限制0否1是")
-    private String sendLimitFlag;
+    private Integer sendLimitFlag;
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/coupon/Coupon.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/coupon/Coupon.java
index 9a7179e..31e9e4c 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/coupon/Coupon.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/coupon/Coupon.java
@@ -195,12 +195,12 @@
      * 发放限制数量
      */
     @TableField("send_limit_number")
-    private String sendLimitNumber;
+    private Integer sendLimitNumber;
     /**
      * 发放限制0否1是
      */
     @TableField("send_limit_flag")
-    private String sendLimitFlag;
+    private Integer sendLimitFlag;
 
 
     @Override
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/AppGetAbleCouponPageVo.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/AppGetAbleCouponPageVo.java
index c1a7e59..cb5ba18 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/AppGetAbleCouponPageVo.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/AppGetAbleCouponPageVo.java
@@ -4,7 +4,6 @@
 import lombok.Data;
 
 import java.math.BigDecimal;
-import java.util.List;
 
 /**
  * @ClassName AppUnGetCouponPageVo
@@ -32,8 +31,11 @@
     @ApiModelProperty(value ="优惠券关联商品",hidden = true)
     private String relGoodsIds;
 
-    @ApiModelProperty(value = "使用限制")
-    private List<String> goodsLimitList;
+    @ApiModelProperty(value = "商户限制")
+    private String shopLimit;
+
+    @ApiModelProperty(value = "商品限制")
+    private String goodsLimit;
 
     @ApiModelProperty(value = "门槛金额")
     private BigDecimal moneyThreshold;
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/AppMemberCouponPageVo.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/AppMemberCouponPageVo.java
index 64b383a..28edcc7 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/AppMemberCouponPageVo.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/AppMemberCouponPageVo.java
@@ -6,7 +6,6 @@
 
 import java.math.BigDecimal;
 import java.util.Date;
-import java.util.List;
 
 /**
  * @ClassName AppMemberCouponPageVo
@@ -33,8 +32,11 @@
     @ApiModelProperty(value ="优惠券关联商品",hidden = true)
     private String relGoodsIds;
 
-    @ApiModelProperty(value = "使用限制")
-    private List<String> goodsLimitList;
+    @ApiModelProperty(value = "商户限制")
+    private String shopLimit;
+
+    @ApiModelProperty(value = "商品限制")
+    private String goodsLimit;
 
     @ApiModelProperty(value = "门槛金额")
     private BigDecimal moneyThreshold;
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerCouponGetVo.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerCouponGetVo.java
index 351becf..ab80ee3 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerCouponGetVo.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerCouponGetVo.java
@@ -80,4 +80,10 @@
 
     @ApiModelProperty(value = "宣传海报")
     private String propagandaPoster;
+
+    @ApiModelProperty(value = "发放限制数量")
+    private Integer sendLimitNumber;
+
+    @ApiModelProperty(value = "发放限制0否1是")
+    private Integer sendLimitFlag;
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtCouponGetVo.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtCouponGetVo.java
index b1419e4..07669b6 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtCouponGetVo.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtCouponGetVo.java
@@ -83,8 +83,8 @@
     private String propagandaPoster;
 
     @ApiModelProperty(value = "发放限制数量")
-    private String sendLimitNumber;
+    private Integer sendLimitNumber;
 
     @ApiModelProperty(value = "发放限制0否1是")
-    private String sendLimitFlag;
+    private Integer sendLimitFlag;
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/coupon/CouponMapper.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/coupon/CouponMapper.java
index e52c74c..b9d1752 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/coupon/CouponMapper.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/coupon/CouponMapper.java
@@ -95,6 +95,15 @@
 
 
     /**
+     * @description  获取不能获取的优惠券id
+     * @author  jqs
+     * @date    2023/7/9 18:06
+     * @return  List<Long>
+     */
+    List<String> listUnGetCoupon();
+
+
+    /**
      * @description  可领取优惠券列表
      * @author  jqs
      * @date    2023/7/11 10:32
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java
index 844dddb..d6d524e 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java
@@ -23,7 +23,6 @@
 import com.ruoyi.system.api.domain.poji.goods.Goods;
 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.shop.Shop;
 import com.ruoyi.system.api.domain.vo.MerGoodsPriceListVo;
 import com.ruoyi.system.api.domain.vo.MgtSimpleShopVo;
 import com.ruoyi.system.api.service.RemoteActivityService;
@@ -120,7 +119,6 @@
                     useLimit = "满" + moneyThreshold.toString() + "减" + discountMoney.toString() + "元";
                 }
                 if(couponType.equals("折扣")){
-                    moneyThreshold = mgtCouponPageVo.getMoneyThreshold();
                     discountPercent = mgtCouponPageVo.getDiscountPercent();
                     useLimit = discountPercent.toString() + "折";
                 }
@@ -301,6 +299,8 @@
         coupon.setRelationActivityType(mgtCouponEditDto.getRelationActivityType());
         coupon.setRelationActivityId(mgtCouponEditDto.getRelationActivityId());
         coupon.setPropagandaPoster(mgtCouponEditDto.getPropagandaPoster());
+        coupon.setSendLimitNumber(mgtCouponEditDto.getSendLimitNumber());
+        coupon.setSendLimitFlag(mgtCouponEditDto.getSendLimitFlag());
         //判断是否指定商品
         if(coupon.getUseScope()==2&&!mgtCouponEditDto.getRelGoodsIdList().isEmpty()){
             List<String> relGoodsIdList = mgtCouponEditDto.getRelGoodsIdList();
@@ -986,6 +986,7 @@
             couponRelGoodsService.deleteCouponRelByCouponId(coupon.getCouponId());
             coupon.setCouponStatus(1);
         }else{
+            //初始化新优惠券
             coupon = new Coupon();
             String couponId = IdUtils.simpleUUID();
             coupon.setCouponId(couponId);
@@ -1026,6 +1027,8 @@
         coupon.setUpdateUserId(merCouponEditDto.getUserId());
         coupon.setRelationType(1);
         coupon.setPropagandaPoster(merCouponEditDto.getPropagandaPoster());
+        coupon.setSendLimitNumber(merCouponEditDto.getSendLimitNumber());
+        coupon.setSendLimitFlag(merCouponEditDto.getSendLimitFlag());
         //判断是否指定商品
         if(coupon.getUseScope()==2&&!merCouponEditDto.getRelGoodsIdList().isEmpty()){
             List<String> relGoodsIdList = merCouponEditDto.getRelGoodsIdList();
@@ -1089,19 +1092,27 @@
      */
     @Override
     public void sendCouponGift(List<BirthdayGiftSendDto> giftSendDtoList){
+        // 获取第一个用户和商店的ID
         Long userId = giftSendDtoList.get(0).getUserId();
         Long shopId = giftSendDtoList.get(0).getShopId();
+
+        // 初始化变量
         String couponId;
         Coupon coupon;
         List<MemberCoupon> memberCouponList = new ArrayList<>();
         MemberCoupon memberCoupon;
         String memberCouponId;
+
+        // 遍历生日礼物发送DTO列表
         for(BirthdayGiftSendDto birthdayGiftSendDto : giftSendDtoList){
+            // 获取优惠券ID并查询优惠券信息
             couponId = birthdayGiftSendDto.getCouponId();
             coupon = this.getById(couponId);
+            // 判断优惠券是否存在或已失效
             if(coupon==null||coupon.getCouponStatus()!=1){
                 throw new ServiceException(AppErrorConstant.COUPON_GET_ERROR);
             }
+            // 根据优惠券数量生成会员优惠券列表
             for(int i=0;i<birthdayGiftSendDto.getCouponNumber();i++){
                 memberCoupon = new MemberCoupon();
                 memberCouponId = IdUtils.simpleUUID();
@@ -1110,6 +1121,7 @@
                 memberCoupon.setCouponId(couponId);
                 memberCoupon.setUserId(userId);
                 memberCoupon.setShopId(shopId);
+                // 根据优惠券类型设置会员优惠券信息
                 if(coupon.getCouponType()==1){
                     memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold());
                     memberCoupon.setDiscountMoney(coupon.getDiscountMoney());
@@ -1127,6 +1139,7 @@
                 memberCoupon.setSendTimeType(coupon.getSendTimeType());
                 memberCoupon.setSendTime(coupon.getSendTime());
                 memberCoupon.setUseScope(coupon.getUseScope());
+                // 如果优惠券适用范围为指定商品,则设置关联商品ID
                 if(memberCoupon.getUseScope()==2){
                     memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds());
                 }
@@ -1136,7 +1149,7 @@
                 memberCoupon.setValidDay(coupon.getValidDay());
                 memberCoupon.setCouponFrom(coupon.getCouponFrom());
                 memberCoupon.setReceiveTime(new Date());
-                //有效期处理1.时间段2.领取之日起
+                // 根据有效期类型设置会员优惠券的截止时间
                 if(coupon.getValidTimeType()==1){
                     memberCoupon.setDeadlineTime(coupon.getValidEndTime());
                 }else if(coupon.getValidTimeType()==2){
@@ -1144,8 +1157,10 @@
                 }
                 memberCouponList.add(memberCoupon);
             }
+            // 更新会员优惠券记录
             memberCouponRecordService.updateMemberCouponRecord(coupon,userId,birthdayGiftSendDto.getCouponNumber());
         }
+        // 批量保存会员优惠券列表
         memberCouponService.saveBatch(memberCouponList);
     }
 
@@ -1159,41 +1174,64 @@
      */
     @Override
     public List<AppGetAbleCouponPageVo> pageAppUserGetAbleCoupon(Page page, AppPageDto appPageDto, Member member){
+        //获取用户当前已领取完优惠券
+        List<String> unUserGetList = couponMapper.listUserUnGetCoupon(appPageDto.getUserId());
         //获取当前已领取完优惠券
-        List<String> unGetList = couponMapper.listUserUnGetCoupon(appPageDto.getUserId());
+        List<String> unGetList = couponMapper.listUnGetCoupon();
+        //合并不可领取优惠券列表
+        HashSet<String> mergedList = new HashSet<>();
+        mergedList.addAll(unUserGetList);
+        mergedList.addAll(unGetList);
+        unGetList = new ArrayList<>(mergedList);
         List<AppGetAbleCouponPageVo> getAbleCouponPageVoList = couponMapper.getAbleCouponPageVoList(page, member.getRelationShopId(),member.getUserId(),member.getBindingFlag(), unGetList);
         //处理商品限制
         if(!getAbleCouponPageVoList.isEmpty()){
             String relGoodsIds;
-            List<Goods> goodsList;
-            List<String> goodsLimitList = null;
-            Shop shop = null;
-            for(AppGetAbleCouponPageVo appGetAbleCouponPageVo : getAbleCouponPageVoList){
-                relGoodsIds = appGetAbleCouponPageVo.getRelGoodsIds();
-                if(StringUtils.isNotBlank(relGoodsIds)){
-                    goodsList = remoteGoodsService.listGoodsByGoodsId(relGoodsIds).getData();
-                    if(goodsList!=null&&!goodsList.isEmpty()){
-                        goodsLimitList = goodsList.stream().map(goods -> {
-                            String goodsName = goods.getGoodsName();
-                            goodsName = "限制" + goodsName + "适用";
-                            return goodsName;
-                        }).collect(Collectors.toList());
-                    }
-                }else{
-                    goodsLimitList = new ArrayList<>();
-                    if(appGetAbleCouponPageVo.getShopId()!=null){
-                        if(shop!=null&&shop.getShopId().equals(appGetAbleCouponPageVo.getShopId())){
-                        }else{
-                            shop = remoteShopService.getShop(appGetAbleCouponPageVo.getShopId()).getData();
-                        }
-                        goodsLimitList.add(shop.getShopName()+"通用");
-                    }else{
-                        goodsLimitList.add("全场通用");
+            HashSet<Long> shopIdSet = new HashSet<>();
+            HashSet<Long> goodsIdSet = new HashSet<>();
+            for(AppGetAbleCouponPageVo getAbleCouponPageVo : getAbleCouponPageVoList){
+                if(getAbleCouponPageVo.getShopId()!=null){
+                    shopIdSet.add(getAbleCouponPageVo.getShopId());
+                }
+                if(StringUtils.isNotBlank(getAbleCouponPageVo.getRelGoodsIds())&&!getAbleCouponPageVo.getRelGoodsIds().contains(",")){
+                    goodsIdSet.add(Long.valueOf(getAbleCouponPageVo.getRelGoodsIds()));
+                }
+            }
+            //获取关联商户和商品信息并转换为Map
+            String shopJoinedString = String.join(",", shopIdSet.stream().map(Object::toString).collect(Collectors.toList()));
+            String goodsJoinedString = null;
+            if(goodsIdSet!=null&&!goodsIdSet.isEmpty()){
+                goodsJoinedString = String.join(",", goodsIdSet.stream().map(Object::toString).collect(Collectors.toList()));
+            }
+            MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
+            mgtBaseBathDto.setIds(shopJoinedString);
+            List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(mgtBaseBathDto).getData();
+            Map<Long, MgtSimpleShopVo> shopMap = simpleShopVoList.stream()
+                    .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity()));
+            Map<String, Goods> goodsMap = null;
+            if(goodsJoinedString!=null){
+                List<Goods> goodsList = remoteGoodsService.listGoodsByGoodsId(goodsJoinedString).getData();
+                goodsMap = goodsList.stream()
+                        .collect(Collectors.toMap(Goods::getGoodsId, Function.identity()));
+            }
+            //处理返回信息
+            String shopLimit = "全场通用";
+            String goodsLimit = null;
+            for(AppGetAbleCouponPageVo getAbleCouponPageVo : getAbleCouponPageVoList){
+                //商户限制
+                if(getAbleCouponPageVo.getShopId()!=null){
+                    if(!member.getRelationShopId().equals(getAbleCouponPageVo.getShopId())){
+                        shopLimit = shopMap.get(getAbleCouponPageVo.getShopId()).getShopName()+"可用";
                     }
                 }
-                appGetAbleCouponPageVo.setGoodsLimitList(goodsLimitList);
+                getAbleCouponPageVo.setShopLimit(shopLimit);
+                //商品限制
+                relGoodsIds = getAbleCouponPageVo.getRelGoodsIds();
+                if(StringUtils.isNotBlank(relGoodsIds)&&!relGoodsIds.contains(",")){
+                    goodsLimit = goodsMap.get(relGoodsIds).getGoodsName();
+                }
+                getAbleCouponPageVo.setGoodsLimit(goodsLimit);
             }
-
         }
         return getAbleCouponPageVoList;
     }
@@ -1212,13 +1250,23 @@
     @Override
     public void appGetCoupon(String couponId,Long userId,Long shopId){
         Coupon coupon = this.getById(couponId);
+        //判断优惠券状态
         if(coupon==null||coupon.getDelFlag()==1||coupon.getCouponStatus()!=1||coupon.getSendType()!=1){
             throw new ServiceException(AppErrorConstant.COUPON_GET_ERROR);
         }
+        //判断优惠券用户领取状态
         MemberCouponRecord memberCouponRecord = memberCouponRecordService.getByCouponIdAndUserId(couponId,userId);
         if(memberCouponRecord!=null&&memberCouponRecord.getLimitFlag()==1){
             throw new ServiceException(AppErrorConstant.COUPON_GET_ALL);
         }
+        //判断优惠券发放状态
+        if(coupon.getSendLimitFlag()==1&&coupon.getSendLimitNumber()>0){
+            CouponTotal couponTotal = couponTotalService.getById(couponId);
+            if(couponTotal.getSendCount()>=coupon.getSendLimitNumber()){
+                throw new ServiceException(AppErrorConstant.COUPON_GET_ALL);
+            }
+        }
+        //生成用户优惠券
         MemberCoupon memberCoupon = new MemberCoupon();
         String memberCouponId = IdUtils.simpleUUID();
         memberCoupon.setId(memberCouponId);
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java
index a291caa..eb96ac3 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java
@@ -15,6 +15,7 @@
 import com.ruoyi.system.api.domain.dto.MerBaseDto;
 import com.ruoyi.system.api.domain.dto.MgtBaseBathDto;
 import com.ruoyi.system.api.domain.poji.goods.Goods;
+import com.ruoyi.system.api.domain.poji.member.Member;
 import com.ruoyi.system.api.domain.poji.member.MemberCoupon;
 import com.ruoyi.system.api.domain.vo.AppMemberCouponVo;
 import com.ruoyi.system.api.domain.vo.MerMemberCouponVo;
@@ -180,13 +181,12 @@
      * @return  List<AppMemberCouponPageVo>
      */
     @Override
-    public List<AppMemberCouponPageVo> pageAppUserGetCoupon(Page page, AppMemberCouponPageDto appMemberCouponPageDto){
+    public List<AppMemberCouponPageVo> pageAppUserGetCoupon(Page page, AppMemberCouponPageDto appMemberCouponPageDto, Member member){
         List<AppMemberCouponPageVo> memberCouponPageVoList = memberCouponMapper.pageAppUserGetCoupon(page, appMemberCouponPageDto);
         if(!memberCouponPageVoList.isEmpty()){
             String relGoodsIds;
-            List<Goods> goodsList;
-            List<String> goodsLimitList = null;
             HashSet<Long> shopIdSet = new HashSet<>();
+            HashSet<Long> goodsIdSet = new HashSet<>();
             for(AppMemberCouponPageVo appGetAbleCouponPageVo : memberCouponPageVoList){
                 if(appGetAbleCouponPageVo.getShopId()!=null){
                     shopIdSet.add(appGetAbleCouponPageVo.getShopId());
@@ -194,33 +194,45 @@
                 if(appGetAbleCouponPageVo.getCouponType()==4){
                     appGetAbleCouponPageVo.setVerifyCode("2-"+appGetAbleCouponPageVo.getMemberCouponId());
                 }
+                if(StringUtils.isNotBlank(appGetAbleCouponPageVo.getRelGoodsIds())&&!appGetAbleCouponPageVo.getRelGoodsIds().contains(",")){
+                    goodsIdSet.add(Long.valueOf(appGetAbleCouponPageVo.getRelGoodsIds()));
+                }
             }
+            //获取关联商户和商品信息并转换为Map
             String shopJoinedString = String.join(",", shopIdSet.stream().map(Object::toString).collect(Collectors.toList()));
+            String goodsJoinedString = null;
+            if(goodsIdSet!=null&&!goodsIdSet.isEmpty()){
+                goodsJoinedString = String.join(",", goodsIdSet.stream().map(Object::toString).collect(Collectors.toList()));
+            }
             MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
             mgtBaseBathDto.setIds(shopJoinedString);
             List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(mgtBaseBathDto).getData();
             Map<Long, MgtSimpleShopVo> shopMap = simpleShopVoList.stream()
                     .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity()));
+            Map<String, Goods> goodsMap = null;
+            if(goodsJoinedString!=null){
+                List<Goods> goodsList = remoteGoodsService.listGoodsByGoodsId(goodsJoinedString).getData();
+                goodsMap = goodsList.stream()
+                        .collect(Collectors.toMap(Goods::getGoodsId, Function.identity()));
+            }
+            //处理返回信息
+            String shopLimit = "全场通用";
+            String goodsLimit = null;
             for(AppMemberCouponPageVo appGetAbleCouponPageVo : memberCouponPageVoList){
-                relGoodsIds = appGetAbleCouponPageVo.getRelGoodsIds();
-                if(StringUtils.isNotBlank(relGoodsIds)){
-                    goodsList = remoteGoodsService.listGoodsByGoodsId(relGoodsIds).getData();
-                    if(goodsList!=null&&!goodsList.isEmpty()){
-                        goodsLimitList = goodsList.stream().map(goods -> {
-                            String goodsName = goods.getGoodsName();
-                            goodsName = "限制" + goodsName + "适用";
-                            return goodsName;
-                        }).collect(Collectors.toList());
-                    }
-                }else{
-                    goodsLimitList = new ArrayList<>();
-                    if(appGetAbleCouponPageVo.getShopId()!=null){
-                        goodsLimitList.add(shopMap.get(appGetAbleCouponPageVo.getShopId()).getShopName()+"通用");
-                    }else{
-                        goodsLimitList.add("全场通用");
+                //商户限制
+                if(appGetAbleCouponPageVo.getShopId()!=null){
+                    if(!member.getRelationShopId().equals(appGetAbleCouponPageVo.getShopId())){
+                        shopLimit = shopMap.get(appGetAbleCouponPageVo.getShopId()).getShopName()+"可用";
                     }
                 }
-                appGetAbleCouponPageVo.setGoodsLimitList(goodsLimitList);
+                appGetAbleCouponPageVo.setShopLimit(shopLimit);
+                //商品限制
+                relGoodsIds = appGetAbleCouponPageVo.getRelGoodsIds();
+                if(StringUtils.isNotBlank(relGoodsIds)&&!relGoodsIds.contains(",")){
+                    goodsLimit = goodsMap.get(relGoodsIds).getGoodsName();
+                }
+                appGetAbleCouponPageVo.setGoodsLimit(goodsLimit);
+                //核销商店
                 if(appGetAbleCouponPageVo.getShopId()!=null){
                     appGetAbleCouponPageVo.setVerifyShopName(shopMap.get(appGetAbleCouponPageVo.getShopId()).getShopName());
                 }
@@ -291,7 +303,7 @@
             Iterator<MerMemberCouponVo> iterator = merMemberCouponVoList.iterator();
             while (iterator.hasNext()) {
                 MerMemberCouponVo couponVo = iterator.next();
-                log.debug("couponVo"+couponVo.toString());
+                //处理已选择优惠券过滤
                 if(checkSelect){
                     if (selectCouponList.contains(couponVo.getMemberCouponId()) && selectCouponMap.containsKey(couponVo.getMemberCouponId())) {
                         String goodsId = selectCouponMap.get(couponVo.getMemberCouponId());
@@ -301,6 +313,7 @@
                         }
                     }
                 }
+                //处理满减卷门槛过滤
                 if(merGoodsCouponListDto.getBuyNum()!=null&&merGoodsCouponListDto.getSalesPrice()!=null){
                     if(couponVo.getCouponType()==1){
                         BigDecimal goodsMoney = merGoodsCouponListDto.getSalesPrice().multiply(new BigDecimal(merGoodsCouponListDto.getBuyNum().toString()));
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
index 9df1d7a..1574553 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
@@ -292,7 +292,6 @@
     }
 
     public static String getMobileByWX(String accessToken, String code) throws Exception {
-        String method = "POST";
         Map<String, String> headers = new HashMap<>(16);
         headers.put("Content-Type", "application/json");
         headers.put("Accept", "application/json");
@@ -321,6 +320,7 @@
         appUserInfoVo.setNickName(member.getNickName());
         appUserInfoVo.setRealName(member.getRealName());
         appUserInfoVo.setPhonenumber(member.getMobile());
+        //绑定会员显示绑定店铺
         if (member.getRelationShopId() != null && member.getBindingFlag() == 1) {
             appUserInfoVo.setRelationShopId(member.getRelationShopId());
             Shop shop = shopService.getShop(member.getRelationShopId()).getData();
@@ -330,9 +330,11 @@
         appUserInfoVo.setBirthday(member.getBirthday());
         appUserInfoVo.setGender(member.getGender());
         appUserInfoVo.setAvatar(member.getAvatar());
+        //待支付待核销统计
         AppOrderTotalVo appOrderTotalVo = orderService.getAppOrderTotal(userId).getData();
         appUserInfoVo.setNoPayCount(appOrderTotalVo.getNoPayCount());
         appUserInfoVo.setNoUseCount(appOrderTotalVo.getNoUseCount());
+        //积分
         MemberTotal memberTotal = memberTotalService.getById(member.getMemberId());
         appUserInfoVo.setIntegral(memberTotal.getUseableIntegral());
         return appUserInfoVo;
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberCouponService.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberCouponService.java
index e34eb51..c2b7b28 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberCouponService.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberCouponService.java
@@ -6,6 +6,7 @@
 import com.ruoyi.member.domain.dto.MerGoodsCouponListDto;
 import com.ruoyi.member.domain.vo.AppMemberCouponPageVo;
 import com.ruoyi.system.api.domain.dto.MerBaseDto;
+import com.ruoyi.system.api.domain.poji.member.Member;
 import com.ruoyi.system.api.domain.poji.member.MemberCoupon;
 import com.ruoyi.system.api.domain.vo.AppMemberCouponVo;
 import com.ruoyi.system.api.domain.vo.MerMemberCouponVo;
@@ -68,7 +69,7 @@
      * @param appMemberCouponPageDto
      * @return  List<AppMemberCouponPageVo>
      */
-    List<AppMemberCouponPageVo> pageAppUserGetCoupon(Page page, AppMemberCouponPageDto appMemberCouponPageDto);
+    List<AppMemberCouponPageVo> pageAppUserGetCoupon(Page page, AppMemberCouponPageDto appMemberCouponPageDto, Member member);
 
     /**
      * @description  定时检查优惠券过期
diff --git a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/coupon/CouponMapper.xml b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/coupon/CouponMapper.xml
index 9d44a88..08b08b5 100644
--- a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/coupon/CouponMapper.xml
+++ b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/coupon/CouponMapper.xml
@@ -279,7 +279,7 @@
         WHEN 1 THEN '手动获取'
         ELSE '指定发放'
         END sendType,
-        CASE tc.send_type
+        CASE tc.send_target
         WHEN 2 THEN '全部用户'
         WHEN 3 THEN '会员用户'
         WHEN 4 THEN '非会员用户'
@@ -314,7 +314,7 @@
                 WHEN 1 THEN '手动获取'
                 ELSE '指定发放'
                 END sendType,
-            CASE tc.send_type
+            CASE tc.send_target
                 WHEN 2 THEN '全部用户'
                 WHEN 3 THEN '会员用户'
                 WHEN 4 THEN '非会员用户'
@@ -344,6 +344,13 @@
         WHERE tc.del_flag = 0 AND tc.coupon_status = 1 AND tc.audit_status=2 AND tc.send_type = 1 AND tmcr.limit_flag = 1
     </select>
 
+    <select id="listUnGetCoupon" resultType="java.lang.String">
+        SELECT
+            tc.coupon_id
+        FROM t_coupon tc
+        INNER JOIN t_coupon_total tct ON tc.coupon_id = tct.coupon_id
+        WHERE tc.del_flag = 0 AND tc.coupon_status = 1 AND tc.audit_status=2 AND tc.send_limit_flag = 1 AND tc.send_limit_number &lt;= tct.send_count
+    </select>
 
     <select id="getAbleCouponPageVoList" resultType="com.ruoyi.member.domain.vo.AppGetAbleCouponPageVo">
         SELECT
@@ -353,7 +360,7 @@
             tc.money_threshold moneyThreshold,
             tc.discount_money discountMoney,
             tc.discount_percent discountPercent,
-            tc.rel_goods_ids relGoodsIds
+            CASE WHEN tc.coupon_type = 4 THEN tc.rel_goods_ids WHEN tc.use_scope = 2 THEN tc.rel_goods_ids ELSE NULL END relGoodsIds
         FROM t_coupon tc
         WHERE tc.del_flag = 0 AND tc.coupon_status = 1 AND tc.audit_status = 2 AND tc.send_type = 1 AND (tc.coupon_from = 1 OR (tc.coupon_from = 2 AND tc.shop_id = #{shopId}))
         AND (tc.send_target = 2
diff --git a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberCouponMapper.xml b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberCouponMapper.xml
index 177b984..cb1b7f1 100644
--- a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberCouponMapper.xml
+++ b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberCouponMapper.xml
@@ -175,7 +175,7 @@
             tuc.money_threshold moneyThreshold,
             tuc.discount_money discountMoney,
             tuc.discount_percent discountPercent,
-            tuc.rel_goods_ids relGoodsIds,
+            CASE WHEN tuc.coupon_type = 4 THEN tuc.rel_goods_ids WHEN tuc.use_scope = 2 THEN tuc.rel_goods_ids ELSE NULL END relGoodsIds,
             tuc.shop_id shopId,
             IFNULL(tuc.valid_start_time,tuc.receive_time) validStartTime,
             tuc.deadline_time deadlineTime,
diff --git a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml
index 556e8b4..c4e8785 100644
--- a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml
+++ b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml
@@ -634,7 +634,8 @@
         <if test="param.endDate!=null and param.endDate!=''">
             AND Date(create_time) &lt;= #{param.endDate}
         </if>
-        GROUP BY level
+        GROUP BY mapKey
+        ORDER BY mapValue DESC
     </select>
 
     <select id="getPlTotalMemberTotalGoodsType" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo">
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 fb7a43d..8635275 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
@@ -1211,9 +1211,9 @@
         if (appUserOrderPageVoList != null && !appUserOrderPageVoList.isEmpty()) {
             Long shopId;
             String activityId;
-            Shop shop;
             HashSet<Long> shopSet = new HashSet<Long>();
             HashSet<String> activitySet = new HashSet<String>();
+            // 遍历订单列表,获取店铺ID和活动ID
             for (AppUserOrderPageVo appUserOrderPageVo : appUserOrderPageVoList) {
                 shopId = appUserOrderPageVo.getShopId();
                 shopSet.add(shopId);
@@ -1222,22 +1222,25 @@
                     activitySet.add(activityId);
                 }
             }
-            Map<Long, Shop> shopMap = new HashMap<>();
-            shopSet.forEach(shopIdLong -> {
-                Shop shopTemp = remoteShopService.getShop(shopIdLong).getData();
-                shopMap.put(shopIdLong, shopTemp);
-            });
+            String shopJoinedString = String.join(",", shopSet.stream().map(Object::toString).collect(Collectors.toList()));
+            MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
+            mgtBaseBathDto.setIds(shopJoinedString);
+            List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(mgtBaseBathDto).getData();
+            Map<Long, MgtSimpleShopVo> shopMap = simpleShopVoList.stream()
+                    .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity()));
+            MgtSimpleShopVo simpleShopVo;
             Integer delayTime = 30;
             if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) {
                 delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
             }
+            //处理订单回显
             for (AppUserOrderPageVo appUserOrderPageVo : appUserOrderPageVoList) {
                 if(member.getBindingFlag()==0&&appUserOrderPageVo.getOrderFrom()==2){
                     appUserOrderPageVo.setShopName("全部店铺");
                 }else{
-                    shop = shopMap.get(appUserOrderPageVo.getShopId());
-                    appUserOrderPageVo.setShopName(shop.getShopName());
-                    appUserOrderPageVo.setShopServicePhone(shop.getShopServicePhone());
+                    simpleShopVo = shopMap.get(appUserOrderPageVo.getShopId());
+                    appUserOrderPageVo.setShopName(simpleShopVo.getShopName());
+                    appUserOrderPageVo.setShopServicePhone(simpleShopVo.getShopServicePhone());
                     if (appUserOrderPageVo.getShopId().equals(appUserOrderPageDto.getShopId())) {
                         appUserOrderPageVo.setSameShop(1);
                     } else {
@@ -1830,8 +1833,23 @@
             payRecord.setPayType(merVerifyOrderDto.getPayType());
             payRecordService.save(payRecord);
         }
-        //更新用户消费统计
+        //更新用户积分和消费统计
         MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto();
+        memberTotalChangeDto.setUserId(order.getUserId());
+        // 如果存在积分兑换比例,则计算积分
+        if (redisService.hasKey(SecurityConstant.PAY_MONEY_INTEGRAL)) {
+            Integer moneyValue = redisService.getCacheObject(SecurityConstant.PAY_MONEY_INTEGRAL);
+            BigDecimal moneyValueBig = BigDecimal.valueOf(moneyValue);
+            BigDecimal integralBig = moneyValueBig.multiply(order.getOnlinePayMoney()).setScale(0,BigDecimal.ROUND_HALF_UP);
+            Integer integral = Integer.valueOf(integralBig.toString());
+            if(integral>0){
+                memberTotalChangeDto.setChangeIntegral(integral);
+                memberTotalChangeDto.setTypeIntegral(1);
+                memberTotalChangeDto.setOrderId(orderId);
+                memberTotalChangeDto.setOrderNo(order.getOrderNo());
+            }
+        }
+        //更新消费时间
         memberTotalChangeDto.setConsumeTime(nowTime);
         remoteMemberService.changeMemberTotal(memberTotalChangeDto);
         return merVerifyOrderVo;
@@ -1992,8 +2010,7 @@
                     }
                     // 设置其他属性
                     return merCouponGoods;
-                })
-                .collect(Collectors.toList());
+                }).collect(Collectors.toList());
         // 设置merVerifyCouponVo的goodsList属性为merCouponGoodsList
         merVerifyCouponVo.setGoodsList(merCouponGoodsList);
         //生成服务
@@ -4963,17 +4980,19 @@
         // 初始化会员统计信息
         MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto();
         memberTotalChangeDto.setUserId(order.getUserId());
-        // 如果存在积分兑换比例,则计算积分
-        if (redisService.hasKey(SecurityConstant.PAY_MONEY_INTEGRAL)) {
+        // 如果存在积分兑换比例,则计算积分 2023-09-14改为核销后获取积分
+        /*if (redisService.hasKey(SecurityConstant.PAY_MONEY_INTEGRAL)) {
             Integer moneyValue = redisService.getCacheObject(SecurityConstant.PAY_MONEY_INTEGRAL);
             BigDecimal moneyValueBig = BigDecimal.valueOf(moneyValue);
             BigDecimal integralBig = moneyValueBig.multiply(order.getPayMoney()).setScale(0,BigDecimal.ROUND_HALF_UP);
             Integer integral = Integer.valueOf(integralBig.toString());
-            memberTotalChangeDto.setChangeIntegral(integral);
-            memberTotalChangeDto.setTypeIntegral(1);
-            memberTotalChangeDto.setOrderId(orderId);
-            memberTotalChangeDto.setOrderNo(order.getOrderNo());
-        }
+            if(integral>0){
+                memberTotalChangeDto.setChangeIntegral(integral);
+                memberTotalChangeDto.setTypeIntegral(1);
+                memberTotalChangeDto.setOrderId(orderId);
+                memberTotalChangeDto.setOrderNo(order.getOrderNo());
+            }
+        }*/
         // 设置会员支付金额和支付时间
         memberTotalChangeDto.setPayMoney(order.getPayMoney());
         memberTotalChangeDto.setPayTime(new Date());
@@ -5003,6 +5022,7 @@
             activityTotalChangeDto.setChangeNum(1);
             activityTotalChangeDto.setMoney(order.getPayMoney());
             Integer userActivityNum = orderMapper.countUserActivityByActivity(order.getUserId(), order.getActivityId());
+            //判断用户是否下过单 如果只有当前订单则为1
             if (userActivityNum == 1) {
                 activityTotalChangeDto.setPersonNum(1);
             } else {
@@ -5175,7 +5195,7 @@
         // 初始化会员统计信息
         MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto();
         memberTotalChangeDto.setUserId(order.getUserId());
-        // 如果存在积分兑换比例,则计算积分
+        // 如果存在积分兑换比例,则计算积分 2023-09-14改为核销后获取积分
         /*if (redisService.hasKey(SecurityConstant.PAY_MONEY_INTEGRAL)) {
             Integer moneyValue = redisService.getCacheObject(SecurityConstant.PAY_MONEY_INTEGRAL);
             BigDecimal moneyValueBig = BigDecimal.valueOf(moneyValue);
@@ -5202,7 +5222,6 @@
         // 更新会员统计信息
         remoteMemberService.changeMemberTotal(memberTotalChangeDto);
         // 如果订单来源于活动,则更新活动统计信息
-        //TODO 可考虑改成定时任务统一查询后增加 减少服务器压力但会增加延后性
         if (order.getOrderFrom() == 2) {
             ActivityTotalChangeDto activityTotalChangeDto = new ActivityTotalChangeDto();
             activityTotalChangeDto.setActivityId(order.getActivityId());
@@ -5211,10 +5230,11 @@
             activityTotalChangeDto.setRefundNum(1);
             activityTotalChangeDto.setMoney(order.getPayMoney());
             Integer userActivityNum = orderMapper.countUserActivityByActivity(order.getUserId(), order.getActivityId());
+            //判断用户是否还有活动订单 无则减少人数
             if (userActivityNum > 0) {
-                activityTotalChangeDto.setPersonNum(1);
-            } else {
                 activityTotalChangeDto.setPersonNum(0);
+            } else {
+                activityTotalChangeDto.setPersonNum(1);
             }
             activityTotalChangeDto.setUserId(order.getUserId());
             remoteActivityService.changeActivityTotal(activityTotalChangeDto);
@@ -5834,30 +5854,39 @@
      */
     @Override
     public List<MerOrderPageVo> pageMerMemberPayOrder(Page page,MerMemberNoClearOrderDto merOrderPageDto){
+        // 获取订单列表
         List<MerOrderPageVo> merOrderPageVoList = orderMapper.pageMerMemberPayOrder(page, merOrderPageDto);
+        // 如果订单列表不为空
         if (merOrderPageVoList != null && !merOrderPageVoList.isEmpty()) {
             Long userId;
             BigDecimal zeroBig = new BigDecimal("0.00");
             StringJoiner userIdSj = new StringJoiner(",");
+            // 遍历订单列表
             for (MerOrderPageVo merOrderPageVo : merOrderPageVoList) {
                 userId = merOrderPageVo.getUserId();
                 userIdSj.add(userId.toString());
-                if(merOrderPageVo.getUnPaidMoney().compareTo(zeroBig)<0){
+                // 如果未支付金额小于零,则设置为零
+                if (merOrderPageVo.getUnPaidMoney().compareTo(zeroBig) < 0) {
                     merOrderPageVo.setUnPaidMoney(zeroBig);
                 }
             }
+            // 获取用户列表
             MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
             mgtBaseBathDto.setIds(userIdSj.toString());
             List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(mgtBaseBathDto).getData();
+            // 将用户列表转换为Map,以便根据用户ID快速查找用户信息
             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){
+                // 如果订单的用户ID不为空,并且用户Map中存在对应的用户信息
+                if (merOrderPageVo.getUserId() != null && userMap.get(merOrderPageVo.getUserId()) != null) {
+                    // 设置订单的用户名、昵称和手机号
                     merOrderPageVo.setUserName(userMap.get(merOrderPageVo.getUserId()).getRealName());
                     merOrderPageVo.setNickName(userMap.get(merOrderPageVo.getUserId()).getNickName());
                     merOrderPageVo.setUserMobile(userMap.get(merOrderPageVo.getUserId()).getUserMobile());
-                }else{
-                    log.debug("订单merOrderPageVo"+merOrderPageVo.getOrderId()+"缺少用户");
+                } else {
+                    log.debug("订单merOrderPageVo" + merOrderPageVo.getOrderId() + "缺少用户");
                 }
             }
         }
@@ -5918,7 +5947,6 @@
     public ProfitSharingResult queryBill(String orderId) throws WxPayException {
         OrderPayment orderPayment = orderPaymentService.getByOrderId(orderId);
         ProfitSharing profitSharing = profitSharingService.getByOrderId(orderId);
-
         ProfitSharingQueryRequest request = new ProfitSharingQueryRequest();
         request.setSubMchid("1650744551");
         request.setTransactionId(orderPayment.getTransactionId());
diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
index 694d882..d70d237 100644
--- a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
+++ b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -154,7 +154,7 @@
         <collection property="mgtOrderGoodsPageVoList"
                     ofType="com.ruoyi.order.domain.vo.MgtOrderGoodsPageVo"
                     select="listAllSimpleOrderGoodsByOrderId"
-                    column="{orderId=orderId">
+                    column="{orderId=orderId}">
             <result column="goodsName" property="goodsName"/>
             <result column="buyNum" property="buyNum"/>
         </collection>
@@ -1957,7 +1957,7 @@
         COUNT(DISTINCT toc.user_id) AS mapValue
         FROM t_order toc
         INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id
-        WHERE toc.del_flag = 0 AND toc.shop_id = #{param.shopId} AND toc.order_from = 2 AND toc.order_status = 3
+        WHERE toc.del_flag = 0 AND toc.shop_id = #{param.shopId} AND toc.order_from = 2 AND toc.order_status IN (2,3)
         <if test="param.activityId !=null and param.activityId != ''">
             AND toc.activity_id = #{param.activityId}
         </if>
@@ -1983,7 +1983,7 @@
         COUNT(DISTINCT toc.user_id) AS mapValue
         FROM t_order toc
         INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id
-        WHERE toc.del_flag = 0  AND toc.order_from = 2 AND toc.order_status = 3
+        WHERE toc.del_flag = 0  AND toc.order_from = 2 AND toc.order_status IN (2,3)
         <if test="param.activityId!=null and param.activityId!=''">
             AND toc.activity_id = #{param.activityId}
         </if>
@@ -2017,7 +2017,7 @@
         COUNT(DISTINCT toc.user_id) AS mapValue
         FROM t_order toc
         INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id
-        WHERE toc.del_flag = 0  AND toc.order_from = 2 AND toc.order_status = 3
+        WHERE toc.del_flag = 0  AND toc.order_from = 2 AND toc.order_status IN (2,3)
         <if test="param.shopId != null and param.shopId != ''">
             AND toc.shop_id = #{param.shopId}
         </if>
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffShopTaskPageVo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffShopTaskPageVo.java
index e3ae743..73dcbc2 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffShopTaskPageVo.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffShopTaskPageVo.java
@@ -43,6 +43,9 @@
     @ApiModelProperty(value = "用户头像")
     private String userPicture;
 
+    @ApiModelProperty(value = "用户岗位")
+    private String userPosition;
+
     @ApiModelProperty(value="跟进时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date followTime;
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
index bac11cf..88962c7 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
@@ -226,7 +226,6 @@
             shopRelTagService.deleteByShopId(shop.getShopId());
             shopRelUserService.deleteByShopId(shop.getShopId());
             //清空归属
-            shopRelUserService.deleteByShopId(shop.getShopId());
             shopStaffService.clearShopStaffRelation(shop.getShopId());
             if(!shop.getShopName().equals(mgtEditShopDto.getShopName())){
                 MgtMemberShopNameDto mgtMemberShopNameDto = new MgtMemberShopNameDto();
@@ -716,7 +715,6 @@
             shopTransferRecord.setAfterUserId(mgtTransferShopDto.getTransferUserId());
             shopTransferRecord.setTransferRemark(mgtTransferShopDto.getTransferRemark());
             shopTransferRecordService.save(shopTransferRecord);
-            shopRelUserService.deleteByUserId(shop.getBelongUserId());
         }
         shop.setBelongUserId(mgtTransferShopDto.getTransferUserId());
         this.saveOrUpdate(shop);
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskServiceImpl.java
index 790a4ee..f376d09 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskServiceImpl.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskServiceImpl.java
@@ -7,21 +7,24 @@
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.utils.uuid.IdUtils;
 import com.ruoyi.shop.domain.dto.*;
-import com.ruoyi.shop.domain.pojo.task.*;
+import com.ruoyi.shop.domain.pojo.task.ShopTask;
+import com.ruoyi.shop.domain.pojo.task.ShopTaskRecord;
+import com.ruoyi.shop.domain.pojo.task.TaskFile;
 import com.ruoyi.shop.domain.vo.StaffShopTaskPageVo;
 import com.ruoyi.shop.mapper.task.ShopTaskMapper;
 import com.ruoyi.shop.service.task.ShopTaskRecordService;
 import com.ruoyi.shop.service.task.ShopTaskService;
 import com.ruoyi.shop.service.task.TaskFileService;
-import com.ruoyi.system.api.domain.poji.sys.SysUser;
+import com.ruoyi.system.api.domain.poji.sys.SysStaff;
 import com.ruoyi.system.api.domain.vo.MgtBulletinBoardVo;
+import com.ruoyi.system.api.service.RemoteConfigService;
 import com.ruoyi.system.api.service.RemoteUserService;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -45,6 +48,9 @@
 
     @Resource
     private RemoteUserService remoteUserService;
+
+    @Resource
+    private RemoteConfigService remoteConfigService;
 
     /**
      * 平台跟进商户
@@ -156,14 +162,23 @@
         List<StaffShopTaskPageVo> shopTaskPageVoList = shopTaskMapper.pageStaffShopTask(page, staffShopTaskPageDto);
         if(shopTaskPageVoList!=null&&shopTaskPageVoList.size()>0){
             Long userId;
-            SysUser sysUser;
+            SysStaff sysStaff;
+            HashSet<Long> userIdSet = new HashSet<>();
+            for(StaffShopTaskPageVo staffShopTaskPageVo : shopTaskPageVoList){
+                userIdSet.add(staffShopTaskPageVo.getUserId());
+            }
+            List<Long> useIdList = new ArrayList<>(userIdSet);
+            List<SysStaff> sysStaffList = remoteConfigService.listSysStaffByIds(useIdList).getData();
+            Map<Long,SysStaff> sysStaffMap = sysStaffList.stream()
+                    .collect(Collectors.toMap(SysStaff::getUserId, Function.identity()));
             for(StaffShopTaskPageVo staffShopTaskPageVo : shopTaskPageVoList){
                 //获取任务用户信息
                 userId = staffShopTaskPageVo.getUserId();
                 if(userId!=null){
-                    sysUser = remoteUserService.getSysUser(userId).getData();
-                    staffShopTaskPageVo.setUserName(sysUser.getNickName());
-                    staffShopTaskPageVo.setUserPicture(sysUser.getAvatar());
+                    sysStaff = sysStaffMap.get(userId);
+                    staffShopTaskPageVo.setUserName(sysStaff.getStaffName());
+                    staffShopTaskPageVo.setUserPicture(sysStaff.getStaffAvatar());
+                    staffShopTaskPageVo.setUserPosition(sysStaff.getStaffPost());
                 }
             }
         }
diff --git a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml
index dbec3f1..6545bb8 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml
+++ b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml
@@ -811,7 +811,7 @@
         ts.sign_time signTime,
         ts.shop_name shopName,
         ts.shop_tags shopTags,
-        CONCAT(ts.cooperation_start_time,'-',ts.cooperation_end_time) cooperationTime,
+        ts.cooperation_end_time cooperationTime,
         CONCAT(ts.shop_area_name,ts.shop_address) shopAddress,
         ts.shopowner_name shopownerName,
         ts.shopowner_phone shopownerPhone,

--
Gitblit v1.7.1