|  |  |  | 
|---|
|  |  |  | 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.util.ObjectUtil; | 
|---|
|  |  |  | import cn.hutool.core.util.StrUtil; | 
|---|
|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @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()){ | 
|---|
|  |  |  | String inviteId = mallMemberTeam.getInviteId(); | 
|---|
|  |  |  | MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCodeAndOrderBycreateTime(inviteId); | 
|---|
|  |  |  | if(ObjectUtil.isNotEmpty(mallTeamLeader)){ | 
|---|
|  |  |  | mallMemberTeam.setLeaderState(mallTeamLeader.getState() == null ? 0 : mallTeamLeader.getState()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return mallMembers; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | BigDecimal bigDecimal = mallSystemPayDto.getAddBalance(); | 
|---|
|  |  |  | boolean isReduce = false; | 
|---|
|  |  |  | if(bigDecimal.compareTo(BigDecimal.ZERO) <= 0){ | 
|---|
|  |  |  | return new FebsResponse().fail().message("拨付数目需要大于0"); | 
|---|
|  |  |  | isReduce = true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId); | 
|---|
|  |  |  | mallMemberWallet.setBalance(mallMemberWallet.getBalance().add(bigDecimal)); | 
|---|
|  |  |  | mallMemberWalletMapper.updateBalanceWithId(mallMemberWallet); | 
|---|
|  |  |  | 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("参数错误"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | mallMoneyFlowService.addMoneyFlow(memberId, bigDecimal, MoneyFlowTypeEnum.SYSTEM.getValue(), null, FlowTypeEnum.BALANCE.getValue()); | 
|---|
|  |  |  | 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 void resetPwd(String ids, Integer type) { | 
|---|
|  |  |  | if (StrUtil.isEmpty(ids)) { | 
|---|
|  |  |  | throw new FebsException("参数错误"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | List<String> 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<MallDataVo> getMallDataList(MallMember mallMember, QueryRequest request) { | 
|---|
|  |  |  | Page<MallDataVo> page = new Page<>(request.getPageNum(), request.getPageSize()); | 
|---|
|  |  |  | IPage<MallDataVo> mallDataVos = this.baseMapper.getMallDataListInPage(page, mallMember); | 
|---|
|  |  |  | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | 
|---|
|  |  |  | 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("请输入正确的余额"); | 
|---|
|  |  |  | 
|---|
|  |  |  | 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) { | 
|---|
|  |  |  | MallMember referer = this.baseMapper.selectInfoByInviteId(member.getReferrerId()); | 
|---|
|  |  |  | if (referer == null) { | 
|---|
|  |  |  | throw new FebsException("推荐人不存在"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | String refererId = member.getReferrerId(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | member = this.baseMapper.selectById(member.getId()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | String beforeReferer = member.getReferrerId(); | 
|---|
|  |  |  | member.setReferrerId(refererId); | 
|---|
|  |  |  | String refererIds = refererIds(refererId); | 
|---|
|  |  |  | member.setReferrerIds(refererIds); | 
|---|
|  |  |  | this.baseMapper.updateById(member); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<MallMember> childs = this.baseMapper.selectByRefererId(member.getInviteId()); | 
|---|
|  |  |  | if (CollUtil.isEmpty(childs)) { | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | for (MallMember child : childs) { | 
|---|
|  |  |  | child.setReferrerIds(member.getInviteId() + "," + refererIds); | 
|---|
|  |  |  | this.baseMapper.updateById(child); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|