|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public class AdminMallMemberServiceImpl extends ServiceImpl<MallMemberMapper, MallMember> implements IAdminMallMemberService { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private final RedisUtils redisUtils; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private final MallMemberMapper mallMemberMapper; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private final MallMemberWalletMapper mallMemberWalletMapper; | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private final MallAgentRecordMapper mallAgentRecordMapper; | 
|---|
|  |  |  | private final MallSalesmanMapper mallSalesmanMapper; | 
|---|
|  |  |  | private final SalemanCouponMapper salemanCouponMapper; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @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()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //        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 | 
|---|
|  |  |  | 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.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<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 | 
|---|
|  |  |  | 
|---|
|  |  |  | @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); | 
|---|
|  |  |  | 
|---|
|  |  |  | 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) { | 
|---|
|  |  |  | boolean flag = false; | 
|---|
|  |  |  | if (StrUtil.isBlank(parentId)) { | 
|---|