| | |
| | | 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; |
| | |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * @author wzy |
| | |
| | | public class ApiMallMemberServiceImpl extends ServiceImpl<MallMemberMapper, MallMember> implements IApiMallMemberService { |
| | | |
| | | private final MallMemberWalletMapper mallMemberWalletMapper; |
| | | private final MallMemberAmountMapper mallMemberAmountMapper; |
| | | private final ICommonService commonService; |
| | | private final RedisUtils redisUtils; |
| | | private final MallOrderInfoMapper mallOrderInfoMapper; |
| | |
| | | private final MallShopApplyMapper mallShopApplyMapper; |
| | | private final MallRegisterAppealMapper mallRegisterAppealMapper; |
| | | private final MallMemberBankMapper mallMemberBankMapper; |
| | | private final IMallMoneyFlowService mallMoneyFlowService; |
| | | |
| | | |
| | | @Value("${spring.profiles.active}") |
| | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @Override |
| | | public FebsResponse register(RegisterDto registerDto) { |
| | | MallMember mallMember = this.baseMapper.selectInfoByAccount(registerDto.getAccount()); |
| | | /** |
| | | * 验证账户密钥是否重复 |
| | | * 验证邀请码是否存在 |
| | | * 生成用户信息 |
| | | * 返回账号和密钥给前端 |
| | | */ |
| | | String accountLogin = registerDto.getAccountLogin(); |
| | | MallMember mallMember = this.baseMapper.selectByAccountLogin(accountLogin); |
| | | if (mallMember != null) { |
| | | throw new FebsException("该账号已被占用"); |
| | | throw new FebsException("账号已使用,请重新注册。"); |
| | | } |
| | | |
| | | List<MallMember> mallMembers = this.baseMapper.selectMemberByName(registerDto.getName()); |
| | | if (CollUtil.isNotEmpty(mallMembers)) { |
| | | MallRegisterAppeal registerAppeal = mallRegisterAppealMapper.selectByPhoneAndName(registerDto.getName(), registerDto.getAccount()); |
| | | if (registerAppeal == null || registerAppeal.getStatus() != 1) { |
| | | return new FebsResponse().code(HttpStatus.ACCEPTED).message("用户名已存在"); |
| | | } |
| | | } |
| | | |
| | | String account = registerDto.getAccount(); |
| | | if (!"admin".equals(registerDto.getRegistType())) { |
| | | String code = registerDto.getCode(); |
| | | boolean flags = commonService.verifyCode(account, code); |
| | | if (!flags) { |
| | | throw new FebsException("验证码错误"); |
| | | } |
| | | String userKey = registerDto.getUserKey(); |
| | | MallMember mallMemberKey = this.baseMapper.selectByUserKey(userKey); |
| | | if (mallMemberKey != null) { |
| | | throw new FebsException("账号已使用,请重新注册。"); |
| | | } |
| | | |
| | | mallMember = new MallMember(); |
| | | mallMember.setAccountLogin(accountLogin); |
| | | mallMember.setPassword(SecureUtil.md5(registerDto.getPassword())); |
| | | |
| | | // 判断账号类型 |
| | | if (AppContants.ACCOUNT_TYPE_MOBILE.equals(registerDto.getType())) { |
| | | mallMember.setPhone(registerDto.getAccount()); |
| | | } else { |
| | | mallMember.setEmail(registerDto.getAccount()); |
| | | } |
| | | mallMember.setUserKey(userKey); |
| | | mallMember.setTradePassword(SecureUtil.md5(registerDto.getTradePassword())); |
| | | |
| | | Integer count = this.baseMapper.selectCount(null); |
| | | if (count != null && count != 0) { |
| | |
| | | if (inviteMember == null) { |
| | | throw new FebsException("邀请码不存在"); |
| | | } |
| | | |
| | | mallMember.setReferrerId(registerDto.getInviteId()); |
| | | |
| | | } |
| | | mallMember.setName(registerDto.getName()); |
| | | mallMember.setAccountStatus(MallMember.ACCOUNT_STATUS_ENABLE); |
| | | // mallMember.setName(registerDto.getName()); |
| | | // mallMember.setAccountStatus(MallMember.ACCOUNT_STATUS_ENABLE); |
| | | mallMember.setAccountStatus(MallMember.ACCOUNT_STATUS_DISABLED); |
| | | mallMember.setAccountType(MallMember.ACCOUNT_TYPE_NORMAL); |
| | | mallMember.setLevel(AgentLevelEnum.ZERO_LEVEL.getCode()); |
| | | mallMember.setSex("男"); |
| | | mallMember.setBindPhone(registerDto.getAccount()); |
| | | // mallMember.setSex("男"); |
| | | // mallMember.setBindPhone(registerDto.getAccount()); |
| | | |
| | | this.baseMapper.insert(mallMember); |
| | | |
| | | String inviteId = ShareCodeUtil.toSerialCode(mallMember.getId()); |
| | | String inviteId = ShareCodeUtil.toSerialNumberCodeTwo(mallMember.getId()); |
| | | mallMember.setInviteId(inviteId); |
| | | |
| | | //推荐人和推荐人链 |
| | |
| | | this.baseMapper.updateById(mallMember); |
| | | |
| | | MallMemberWallet wallet = new MallMemberWallet(); |
| | | wallet.setBalance(BigDecimal.ZERO); |
| | | wallet.setMemberId(mallMember.getId()); |
| | | mallMemberWalletMapper.insert(wallet); |
| | | MallMemberAmount mallMemberAmount = new MallMemberAmount(); |
| | | mallMemberAmount.setMemberId(mallMember.getId()); |
| | | mallMemberAmountMapper.insert(mallMemberAmount); |
| | | return new FebsResponse().success().message("注册成功"); |
| | | } |
| | | |
| | |
| | | public FebsResponse toLogin(LoginDto loginDto) { |
| | | String md5Pwd = SecureUtil.md5(loginDto.getPassword()); |
| | | |
| | | MallMember mallMember = this.baseMapper.selectInfoByAccountAndPwd(loginDto.getAccount(), md5Pwd); |
| | | MallMember mallMember = this.baseMapper.selectInfoByAccountLoginAndPwd(loginDto.getAccount(), md5Pwd); |
| | | if (mallMember == null) { |
| | | throw new FebsException("用户不存在或账号密码错误"); |
| | | throw new FebsException("账号或密码错误"); |
| | | } |
| | | |
| | | if (MallMember.ACCOUNT_STATUS_DISABLED.equals(mallMember.getAccountStatus())) { |
| | | throw new FebsException("该账号存在异常, 暂限制登录"); |
| | | throw new FebsException("账号限制登录"); |
| | | } |
| | | |
| | | String redisKey = AppContants.APP_LOGIN_PREFIX + mallMember.getId(); |
| | |
| | | |
| | | @Override |
| | | public FebsResponse forgetPwd(ForgetPwdDto forgetPwdDto) { |
| | | MallMember mallMember = this.baseMapper.selectInfoByAccount(forgetPwdDto.getPhone()); |
| | | // MallMember mallMember = this.baseMapper.selectInfoByAccount(forgetPwdDto.getAccount()); |
| | | /** |
| | | * 验证用户名和密钥是否存在、是否匹配 |
| | | * 更新用户密码 |
| | | */ |
| | | String accountLogin = forgetPwdDto.getAccountLogin(); |
| | | String userKey = forgetPwdDto.getUserKey(); |
| | | MallMember mallMember = this.baseMapper.selectAccountLoginAndUserKey(accountLogin,userKey); |
| | | if (mallMember == null) { |
| | | throw new FebsException("账号不存在"); |
| | | } |
| | | |
| | | boolean b = commonService.verifyCode(forgetPwdDto.getAccount(), forgetPwdDto.getCode()); |
| | | if (!b) { |
| | | throw new FebsException("验证码错误"); |
| | | throw new FebsException("请输入正确的账号或密钥"); |
| | | } |
| | | |
| | | String pwd = SecureUtil.md5(forgetPwdDto.getPassword()); |
| | | mallMember.setPassword(pwd); |
| | | |
| | | this.baseMapper.updateById(mallMember); |
| | | return new FebsResponse().success().message("重置成功"); |
| | | |
| | | redisUtils.del(AppContants.APP_LOGIN_PREFIX + mallMember.getId()); |
| | | 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); |
| | | } |
| | | |
| | |
| | | |
| | | @Override |
| | | public FebsResponse setTradePwd(ForgetPwdDto forgetPwdDto) { |
| | | MallMember memberId = LoginUserUtil.getLoginUser(); |
| | | Long memberId = LoginUserUtil.getLoginUser().getId(); |
| | | MallMember mallMember = this.baseMapper.selectById(memberId); |
| | | if (mallMember == null) { |
| | | throw new FebsException("账号不存在"); |
| | | } |
| | | |
| | | boolean b = commonService.verifyCode(forgetPwdDto.getAccount(), forgetPwdDto.getCode()); |
| | | if (!b) { |
| | | throw new FebsException("验证码错误"); |
| | | MallMember mallMemberKey = this.baseMapper.selectByUserKey(forgetPwdDto.getUserKey()); |
| | | if (!(mallMemberKey.getId() == memberId)) { |
| | | throw new FebsException("请输入正确的密钥"); |
| | | } |
| | | |
| | | 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 |
| | |
| | | mallMemberBank.setDigitalNo(updateMemberBankDto.getDigitalNo()); |
| | | mallMemberBank.setBankName(updateMemberBankDto.getBankName()); |
| | | mallMemberBank.setSubbranchName(updateMemberBankDto.getSubbranchName()); |
| | | mallMemberBank.setProvince(updateMemberBankDto.getProvince()); |
| | | mallMemberBank.setCity(updateMemberBankDto.getCity()); |
| | | mallMemberBank.setSkhh(updateMemberBankDto.getSkhh()); |
| | | mallMemberBankMapper.updateById(mallMemberBank); |
| | | return new FebsResponse().success(); |
| | | } |
| | |
| | | mallMemberBankMapper.deleteById(id); |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse findBankName() { |
| | | List<String> bankNameList = new ArrayList<>(); |
| | | List<DataDictionaryCustom> typeBank = dataDictionaryCustomMapper.selectDicByType("TYPE_BANK"); |
| | | if(CollUtil.isNotEmpty(typeBank)){ |
| | | bankNameList = typeBank.stream().map(DataDictionaryCustom::getValue).collect(Collectors.toList()); |
| | | } |
| | | return new FebsResponse().success().data(bankNameList); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse pwdForget(ForgetPwdDto forgetPwdDto) { |
| | | String accountLogin = forgetPwdDto.getAccountLogin(); |
| | | String userKey = forgetPwdDto.getUserKey(); |
| | | MallMember mallMember = this.baseMapper.selectAccountLoginAndUserKey(accountLogin,userKey); |
| | | if(ObjectUtil.isEmpty(mallMember)){ |
| | | throw new FebsException("账号不存在"); |
| | | } |
| | | String pwd = SecureUtil.md5(forgetPwdDto.getPassword()); |
| | | mallMember.setPassword(pwd); |
| | | this.baseMapper.updateById(mallMember); |
| | | return new FebsResponse().success().message("操作成功"); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse createAccount() { |
| | | Integer selectCount = this.baseMapper.selectCount(null); |
| | | String account = new StringBuilder().append("bbsz").append(ShareCodeUtil.toSerialNumberCode(selectCount)).toString(); |
| | | return new FebsResponse().success().data(account); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse createKey() { |
| | | Integer selectCount = this.baseMapper.selectCount(null); |
| | | String key = ShareCodeUtil.toSerialCode(selectCount); |
| | | 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<>(); |
| | | int j = 100; |
| | | for(int i =0;i < 100 ; i++){ |
| | | String s = ShareCodeUtil.toSerialNumberCodeTwo(j); |
| | | objects.add(s); |
| | | } |
| | | |
| | | System.out.println(objects); |
| | | System.out.println(objects.size()); |
| | | } |
| | | } |