From 32cafa15d3d4aa99a67102914a1b31e8f080c03f Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期二, 31 十月 2023 16:32:16 +0800
Subject: [PATCH] 修改bug

---
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java |  243 ++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 192 insertions(+), 51 deletions(-)

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 316fe45..4fb5dc0 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
@@ -19,11 +19,11 @@
 import com.ruoyi.system.api.constant.AppErrorConstant;
 import com.ruoyi.system.api.constant.DelayTaskEnum;
 import com.ruoyi.system.api.domain.dto.*;
+import com.ruoyi.system.api.domain.poji.activity.Activity;
 import com.ruoyi.system.api.domain.poji.config.DelayTask;
 import com.ruoyi.system.api.domain.poji.goods.Goods;
 import com.ruoyi.system.api.domain.poji.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;
@@ -32,6 +32,7 @@
 import com.ruoyi.system.api.service.RemoteShopService;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
@@ -120,7 +121,6 @@
                     useLimit = "满" + moneyThreshold.toString() + "减" + discountMoney.toString() + "元";
                 }
                 if(couponType.equals("折扣")){
-                    moneyThreshold = mgtCouponPageVo.getMoneyThreshold();
                     discountPercent = mgtCouponPageVo.getDiscountPercent();
                     useLimit = discountPercent.toString() + "折";
                 }
@@ -203,6 +203,14 @@
             List<MgtCouponMemberListVo> relUserList = couponRelUserService.listCouponMemberVo(coupon.getCouponId());
             mgtCouponGetVo.setRelUserList(relUserList);
         }
+        //获取活动名称
+        if(coupon.getSendTarget()==5&&coupon.getRelationType()==2){
+            Activity activity = remoteActivityService.getActivity(coupon.getRelationActivityId()).getData();
+            mgtCouponGetVo.setRelationActivityName(activity.getActivityName());
+        }
+        if(mgtCouponGetVo.getSendLimitFlag()==0){
+            mgtCouponGetVo.setSendLimitNumber(null);
+        }
         return mgtCouponGetVo;
     }
 
@@ -237,6 +245,9 @@
             //获取优惠券发放用户
             List<MgtCouponMemberListVo> relUserList = couponRelUserService.listCouponMemberVo(coupon.getCouponId());
             merCouponGetVo.setRelUserList(relUserList);
+        }
+        if(merCouponGetVo.getSendLimitFlag()==0){
+            merCouponGetVo.setSendLimitNumber(null);
         }
         return merCouponGetVo;
     }
@@ -301,6 +312,17 @@
         coupon.setRelationActivityType(mgtCouponEditDto.getRelationActivityType());
         coupon.setRelationActivityId(mgtCouponEditDto.getRelationActivityId());
         coupon.setPropagandaPoster(mgtCouponEditDto.getPropagandaPoster());
+        //指定发放优惠券不做发放数限制
+        if(coupon.getSendType()==2){
+            mgtCouponEditDto.setSendLimitFlag(0);
+        }
+        coupon.setSendLimitFlag(mgtCouponEditDto.getSendLimitFlag());
+        if(mgtCouponEditDto.getSendLimitFlag()==1){
+            coupon.setSendLimitNumber(mgtCouponEditDto.getSendLimitNumber());
+        }else{
+            coupon.setSendLimitNumber(0);
+        }
+        coupon.setLimitNumber(mgtCouponEditDto.getLimitNumber());
         //判断是否指定商品
         if(coupon.getUseScope()==2&&!mgtCouponEditDto.getRelGoodsIdList().isEmpty()){
             List<String> relGoodsIdList = mgtCouponEditDto.getRelGoodsIdList();
@@ -399,23 +421,32 @@
                         memberCoupon.setUserId(userId);
                         memberCoupon.setShopId(coupon.getShopId());
                         memberCoupon.setCouponType(coupon.getCouponType());
+                        if(coupon.getCouponType()==1){
+                            memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold());
+                            memberCoupon.setDiscountMoney(coupon.getDiscountMoney());
+                        }else if(coupon.getCouponType()==2){
+                            memberCoupon.setDiscountPercent(coupon.getDiscountPercent());
+                        }else if(coupon.getCouponType()==3){
+                            memberCoupon.setDiscountMoney(coupon.getDiscountMoney());
+                        }else{
+                            memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds());
+                        }
                         memberCoupon.setCouponStatus(coupon.getCouponStatus());
                         memberCoupon.setCouponName(coupon.getCouponName());
                         memberCoupon.setSendType(coupon.getSendType());
                         memberCoupon.setSendTarget(coupon.getSendTarget());
                         memberCoupon.setSendTimeType(coupon.getSendTimeType());
                         memberCoupon.setSendTime(coupon.getSendTime());
-                        memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold());
-                        memberCoupon.setDiscountMoney(coupon.getDiscountMoney());
-                        memberCoupon.setDiscountPercent(coupon.getDiscountPercent());
                         memberCoupon.setUseScope(coupon.getUseScope());
+                        if(memberCoupon.getUseScope()==2){
+                            memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds());
+                        }
                         memberCoupon.setValidTimeType(coupon.getValidTimeType());
                         memberCoupon.setValidStartTime(coupon.getValidStartTime());
                         memberCoupon.setValidEndTime(coupon.getValidEndTime());
                         memberCoupon.setValidDay(coupon.getValidDay());
                         memberCoupon.setCouponFrom(coupon.getCouponFrom());
                         memberCoupon.setReceiveTime(nowTime);
-                        memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds());
                         //有效期处理1.时间段2.领取之日起
                         if(coupon.getValidTimeType()==1){
                             memberCoupon.setDeadlineTime(coupon.getValidEndTime());
@@ -442,23 +473,32 @@
                     memberCoupon.setUserId(userId);
                     //memberCoupon.setShopId(coupon.getShopId());
                     memberCoupon.setCouponType(coupon.getCouponType());
+                    if(coupon.getCouponType()==1){
+                        memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold());
+                        memberCoupon.setDiscountMoney(coupon.getDiscountMoney());
+                    }else if(coupon.getCouponType()==2){
+                        memberCoupon.setDiscountPercent(coupon.getDiscountPercent());
+                    }else if(coupon.getCouponType()==3){
+                        memberCoupon.setDiscountMoney(coupon.getDiscountMoney());
+                    }else{
+                        memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds());
+                    }
                     memberCoupon.setCouponStatus(coupon.getCouponStatus());
                     memberCoupon.setCouponName(coupon.getCouponName());
                     memberCoupon.setSendType(coupon.getSendType());
                     memberCoupon.setSendTarget(coupon.getSendTarget());
                     memberCoupon.setSendTimeType(coupon.getSendTimeType());
                     memberCoupon.setSendTime(coupon.getSendTime());
-                    memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold());
-                    memberCoupon.setDiscountMoney(coupon.getDiscountMoney());
-                    memberCoupon.setDiscountPercent(coupon.getDiscountPercent());
                     memberCoupon.setUseScope(coupon.getUseScope());
+                    if(memberCoupon.getUseScope()==2){
+                        memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds());
+                    }
                     memberCoupon.setValidTimeType(coupon.getValidTimeType());
                     memberCoupon.setValidStartTime(coupon.getValidStartTime());
                     memberCoupon.setValidEndTime(coupon.getValidEndTime());
                     memberCoupon.setValidDay(coupon.getValidDay());
                     memberCoupon.setCouponFrom(coupon.getCouponFrom());
                     memberCoupon.setReceiveTime(nowTime);
-                    memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds());
                     //有效期处理1.时间段2.领取之日起
                     if(coupon.getValidTimeType()==1){
                         memberCoupon.setDeadlineTime(coupon.getValidEndTime());
@@ -534,20 +574,29 @@
                 memberCoupon.setCouponStatus(coupon.getCouponStatus());
                 memberCoupon.setCouponName(coupon.getCouponName());
                 memberCoupon.setSendType(coupon.getSendType());
+                if(coupon.getCouponType()==1){
+                    memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold());
+                    memberCoupon.setDiscountMoney(coupon.getDiscountMoney());
+                }else if(coupon.getCouponType()==2){
+                    memberCoupon.setDiscountPercent(coupon.getDiscountPercent());
+                }else if(coupon.getCouponType()==3){
+                    memberCoupon.setDiscountMoney(coupon.getDiscountMoney());
+                }else{
+                    memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds());
+                }
                 memberCoupon.setSendTarget(coupon.getSendTarget());
                 memberCoupon.setSendTimeType(coupon.getSendTimeType());
                 memberCoupon.setSendTime(coupon.getSendTime());
-                memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold());
-                memberCoupon.setDiscountMoney(coupon.getDiscountMoney());
-                memberCoupon.setDiscountPercent(coupon.getDiscountPercent());
                 memberCoupon.setUseScope(coupon.getUseScope());
+                if(memberCoupon.getUseScope()==2){
+                    memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds());
+                }
                 memberCoupon.setValidTimeType(coupon.getValidTimeType());
                 memberCoupon.setValidStartTime(coupon.getValidStartTime());
                 memberCoupon.setValidEndTime(coupon.getValidEndTime());
                 memberCoupon.setValidDay(coupon.getValidDay());
                 memberCoupon.setCouponFrom(coupon.getCouponFrom());
                 memberCoupon.setReceiveTime(nowTime);
-                memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds());
                 //有效期处理1.时间段2.领取之日起
                 if(coupon.getValidTimeType()==1){
                     memberCoupon.setDeadlineTime(coupon.getValidEndTime());
@@ -959,6 +1008,7 @@
             couponRelGoodsService.deleteCouponRelByCouponId(coupon.getCouponId());
             coupon.setCouponStatus(1);
         }else{
+            //初始化新优惠券
             coupon = new Coupon();
             String couponId = IdUtils.simpleUUID();
             coupon.setCouponId(couponId);
@@ -999,6 +1049,16 @@
         coupon.setUpdateUserId(merCouponEditDto.getUserId());
         coupon.setRelationType(1);
         coupon.setPropagandaPoster(merCouponEditDto.getPropagandaPoster());
+        //指定发放优惠券不做发放数限制
+        if(coupon.getSendType()==2){
+            merCouponEditDto.setSendLimitFlag(0);
+        }
+        coupon.setSendLimitFlag(merCouponEditDto.getSendLimitFlag());
+        if(merCouponEditDto.getSendLimitFlag()==1){
+            coupon.setSendLimitNumber(merCouponEditDto.getSendLimitNumber());
+        }else{
+            coupon.setSendLimitNumber(0);
+        }
         //判断是否指定商品
         if(coupon.getUseScope()==2&&!merCouponEditDto.getRelGoodsIdList().isEmpty()){
             List<String> relGoodsIdList = merCouponEditDto.getRelGoodsIdList();
@@ -1062,19 +1122,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();
@@ -1083,34 +1151,46 @@
                 memberCoupon.setCouponId(couponId);
                 memberCoupon.setUserId(userId);
                 memberCoupon.setShopId(shopId);
-                memberCoupon.setCouponType(coupon.getCouponType());
+                // 根据优惠券类型设置会员优惠券信息
+                if(coupon.getCouponType()==1){
+                    memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold());
+                    memberCoupon.setDiscountMoney(coupon.getDiscountMoney());
+                }else if(coupon.getCouponType()==2){
+                    memberCoupon.setDiscountPercent(coupon.getDiscountPercent());
+                }else if(coupon.getCouponType()==3){
+                    memberCoupon.setDiscountMoney(coupon.getDiscountMoney());
+                }else{
+                    memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds());
+                }
                 memberCoupon.setCouponStatus(coupon.getCouponStatus());
                 memberCoupon.setCouponName(coupon.getCouponName());
                 memberCoupon.setSendType(coupon.getSendType());
                 memberCoupon.setSendTarget(coupon.getSendTarget());
                 memberCoupon.setSendTimeType(coupon.getSendTimeType());
                 memberCoupon.setSendTime(coupon.getSendTime());
-                memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold());
-                memberCoupon.setDiscountMoney(coupon.getDiscountMoney());
-                memberCoupon.setDiscountPercent(coupon.getDiscountPercent());
                 memberCoupon.setUseScope(coupon.getUseScope());
+                // 如果优惠券适用范围为指定商品,则设置关联商品ID
+                if(memberCoupon.getUseScope()==2){
+                    memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds());
+                }
                 memberCoupon.setValidTimeType(coupon.getValidTimeType());
                 memberCoupon.setValidStartTime(coupon.getValidStartTime());
                 memberCoupon.setValidEndTime(coupon.getValidEndTime());
                 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){
                     memberCoupon.setDeadlineTime(DateUtils.addDays(new Date(),coupon.getValidDay()));
                 }
-                memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds());
                 memberCouponList.add(memberCoupon);
             }
+            // 更新会员优惠券记录
             memberCouponRecordService.updateMemberCouponRecord(coupon,userId,birthdayGiftSendDto.getCouponNumber());
         }
+        // 批量保存会员优惠券列表
         memberCouponService.saveBatch(memberCouponList);
     }
 
@@ -1124,41 +1204,82 @@
      */
     @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<String> goodsIdSet = new HashSet<>();
+            String[] goodsIdArr;
+            for(AppGetAbleCouponPageVo getAbleCouponPageVo : getAbleCouponPageVoList){
+                if(getAbleCouponPageVo.getShopId()!=null){
+                    shopIdSet.add(getAbleCouponPageVo.getShopId());
+                }
+                if(StringUtils.isNotBlank(getAbleCouponPageVo.getRelGoodsIds())){
+                    relGoodsIds = getAbleCouponPageVo.getRelGoodsIds();
+                    goodsIdArr = relGoodsIds.split(",");
+                    for(String str : goodsIdArr){
+                        goodsIdSet.add(str);
                     }
                 }
-                appGetAbleCouponPageVo.setGoodsLimitList(goodsLimitList);
             }
-
+            //获取关联商户和商品信息并转换为Map
+            String shopJoinedString;
+            Map<Long, MgtSimpleShopVo> shopMap = null;
+            if(shopIdSet!=null&&!shopIdSet.isEmpty()) {
+                shopJoinedString = String.join(",", shopIdSet.stream().map(Object::toString).collect(Collectors.toList()));
+                MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
+                mgtBaseBathDto.setIds(shopJoinedString);
+                List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(mgtBaseBathDto).getData();
+                shopMap = simpleShopVoList.stream()
+                        .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity()));
+            }
+            String goodsJoinedString = null;
+            if(goodsIdSet!=null&&!goodsIdSet.isEmpty()){
+                goodsJoinedString = String.join(",", goodsIdSet.stream().map(Object::toString).collect(Collectors.toList()));
+            }
+            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;
+            StringJoiner goodsNameSj;
+            for(AppGetAbleCouponPageVo getAbleCouponPageVo : getAbleCouponPageVoList){
+                goodsLimit = null;
+                goodsNameSj = new StringJoiner(",");
+                //商户限制
+                if(getAbleCouponPageVo.getShopId()!=null){
+                    shopLimit = shopMap.get(getAbleCouponPageVo.getShopId()).getShopName()+"可用";
+                }
+                getAbleCouponPageVo.setShopLimit(shopLimit);
+                //商品限制
+                if(StringUtils.isNotBlank(getAbleCouponPageVo.getRelGoodsIds())){
+                    relGoodsIds = getAbleCouponPageVo.getRelGoodsIds();
+                    goodsIdArr = relGoodsIds.split(",");
+                    for(String goodsIs : goodsIdArr){
+                        if(goodsMap.get(goodsIs)!=null){
+                            goodsNameSj.add(goodsMap.get(goodsIs).getGoodsName());
+                        }else{
+                            log.debug("用户优惠券未找到关联商品"+getAbleCouponPageVo.getCouponId()+"-"+getAbleCouponPageVo.getRelGoodsIds());
+                        }
+                    }
+                    goodsLimit = goodsNameSj.toString();
+                }
+                getAbleCouponPageVo.setGoodsLimit(goodsLimit);
+            }
         }
         return getAbleCouponPageVoList;
     }
@@ -1175,15 +1296,26 @@
      * @return  void
      */
     @Override
+    @Transactional(rollbackFor = Exception.class)
     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);
@@ -1194,16 +1326,26 @@
             memberCoupon.setShopId(shopId);
         }
         memberCoupon.setCouponType(coupon.getCouponType());
+        if(coupon.getCouponType()==1){
+            memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold());
+            memberCoupon.setDiscountMoney(coupon.getDiscountMoney());
+        }else if(coupon.getCouponType()==2){
+            memberCoupon.setDiscountPercent(coupon.getDiscountPercent());
+        }else if(coupon.getCouponType()==3){
+            memberCoupon.setDiscountMoney(coupon.getDiscountMoney());
+        }else{
+            memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds());
+        }
         memberCoupon.setCouponStatus(coupon.getCouponStatus());
         memberCoupon.setCouponName(coupon.getCouponName());
         memberCoupon.setSendType(coupon.getSendType());
         memberCoupon.setSendTarget(coupon.getSendTarget());
         memberCoupon.setSendTimeType(coupon.getSendTimeType());
         memberCoupon.setSendTime(coupon.getSendTime());
-        memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold());
-        memberCoupon.setDiscountMoney(coupon.getDiscountMoney());
-        memberCoupon.setDiscountPercent(coupon.getDiscountPercent());
         memberCoupon.setUseScope(coupon.getUseScope());
+        if(memberCoupon.getUseScope()==2){
+            memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds());
+        }
         memberCoupon.setValidTimeType(coupon.getValidTimeType());
         memberCoupon.setValidStartTime(coupon.getValidStartTime());
         memberCoupon.setValidEndTime(coupon.getValidEndTime());
@@ -1216,7 +1358,6 @@
         }else if(coupon.getValidTimeType()==2){
             memberCoupon.setDeadlineTime(DateUtils.addDays(new Date(),coupon.getValidDay()));
         }
-        memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds());
         memberCouponService.save(memberCoupon);
         memberCouponRecordService.updateMemberCouponRecord(coupon,userId,1);
     }

--
Gitblit v1.7.1