From fc0ebcb5f71190aa71274c509defba9c77a6804e Mon Sep 17 00:00:00 2001 From: jiangqs <jiangqs> Date: 星期三, 20 九月 2023 18:13:28 +0800 Subject: [PATCH] bug --- ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java | 81 +++++++++++++++++++++++++++++++--------- 1 files changed, 62 insertions(+), 19 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 d6d524e..5f6bcf0 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 @@ -31,6 +31,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; @@ -201,6 +202,9 @@ List<MgtCouponMemberListVo> relUserList = couponRelUserService.listCouponMemberVo(coupon.getCouponId()); mgtCouponGetVo.setRelUserList(relUserList); } + if(mgtCouponGetVo.getSendLimitFlag()==0){ + mgtCouponGetVo.setSendLimitNumber(null); + } return mgtCouponGetVo; } @@ -235,6 +239,9 @@ //获取优惠券发放用户 List<MgtCouponMemberListVo> relUserList = couponRelUserService.listCouponMemberVo(coupon.getCouponId()); merCouponGetVo.setRelUserList(relUserList); + } + if(merCouponGetVo.getSendLimitFlag()==0){ + merCouponGetVo.setSendLimitNumber(null); } return merCouponGetVo; } @@ -299,8 +306,17 @@ coupon.setRelationActivityType(mgtCouponEditDto.getRelationActivityType()); coupon.setRelationActivityId(mgtCouponEditDto.getRelationActivityId()); coupon.setPropagandaPoster(mgtCouponEditDto.getPropagandaPoster()); - coupon.setSendLimitNumber(mgtCouponEditDto.getSendLimitNumber()); + //指定发放优惠券不做发放数限制 + 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(); @@ -1027,8 +1043,16 @@ coupon.setUpdateUserId(merCouponEditDto.getUserId()); coupon.setRelationType(1); coupon.setPropagandaPoster(merCouponEditDto.getPropagandaPoster()); - coupon.setSendLimitNumber(merCouponEditDto.getSendLimitNumber()); + //指定发放优惠券不做发放数限制 + 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(); @@ -1188,26 +1212,35 @@ if(!getAbleCouponPageVoList.isEmpty()){ String relGoodsIds; HashSet<Long> shopIdSet = new HashSet<>(); - HashSet<Long> goodsIdSet = 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())&&!getAbleCouponPageVo.getRelGoodsIds().contains(",")){ - goodsIdSet.add(Long.valueOf(getAbleCouponPageVo.getRelGoodsIds())); + if(StringUtils.isNotBlank(getAbleCouponPageVo.getRelGoodsIds())){ + relGoodsIds = getAbleCouponPageVo.getRelGoodsIds(); + goodsIdArr = relGoodsIds.split(","); + for(String str : goodsIdArr){ + goodsIdSet.add(str); + } } } //获取关联商户和商品信息并转换为Map - String shopJoinedString = String.join(",", shopIdSet.stream().map(Object::toString).collect(Collectors.toList())); + 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())); } - 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(); @@ -1215,20 +1248,29 @@ .collect(Collectors.toMap(Goods::getGoodsId, Function.identity())); } //处理返回信息 - String shopLimit = "全场通用"; - String goodsLimit = null; + String shopLimit = "全门店通用"; + String goodsLimit; + StringJoiner goodsNameSj; for(AppGetAbleCouponPageVo getAbleCouponPageVo : getAbleCouponPageVoList){ + goodsLimit = null; + goodsNameSj = new StringJoiner(","); //商户限制 if(getAbleCouponPageVo.getShopId()!=null){ - if(!member.getRelationShopId().equals(getAbleCouponPageVo.getShopId())){ - shopLimit = shopMap.get(getAbleCouponPageVo.getShopId()).getShopName()+"可用"; - } + shopLimit = shopMap.get(getAbleCouponPageVo.getShopId()).getShopName()+"可用"; } getAbleCouponPageVo.setShopLimit(shopLimit); //商品限制 - relGoodsIds = getAbleCouponPageVo.getRelGoodsIds(); - if(StringUtils.isNotBlank(relGoodsIds)&&!relGoodsIds.contains(",")){ - goodsLimit = goodsMap.get(relGoodsIds).getGoodsName(); + 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); } @@ -1248,6 +1290,7 @@ * @return void */ @Override + @Transactional(rollbackFor = Exception.class) public void appGetCoupon(String couponId,Long userId,Long shopId){ Coupon coupon = this.getById(couponId); //判断优惠券状态 -- Gitblit v1.7.1