From 1eda7b514f7d88b37cfd315315575a154dde2a64 Mon Sep 17 00:00:00 2001 From: jiangqs <343695869@qq.com> Date: 星期四, 27 七月 2023 22:23:57 +0800 Subject: [PATCH] bug --- ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java | 128 +++++++++++++++++++++++++----------------- 1 files changed, 77 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 1f7a536..b224026 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 @@ -21,9 +21,11 @@ import com.ruoyi.system.api.domain.dto.*; 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; import com.ruoyi.system.api.service.RemoteConfigService; import com.ruoyi.system.api.service.RemoteGoodsService; @@ -33,10 +35,9 @@ import javax.annotation.Resource; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.util.*; import java.util.concurrent.TimeUnit; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -187,7 +188,7 @@ } } //判断优惠券是否指定发放用户 - if(coupon.getSendType()==5&&coupon.getRelationType()==1){ + if(coupon.getSendTarget()==5&&coupon.getRelationType()==1){ //获取优惠券发放用户 List<MgtCouponMemberListVo> relUserList = couponRelUserService.listCouponMemberVo(coupon.getCouponId()); mgtCouponGetVo.setRelUserList(relUserList); @@ -207,10 +208,6 @@ MerCouponGetVo merCouponGetVo = new MerCouponGetVo(); Coupon coupon = this.getById(couponId); BeanUtils.copyProperties(coupon, merCouponGetVo); - if(merCouponGetVo.getSendType()>1){ - merCouponGetVo.setSendType(2); - merCouponGetVo.setSendTarget(merCouponGetVo.getSendType()); - } //判断优惠券是否为指定商品 if(coupon.getUseScope()==2){ String relGoodsIds = coupon.getRelGoodsIds(); @@ -223,7 +220,7 @@ } } //判断优惠券是否指定发放用户 - if(coupon.getSendType()==5&&coupon.getRelationType()==1){ + if(coupon.getSendTarget()==5&&coupon.getRelationType()==1){ //获取优惠券发放用户 List<MgtCouponMemberListVo> relUserList = couponRelUserService.listCouponMemberVo(coupon.getCouponId()); merCouponGetVo.setRelUserList(relUserList); @@ -274,6 +271,7 @@ coupon.setCouponType(mgtCouponEditDto.getCouponType()); coupon.setCouponName(mgtCouponEditDto.getCouponName()); coupon.setSendType(mgtCouponEditDto.getSendType()); + coupon.setSendTarget(mgtCouponEditDto.getSendTarget()); coupon.setSendTimeType(mgtCouponEditDto.getSendTimeType()); coupon.setSendTime(mgtCouponEditDto.getSendTime()); coupon.setMoneyThreshold(mgtCouponEditDto.getMoneyThreshold()); @@ -307,18 +305,21 @@ } //判断是否指定用户 List<Long> relUserIdList = null; - if(coupon.getSendType()==5&&coupon.getRelationType()==1&&!mgtCouponEditDto.getRelUserIdList().isEmpty()){ + if(coupon.getSendTarget()==2&&coupon.getSendTarget()==5&&coupon.getRelationType()==1&&!mgtCouponEditDto.getRelUserIdList().isEmpty()){ relUserIdList = mgtCouponEditDto.getRelUserIdList(); - List<CouponRelUser> couponRelUserList = relUserIdList.stream() - .map(str -> { - CouponRelUser couponRelUser = new CouponRelUser(); - couponRelUser.setDelFlag(0); - couponRelUser.setCouponId(coupon.getCouponId()); - couponRelUser.setUserId(str); - return couponRelUser; - }) - .collect(Collectors.toList()); + List<CouponRelUser> couponRelUserList = new ArrayList<>(); + CouponRelUser couponRelUser; + StringJoiner userIdSj = new StringJoiner(","); + for(Long userId : relUserIdList){ + couponRelUser = new CouponRelUser(); + couponRelUser.setDelFlag(0); + couponRelUser.setCouponId(coupon.getCouponId()); + couponRelUser.setUserId(userId); + couponRelUserList.add(couponRelUser); + userIdSj.add(userId.toString()); + } couponRelUserService.saveBatch(couponRelUserList); + coupon.setRelUserIds(userIdSj.toString()); } //处理优惠券发放 if(coupon.getSendTimeType()==1){ @@ -342,15 +343,15 @@ protected void sendCoupon(Coupon coupon, List<Long> relUserIdList){ //1.手动领取2.全部用户3.会员用户4非会员用户5自定义 Date nowTime = new Date(); - Integer sendType = coupon.getSendType(); + Integer sendTarget = coupon.getSendTarget(); List<Long> userIdList = new ArrayList<>(); Long shopId = null; - if(coupon.getCouponFrom()==2 && sendType==3){ + if(coupon.getCouponFrom()==2 && sendTarget==3){ shopId = coupon.getShopId(); } - if(sendType >= 2 && sendType <= 4){ - userIdList = memberService.listIdBySendType(sendType,shopId); - }else if(sendType == 5){ + if(sendTarget >= 2 && sendTarget <= 4){ + userIdList = memberService.listIdBySendType(sendTarget,shopId); + }else if(sendTarget == 5){ //关联类型1.用户管理筛选2.活动管理筛选 if(coupon.getRelationType()==2){ Integer relationActivityType = coupon.getRelationActivityType(); @@ -366,7 +367,7 @@ userIdList = relUserIdList; } } - if(relUserIdList!=null&&!relUserIdList.isEmpty()){ + if(userIdList!=null&&!userIdList.isEmpty()){ List<MemberCoupon> memberCouponList = new ArrayList<>(); MemberCoupon memberCoupon; Integer sendTotal = 0; @@ -385,6 +386,7 @@ 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()); @@ -395,6 +397,7 @@ 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.领取之日起 @@ -426,15 +429,15 @@ private void sendCouponNow(Coupon coupon, List<Long> relUserIdList){ //1.手动领取2.全部用户3.会员用户4非会员用户5自定义 Date nowTime = new Date(); - Integer sendType = coupon.getSendType(); + Integer sendTarget = coupon.getSendTarget(); List<Long> userIdList = new ArrayList<>(); Long shopId = null; - if(coupon.getCouponFrom()==2 && sendType==3){ + if(coupon.getCouponFrom()==2 && sendTarget==3){ shopId = coupon.getShopId(); } - if(sendType >= 2 && sendType <= 4){ - userIdList = memberService.listIdBySendType(sendType,shopId); - }else if(sendType == 5){ + if(sendTarget >= 2 && sendTarget <= 4){ + userIdList = memberService.listIdBySendType(sendTarget,shopId); + }else if(sendTarget == 5){ //关联类型1.用户管理筛选2.活动管理筛选 if(coupon.getRelationType()==2){ Integer relationActivityType = coupon.getRelationActivityType(); @@ -469,6 +472,7 @@ 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()); @@ -479,6 +483,7 @@ 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.领取之日起 @@ -579,7 +584,7 @@ List<CouponRelUser> couponRelUserList; List<Long> userIdList = new ArrayList<>(); Coupon coupon = this.getById(couponId); - if(coupon.getSendType()==5&&coupon.getRelationType()==1){ + if(coupon.getSendTarget()==5&&coupon.getRelationType()==1){ couponRelUserList = couponRelUserService.list(new LambdaQueryWrapper<CouponRelUser>().eq(CouponRelUser::getDelFlag,0).eq(CouponRelUser::getCouponId,coupon.getCouponId())); if(couponRelUserList!=null&&!couponRelUserList.isEmpty()){ userIdList = couponRelUserList.stream() @@ -627,6 +632,7 @@ Date validEndTime; Integer validDay; String validTime = ""; + HashSet<Long> shopIdSet = new HashSet<>(); for(MgtCouponAuditPageVo mgtCouponAuditPageVo : mgtCouponAuditPageVoList){ //处理有效期 validTimeType = mgtCouponAuditPageVo.getValidTimeType(); @@ -639,6 +645,20 @@ validTime = "领取之日起" + validDay.toString() + "天"; } mgtCouponAuditPageVo.setValidTime(validTime); + if(mgtCouponAuditPageVo.getShopId()!=null){ + shopIdSet.add(mgtCouponAuditPageVo.getShopId()); + } + } + String 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(); + Map<Long, MgtSimpleShopVo> shopMap = simpleShopVoList.stream() + .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity())); + for(MgtCouponAuditPageVo mgtCouponAuditPageVo : mgtCouponAuditPageVoList){ + if(mgtCouponAuditPageVo.getShopId()!=null){ + mgtCouponAuditPageVo.setShopName(shopMap.get(mgtCouponAuditPageVo.getShopId()).getShopName()); + } } } return mgtCouponAuditPageVoList; @@ -696,7 +716,7 @@ } } //判断优惠券是否指定发放用户 - if(coupon.getSendType()==5&&coupon.getRelationType()==1){ + if(coupon.getSendTarget()==5&&coupon.getRelationType()==1){ //获取优惠券发放用户 List<MgtCouponMemberListVo> relUserList = couponRelUserService.listCouponMemberVo(coupon.getCouponId()); mgtCouponAuditGetVo.setRelUserList(relUserList); @@ -785,7 +805,7 @@ if(validTimeType==1){ validStartTime = merCouponPageVo.getValidStartTime(); validEndTime = merCouponPageVo.getValidEndTime(); - validTime = DateUtils.dateTime(validStartTime) + '-' + DateUtils.dateTime(validEndTime); + validTime = DateUtils.parseDateToStr("yyyy.MM.dd",validStartTime) + '-' + DateUtils.parseDateToStr("yyyy.MM.dd",validEndTime); }else if(validTimeType==2){ validDay = merCouponPageVo.getValidDay(); validTime = "领取之日起" + validDay.toString() + "天"; @@ -843,7 +863,7 @@ if(validTimeType==1){ validStartTime = merCouponPageVo.getValidStartTime(); validEndTime = merCouponPageVo.getValidEndTime(); - validTime = DateUtils.dateTime(validStartTime) + '-' + DateUtils.dateTime(validEndTime); + validTime = DateUtils.parseDateToStr("yyyy.MM.dd",validStartTime) + '-' + DateUtils.parseDateToStr("yyyy.MM.dd",validEndTime); }else if(validTimeType==2){ validDay = merCouponPageVo.getValidDay(); validTime = "领取之日起" + validDay.toString() + "天"; @@ -899,10 +919,9 @@ coupon.setCouponType(merCouponEditDto.getCouponType()); coupon.setCouponName(merCouponEditDto.getCouponName()); coupon.setSendType(merCouponEditDto.getSendType()); - if(merCouponEditDto.getSendType()!=1){ - coupon.setSendType(merCouponEditDto.getSendTarget()); - } - coupon.setSendTimeType(merCouponEditDto.getSendTimeType()); + coupon.setSendTarget(merCouponEditDto.getSendTarget()); + //商户端默认立即发放 + coupon.setSendTimeType(1); coupon.setSendTime(merCouponEditDto.getSendTime()); coupon.setMoneyThreshold(merCouponEditDto.getMoneyThreshold()); coupon.setDiscountMoney(merCouponEditDto.getDiscountMoney()); @@ -933,18 +952,21 @@ } //判断是否指定用户 List<Long> relUserIdList = null; - if(coupon.getSendType()==5&&coupon.getRelationType()==1&&!merCouponEditDto.getRelUserIdList().isEmpty()){ + if(coupon.getSendTarget()==5&&coupon.getRelationType()==1&&!merCouponEditDto.getRelUserIdList().isEmpty()){ relUserIdList = merCouponEditDto.getRelUserIdList(); - List<CouponRelUser> couponRelUserList = relUserIdList.stream() - .map(str -> { - CouponRelUser couponRelUser = new CouponRelUser(); - couponRelUser.setDelFlag(0); - couponRelUser.setCouponId(coupon.getCouponId()); - couponRelUser.setUserId(str); - return couponRelUser; - }) - .collect(Collectors.toList()); + List<CouponRelUser> couponRelUserList = new ArrayList<>(); + CouponRelUser couponRelUser; + StringJoiner userIdSj = new StringJoiner(","); + for(Long userId : relUserIdList){ + couponRelUser = new CouponRelUser(); + couponRelUser.setDelFlag(0); + couponRelUser.setCouponId(coupon.getCouponId()); + couponRelUser.setUserId(userId); + couponRelUserList.add(couponRelUser); + userIdSj.add(userId.toString()); + } couponRelUserService.saveBatch(couponRelUserList); + coupon.setRelUserIds(userIdSj.toString()); } this.saveOrUpdate(coupon); } @@ -997,6 +1019,7 @@ 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()); @@ -1007,6 +1030,7 @@ 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){ @@ -1031,10 +1055,10 @@ * @return List<AppUnGetCouponPageVo> */ @Override - public List<AppGetAbleCouponPageVo> pageAppUserGetAbleCoupon(Page page, AppPageDto appPageDto, Long shopId){ + public List<AppGetAbleCouponPageVo> pageAppUserGetAbleCoupon(Page page, AppPageDto appPageDto, Member member){ //获取当前已领取完优惠券 List<String> unGetList = couponMapper.listUserUnGetCoupon(appPageDto.getUserId()); - List<AppGetAbleCouponPageVo> getAbleCouponPageVoList = couponMapper.getAbleCouponPageVoList(page, shopId, unGetList); + List<AppGetAbleCouponPageVo> getAbleCouponPageVoList = couponMapper.getAbleCouponPageVoList(page, member.getRelationShopId(),member.getUserId(),member.getBindingFlag(), unGetList); //处理商品限制 if(!getAbleCouponPageVoList.isEmpty()){ String relGoodsIds; @@ -1045,7 +1069,7 @@ relGoodsIds = appGetAbleCouponPageVo.getRelGoodsIds(); if(StringUtils.isNotBlank(relGoodsIds)){ goodsList = remoteGoodsService.listGoodsByGoodsId(relGoodsIds).getData(); - if(!goodsList.isEmpty()){ + if(goodsList!=null&&!goodsList.isEmpty()){ goodsLimitList = goodsList.stream().map(goods -> { String goodsName = goods.getGoodsName(); goodsName = "限制" + goodsName + "适用"; @@ -1103,6 +1127,7 @@ 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()); @@ -1113,6 +1138,7 @@ 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){ -- Gitblit v1.7.1