From 19c3da86d8c6adcb91baccac6981c63307e3dba1 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Fri, 20 Dec 2024 13:01:12 +0800 Subject: [PATCH] fix(mall): 修复会员提现状态更新逻辑 --- src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java | 223 +++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 191 insertions(+), 32 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 f3fc8bf..026eaba 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 @@ -2,15 +2,13 @@ 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.enumerates.*; import cc.mrbird.febs.common.exception.FebsException; -import cc.mrbird.febs.common.utils.LoginUserUtil; +import cc.mrbird.febs.common.utils.AppContants; 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; @@ -19,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; @@ -29,10 +29,10 @@ 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; +import javax.validation.constraints.NotNull; import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -46,6 +46,8 @@ @RequiredArgsConstructor @Transactional public class AdminMallMemberServiceImpl extends ServiceImpl<MallMemberMapper, MallMember> implements IAdminMallMemberService { + + private final RedisUtils redisUtils; private final MallMemberMapper mallMemberMapper; @@ -70,25 +72,14 @@ 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) { Page<MallMember> page = new Page<>(request.getPageNum(), request.getPageSize()); IPage<MallMember> mallMembers = this.baseMapper.selectMallMemberListInPage(page, mallMember); - if(CollUtil.isNotEmpty(mallMembers.getRecords())){ - for(MallMember mallMemberTeam : mallMembers.getRecords()){ - Long salesmansId = mallMemberTeam.getSalesmansId(); - MallSalesman mallSalesman = mallSalesmanMapper.selectById(salesmansId); - if(ObjectUtil.isNotEmpty(mallSalesman)){ - StringBuffer salesmanName = new StringBuffer(); - salesmanName.append(mallSalesman.getName()); - if(2 == mallSalesman.getState()){ - salesmanName.append("(禁用)"); - } - mallMemberTeam.setSalesmansName(salesmanName.toString()); - } - } - } return mallMembers; } @@ -99,7 +90,7 @@ if(ObjectUtil.isEmpty(mallMember)) { return new FebsResponse().fail().message("会员信息不存在"); } - mallMember.setAccountStatus(MallMember.ACCOUNT_STATUS_DISABLED); + mallMember.setAccountStatus(YesOrNoEnum.NO.getValue()); mallMemberMapper.updateById(mallMember); return new FebsResponse().success(); } @@ -111,7 +102,7 @@ if(ObjectUtil.isEmpty(mallMember)) { return new FebsResponse().fail().message("会员信息不存在"); } - mallMember.setAccountStatus(MallMember.ACCOUNT_STATUS_ENABLE); + mallMember.setAccountStatus(YesOrNoEnum.YES.getValue()); mallMemberMapper.updateById(mallMember); return new FebsResponse().success(); } @@ -137,6 +128,12 @@ @Override public MallMemberVo getMallMemberInfoById(long id) { MallMemberVo mallMemberVo = mallMemberMapper.getMallMemberInfoById(id); + return mallMemberVo; + } + + @Override + public MallMemberVo getMallMemberWalletById(@NotNull(message = "{required}") long id) { + MallMemberVo mallMemberVo = mallMemberMapper.getMallMemberWalletById(id); return mallMemberVo; } @@ -285,6 +282,115 @@ return dataDictionaryCustomMapper.getAgentLevelOption(); } + + @Override + public List<AdminAgentLevelOptionTreeVo> agentLevelOption() { + return dataDictionaryCustomMapper.agentLevelOption(); + } + + @Override + public FebsResponse agentVerifyUpdate(AdminAgentVerifyVo adminAgentVerifyVo) { + MallAgentRecord mallAgentRecord = mallAgentRecordMapper.selectById(adminAgentVerifyVo.getId()); + if(ObjectUtil.isEmpty(mallAgentRecord)){ + throw new FebsException("记录不存在"); + } + BigDecimal amount = adminAgentVerifyVo.getAmount(); + if(BigDecimal.ZERO.compareTo(amount) >= 0){ + throw new FebsException("请输入正确的金额"); + } +// if(StrUtil.isEmpty(adminAgentVerifyVo.getLevelCode())){ +// throw new FebsException("请选择代理级别"); +// } +// mallAgentRecord.setAgentLevel(adminAgentVerifyVo.getLevelCode()); + mallAgentRecord.setAmount(adminAgentVerifyVo.getAmount()); + mallAgentRecordMapper.updateById(mallAgentRecord); + return new FebsResponse().success().message("操作成功"); + } + + @Override + public FebsResponse upCoupon(Long id) { + MallMember mallMember = this.baseMapper.selectById(id); + if(ObjectUtil.isEmpty(mallMember)){ + throw new FebsException("请刷新页面"); + } + mallMember.setIsSale(1); + this.baseMapper.updateById(mallMember); + return new FebsResponse().success().message("操作成功"); + } + + @Override + public FebsResponse downCoupon(Long id) { + MallMember mallMember = this.baseMapper.selectById(id); + if(ObjectUtil.isEmpty(mallMember)){ + throw new FebsException("请刷新页面"); + } + mallMember.setIsSale(2); + this.baseMapper.updateById(mallMember); + + QueryWrapper<SalemanCoupon> objectQueryWrapper = new QueryWrapper<>(); + objectQueryWrapper.eq("member_id",mallMember.getId()); + List<SalemanCoupon> salemanCouponList = salemanCouponMapper.selectList(objectQueryWrapper); + if(CollUtil.isNotEmpty(salemanCouponList)){ + for(SalemanCoupon salemanCoupon : salemanCouponList){ + salemanCouponMapper.deleteById(salemanCoupon); + } + } + + return new FebsResponse().success().message("操作成功"); + } + + @Override + public FebsResponse memberOut(Long id) { + + MallMember mallMember = this.baseMapper.selectById(id); + if(ObjectUtil.isEmpty(mallMember)){ + throw new FebsException("请刷新页面"); + } + String redisKey = AppContants.APP_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.APP_LOGIN_PREFIX + id); + redisUtils.del(AppContants.XCX_LOGIN_PHONE_PREFIX + id); + this.baseMapper.deleteById(mallMember); + return new FebsResponse().success().message("操作成功"); + } + + @Override + public IPage<MallMember> getsalemanRuleList(MallMember mallMember, QueryRequest request) { + Page<MallMember> page = new Page<>(request.getPageNum(), request.getPageSize()); + IPage<MallMember> mallMembers = this.baseMapper.getsalemanRuleList(page, mallMember); + return mallMembers; + } + + @Override + public FebsResponse salemanCoupon(MallMember mallmember) { + MallMember member = this.baseMapper.selectById(mallmember.getId()); + if(ObjectUtil.isEmpty(member)){ + throw new FebsException("请刷新页面"); + } + Long couponId = mallmember.getCouponId(); + + 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("操作成功"); + } + SalemanCoupon salemanCoupon = new SalemanCoupon(); + salemanCoupon.setMemberId(member.getId()); + salemanCoupon.setCouponId(couponId); + salemanCouponMapper.insert(salemanCoupon); + return new FebsResponse().success().message("操作成功"); + } + @Override public IPage<AdminAgentMemberVo> agentChild(QueryRequest request, MallMember mallMember) { Long memberId = mallMember.getId(); @@ -395,27 +501,46 @@ } Integer type = mallSystemPayDto.getType(); + Integer flowType = 0; + Integer moneyType = 0; + String moneyTypeDec = ""; String filedType = ""; if (type == 1) { filedType = "balance"; + flowType = FlowTypeEnum.BALANCE.getValue(); + moneyType = RunVipMoneyFlowTypeEnum.SYS_BALANCE.getValue(); + moneyTypeDec = RunVipMoneyFlowTypeEnum.SYS_BALANCE.getDescription(); } else if (type == 2) { filedType = "score"; + flowType = FlowTypeEnum.SCORE.getValue(); + moneyType = RunVipMoneyFlowTypeEnum.SYS_SCORE.getValue(); + moneyTypeDec = RunVipMoneyFlowTypeEnum.SYS_SCORE.getDescription(); } else if (type == 3) { filedType = "prizeScore"; } else { - throw new FebsException("参数错误"); + throw new FebsException("操作失败"); } if (isReduce) { int i = iApiMallMemberWalletService.reduce(mallSystemPayDto.getAddBalance().negate(), mallSystemPayDto.getId(), filedType); if (i == 2) { - throw new FebsException("剩余数量不足"); + throw new FebsException("操作失败"); } } else { iApiMallMemberWalletService.add(mallSystemPayDto.getAddBalance(), mallSystemPayDto.getId(), filedType); } - mallMoneyFlowService.addMoneyFlow(memberId, bigDecimal, MoneyFlowTypeEnum.SYSTEM.getValue(), null, type); + String orderNo = MallUtils.getOrderNum("SYS"); + mallMoneyFlowService.runVipMoneyFlowAdd( + mallMember.getId(), + mallMember.getId(), + orderNo, + flowType, + moneyType, + bigDecimal, + StrUtil.format(moneyTypeDec,bigDecimal), + YesOrNoEnum.YES.getValue() + ); return new FebsResponse().success(); } @@ -465,7 +590,7 @@ // 重置交易密码 if (type == 1) { - String payPwd = SecureUtil.md5("654321"); + String payPwd = SecureUtil.md5("123456"); member.setTradePassword(payPwd); // 重置登录密码 } else { @@ -583,16 +708,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); @@ -797,4 +935,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