From fc0ebcb5f71190aa71274c509defba9c77a6804e Mon Sep 17 00:00:00 2001 From: jiangqs <jiangqs> Date: 星期三, 20 九月 2023 18:13:28 +0800 Subject: [PATCH] bug --- ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java | 2 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/AppGetAbleCouponPageVo.java | 3 ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml | 2 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/MemberCouponRecordServiceImpl.java | 27 +++-- ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/ConsumerGoodsMapper.xml | 6 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java | 51 +++++++--- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java | 7 + ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java | 81 ++++++++++++--- ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtCouponGetVo.java | 3 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 45 +++++--- ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtCouponEditDto.java | 3 ruoyi-modules/ruoyi-member/src/main/resources/mapper/coupon/CouponMapper.xml | 17 ++- ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml | 2 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerCouponPageVo.java | 4 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/coupon/CouponTotalMapper.java | 11 ++ ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtCouponPageVo.java | 2 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerConsumerGoodsListVo.java | 3 ruoyi-modules/ruoyi-member/src/main/resources/mapper/coupon/CouponTotalMapper.xml | 5 + 18 files changed, 201 insertions(+), 73 deletions(-) diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java index 7ce265c..2b69734 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java @@ -12,6 +12,8 @@ String USER_NOT_LOGIN = "用户没有登录或登录已失效"; + String USER_BINDING_ERROR = "用户已绑定其他店铺"; + String USER_NO_SHOP = "未查询到用户关联商户"; String USER_NO_SYSTEM = "员工没有录入系统"; 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 010ef12..c70fd6f 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 @@ -93,4 +93,7 @@ @ApiModelProperty(value = "发放限制0否1是") private Integer sendLimitFlag; + + @ApiModelProperty(value = "领取限制数量 0为不限") + private Integer limitNumber; } 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 cb5ba18..5464387 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 @@ -46,4 +46,7 @@ @ApiModelProperty(value = "折扣百分比") private BigDecimal discountPercent; + @ApiModelProperty(value = "有效期") + private String validTime; + } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerCouponPageVo.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerCouponPageVo.java index a22b44e..5280b4d 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerCouponPageVo.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerCouponPageVo.java @@ -79,4 +79,8 @@ @ApiModelProperty(value = "宣传海报") private String propagandaPoster; + + @ApiModelProperty(value = "发放限制数量") + private Integer sendLimitNumber; + } 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 07669b6..78a0f65 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 @@ -87,4 +87,7 @@ @ApiModelProperty(value = "发放限制0否1是") private Integer sendLimitFlag; + + @ApiModelProperty(value = "领取限制数量 0为不限") + private Integer limitNumber; } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtCouponPageVo.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtCouponPageVo.java index 9d74891..e13b637 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtCouponPageVo.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtCouponPageVo.java @@ -45,7 +45,7 @@ private String validTime; @ApiModelProperty(value = "发放张数") - private Integer sendCount; + private String sendCount; @ApiModelProperty(value = "使用范围") private String useScope; diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/coupon/CouponTotalMapper.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/coupon/CouponTotalMapper.java index 8e4a83b..3364b6a 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/coupon/CouponTotalMapper.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/coupon/CouponTotalMapper.java @@ -2,6 +2,7 @@ import com.ruoyi.member.domain.pojo.coupon.CouponTotal; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; /** * <p> @@ -13,4 +14,14 @@ */ public interface CouponTotalMapper extends BaseMapper<CouponTotal> { + /** + * @description 更新优惠券统计 + * @author jqs + * @date 2023/9/19 18:08 + * @param couponId + * @param sendCount + * @param sendUserCount + * @return Integer + */ + Integer updateCouponTotal(@Param("couponId")String couponId, @Param("sendCount")Integer sendCount, @Param("sendUserCount")Integer sendUserCount); } 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); //判断优惠券状态 diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/MemberCouponRecordServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/MemberCouponRecordServiceImpl.java index 8223380..16f17f4 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/MemberCouponRecordServiceImpl.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/MemberCouponRecordServiceImpl.java @@ -1,13 +1,14 @@ package com.ruoyi.member.service.impl.coupon; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.ruoyi.member.domain.pojo.coupon.Coupon; -import com.ruoyi.member.domain.pojo.coupon.CouponTotal; -import com.ruoyi.member.domain.pojo.coupon.MemberCouponRecord; -import com.ruoyi.member.mapper.coupon.MemberCouponRecordMapper; -import com.ruoyi.member.service.coupon.CouponTotalService; -import com.ruoyi.member.service.coupon.MemberCouponRecordService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.core.exception.ServiceException; +import com.ruoyi.member.domain.pojo.coupon.Coupon; +import com.ruoyi.member.domain.pojo.coupon.MemberCouponRecord; +import com.ruoyi.member.mapper.coupon.CouponTotalMapper; +import com.ruoyi.member.mapper.coupon.MemberCouponRecordMapper; +import com.ruoyi.member.service.coupon.MemberCouponRecordService; +import com.ruoyi.system.api.constant.AppErrorConstant; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -25,7 +26,7 @@ @Resource - private CouponTotalService couponTotalService; + private CouponTotalMapper couponTotalMapper; /** * @description 获取用户优惠券领取记录 @@ -55,7 +56,8 @@ public void updateMemberCouponRecord(Coupon coupon, Long userId, Integer number) { // 根据优惠券ID和用户ID获取会员优惠券记录 MemberCouponRecord memberCouponRecord = this.getByCouponIdAndUserId(coupon.getCouponId(), userId); - CouponTotal couponTotal = couponTotalService.getById(coupon.getCouponId()); + Integer sendCount = number; + Integer sendUserCount = 0; if (memberCouponRecord != null) { // 如果会员优惠券记录存在,则更新数量 memberCouponRecord.setNum(memberCouponRecord.getNum() + number); @@ -89,11 +91,14 @@ } else { memberCouponRecord.setLimitFlag(0); } - couponTotal.setSendUserCount(couponTotal.getSendUserCount()+1); + sendUserCount = 1; } // 保存或更新会员优惠券记录 + Integer result = couponTotalMapper.updateCouponTotal(coupon.getCouponId(), sendCount,sendUserCount); + if(result<1){ + throw new ServiceException(AppErrorConstant.COUPON_GET_ALL); + } this.saveOrUpdate(memberCouponRecord); - couponTotal.setSendCount(couponTotal.getSendCount()+number); - couponTotalService.saveOrUpdate(couponTotal); + } } 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 eb96ac3..5fbb003 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 @@ -186,7 +186,8 @@ if(!memberCouponPageVoList.isEmpty()){ String relGoodsIds; HashSet<Long> shopIdSet = new HashSet<>(); - HashSet<Long> goodsIdSet = new HashSet<>(); + HashSet<String> goodsIdSet = new HashSet<>(); + String[] goodsIdArr; for(AppMemberCouponPageVo appGetAbleCouponPageVo : memberCouponPageVoList){ if(appGetAbleCouponPageVo.getShopId()!=null){ shopIdSet.add(appGetAbleCouponPageVo.getShopId()); @@ -194,21 +195,29 @@ if(appGetAbleCouponPageVo.getCouponType()==4){ appGetAbleCouponPageVo.setVerifyCode("2-"+appGetAbleCouponPageVo.getMemberCouponId()); } - if(StringUtils.isNotBlank(appGetAbleCouponPageVo.getRelGoodsIds())&&!appGetAbleCouponPageVo.getRelGoodsIds().contains(",")){ - goodsIdSet.add(Long.valueOf(appGetAbleCouponPageVo.getRelGoodsIds())); + if(StringUtils.isNotBlank(appGetAbleCouponPageVo.getRelGoodsIds())){ + relGoodsIds = appGetAbleCouponPageVo.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(); @@ -216,20 +225,30 @@ .collect(Collectors.toMap(Goods::getGoodsId, Function.identity())); } //处理返回信息 - String shopLimit = "全场通用"; - String goodsLimit = null; + String shopLimit = "全门店通用"; + String goodsLimit; + StringJoiner goodsNameSj; for(AppMemberCouponPageVo appGetAbleCouponPageVo : memberCouponPageVoList){ + goodsLimit = null; + goodsNameSj = new StringJoiner(","); //商户限制 if(appGetAbleCouponPageVo.getShopId()!=null){ - if(!member.getRelationShopId().equals(appGetAbleCouponPageVo.getShopId())){ - shopLimit = shopMap.get(appGetAbleCouponPageVo.getShopId()).getShopName()+"可用"; - } + shopLimit = shopMap.get(appGetAbleCouponPageVo.getShopId()).getShopName()+"可用"; } appGetAbleCouponPageVo.setShopLimit(shopLimit); //商品限制 relGoodsIds = appGetAbleCouponPageVo.getRelGoodsIds(); - if(StringUtils.isNotBlank(relGoodsIds)&&!relGoodsIds.contains(",")){ - goodsLimit = goodsMap.get(relGoodsIds).getGoodsName(); + if(StringUtils.isNotBlank(relGoodsIds)){ + relGoodsIds = appGetAbleCouponPageVo.getRelGoodsIds(); + goodsIdArr = relGoodsIds.split(","); + for(String goodsIs : goodsIdArr){ + if(goodsMap.get(goodsIs)!=null){ + goodsNameSj.add(goodsMap.get(goodsIs).getGoodsName()); + }else{ + log.debug("用户优惠券未找到关联商品"+appGetAbleCouponPageVo.getMemberCouponId()+"-"+appGetAbleCouponPageVo.getRelGoodsIds()); + } + } + goodsLimit = goodsNameSj.toString(); } appGetAbleCouponPageVo.setGoodsLimit(goodsLimit); //核销商店 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 08b08b5..e74af92 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 @@ -155,7 +155,10 @@ tc.valid_start_time validStartTime, tc.valid_end_time validEndTime, tc.valid_day validDay, - tct.send_count sendCount, + CASE tc.send_limit_flag + WHEN 1 THEN tc.send_limit_number + WHEN 0 THEN '无限制' + END sendCount, CASE tc.use_scope WHEN 1 THEN '全部商品' WHEN 2 THEN '指定商品' @@ -176,7 +179,6 @@ tc.discount_percent discountPercent, tc.create_time createTime FROM t_coupon tc - LEFT JOIN t_coupon_total tct ON tc.coupon_id = tct.coupon_id WHERE tc.del_flag = 0 AND tc.audit_status = 2 <if test="param.shopId==null"> AND tc.coupon_from = 1 @@ -290,7 +292,9 @@ tc.discount_money discountMoney, tc.discount_percent discountPercent, tc.create_time createTime, - tc.propaganda_poster propagandaPoster + tc.propaganda_poster propagandaPoster, + CASE WHEN tc.send_limit_flag = 1 THEN tc.send_limit_number ELSE NULL END sendLimitNumber, + tc.limit_number limitNumber FROM t_coupon tc LEFT JOIN t_coupon_total tct ON tc.coupon_id = tct.coupon_id WHERE tc.del_flag = 0 AND tc.coupon_status = 1 AND tc.coupon_from = 1 @@ -326,7 +330,8 @@ tc.discount_percent discountPercent, tc.create_time createTime, tc.audit_reason auditReason, - tc.limit_number limitNumber + tc.limit_number limitNumber, + CASE WHEN tc.send_limit_flag = 1 THEN tc.send_limit_number ELSE NULL END sendLimitNumber FROM t_coupon tc LEFT JOIN t_coupon_total tct ON tc.coupon_id = tct.coupon_id WHERE tc.del_flag = 0 AND tc.coupon_status = 1 AND tc.coupon_from = 2 AND tc.shop_id = #{param.shopId} @@ -360,7 +365,9 @@ tc.money_threshold moneyThreshold, tc.discount_money discountMoney, tc.discount_percent discountPercent, - 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 + tc.shop_id shopId, + 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, + CASE tc.valid_time_type WHEN 1 THEN CONCAT(DATE_FORMAT(tc.valid_start_time, '%Y.%m.%d'),'-',DATE_FORMAT(tc.valid_end_time, '%Y.%m.%d')) WHEN 2 THEN CONCAT('领取后',tc.valid_day,'天有效') ELSE NULL END validTime 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/coupon/CouponTotalMapper.xml b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/coupon/CouponTotalMapper.xml index 7b70040..d3003fc 100644 --- a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/coupon/CouponTotalMapper.xml +++ b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/coupon/CouponTotalMapper.xml @@ -59,4 +59,9 @@ </foreach> </delete> + <update id="updateCouponTotal"> + UPDATE t_coupon_total tct,t_coupon tc + SET tct.send_count = tct.send_count + #{sendCount},tct.send_user_count = tct.send_user_count + #{sendUserCount} + WHERE tct.coupon_id = #{couponId} AND tc.coupon_id = tct.coupon_id AND (tc.send_limit_flag = 0 OR (tc.send_limit_flag = 1 AND tct.send_count + #{sendCount} <= tc.send_limit_number)) + </update> </mapper> 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 c4e8785..ccfd406 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 @@ -219,7 +219,7 @@ tm.real_name nickName, tm.mobile mobile FROM t_member tm - WHERE tm.relation_shop_id = #{param.shopId} + WHERE tm.relation_shop_id = #{param.shopId} AND tm.binding_flag = 1 <if test="param.keyword != null and param.keyword != ''"> AND (tm.real_name LIKE CONCAT('%',#{param.keyword},'%') OR tm.mobile LIKE CONCAT('%',#{param.keyword},'%')) </if> diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java index b16c755..477b5a4 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.order.domain.dto.*; @@ -78,6 +79,9 @@ public R<AppPlaceOrderVo> placeOrder(@RequestBody AppPlaceOrderDto appPlaceOrderDto) { LoginUser loginUser = SecurityUtils.getLoginUser(); Long userId = loginUser.getUserid(); + if(1==1){ + throw new ServiceException("支付功能尚未开通,请联系客服"); + } appPlaceOrderDto.setUserId(userId); appPlaceOrderDto.setSpbillCreateIp(loginUser.getIpaddr()); AppPlaceOrderVo appPlaceOrderVo = orderService.placeOrder(appPlaceOrderDto); @@ -89,6 +93,9 @@ public R<AppPlaceOrderVo> placeActivityOrder(@Validated @RequestBody AppPlaceActivityDto appPlaceActivityDto) { LoginUser loginUser = SecurityUtils.getLoginUser(); Long userId = loginUser.getUserid(); + if(1==1){ + throw new ServiceException("支付功能尚未开通,请联系客服"); + } appPlaceActivityDto.setUserId(userId); appPlaceActivityDto.setSpbillCreateIp(loginUser.getIpaddr()); AppPlaceOrderVo appPlaceOrderVo = orderService.placeActivityOrder(appPlaceActivityDto); diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerConsumerGoodsListVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerConsumerGoodsListVo.java index d7ce21d..27755d9 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerConsumerGoodsListVo.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerConsumerGoodsListVo.java @@ -28,6 +28,9 @@ @ApiModelProperty(value="商品名称") private String goodsName; + @ApiModelProperty(value="商品标签") + private String goodsTags; + @ApiModelProperty(value = "商品简介") private String goodsIntroduction; 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 8635275..8843be5 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 @@ -1988,29 +1988,37 @@ MerVerifyCouponVo merVerifyCouponVo = new MerVerifyCouponVo(); // 调用remoteCouponService的getVerifyCoupon方法获取MerVerifyCouponGetVo对象 List<Goods> goodsList = verifyCouponGetVo.getGoodsList(); + String relGoodsIds = memberCoupon.getRelGoodsIds(); + String[] relGoodsIdArr = relGoodsIds.split(","); + if(relGoodsIdArr.length!=goodsList.size()){ + throw new ServiceException(AppErrorConstant.GOODS_DOWN); + } merVerifyCouponVo.setUserName(member.getRealName()); merVerifyCouponVo.setUserMobile(member.getMobile()); merVerifyCouponVo.setCouponFrom(verifyCouponGetVo.getCouponFrom()); merVerifyCouponVo.setCouponName(memberCoupon.getCouponName()); merVerifyCouponVo.setCreateTime(memberCoupon.getReceiveTime()); // 将goodsList转换为MerCouponGoodsListVo列表,并设置相应属性 - List<MerCouponGoodsListVo> merCouponGoodsList = goodsList.stream() - .map(goods -> { - MerCouponGoodsListVo merCouponGoods = new MerCouponGoodsListVo(); - merCouponGoods.setGoodsId(goods.getGoodsId()); - merCouponGoods.setGoodsName(goods.getGoodsName()); - if (goods.getGoodsType() == 1) { - merCouponGoods.setGoodsType("周期"); - } else if (goods.getGoodsType() == 2) { - merCouponGoods.setGoodsType("服务"); - } else if (goods.getGoodsType() == 3) { - merCouponGoods.setGoodsType("体验"); - } else if (goods.getGoodsType() == 4) { - merCouponGoods.setGoodsType("单品"); - } - // 设置其他属性 - return merCouponGoods; - }).collect(Collectors.toList()); + List<MerCouponGoodsListVo> merCouponGoodsList = new ArrayList<>(); + MerCouponGoodsListVo merCouponGoods; + for(Goods goods : goodsList){ + if(goods.getGoodsStatus()!=1){ + throw new ServiceException(AppErrorConstant.GOODS_DOWN); + } + merCouponGoods = new MerCouponGoodsListVo(); + merCouponGoods.setGoodsId(goods.getGoodsId()); + merCouponGoods.setGoodsName(goods.getGoodsName()); + if (goods.getGoodsType() == 1) { + merCouponGoods.setGoodsType("周期"); + } else if (goods.getGoodsType() == 2) { + merCouponGoods.setGoodsType("服务"); + } else if (goods.getGoodsType() == 3) { + merCouponGoods.setGoodsType("体验"); + } else if (goods.getGoodsType() == 4) { + merCouponGoods.setGoodsType("单品"); + } + merCouponGoodsList.add(merCouponGoods); + } // 设置merVerifyCouponVo的goodsList属性为merCouponGoodsList merVerifyCouponVo.setGoodsList(merCouponGoodsList); //生成服务 @@ -2266,6 +2274,9 @@ SysUser sysUser; if (member != null) { sysUser = remoteUserService.getSysUser(member.getUserId()).getData(); + if(member.getBindingFlag()==1&&!member.getRelationShopId().equals(merNewOrderDto.getShopId())){ + throw new ServiceException(AppErrorConstant.USER_BINDING_ERROR); + } } else { //创建新用户 String memberId = IdUtils.simpleUUID(); diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/ConsumerGoodsMapper.xml b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/ConsumerGoodsMapper.xml index 8eb47cb..59c5c58 100644 --- a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/ConsumerGoodsMapper.xml +++ b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/ConsumerGoodsMapper.xml @@ -153,7 +153,8 @@ tcg.cycle_num_flag cycleNumFlag, tcg.service_num serviceNum, tcg.used_num usedNum, - tcg.sure_num sureNum + tcg.sure_num sureNum, + tcg.goods_tag goodsTags FROM t_consumer_goods tcg WHERE tcg.del_flag = 0 AND tcg.user_id = #{param.memberUserId} AND tcg.shop_id = #{param.shopId} AND tcg.service_status = 1 AND tcg.goods_type = 1 AND tcg.cycle_num_flag = 0 @@ -172,7 +173,8 @@ tcg.goods_nurses goodsNurses, tcg.cycle_num_flag cycleNumFlag, tcg.service_num serviceNum, - tcg.used_num usedNum + tcg.used_num usedNum, + tcg.goods_tag goodsTags FROM t_consumer_goods tcg WHERE tcg.del_flag = 0 AND tcg.user_id = #{param.memberUserId} AND tcg.shop_id = #{param.shopId} AND tcg.service_status = 1 AND tcg.goods_type = #{param.goodsType} AND tcg.cycle_num_flag = 1 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 d70d237..cb57a11 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 @@ -349,7 +349,7 @@ toc.close_flag closeFlag FROM t_order toc WHERE toc.del_flag = 0 AND toc.user_id = #{param.memberUserId} AND toc.order_status = 3 - <if test="param.closeFlag != null and param.closeFlag != ''"> + <if test="param.closeFlag != null"> AND toc.close_flag = #{param.closeFlag} </if> ORDER BY toc.create_time DESC -- Gitblit v1.7.1