package cc.mrbird.febs.mall.service.impl; 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.MoneyFlowTypeEnum; import cc.mrbird.febs.common.exception.FebsException; import cc.mrbird.febs.common.utils.AppContants; import cc.mrbird.febs.common.utils.RedisUtils; import cc.mrbird.febs.mall.dto.*; import cc.mrbird.febs.mall.entity.*; 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.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.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.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.Date; import java.util.List; /** * @author wzy * @date 2021-09-16 **/ @Slf4j @Service @RequiredArgsConstructor @Transactional public class AdminMallMemberServiceImpl extends ServiceImpl implements IAdminMallMemberService { private final RedisUtils redisUtils; private final MallMemberMapper mallMemberMapper; private final MallMemberWalletMapper mallMemberWalletMapper; private final MallMoneyFlowMapper mallMoneyFlowMapper; private final MallMemberPaymentMapper mallMemberPaymentMapper; private final DataDictionaryCustomMapper dataDictionaryCustomMapper; 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; @Override public IPage getMallMemberList(MallMember mallMember, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); IPage 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; } @Override @Transactional public FebsResponse closeAccount(Long id) { MallMember mallMember = mallMemberMapper.selectById(id); if(ObjectUtil.isEmpty(mallMember)) { return new FebsResponse().fail().message("会员信息不存在"); } mallMember.setAccountStatus(MallMember.ACCOUNT_STATUS_DISABLED); mallMemberMapper.updateById(mallMember); return new FebsResponse().success(); } @Override @Transactional public FebsResponse openAccount(Long id) { MallMember mallMember = mallMemberMapper.selectById(id); if(ObjectUtil.isEmpty(mallMember)) { return new FebsResponse().fail().message("会员信息不存在"); } mallMember.setAccountStatus(MallMember.ACCOUNT_STATUS_ENABLE); mallMemberMapper.updateById(mallMember); return new FebsResponse().success(); } @Override public void changeIdentity(Integer type, Long id, Integer value) { MallMember mallMember = mallMemberMapper.selectById(id); if(mallMember == null) { throw new FebsException("参数错误"); } if (type == 1) { mallMember.setDirector(value); } else if (type == 2){ mallMember.setStoreMaster(value); } else { throw new FebsException("参数错误"); } this.baseMapper.updateById(mallMember); } @Override public MallMemberVo getMallMemberInfoById(long id) { MallMemberVo mallMemberVo = mallMemberMapper.getMallMemberInfoById(id); return mallMemberVo; } @Override public IPage moneyFlow(QueryRequest request, MallMember mallMember) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); IPage adminMallMoneyFlowVos = mallMoneyFlowMapper.selectMoneyFlowInPage(page, mallMember); return adminMallMoneyFlowVos; } @Override public IPage getMoneyFlowListInPage(MoneyFlowListDto moneyFlowListDto, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); IPage adminMoneyFlowListVos = mallMoneyFlowMapper.getMoneyFlowListInPage(page, moneyFlowListDto); return adminMoneyFlowListVos; } @Override public IPage getMoneyChargeListInPage(MoneyChargeListDto moneyChargeListDto, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); IPage adminMoneyChargeListVos = mallMoneyFlowMapper.getMoneyChargeListInPage(page, moneyChargeListDto); return adminMoneyChargeListVos; } private final IXcxPayService iXcxPayService; @Override @Transactional public FebsResponse chargeAgree(Long id) { MallMemberWithdraw mallMemberWithdraw = mallMemberWithdrawMapper.selectById(id); if(ObjectUtil.isEmpty(mallMemberWithdraw)){ return new FebsResponse().fail().message("系统繁忙,请刷新后重试"); } if(1 != mallMemberWithdraw.getStatus()){ return new FebsResponse().fail().message("当前状态不是提现中"); } QueryWrapper 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) { MallMemberWithdraw mallMemberWithdraw = mallMemberWithdrawMapper.selectById(id); if(ObjectUtil.isEmpty(mallMemberWithdraw)){ return new FebsResponse().fail().message("系统繁忙,请刷新后重试"); } if(1 != mallMemberWithdraw.getStatus()){ return new FebsResponse().fail().message("当前状态不是提现中"); } mallMemberWithdraw.setStatus(3); mallMemberWithdrawMapper.updateById(mallMemberWithdraw); QueryWrapper 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); //用户钱包增加对应的余额 iApiMallMemberWalletService.addBalance(mallMoneyFlow.getAmount().negate(),mallMoneyFlow.getMemberId()); return new FebsResponse().success(); } @Override public AdminMallMemberPaymentVo getMallMemberPaymentInfoByFlowId(long id) { AdminMallMemberPaymentVo adminMallMemberPaymentVo = new AdminMallMemberPaymentVo(); MallMemberWithdraw mallMemberWithdraw = mallMemberWithdrawMapper.selectById(id); AdminMallMemberPaymentVo adminMallMemberPaymentVoa = mallMemberPaymentMapper.getMallMemberPaymentInfoByMemberId(mallMemberWithdraw.getMemberId()); if(ObjectUtil.isNotEmpty(adminMallMemberPaymentVoa)){ adminMallMemberPaymentVo = adminMallMemberPaymentVoa; } return adminMallMemberPaymentVo; } @Override public IPage getAgentList(AgentDto agentDto, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); IPage adminAgentVos = this.baseMapper.getAgentListInPage(page, agentDto); List records = adminAgentVos.getRecords(); if(CollUtil.isNotEmpty(records)){ for(AdminAgentVo adminAgentVo : records){ String inviteId = adminAgentVo.getInviteId(); //直接下级 List mallMembers = mallMemberMapper.selectChildAgentListByInviteId(inviteId); adminAgentVo.setMemberNum(CollUtil.isEmpty(mallMembers) ? 0 : mallMembers.size()); //获取总数 List allMallMembers =mallMemberMapper.selectAllChildAgentListByInviteId(inviteId); adminAgentVo.setAllMemberNum(CollUtil.isEmpty(allMallMembers) ? 0 : allMallMembers.size()); } } return adminAgentVos; } @Override public IPage getAgentLevelList(AgentLevelDto agentLevelDto, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); IPage adminAgentVos = this.baseMapper.getAgentLevelListInPage(page, agentLevelDto); return adminAgentVos; } @Override public AdminAgentLevelUpdateInfoVo getAgentLevelUpdateInfoById(long id) { DataDictionaryCustom dataDictionaryCustom = dataDictionaryCustomMapper.selectById(id); String value = dataDictionaryCustom.getValue(); //{"directIncome":36,"lastCnt":3,"orderCnt":500,"orderType":2,"teamIncome":6,"teamIncomeType":2} AdminAgentLevelUpdateInfoVo adminAgentLevelUpdateInfoVo = JSONObject.parseObject(value, AdminAgentLevelUpdateInfoVo.class); adminAgentLevelUpdateInfoVo.setId(id); return adminAgentLevelUpdateInfoVo; } @Override public FebsResponse agentLevelUpdate(AgentLevelUpdateDto agentLevelUpdateDto) { DataDictionaryCustom dataDictionaryCustom = dataDictionaryCustomMapper.selectById(agentLevelUpdateDto.getId()); agentLevelUpdateDto.setId(null); dataDictionaryCustom.setValue(JSONObject.toJSONString(agentLevelUpdateDto)); dataDictionaryCustomMapper.updateById(dataDictionaryCustom); return new FebsResponse().success(); } @Override public List getAgentLevelOption() { return dataDictionaryCustomMapper.getAgentLevelOption(); } @Override public List 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 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)){ 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 objectQueryWrapper = new QueryWrapper<>(); objectQueryWrapper.eq("member_id",mallMember.getId()); List 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.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); return new FebsResponse().success().message("操作成功"); } @Override public IPage getsalemanRuleList(MallMember mallMember, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); IPage 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 objectQueryWrapper = new QueryWrapper<>(); objectQueryWrapper.eq("member_id",member.getId()); List 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 agentChild(QueryRequest request, MallMember mallMember) { Long memberId = mallMember.getId(); mallMember = mallMemberMapper.selectById(memberId); Page page = new Page<>(request.getPageNum(), request.getPageSize()); IPage adminAgentMemberVos = this.baseMapper.getAgentChildInPage(page, mallMember); List records = adminAgentMemberVos.getRecords(); if(CollUtil.isNotEmpty(records)){ for(AdminAgentMemberVo agentMemberVo : records){ String inviteId = agentMemberVo.getInviteId(); BigDecimal amount = mallMemberMapper.getAgentTeamAmountByInviteId(inviteId); agentMemberVo.setAmount(amount); } } return adminAgentMemberVos; } @Override public IPage getRankAwardList(RankAwardDto rankAwardDto, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); IPage adminRankAwardVos = this.baseMapper.getRankAwardListInPage(page, rankAwardDto); return adminRankAwardVos; } @Override public AdminRankAwardUpdateInfoVo getRankAwardUpdateInfoById(long id) { AdminRankAwardUpdateInfoVo adminRankAwardUpdateInfoVo = dataDictionaryCustomMapper.getRankAwardUpdateInfoById(id); return adminRankAwardUpdateInfoVo; } @Override public FebsResponse rankAwardUpdate(RankAwardUpdateDto rankAwardUpdateDto) { DataDictionaryCustom dataDictionaryCustom = dataDictionaryCustomMapper.selectById(rankAwardUpdateDto.getId()); dataDictionaryCustom.setValue(rankAwardUpdateDto.getValue()); dataDictionaryCustom.setDescription(rankAwardUpdateDto.getDescription()); dataDictionaryCustomMapper.updateById(dataDictionaryCustom); return new FebsResponse().success(); } @Override public IPage getAppVersionList(AppVersion appVersion, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); IPage appVersions = this.baseMapper.getAppVersionListInPage(page, appVersion); return appVersions; } @Override public FebsResponse delCategary(Long id) { AppVersion appVersion = appVersionMapper.selectById(id); if(ObjectUtil.isEmpty(appVersion)){ return new FebsResponse().fail().message("系统繁忙,请刷新页面重试"); } appVersionMapper.deleteById(id); return new FebsResponse().success(); } @Override public FebsResponse addAppVersion(AppVersion appVersion) { appVersion.setCreatetime(new Date()); appVersionMapper.insert(appVersion); return new FebsResponse().success(); } @Override public AppVersion getAppVersionInfoById(long id) { return appVersionMapper.selectById(id); } @Override public FebsResponse updateAppVersion(AppVersion appVersion) { AppVersion appVersionBefore = appVersionMapper.selectById(appVersion.getId()); if(ObjectUtil.isEmpty(appVersionBefore)){ return new FebsResponse().fail().message("系统繁忙,请刷新页面重试"); } appVersion.setCreatetime(new Date()); appVersionMapper.updateById(appVersion); return new FebsResponse().success(); } @Override public FebsResponse activateAccount(Long id) { MallMember mallMember = mallMemberMapper.selectById(id); if(ObjectUtil.isEmpty(mallMember)){ return new FebsResponse().fail().message("系统繁忙,请刷新页面重试"); } String level = mallMember.getLevel(); if(StrUtil.isEmpty(level) || !AgentLevelEnum.ZERO_LEVEL.name().equals(mallMember.getLevel())){ return new FebsResponse().fail().message("该用户无法激活"); } mallMember.setLevel(AgentLevelEnum.FIRST_LEVEL.name()); mallMemberMapper.updateById(mallMember); return new FebsResponse().success(); } @Override @Transactional public FebsResponse updateSystemPay(MallSystemPayDto mallSystemPayDto) { Long memberId = mallSystemPayDto.getId(); MallMember mallMember = mallMemberMapper.selectById(memberId); if(ObjectUtil.isEmpty(mallMember)){ return new FebsResponse().fail().message("系统繁忙,请刷新页面重试"); } BigDecimal bigDecimal = mallSystemPayDto.getAddBalance(); boolean isReduce = false; if(bigDecimal.compareTo(BigDecimal.ZERO) <= 0){ isReduce = true; } Integer type = mallSystemPayDto.getType(); String filedType = ""; if (type == 1) { filedType = "balance"; } else if (type == 2) { filedType = "score"; } else if (type == 3) { filedType = "prizeScore"; } else { throw new FebsException("参数错误"); } if (isReduce) { 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); return new FebsResponse().success(); } @Override public AdminAgentLevelSetInfoVo getAgentLevelSetInfoByMemberId(long id) { AdminAgentLevelSetInfoVo adminAgentLevelSetInfoVo = mallMemberMapper.getAgentLevelSetInfoByMemberId(id); return adminAgentLevelSetInfoVo; } @Override public FebsResponse agentLevelSetUpdate(AgentLevelSetUpdateDto agentLevelSetUpdateDto) { Long memberId = agentLevelSetUpdateDto.getId(); MallMember mallMember = mallMemberMapper.selectById(memberId); if(ObjectUtil.isEmpty(mallMember)){ return new FebsResponse().fail().message("系统繁忙,请刷新页面重试"); } mallMember.setLevel(agentLevelSetUpdateDto.getLevelCode()); mallMemberMapper.updateById(mallMember); return new FebsResponse().success(); } @Override public FebsResponse resetPwd(Long id) { MallMember mallMember = this.baseMapper.selectById(id); if (mallMember == null) { throw new FebsException("用户不存在"); } String pwd = SecureUtil.md5("a123456"); mallMember.setPassword(pwd); this.baseMapper.updateById(mallMember); return new FebsResponse().success().message("重置成功"); } @Override public void resetPwd(String ids, Integer type) { if (StrUtil.isEmpty(ids)) { throw new FebsException("参数错误"); } List idList = StrUtil.split(ids, ','); for (String s : idList) { Long id = Long.parseLong(s); MallMember member = new MallMember(); member.setId(id); member.setCreatedTime(null); // 重置交易密码 if (type == 1) { String payPwd = SecureUtil.md5("654321"); member.setTradePassword(payPwd); // 重置登录密码 } else { String pwd = SecureUtil.md5("a123456"); member.setPassword(pwd); } this.baseMapper.updateById(member); } } @Override public IPage getMallDataList(MallMember mallMember, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); IPage mallDataVos = this.baseMapper.getMallDataListInPage(page, mallMember); return mallDataVos; } @Override public IPage findShopApplyListInPage(MallShopApply mallShopApply, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); return mallShopApplyMapper.selectShopApplyInPage(mallShopApply, page); } @Override public MallShopApply findShopApplyById(Long id) { return mallShopApplyMapper.selectById(id); } @Override public void applyCheckAgree(Long id) { MallShopApply apply = mallShopApplyMapper.selectById(id); if (!MallShopApply.APPLY_ING.equals(apply.getStatus())) { throw new FebsException("申请已审核, 请勿重复操作"); } MallMember member = mallMemberMapper.selectById(apply.getMemberId()); member.setStoreMaster(1); mallMemberMapper.updateById(member); apply.setStatus(MallShopApply.APPLY_AGREE); mallShopApplyMapper.updateById(apply); } @Override public void applyCheckDisAgree(Long id) { MallShopApply apply = mallShopApplyMapper.selectById(id); if (!MallShopApply.APPLY_ING.equals(apply.getStatus())) { throw new FebsException("申请已审核, 请勿重复操作"); } apply.setStatus(MallShopApply.APPLY_DISAGREE); mallShopApplyMapper.updateById(apply); } @Override @Transactional public FebsResponse updateMemberInfo(MallUpdateMemberInfoDto mallUpdateMemberInfoDto) { Long memberId = mallUpdateMemberInfoDto.getId(); MallMember mallMember = mallMemberMapper.selectById(memberId); if(ObjectUtil.isEmpty(mallMember)){ return new FebsResponse().fail().message("系统繁忙,请刷新页面重试"); } String phone = mallUpdateMemberInfoDto.getPhone(); if(StrUtil.isEmpty(phone)){ throw new FebsException("请输入手机号码"); } if(!phone.equals(mallMember.getPhone())){ QueryWrapper objectQueryWrapper = new QueryWrapper<>(); objectQueryWrapper.eq("phone",phone); List mallMembers = this.baseMapper.selectList(objectQueryWrapper); if(CollUtil.isNotEmpty(mallMembers)){ throw new FebsException("手机号码已绑定过账号"); } } mallMember.setPhone(phone); mallMember.setBindPhone(phone); mallMember.setLevel(mallUpdateMemberInfoDto.getLevelCode()); mallMemberMapper.updateById(mallMember); if(mallUpdateMemberInfoDto.getBalance() == null){ throw new FebsException("请输入正确的余额"); } if(mallUpdateMemberInfoDto.getScore() == null){ throw new FebsException("请输入正确的赠送积分"); } if(mallUpdateMemberInfoDto.getPrizeScore() == null){ throw new FebsException("请输入正确的竞猜积分"); } BigDecimal balance = mallUpdateMemberInfoDto.getBalance(); if(BigDecimal.ZERO.compareTo(balance) > 0){ throw new FebsException("请输入正确的余额"); } BigDecimal score = mallUpdateMemberInfoDto.getScore(); if(BigDecimal.ZERO.compareTo(score) > 0){ throw new FebsException("请输入正确的赠送积分"); } BigDecimal prizeScore = mallUpdateMemberInfoDto.getPrizeScore(); if(BigDecimal.ZERO.compareTo(prizeScore) > 0){ throw new FebsException("请输入正确的竞猜积分"); } MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId); mallMemberWallet.setBalance(balance); mallMemberWallet.setScore(score); mallMemberWallet.setPrizeScore(prizeScore); mallMemberWalletMapper.updateById(mallMemberWallet); return new FebsResponse().success(); } @Override public MallMember findByInviteId(String inviteId) { return this.baseMapper.selectInfoByInviteId(inviteId); } @Override @Transactional(rollbackFor = Exception.class) public void modifyReferer(MallMember member) { 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("推荐人不存在"); } member = this.baseMapper.selectById(member.getId());//修改的用户 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); List childs = this.baseMapper.selectByRefererId(member.getInviteId()); if (CollUtil.isEmpty(childs)) { return; } for (MallMember child : childs) { child.setReferrerIds(member.getInviteId() + "," + refererIds); this.baseMapper.updateById(child); } } @Override public IPage getAgentApplyList(MallAgentRecord mallAgentRecord, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); IPage 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 getMallSalesmanListInPage(MallSalesman mallSalesman, QueryRequest request) { Page 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 getSalesmansTree() { List 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 getAddressAmountList(MallAddressInfo mallAddressInfo, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); IPage adminMallAddressInfoVoIPage = mallSalesmanMapper.selectAddressAmountListInPage(page, mallAddressInfo); List 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 getAddressTree() { return mallSalesmanMapper.selectProvince(); } @Override public IPage getSalesmanAchieveList(MallSalesman mallSalesman, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); IPage adminSalesmanAchieveVoIPage = mallSalesmanMapper.selectSalesmanAchieveListInPage(page, mallSalesman); List records = adminSalesmanAchieveVoIPage.getRecords(); if(CollUtil.isNotEmpty(records)){ for(AdminSalesmanAchieveVo adminSalesmanAchieveVo : records){ Long salesmanId = adminSalesmanAchieveVo.getSalesmanId(); List adminMemberOrderVos = mallSalesmanMapper.selectAdminMemberOrderVoBySalesmanId(salesmanId); adminSalesmanAchieveVo.setOrderCnt(adminMemberOrderVos.size()); adminSalesmanAchieveVo.setAdminMemberOrderVos(adminMemberOrderVos); } } return adminSalesmanAchieveVoIPage; } @Override public List getSalesmanAchieveTree() { return mallSalesmanMapper.selectSalesmanAchieveProvince(); } @Override public IPage getAgentAchieveList(MallAgentRecord mallAgentRecord, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); IPage adminMallAgentRecordVos = mallSalesmanMapper.selectAgentAchieveListInPage(page, mallAgentRecord); return adminMallAgentRecordVos; } @Override public List agentAddress() { List adminMallAgentRecordVos = mallSalesmanMapper.selectAgentAddressProvince(); if(CollUtil.isNotEmpty(adminMallAgentRecordVos)){ for(AdminMallAgentRecordVo adminMallAgentRecordVo : adminMallAgentRecordVos){ String province = adminMallAgentRecordVo.getProvince(); List cityList = mallSalesmanMapper.selectAgentAddressCity(province); adminMallAgentRecordVo.setCityList(cityList); } } return adminMallAgentRecordVos; } private String refererIds(String parentId) { boolean flag = false; if (StrUtil.isBlank(parentId)) { flag = true; } String ids = ""; while (!flag) { if (StrUtil.isBlank(ids)) { ids += parentId; } else { ids += ("," + parentId); } MallMember parentMember = this.baseMapper.selectInfoByInviteId(parentId); if (parentMember == null) { break; } parentId = parentMember.getReferrerId(); if (StrUtil.isBlank(parentMember.getReferrerId())) { flag = true; } } 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("操作成功"); } }