From c5d38d650d2ac4101b1293a4f17346e7d5420076 Mon Sep 17 00:00:00 2001
From: huliguo <2023611923@qq.com>
Date: 星期五, 04 七月 2025 20:39:58 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/2.0' into 2.0
---
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java | 138 ++++++++++++++++++++++++++++++++++++++-------
1 files changed, 115 insertions(+), 23 deletions(-)
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 aa12d41..14e1a02 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
@@ -4,13 +4,19 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.ServiceException;
+import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.member.domain.dto.AppMemberCouponPageDto;
import com.ruoyi.member.domain.dto.MemberSelectCouponDto;
import com.ruoyi.member.domain.dto.MerGoodsCouponListDto;
+import com.ruoyi.member.domain.pojo.coupon.Coupon;
import com.ruoyi.member.domain.vo.AppMemberCouponPageVo;
+import com.ruoyi.member.mapper.coupon.CouponMapper;
import com.ruoyi.member.mapper.member.MemberCouponMapper;
+import com.ruoyi.member.service.coupon.CouponService;
+import com.ruoyi.member.service.coupon.MemberCouponRecordService;
import com.ruoyi.member.service.member.MemberCouponService;
import com.ruoyi.system.api.constant.AppErrorConstant;
import com.ruoyi.system.api.domain.dto.MerBaseDto;
@@ -45,17 +51,26 @@
@Service
@DS("sharding")
public class MemberCouponServiceImpl extends ServiceImpl<MemberCouponMapper, MemberCoupon> implements MemberCouponService {
-
+
@Resource
private MemberCouponMapper memberCouponMapper;
-
+
@Resource
private RemoteGoodsService remoteGoodsService;
-
+
@Resource
private RemoteShopService remoteShopService;
-
-
+
+ @Resource
+ private CouponService couponService;
+
+ @Resource
+ private MemberCouponRecordService memberCouponRecordService;
+
+ @Resource
+ private CouponMapper couponMapper;
+
+
/**
* @description: TODO
* @author jqs34
@@ -63,11 +78,11 @@
* @version 1.0
*/
@Override
- public List<AppMemberCouponVo> listVoMemberCouponByUserId(MerBaseDto merBaseDto){
+ public List<AppMemberCouponVo> listVoMemberCouponByUserId(MerBaseDto merBaseDto) {
List<AppMemberCouponVo> appMemberCouponVoList = memberCouponMapper.listVoMemberCouponByUserId(merBaseDto);
return appMemberCouponVoList;
}
-
+
/**
* @description 核销优惠券
* @author jqs
@@ -112,7 +127,7 @@
merVerifyCouponGetVo.setMemberCoupon(memberCoupon);
return merVerifyCouponGetVo;
}
-
+
/**
* @description 核销优惠券
* @author jqs
@@ -150,13 +165,13 @@
merVerifyCouponGetVo.setCouponFrom("平台");
}
memberCoupon.setCouponStatus(2);
-
+
memberCoupon.setUseTime(new Date());
this.saveOrUpdate(memberCoupon);
merVerifyCouponGetVo.setMemberCoupon(memberCoupon);
return merVerifyCouponGetVo;
}
-
+
/**
* @description
* @author jqs
@@ -173,7 +188,7 @@
Integer total = this.count(queryWrapper);
return total;
}
-
+
/**
* @description 用户分页获取已领取优惠券列表
* @author jqs
@@ -261,7 +276,7 @@
}
return memberCouponPageVoList;
}
-
+
/**
* @description 定时检查优惠券过期
* @author jqs
@@ -273,7 +288,7 @@
public void timingCheckMemberCoupon(){
memberCouponMapper.timingCheckMemberCoupon();
}
-
+
/**
* @description 使用优惠券
* @author jqs
@@ -286,7 +301,7 @@
public void useMemberCoupon(String memberCouponIds){
memberCouponMapper.useMemberCoupon(memberCouponIds);
}
-
+
/**
* @description 使用优惠券
* @author jqs
@@ -298,7 +313,7 @@
public void backMemberCoupon(String memberCouponIds){
memberCouponMapper.backMemberCoupon(memberCouponIds);
}
-
+
/**
* @description
* @author jqs
@@ -347,24 +362,101 @@
}
return merMemberCouponVoList;
}
-
-
+
+
/**
- * @description 确认核销优惠券
- * @author jqs
- * @date 2023/8/15 11:21
* @param memberCouponId
* @param shopId
- * @return void
+ * @return void
+ * @description 确认核销优惠券
+ * @author jqs
+ * @date 2023/8/15 11:21
*/
@Override
- public void sureMemberCoupon(Long memberCouponId, Long shopId){
+ public void sureMemberCoupon(Long memberCouponId, Long shopId) {
memberCouponMapper.sureMemberCoupon(memberCouponId, shopId);
}
-
+
@Override
@Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)
public void insert(MemberCoupon memberCoupon) {
this.baseMapper.insert(memberCoupon);
}
+
+
+ /**
+ * 手动添加用户优惠券
+ *
+ * @param couponId
+ * @param number
+ * @return
+ */
+ @Override
+ public R addMemberCoupon(String couponId, Integer number, Long userId) {
+ Coupon coupon = couponService.getById(couponId);
+ if (null == coupon) {
+ return R.fail("优惠券不存在");
+ }
+ List<MemberCoupon> memberCouponList = new ArrayList<>();
+ MemberCoupon memberCoupon;
+ Integer sendTotal = 0;
+ Integer sendPerson = 0;
+ Integer sendUserTotal;
+ for (int i = 0; i < number; i++) {
+ memberCoupon = new MemberCoupon();
+ memberCoupon.setDelFlag(0);
+ memberCoupon.setCouponId(coupon.getCouponId());
+ memberCoupon.setUserId(userId);
+ memberCoupon.setShopId(coupon.getShopId());
+ memberCoupon.setCouponType(coupon.getCouponType());
+ if (coupon.getCouponType() == 1) {
+ memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold());
+ memberCoupon.setDiscountMoney(coupon.getDiscountMoney());
+ } else if (coupon.getCouponType() == 2) {
+ memberCoupon.setDiscountPercent(coupon.getDiscountPercent());
+ } else if (coupon.getCouponType() == 3) {
+ memberCoupon.setDiscountMoney(coupon.getDiscountMoney());
+ } else {
+ memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds());
+ }
+ 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.setUseScope(coupon.getUseScope());
+ if (memberCoupon.getUseScope() == 2) {
+ memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds());
+ }
+ memberCoupon.setValidTimeType(coupon.getValidTimeType());
+ 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) {
+ memberCoupon.setDeadlineTime(coupon.getValidEndTime());
+ } else if (coupon.getValidTimeType() == 2) {
+ memberCoupon.setDeadlineTime(DateUtils.addDays(new Date(), coupon.getValidDay()));
+ }
+ memberCouponList.add(memberCoupon);
+ sendTotal = sendTotal + 1;
+ if (coupon.getSendType() == 1) {
+ sendUserTotal = this.totalMemberCouponByUserAndCoupon(userId, coupon.getCouponId());
+ if (sendUserTotal != null && sendUserTotal > 0) {
+ } else {
+ sendPerson = sendPerson + 1;
+ }
+ }
+ memberCouponRecordService.updateMemberCouponRecord(coupon, userId, 1);
+ }
+ this.saveBatch(memberCouponList);
+ //处理优惠券统计
+ if (sendTotal > 0) {
+ couponMapper.updateCouponTotal(coupon.getCouponId(), sendTotal, sendPerson);
+ }
+ return R.ok();
+ }
}
--
Gitblit v1.7.1