| | |
| | | package cc.mrbird.febs.mall.service.impl; |
| | | |
| | | import cc.mrbird.febs.common.configure.FebsConfigure; |
| | | 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; |
| | | import cc.mrbird.febs.mall.service.IMallMoneyFlowService; |
| | | import cc.mrbird.febs.mall.vo.*; |
| | | 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.DateTime; |
| | | 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; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | 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; |
| | | import java.util.*; |
| | | import java.util.concurrent.CompletableFuture; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * @author wzy |
| | |
| | | @RequiredArgsConstructor |
| | | @Transactional |
| | | public class AdminMallMemberServiceImpl extends ServiceImpl<MallMemberMapper, MallMember> implements IAdminMallMemberService { |
| | | |
| | | private final RedisUtils redisUtils; |
| | | |
| | | private final MallMemberMapper mallMemberMapper; |
| | | |
| | |
| | | private final IApiMallMemberWalletService iApiMallMemberWalletService; |
| | | |
| | | private final AppVersionMapper appVersionMapper; |
| | | private final MallMemberWithdrawMapper mallMemberWithdrawMapper; |
| | | |
| | | private final MallNewsInfoMapper mallNewsInfoMapper; |
| | | private final MallShopApplyMapper mallShopApplyMapper; |
| | | |
| | | private final IMallMoneyFlowService mallMoneyFlowService; |
| | | private final MallTeamLeaderMapper mallTeamLeaderMapper; |
| | | |
| | | private final MallAgentRecordMapper mallAgentRecordMapper; |
| | | private final MallSalesmanMapper mallSalesmanMapper; |
| | | private final SalemanCouponMapper salemanCouponMapper; |
| | | private final MallMemberCouponMapper mallMemberCouponMapper; |
| | | private final MallGoodsCouponMapper mallGoodsCouponMapper; |
| | | private final FebsConfigure febsConfigure; |
| | | private final MallChargeMapper mallChargeMapper; |
| | | |
| | | @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); |
| | | List<MallMember> records = mallMembers.getRecords(); |
| | | if(CollUtil.isNotEmpty(records)){ |
| | | List<CompletableFuture<Void>> futures = new ArrayList<>(); |
| | | DateTime endTime = DateUtil.date(); |
| | | records.forEach(item -> { |
| | | CompletableFuture<Void> uCompletableFuture = CompletableFuture.runAsync(() -> { |
| | | List<MallMember> directMembers = mallMemberMapper.selectList( |
| | | new LambdaQueryWrapper<MallMember>() |
| | | .eq(MallMember::getReferrerId, item.getInviteId()) |
| | | ); |
| | | //获取直推 |
| | | Set<String> directInviteIds = directMembers.stream() |
| | | .map(MallMember::getInviteId) |
| | | .collect(Collectors.toSet()); |
| | | Set<String> directCntAvailableInviteIds = directMembers.stream() |
| | | .filter(member -> !"YOUKE".equals(member.getLevel())) |
| | | .map(MallMember::getInviteId) |
| | | .collect(Collectors.toSet()); |
| | | if(CollUtil.isNotEmpty(directInviteIds)){ |
| | | item.setDirectCnt(directInviteIds.size()); |
| | | item.setDirectCntAvailable(directCntAvailableInviteIds.size()); |
| | | //获取团队 |
| | | List<MallMember> allMembers = mallMemberMapper.selectList( |
| | | new LambdaQueryWrapper<MallMember>() |
| | | .eq(MallMember::getReferrerId, item.getInviteId()) |
| | | .or() |
| | | .in(MallMember::getReferrerId, directInviteIds) |
| | | ); |
| | | |
| | | |
| | | if(CollUtil.isNotEmpty(allMembers)){ |
| | | item.setTeamCnt(allMembers.size()); |
| | | // 获取团队业绩(不包含本人业绩) |
| | | List<MallCharge> mallCharges = mallChargeMapper.selectList( |
| | | new LambdaQueryWrapper<MallCharge>() |
| | | .in(MallCharge::getMemberId, allMembers.stream().map(MallMember::getId).collect(Collectors.toSet())) |
| | | .eq(MallCharge::getState, YesOrNoEnum.YES.getValue()) |
| | | .ge(MallCharge::getCreatedTime, item.getDirectorTime()) |
| | | .lt(MallCharge::getCreatedTime, endTime) |
| | | ); |
| | | if (CollUtil.isNotEmpty(mallCharges)) { |
| | | item.setAchieveCnt(mallCharges.stream() |
| | | .map(MallCharge::getAmount) |
| | | .reduce(BigDecimal.ZERO, BigDecimal::add)); |
| | | } |
| | | } |
| | | } |
| | | }, febsConfigure.asyncThreadPoolTaskExecutor()); |
| | | futures.add(uCompletableFuture); |
| | | }); |
| | | // 等待所有任务完成 |
| | | CompletableFuture<Void> allOf = CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])); |
| | | allOf.join(); // 阻塞直到所有任务完成 |
| | | } |
| | | return mallMembers; |
| | | } |
| | | |
| | |
| | | if(ObjectUtil.isEmpty(mallMember)) { |
| | | return new FebsResponse().fail().message("会员信息不存在"); |
| | | } |
| | | mallMember.setAccountStatus(MallMember.ACCOUNT_STATUS_DISABLED); |
| | | mallMember.setAccountStatus(YesOrNoEnum.NO.getValue()); |
| | | mallMemberMapper.updateById(mallMember); |
| | | |
| | | 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); |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | |
| | | 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(); |
| | | } |
| | |
| | | |
| | | if (type == 1) { |
| | | mallMember.setDirector(value); |
| | | mallMember.setDirectorTime(DateUtil.date()); |
| | | } else if (type == 2){ |
| | | mallMember.setStoreMaster(value); |
| | | } else { |
| | |
| | | @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; |
| | | } |
| | | |
| | |
| | | return adminMoneyChargeListVos; |
| | | } |
| | | |
| | | private final IXcxPayService iXcxPayService; |
| | | |
| | | @Override |
| | | @Transactional |
| | | public FebsResponse chargeAgree(Long id) { |
| | | MallMoneyFlow mallMoneyFlow = mallMoneyFlowMapper.selectById(id); |
| | | if(ObjectUtil.isEmpty(mallMoneyFlow)){ |
| | | |
| | | MallMemberWithdraw mallMemberWithdraw = mallMemberWithdrawMapper.selectById(id); |
| | | if(ObjectUtil.isEmpty(mallMemberWithdraw)){ |
| | | return new FebsResponse().fail().message("系统繁忙,请刷新后重试"); |
| | | } |
| | | if(1 != mallMoneyFlow.getStatus()){ |
| | | if(1 != mallMemberWithdraw.getStatus()){ |
| | | return new FebsResponse().fail().message("当前状态不是提现中"); |
| | | } |
| | | |
| | | QueryWrapper<MallMoneyFlow> objectQueryWrapper = new QueryWrapper<>(); |
| | | objectQueryWrapper.eq("order_no",mallMemberWithdraw.getWithdrawNo()); |
| | | objectQueryWrapper.eq("type",MoneyFlowTypeEnum.WITHDRAWAL.getValue()); |
| | | MallMoneyFlow mallMoneyFlow = mallMoneyFlowMapper.selectOne(objectQueryWrapper); |
| | | Long memberId = mallMemberWithdraw.getMemberId(); |
| | | MallMember mallMember = mallMemberMapper.selectById(memberId); |
| | | MemberWithdrawalDto memberWithdrawalDto = new MemberWithdrawalDto(); |
| | | memberWithdrawalDto.setDesc("余额提现"); |
| | | memberWithdrawalDto.setOpenid(mallMember.getOpenId()); |
| | | memberWithdrawalDto.setTotalFee(mallMemberWithdraw.getAmount()); |
| | | memberWithdrawalDto.setOutTradeNo(mallMoneyFlow.getOrderNo()); |
| | | Boolean aBoolean = iXcxPayService.memberWithdrawal(memberWithdrawalDto); |
| | | if(!aBoolean){ |
| | | return new FebsResponse().fail().message("微信提现失败,请查看微信商户状态"); |
| | | } |
| | | mallMemberWithdraw.setStatus(2); |
| | | mallMemberWithdrawMapper.updateById(mallMemberWithdraw); |
| | | mallMoneyFlow.setStatus(2); |
| | | mallMoneyFlowMapper.updateById(mallMoneyFlow); |
| | | return new FebsResponse().success(); |
| | |
| | | @Override |
| | | @Transactional |
| | | public FebsResponse chargeDisagree(Long id) { |
| | | MallMoneyFlow mallMoneyFlow = mallMoneyFlowMapper.selectById(id); |
| | | if(ObjectUtil.isEmpty(mallMoneyFlow)){ |
| | | MallMemberWithdraw mallMemberWithdraw = mallMemberWithdrawMapper.selectById(id); |
| | | if(ObjectUtil.isEmpty(mallMemberWithdraw)){ |
| | | return new FebsResponse().fail().message("系统繁忙,请刷新后重试"); |
| | | } |
| | | if(1 != mallMoneyFlow.getStatus()){ |
| | | if(1 != mallMemberWithdraw.getStatus()){ |
| | | return new FebsResponse().fail().message("当前状态不是提现中"); |
| | | } |
| | | mallMemberWithdraw.setStatus(3); |
| | | mallMemberWithdrawMapper.updateById(mallMemberWithdraw); |
| | | |
| | | QueryWrapper<MallMoneyFlow> objectQueryWrapper = new QueryWrapper<>(); |
| | | objectQueryWrapper.eq("order_no",mallMemberWithdraw.getWithdrawNo()); |
| | | objectQueryWrapper.eq("type",MoneyFlowTypeEnum.WITHDRAWAL.getValue()); |
| | | MallMoneyFlow mallMoneyFlow = mallMoneyFlowMapper.selectOne(objectQueryWrapper); |
| | | mallMoneyFlow.setStatus(3); |
| | | mallMoneyFlowMapper.updateById(mallMoneyFlow); |
| | | |
| | |
| | | @Override |
| | | public AdminMallMemberPaymentVo getMallMemberPaymentInfoByFlowId(long id) { |
| | | AdminMallMemberPaymentVo adminMallMemberPaymentVo = new AdminMallMemberPaymentVo(); |
| | | MallMoneyFlow mallMoneyFlow = mallMoneyFlowMapper.selectById(id); |
| | | AdminMallMemberPaymentVo adminMallMemberPaymentVoa = mallMemberPaymentMapper.getMallMemberPaymentInfoByMemberId(mallMoneyFlow.getMemberId()); |
| | | MallMemberWithdraw mallMemberWithdraw = mallMemberWithdrawMapper.selectById(id); |
| | | AdminMallMemberPaymentVo adminMallMemberPaymentVoa = mallMemberPaymentMapper.getMallMemberPaymentInfoByMemberId(mallMemberWithdraw.getMemberId()); |
| | | if(ObjectUtil.isNotEmpty(adminMallMemberPaymentVoa)){ |
| | | adminMallMemberPaymentVo = adminMallMemberPaymentVoa; |
| | | } |
| | |
| | | @Override |
| | | public List<AdminAgentLevelOptionTreeVo> getAgentLevelOption() { |
| | | 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 |
| | |
| | | } |
| | | |
| | | 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) { |
| | | iApiMallMemberWalletService.reduce(mallSystemPayDto.getAddBalance().negate(), mallSystemPayDto.getId(), filedType); |
| | | int i = iApiMallMemberWalletService.reduce(mallSystemPayDto.getAddBalance().negate(), mallSystemPayDto.getId(), filedType); |
| | | |
| | | if (i == 2) { |
| | | 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(); |
| | | } |
| | | |
| | |
| | | |
| | | // 重置交易密码 |
| | | if (type == 1) { |
| | | String payPwd = SecureUtil.md5("654321"); |
| | | String payPwd = SecureUtil.md5("123456"); |
| | | member.setTradePassword(payPwd); |
| | | // 重置登录密码 |
| | | } else { |
| | |
| | | @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); |
| | |
| | | child.setReferrerIds(member.getInviteId() + "," + refererIds); |
| | | this.baseMapper.updateById(child); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public IPage<MallAgentRecord> getAgentApplyList(MallAgentRecord mallAgentRecord, QueryRequest request) { |
| | | Page<MallAgentRecord> page = new Page<>(request.getPageNum(), request.getPageSize()); |
| | | IPage<MallAgentRecord> mallAgentRecords = mallAgentRecordMapper.selectMallAgentRecordListInPage(page, mallAgentRecord); |
| | | return mallAgentRecords; |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public FebsResponse agreeAgentApply(Long id) { |
| | | MallAgentRecord mallAgentRecord = mallAgentRecordMapper.selectById(id); |
| | | if(ObjectUtil.isEmpty(mallAgentRecord)){ |
| | | return new FebsResponse().fail().message("申请记录不存在"); |
| | | } |
| | | mallAgentRecord.setState(MallAgentRecord.APPLY_AGREE); |
| | | mallAgentRecordMapper.updateById(mallAgentRecord); |
| | | |
| | | //更新用户表中的LEVEL |
| | | MallMember mallMember = this.baseMapper.selectById(mallAgentRecord.getMemberId()); |
| | | if(ObjectUtil.isEmpty(mallMember)){ |
| | | return new FebsResponse().fail().message("用户不存在"); |
| | | } |
| | | mallMember.setLevel(AgentLevelEnum.FIRST_LEVEL.name()); |
| | | this.baseMapper.updateById(mallMember); |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public FebsResponse disagreeAgentApply(Long id) { |
| | | MallAgentRecord mallAgentRecord = mallAgentRecordMapper.selectById(id); |
| | | if(ObjectUtil.isEmpty(mallAgentRecord)){ |
| | | return new FebsResponse().fail().message("申请记录不存在"); |
| | | } |
| | | mallAgentRecord.setState(MallAgentRecord.APPLY_DISAGREE); |
| | | mallAgentRecordMapper.updateById(mallAgentRecord); |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | | @Override |
| | | public IPage<MallSalesman> getMallSalesmanListInPage(MallSalesman mallSalesman, QueryRequest request) { |
| | | Page<MallSalesman> page = new Page<>(request.getPageNum(), request.getPageSize()); |
| | | return mallSalesmanMapper.selectMallSalesmanListInPage(page, mallSalesman); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse addSalesman(MallSalesman mallSalesman) { |
| | | mallSalesmanMapper.insert(mallSalesman); |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse salesmanDel(Long id) { |
| | | MallSalesman mallSalesman = mallSalesmanMapper.selectById(id); |
| | | if(ObjectUtil.isEmpty(mallSalesman)){ |
| | | return new FebsResponse().fail().message("推销员不存在"); |
| | | } |
| | | mallSalesman.setState(2); |
| | | mallSalesmanMapper.updateById(mallSalesman); |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse salesmanUpdate(MallSalesman mallSalesman) { |
| | | MallSalesman mallSalesmanNow = mallSalesmanMapper.selectById(mallSalesman.getId()); |
| | | if(ObjectUtil.isEmpty(mallSalesmanNow)){ |
| | | return new FebsResponse().fail().message("推销员不存在"); |
| | | } |
| | | mallSalesmanMapper.updateById(mallSalesman); |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse salesmanUse(Long id) { |
| | | MallSalesman mallSalesman = mallSalesmanMapper.selectById(id); |
| | | if(ObjectUtil.isEmpty(mallSalesman)){ |
| | | return new FebsResponse().fail().message("推销员不存在"); |
| | | } |
| | | mallSalesman.setState(1); |
| | | mallSalesmanMapper.updateById(mallSalesman); |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | | @Override |
| | | public List<AdminMallSalesmansTreeVo> getSalesmansTree() { |
| | | List<AdminMallSalesmansTreeVo> adminMallSalesmansTreeVos = mallSalesmanMapper.selectTreeByState(1); |
| | | return adminMallSalesmansTreeVos; |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse memberUpdateSalesman(MallMember mallmember) { |
| | | MallMember mallMemberNow = mallMemberMapper.selectById(mallmember.getId()); |
| | | if(ObjectUtil.isEmpty(mallMemberNow)){ |
| | | return new FebsResponse().fail().message("用户不存在"); |
| | | } |
| | | mallMemberNow.setSalesmansId(mallmember.getSalesmansId()); |
| | | mallMemberMapper.updateById(mallMemberNow); |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | | @Override |
| | | public IPage<AdminMallAddressInfoVo> getAddressAmountList(MallAddressInfo mallAddressInfo, QueryRequest request) { |
| | | |
| | | Page<AdminMallAddressInfoVo> page = new Page<>(request.getPageNum(), request.getPageSize()); |
| | | IPage<AdminMallAddressInfoVo> adminMallAddressInfoVoIPage = mallSalesmanMapper.selectAddressAmountListInPage(page, mallAddressInfo); |
| | | List<AdminMallAddressInfoVo> records = adminMallAddressInfoVoIPage.getRecords(); |
| | | if(CollUtil.isNotEmpty(records)){ |
| | | for(AdminMallAddressInfoVo adminMallAddressInfoVo : records){ |
| | | String province = adminMallAddressInfoVo.getProvince(); |
| | | String city = adminMallAddressInfoVo.getCity(); |
| | | BigDecimal sumAmount = mallSalesmanMapper.selectSumOrderAmountByProvinceAndCity(province,city); |
| | | adminMallAddressInfoVo.setAmount(sumAmount); |
| | | Integer orderCnt = mallSalesmanMapper.selectSumOrderCntByProvinceAndCity(province,city); |
| | | adminMallAddressInfoVo.setOrderCnt(orderCnt); |
| | | } |
| | | } |
| | | return adminMallAddressInfoVoIPage; |
| | | } |
| | | |
| | | @Override |
| | | public List<AdminMallAddressInfoVo> getAddressTree() { |
| | | return mallSalesmanMapper.selectProvince(); |
| | | } |
| | | |
| | | @Override |
| | | public IPage<AdminSalesmanAchieveVo> getSalesmanAchieveList(MallSalesman mallSalesman, QueryRequest request) { |
| | | Page<AdminSalesmanAchieveVo> page = new Page<>(request.getPageNum(), request.getPageSize()); |
| | | IPage<AdminSalesmanAchieveVo> adminSalesmanAchieveVoIPage = mallSalesmanMapper.selectSalesmanAchieveListInPage(page, mallSalesman); |
| | | List<AdminSalesmanAchieveVo> records = adminSalesmanAchieveVoIPage.getRecords(); |
| | | if(CollUtil.isNotEmpty(records)){ |
| | | for(AdminSalesmanAchieveVo adminSalesmanAchieveVo : records){ |
| | | Long salesmanId = adminSalesmanAchieveVo.getSalesmanId(); |
| | | List<AdminMemberOrderVo> adminMemberOrderVos = mallSalesmanMapper.selectAdminMemberOrderVoBySalesmanId(salesmanId); |
| | | adminSalesmanAchieveVo.setOrderCnt(adminMemberOrderVos.size()); |
| | | adminSalesmanAchieveVo.setAdminMemberOrderVos(adminMemberOrderVos); |
| | | } |
| | | } |
| | | return adminSalesmanAchieveVoIPage; |
| | | } |
| | | |
| | | @Override |
| | | public List<AdminSalesmanAchieveVo> getSalesmanAchieveTree() { |
| | | return mallSalesmanMapper.selectSalesmanAchieveProvince(); |
| | | } |
| | | |
| | | @Override |
| | | public IPage<AdminMallAgentRecordVo> getAgentAchieveList(MallAgentRecord mallAgentRecord, QueryRequest request) { |
| | | Page<AdminMallAgentRecordVo> page = new Page<>(request.getPageNum(), request.getPageSize()); |
| | | IPage<AdminMallAgentRecordVo> adminMallAgentRecordVos = mallSalesmanMapper.selectAgentAchieveListInPage(page, mallAgentRecord); |
| | | return adminMallAgentRecordVos; |
| | | } |
| | | |
| | | @Override |
| | | public List<AdminMallAgentRecordVo> agentAddress() { |
| | | List<AdminMallAgentRecordVo> adminMallAgentRecordVos = mallSalesmanMapper.selectAgentAddressProvince(); |
| | | if(CollUtil.isNotEmpty(adminMallAgentRecordVos)){ |
| | | for(AdminMallAgentRecordVo adminMallAgentRecordVo : adminMallAgentRecordVos){ |
| | | String province = adminMallAgentRecordVo.getProvince(); |
| | | List<String> cityList = mallSalesmanMapper.selectAgentAddressCity(province); |
| | | adminMallAgentRecordVo.setCityList(cityList); |
| | | } |
| | | } |
| | | return adminMallAgentRecordVos; |
| | | } |
| | | |
| | | private String refererIds(String parentId) { |
| | |
| | | |
| | | 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("操作成功"); |
| | | } |
| | | } |