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 = "员工没有录入系统"; 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; } 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; } 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; } 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; } 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; 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); } 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); //判断优惠券状态 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); } } 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); //核销商店 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 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> 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> 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); 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; 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(); 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 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