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