| | |
| | | import cc.mrbird.febs.common.enumerates.*; |
| | | import cc.mrbird.febs.common.exception.FebsException; |
| | | import cc.mrbird.febs.common.utils.*; |
| | | import cc.mrbird.febs.mall.conversion.MallGoodsConversion; |
| | | import cc.mrbird.febs.mall.conversion.MallMemberBankConversion; |
| | | import cc.mrbird.febs.mall.conversion.MallMemberConversion; |
| | | import cc.mrbird.febs.mall.conversion.MallShopApplyConversion; |
| | | import cc.mrbird.febs.mall.conversion.*; |
| | | import cc.mrbird.febs.mall.dto.*; |
| | | import cc.mrbird.febs.mall.entity.*; |
| | | import cc.mrbird.febs.mall.mapper.*; |
| | | import cc.mrbird.febs.mall.service.IApiMallMemberService; |
| | | import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; |
| | | import cc.mrbird.febs.mall.service.ICommonService; |
| | | import cc.mrbird.febs.mall.service.IMallMoneyFlowService; |
| | | import cc.mrbird.febs.mall.vo.*; |
| | | import cn.hutool.core.bean.BeanUtil; |
| | | import cn.hutool.core.collection.CollUtil; |
| | |
| | | private final MallShopApplyMapper mallShopApplyMapper; |
| | | private final MallRegisterAppealMapper mallRegisterAppealMapper; |
| | | private final MallMemberBankMapper mallMemberBankMapper; |
| | | private final IMallMoneyFlowService mallMoneyFlowService; |
| | | |
| | | |
| | | @Value("${spring.profiles.active}") |
| | |
| | | mallMember = new MallMember(); |
| | | mallMember.setAccountLogin(accountLogin); |
| | | mallMember.setPassword(SecureUtil.md5(registerDto.getPassword())); |
| | | mallMember.setUserKey(userKey); |
| | | mallMember.setTradePassword(SecureUtil.md5(registerDto.getTradePassword())); |
| | | |
| | | Integer count = this.baseMapper.selectCount(null); |
| | |
| | | this.baseMapper.updateById(mallMember); |
| | | |
| | | redisUtils.del(AppContants.APP_LOGIN_PREFIX + mallMember.getId()); |
| | | return new FebsResponse().success().message("重置成功"); |
| | | return new FebsResponse().success().message("操作成功"); |
| | | } |
| | | |
| | | @Override |
| | |
| | | mallMemberVo.setReferrerName(referMember.getName()); |
| | | } |
| | | |
| | | if (StrUtil.isNotBlank(mallMember.getTradePassword())) { |
| | | mallMemberVo.setHasTradePwd(1); |
| | | } |
| | | |
| | | MallMemberPayment payment = mallMemberPaymentMapper.selectByMemberId(id); |
| | | if (payment != null) { |
| | | mallMemberVo.setHasPayment(1); |
| | | } |
| | | |
| | | DataDictionaryCustom fcmPriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.FCM_PRICE.getType(), |
| | | DataDictionaryEnum.FCM_PRICE.getCode()); |
| | | mallMemberVo.setFcmPrice(ObjectUtil.isEmpty(fcmPriceDic) ? new BigDecimal(2) : new BigDecimal(fcmPriceDic.getValue())); |
| | | |
| | | DataDictionaryCustom outFcmFeeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.OUT_FCM_FEE.getType(), |
| | | DataDictionaryEnum.OUT_FCM_FEE.getCode()); |
| | | mallMemberVo.setOutFcmFee(ObjectUtil.isEmpty(outFcmFeeDic) ? new BigDecimal(20) : new BigDecimal(outFcmFeeDic.getValue())); |
| | | DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(AppContants.AGENT_LEVEL, mallMember.getLevel()); |
| | | if (dic != null) { |
| | | mallMemberVo.setLevelName(dic.getDescription()); |
| | | } |
| | | MallMemberWallet wallet = mallMemberWalletMapper.selectWalletByMemberId(mallMemberVo.getId()); |
| | | mallMemberVo.setBalance(wallet.getBalance()); |
| | | mallMemberVo.setScore(wallet.getScore()); |
| | | mallMemberVo.setPrizeScore(wallet.getPrizeScore()); |
| | | mallMemberVo.setTotalScore(wallet.getTotalScore()); |
| | | mallMemberVo.setStar(wallet.getStar()); |
| | | mallMemberVo.setVoucherCnt(wallet.getVoucherCnt()); |
| | | mallMemberVo.setTotalCost(mallOrderInfoMapper.selectTotalAmount(id)); |
| | | MallMemberAmount mallMemberAmount = mallMemberAmountMapper.selectByMemberId(mallMember.getId()); |
| | | mallMemberVo.setStaticNft(mallMemberAmount.getStaticNft()); |
| | | mallMemberVo.setTrendsNft(mallMemberAmount.getTrendsNft()); |
| | | mallMemberVo.setFrozenNft(mallMemberAmount.getFrozenNft()); |
| | | mallMemberVo.setFcmCntAva(mallMemberAmount.getFcmCntAva()); |
| | | mallMemberVo.setFcmCntFrozen(mallMemberAmount.getFcmCntFrozen()); |
| | | mallMemberVo.setTokenAva(mallMemberAmount.getTokenAva()); |
| | | mallMemberVo.setTokenFrozen(mallMemberAmount.getTokenFrozen()); |
| | | return new FebsResponse().success().data(mallMemberVo); |
| | | } |
| | | |
| | |
| | | } |
| | | mallMember.setTradePassword(SecureUtil.md5(forgetPwdDto.getPassword())); |
| | | this.baseMapper.updateById(mallMember); |
| | | return new FebsResponse().success().message("设置成功"); |
| | | return new FebsResponse().success().message("操作成功"); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse modifyMemberInfo(ModifyMemberInfoDto modifyMemberInfoDto) { |
| | | MallMember member = LoginUserUtil.getLoginUser(); |
| | | MallMember mallMember = this.baseMapper.selectById(member.getId()); |
| | | if (StrUtil.isNotBlank(modifyMemberInfoDto.getName())) { |
| | | mallMember.setName(modifyMemberInfoDto.getName()); |
| | | } |
| | | mallMember.setName(modifyMemberInfoDto.getName()); |
| | | mallMember.setPhone(modifyMemberInfoDto.getPhone()); |
| | | |
| | | if (StrUtil.isNotBlank(modifyMemberInfoDto.getPhoto())) { |
| | | mallMember.setAvatar(modifyMemberInfoDto.getPhoto()); |
| | | } |
| | | |
| | | this.baseMapper.updateById(mallMember); |
| | | return new FebsResponse().success().message("修改成功"); |
| | | return new FebsResponse().success().message("操作成功"); |
| | | } |
| | | |
| | | @Override |
| | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void transfer(TransferDto transferDto) { |
| | | MallMember mallMember = this.baseMapper.selectInfoByAccount(transferDto.getAccount()); |
| | | if (mallMember == null) { |
| | | throw new FebsException("用户不存在"); |
| | | Long memberId = LoginUserUtil.getLoginUser().getId(); |
| | | MallMember loginMember = this.baseMapper.selectById(memberId); |
| | | BigDecimal amount = transferDto.getAmount(); |
| | | int type = transferDto.getType(); |
| | | |
| | | if(1 != type || 2 != type){ |
| | | throw new FebsException("请选择互转类型"); |
| | | } |
| | | Integer insideWith = mallMember.getInsideWith() == null ? 2 :mallMember.getInsideWith(); |
| | | Integer insideWith = loginMember.getInsideWith() == null ? 2 :loginMember.getInsideWith(); |
| | | if (1 != insideWith) { |
| | | throw new FebsException("功能升级中"); |
| | | } |
| | | |
| | | Long memberId = LoginUserUtil.getLoginUser().getId(); |
| | | MallMember loginMember = this.baseMapper.selectById(memberId); |
| | | MallMember mallMember = this.baseMapper.selectByAccountLogin(transferDto.getAccount()); |
| | | if (mallMember == null) { |
| | | throw new FebsException("转出账户不存在"); |
| | | } |
| | | |
| | | if (loginMember.getPhone().equals(transferDto.getAccount()) || loginMember.getInviteId().equals(transferDto.getAccount())) { |
| | | if (loginMember.getAccountLogin().equals(transferDto.getAccount())) { |
| | | throw new FebsException("不能给自己转账"); |
| | | } |
| | | |
| | | if (StrUtil.isBlank(loginMember.getTradePassword())) { |
| | | throw new FebsException("未设置支付密码"); |
| | | throw new FebsException("请设置交易密码"); |
| | | } |
| | | |
| | | if (!loginMember.getTradePassword().equals(SecureUtil.md5(transferDto.getTradePwd()))) { |
| | | throw new FebsException("支付密码错误"); |
| | | throw new FebsException("交易密码错误"); |
| | | } |
| | | |
| | | DataDictionaryCustom cashOutSettingDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.CASHOUT_SETTING.getType(), |
| | | DataDictionaryEnum.CASHOUT_SETTING.getCode() |
| | | ); |
| | | CashOutSettingVo cashOutSettingVo = JSONObject.parseObject(cashOutSettingDic.getValue(), CashOutSettingVo.class); |
| | | BigDecimal insideFee = cashOutSettingVo.getInsideFee().multiply(BigDecimal.valueOf(0.01)); |
| | | //转账手续费 |
| | | BigDecimal insideFeeAmount = transferDto.getAmount().multiply(insideFee).setScale(2, BigDecimal.ROUND_DOWN); |
| | | |
| | | BigDecimal avaAmount = transferDto.getAmount().subtract(insideFeeAmount).setScale(2, BigDecimal.ROUND_DOWN); |
| | | walletService.reduceBalance(avaAmount, memberId); |
| | | String orderNo = MallUtils.getOrderNum("T"); |
| | | this.addMoneyFlow( |
| | | memberId, |
| | | avaAmount.negate(), |
| | | MoneyFlowTypeEnum.TRANSFER.getValue(), |
| | | orderNo, |
| | | null, |
| | | null, |
| | | mallMember.getId(), |
| | | null, |
| | | FlowTypeEnum.BALANCE.getValue()); |
| | | |
| | | walletService.addBalance(avaAmount, mallMember.getId()); |
| | | this.addMoneyFlow( |
| | | mallMember.getId(), |
| | | avaAmount, |
| | | MoneyFlowTypeEnum.TRANSFER.getValue(), |
| | | orderNo, |
| | | null, |
| | | null, |
| | | memberId, |
| | | null, |
| | | FlowTypeEnum.BALANCE.getValue()); |
| | | BigDecimal avaAmount = transferDto.getAmount().setScale(2, BigDecimal.ROUND_DOWN); |
| | | MallMemberAmount mallMemberAmountLogin = mallMemberAmountMapper.selectByMemberId(loginMember.getId()); |
| | | MallMemberAmount mallMemberAmount = mallMemberAmountMapper.selectByMemberId(mallMember.getId()); |
| | | if(1 == type){ |
| | | if (amount.compareTo(mallMemberAmountLogin.getFcmCntAva()) > 0) { |
| | | throw new FebsException("代币不足"); |
| | | } |
| | | mallMemberAmountLogin.setFcmCntAva(mallMemberAmountLogin.getFcmCntAva().subtract(amount)); |
| | | mallMemberAmountMapper.updateFcmCntAvaById(mallMemberAmountLogin); |
| | | String orderNo = MallUtils.getOrderNum("DB"); |
| | | mallMoneyFlowService.addMoneyFlow( |
| | | loginMember.getId(), |
| | | amount.negate(), |
| | | MoneyFlowTypeNewEnum.FCM_INSIDE_OUT.getValue(), |
| | | orderNo, |
| | | mallMember.getId(), |
| | | FlowTypeNewEnum.FCM_COIN.getValue(), |
| | | MoneyFlowTypeNewEnum.FCM_INSIDE_OUT.getDescrition()); |
| | | mallMemberAmount.setFcmCntAva(mallMemberAmount.getFcmCntAva().add(amount)); |
| | | mallMemberAmountMapper.updateFcmCntAvaById(mallMemberAmount); |
| | | mallMoneyFlowService.addMoneyFlow( |
| | | mallMember.getId(), |
| | | amount, |
| | | MoneyFlowTypeNewEnum.FCM_INSIDE_IN.getValue(), |
| | | orderNo, |
| | | loginMember.getId(), |
| | | FlowTypeNewEnum.FCM_COIN.getValue(), |
| | | MoneyFlowTypeNewEnum.FCM_INSIDE_IN.getDescrition()); |
| | | } |
| | | if(2 == type){ |
| | | if (amount.compareTo(mallMemberAmountLogin.getTokenAva()) > 0) { |
| | | throw new FebsException("令牌不足"); |
| | | } |
| | | mallMemberAmountLogin.setTokenAva(mallMemberAmountLogin.getTokenAva().subtract(amount)); |
| | | mallMemberAmountMapper.updateTokenAvaById(mallMemberAmountLogin); |
| | | String orderNo = MallUtils.getOrderNum("LP"); |
| | | mallMoneyFlowService.addMoneyFlow( |
| | | loginMember.getId(), |
| | | amount.negate(), |
| | | MoneyFlowTypeNewEnum.TOKEN_INSIDE_OUT.getValue(), |
| | | orderNo, |
| | | mallMember.getId(), |
| | | FlowTypeNewEnum.TOKEN.getValue(), |
| | | MoneyFlowTypeNewEnum.TOKEN_INSIDE_OUT.getDescrition()); |
| | | mallMemberAmount.setTokenAva(mallMemberAmount.getTokenAva().add(amount)); |
| | | mallMemberAmountMapper.updateTokenAvaById(mallMemberAmount); |
| | | mallMoneyFlowService.addMoneyFlow( |
| | | mallMember.getId(), |
| | | amount, |
| | | MoneyFlowTypeNewEnum.TOKEN_INSIDE_IN.getValue(), |
| | | orderNo, |
| | | loginMember.getId(), |
| | | FlowTypeNewEnum.TOKEN.getValue(), |
| | | MoneyFlowTypeNewEnum.TOKEN_INSIDE_IN.getDescrition()); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | |
| | | String pwd = SecureUtil.md5(forgetPwdDto.getPassword()); |
| | | mallMember.setPassword(pwd); |
| | | this.baseMapper.updateById(mallMember); |
| | | return new FebsResponse().success().message("重置成功"); |
| | | return new FebsResponse().success().message("操作成功"); |
| | | } |
| | | |
| | | @Override |
| | |
| | | return new FebsResponse().success().data(key); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse getPayment() { |
| | | Long memberId = LoginUserUtil.getLoginUser().getId(); |
| | | MallMemberPayment mallMemberPayment = mallMemberPaymentMapper.selectByMemberId(memberId); |
| | | MallMemberPaymentVo mallMemberPaymentVo = MallMemberPaymentConversion.INSTANCE.entityToVo(mallMemberPayment); |
| | | return new FebsResponse().success().data(mallMemberPaymentVo); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse getKey(GetKeyDto getKeyDto) { |
| | | Long memberId = LoginUserUtil.getLoginUser().getId(); |
| | | MallMember mallMember = this.baseMapper.selectById(memberId); |
| | | String md5Pwd = SecureUtil.md5(getKeyDto.getPassword()); |
| | | String md5TraPwd = SecureUtil.md5(getKeyDto.getTradePassword()); |
| | | if(!mallMember.getPassword().equals(md5Pwd)){ |
| | | throw new FebsException("登录密码错误"); |
| | | } |
| | | if(!mallMember.getTradePassword().equals(md5TraPwd)){ |
| | | throw new FebsException("交易密码错误"); |
| | | } |
| | | return new FebsResponse().success().data(mallMember.getUserKey()); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse updatePayment(UpdatePaymentDto updatePaymentDto) { |
| | | Long memberId = LoginUserUtil.getLoginUser().getId(); |
| | | |
| | | MallMemberPayment mallMemberPayment = mallMemberPaymentMapper.selectByMemberId(memberId); |
| | | mallMemberPayment.setWxQrcode(updatePaymentDto.getWxQrcode()); |
| | | mallMemberPayment.setAliQrcode(updatePaymentDto.getAliQrcode()); |
| | | mallMemberPayment.setBankName(updatePaymentDto.getBankName()); |
| | | mallMemberPayment.setBankNo(updatePaymentDto.getBankNo()); |
| | | mallMemberPayment.setBank(updatePaymentDto.getBank()); |
| | | mallMemberPayment.setPhone(updatePaymentDto.getPhone()); |
| | | mallMemberPayment.setUsdtTongdao(updatePaymentDto.getUsdtTongdao()); |
| | | mallMemberPayment.setUsdtAddress(updatePaymentDto.getUsdtAddress()); |
| | | mallMemberPaymentMapper.updateById(mallMemberPayment); |
| | | |
| | | return new FebsResponse().success().message("操作成功"); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse unfreeze(UnfreezeDto unfreezeDto) { |
| | | Long memberId = LoginUserUtil.getLoginUser().getId(); |
| | | /** |
| | | * 判断账号是否冻结 |
| | | * 判断账号FCM代币是否足够 |
| | | * 1、自行解冻:扣除对应的FCM代币 |
| | | * 2、上级解冻:查询是否是解冻用户的直接上级,扣除对应的FCM代币 |
| | | * 更新账号状态 |
| | | * 生成流水记录 |
| | | */ |
| | | Long unfreezeMemberId = unfreezeDto.getMemberId(); |
| | | MallMember mallMember = this.baseMapper.selectById(unfreezeMemberId); |
| | | Integer isFrozen = mallMember.getIsFrozen(); |
| | | if(1 != isFrozen){ |
| | | throw new FebsException("账户未被冻结"); |
| | | } |
| | | DataDictionaryCustom memberFrozenFcmCntDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.MEMBER_FROZEN_FCM_CNT.getType(), |
| | | DataDictionaryEnum.MEMBER_FROZEN_FCM_CNT.getCode() |
| | | ); |
| | | BigDecimal memberFrozenFcmCnt = new BigDecimal(memberFrozenFcmCntDic.getValue()); |
| | | MallMemberAmount mallMemberAmount = mallMemberAmountMapper.selectByMemberId(unfreezeMemberId); |
| | | BigDecimal fcmCntAva = mallMemberAmount.getFcmCntAva(); |
| | | if(memberFrozenFcmCnt.compareTo(fcmCntAva) > 0){ |
| | | throw new FebsException("解除冻结需要FCM的数量为:" + fcmCntAva); |
| | | } |
| | | if(2 == unfreezeDto.getType()){ |
| | | List<MallMember> mallMembers = this.baseMapper.selectByRefererId(mallMember.getInviteId()); |
| | | List<Long> collectMemberIds = mallMembers.stream().map(MallMember::getId).collect(Collectors.toList()); |
| | | if(!collectMemberIds.contains(unfreezeMemberId)){ |
| | | throw new FebsException("直接推荐人才能解除账户的冻结状态"); |
| | | } |
| | | } |
| | | BigDecimal fcmCntAvaSub = fcmCntAva.subtract(memberFrozenFcmCnt); |
| | | mallMemberAmount.setFcmCntAva(fcmCntAvaSub); |
| | | mallMemberAmountMapper.updateById(mallMemberAmount); |
| | | mallMember.setIsFrozen(0); |
| | | this.baseMapper.updateById(mallMember); |
| | | |
| | | mallMoneyFlowService.addMoneyFlow( |
| | | mallMember.getId(), |
| | | memberFrozenFcmCnt.negate(), |
| | | MoneyFlowTypeNewEnum.UNFREEZE_USER.getValue(), |
| | | MallUtils.getOrderNum(), |
| | | memberId, |
| | | FlowTypeNewEnum.FCM_COIN.getValue(), |
| | | MoneyFlowTypeNewEnum.UNFREEZE_USER.getDescrition()); |
| | | |
| | | return new FebsResponse().success().message("操作成功"); |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | Set<String> objectsAccount = new HashSet<>(); |
| | | Set<String> objects = new HashSet<>(); |