From 6a55e75b8530197d1f561f710f9e53b7e40be171 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Wed, 01 Jul 2026 11:06:49 +0800
Subject: [PATCH] refactor(mall): 重构会员优惠券绑定逻辑
---
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java | 99 +++++++++++++++++++++++++++++++++++++------------
1 files changed, 75 insertions(+), 24 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
index cfee35e..7e553d1 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
@@ -3,16 +3,12 @@
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.entity.QueryRequest;
import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
-import cc.mrbird.febs.common.enumerates.FlowTypeEnum;
import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.common.utils.AppContants;
-import cc.mrbird.febs.common.utils.LoginUserUtil;
-import cc.mrbird.febs.common.utils.MallUtils;
import cc.mrbird.febs.common.utils.RedisUtils;
import cc.mrbird.febs.mall.dto.*;
import cc.mrbird.febs.mall.entity.*;
-import cc.mrbird.febs.mall.entity.MallNewsInfo;
import cc.mrbird.febs.mall.mapper.*;
import cc.mrbird.febs.mall.service.IAdminMallMemberService;
import cc.mrbird.febs.mall.service.IApiMallMemberWalletService;
@@ -21,6 +17,8 @@
import cc.mrbird.febs.pay.model.MemberWithdrawalDto;
import cc.mrbird.febs.pay.service.IXcxPayService;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
@@ -31,7 +29,6 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.apache.xmlbeans.impl.store.Query;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -75,6 +72,8 @@
private final MallAgentRecordMapper mallAgentRecordMapper;
private final MallSalesmanMapper mallSalesmanMapper;
private final SalemanCouponMapper salemanCouponMapper;
+ private final MallMemberCouponMapper mallMemberCouponMapper;
+ private final MallGoodsCouponMapper mallGoodsCouponMapper;
@Override
public IPage<MallMember> getMallMemberList(MallMember mallMember, QueryRequest request) {
@@ -316,6 +315,17 @@
}
@Override
+ public FebsResponse doctorStateChange(Long id) {
+ MallMember mallMember = this.baseMapper.selectById(id);
+ if(ObjectUtil.isEmpty(mallMember)){
+ throw new FebsException("请刷新页面");
+ }
+ mallMember.setDoctorState(mallMember.getDoctorState() == 1 ? 0 : 1);
+ this.baseMapper.updateById(mallMember);
+ return new FebsResponse().success().message("操作成功");
+ }
+
+ @Override
public FebsResponse upCoupon(Long id) {
MallMember mallMember = this.baseMapper.selectById(id);
if(ObjectUtil.isEmpty(mallMember)){
@@ -354,6 +364,14 @@
if(ObjectUtil.isEmpty(mallMember)){
throw new FebsException("请刷新页面");
}
+ String redisKey = AppContants.XCX_LOGIN_PREFIX + mallMember.getId();
+ String existToken = redisUtils.getString(redisKey);
+ if (StrUtil.isNotBlank(existToken)) {
+ Object o = redisUtils.get(existToken);
+ if (ObjectUtil.isNotEmpty(o)) {
+ redisUtils.del(existToken);
+ }
+ }
redisUtils.del(AppContants.XCX_LOGIN_PREFIX + id);
redisUtils.del(AppContants.XCX_LOGIN_PHONE_PREFIX + id);
this.baseMapper.deleteById(mallMember);
@@ -373,21 +391,20 @@
if(ObjectUtil.isEmpty(member)){
throw new FebsException("请刷新页面");
}
- Long couponId = mallmember.getCouponId();
+ // 先删除旧绑定,再插入新绑定(全量替换)
+ QueryWrapper<SalemanCoupon> deleteWrapper = new QueryWrapper<>();
+ deleteWrapper.eq("member_id", member.getId());
+ salemanCouponMapper.delete(deleteWrapper);
- QueryWrapper<SalemanCoupon> objectQueryWrapper = new QueryWrapper<>();
- objectQueryWrapper.eq("member_id",member.getId());
- List<SalemanCoupon> salemanCouponList = salemanCouponMapper.selectList(objectQueryWrapper);
- if(CollUtil.isNotEmpty(salemanCouponList)){
- SalemanCoupon salemanCoupon = salemanCouponList.get(0);
- salemanCoupon.setCouponId(couponId);
- salemanCouponMapper.updateById(salemanCoupon);
- return new FebsResponse().success().message("操作成功");
+ List<Long> couponIds = mallmember.getCouponIds();
+ if(CollUtil.isNotEmpty(couponIds)){
+ for(Long couponId : couponIds){
+ SalemanCoupon salemanCoupon = new SalemanCoupon();
+ salemanCoupon.setMemberId(member.getId());
+ salemanCoupon.setCouponId(couponId);
+ salemanCouponMapper.insert(salemanCoupon);
+ }
}
- SalemanCoupon salemanCoupon = new SalemanCoupon();
- salemanCoupon.setMemberId(member.getId());
- salemanCoupon.setCouponId(couponId);
- salemanCouponMapper.insert(salemanCoupon);
return new FebsResponse().success().message("操作成功");
}
@@ -689,16 +706,29 @@
@Override
@Transactional(rollbackFor = Exception.class)
public void modifyReferer(MallMember member) {
- MallMember referer = this.baseMapper.selectInfoByInviteId(member.getReferrerId());
+ if(StrUtil.isEmpty(member.getReferrerId())){
+ this.baseMapper.updateReferrerId(member.getId());
+ return;
+ }
+ String referrerId = member.getReferrerId();//新的推荐人邀请码
+ //获取新推荐人信息
+ MallMember referer = this.baseMapper.selectInfoByInviteId(referrerId);
if (referer == null) {
throw new FebsException("推荐人不存在");
}
- String refererId = member.getReferrerId();
+ member = this.baseMapper.selectById(member.getId());//修改的用户
- member = this.baseMapper.selectById(member.getId());
-
- String beforeReferer = member.getReferrerId();
- member.setReferrerId(refererId);
+ if(member.getInviteId().equals(referrerId)){
+ throw new FebsException("自己不能推荐自己");
+ }
+ String refererId = referer.getInviteId();//新推荐人的邀请码
+ if(StrUtil.isNotEmpty(referer.getReferrerIds())){
+ if (referer.getReferrerIds().contains(member.getInviteId())) {
+ throw new FebsException("修改的推荐关系不符合规则");
+ }
+ }
+// String beforeReferer = member.getReferrerId();
+ member.setReferrerId(refererId);//更新用户的上级推荐人为新推荐人的邀请码refererId
String refererIds = refererIds(refererId);
member.setReferrerIds(refererIds);
this.baseMapper.updateById(member);
@@ -903,4 +933,25 @@
return ids;
}
+
+ @Override
+ public FebsResponse addMemberCoupon(MallMember member) {
+ MallGoodsCoupon existCoupon = mallGoodsCouponMapper.selectById(member.getCouponId());
+ if(existCoupon == null) {
+ return new FebsResponse().fail().message("优惠券不存在");
+ }
+
+ MallMemberCoupon memberCoupon = new MallMemberCoupon();
+ memberCoupon.setCouponId(existCoupon.getId());
+ memberCoupon.setCouponName(existCoupon.getName());
+ memberCoupon.setInviteId(member.getInviteId());
+ memberCoupon.setCouponUuid(IdUtil.simpleUUID());
+ memberCoupon.setState(1);
+ memberCoupon.setFromType(4);
+ memberCoupon.setExpireTime(DateUtil.offsetDay(DateUtil.date(), existCoupon.getExpireDay()));
+ memberCoupon.setMemberId(member.getId());
+ mallMemberCouponMapper.insert(memberCoupon);
+
+ return new FebsResponse().success().message("操作成功");
+ }
}
--
Gitblit v1.9.1