From 123fb7d4647a203d2b33ef51de56890f38491f9c Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Mon, 01 Jul 2024 16:54:17 +0800 Subject: [PATCH] 后台 --- src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java | 364 +++++++++++++++++++++++++++++++++------------------ 1 files changed, 237 insertions(+), 127 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java index 16b591a..4ed53bf 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java @@ -24,6 +24,7 @@ import cn.hutool.crypto.asymmetric.KeyType; import cn.hutool.crypto.asymmetric.RSA; 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; @@ -36,6 +37,7 @@ import java.math.BigDecimal; import java.util.*; +import java.util.regex.Pattern; import java.util.stream.Collectors; /** @@ -64,11 +66,25 @@ private final MallProductBuyRecordMapper mallProductBuyRecordMapper; private final MallProductBuyMapper mallProductBuyMapper; private final MallMemberSpeakMapper mallMemberSpeakMapper; + private final MallMemberChargeMapper mallMemberChargeMapper; @Value("${spring.profiles.active}") private String active; + private static final String ACCOUNT_PATTERN = "^[a-zA-Z0-9]{8,16}$"; + private static final Pattern pattern = Pattern.compile(ACCOUNT_PATTERN); + + + public static boolean validateAccount(String account) { + return pattern.matcher(account).matches(); + } + + public static void main(String[] args) { + String account = "example"; // 示例账号,可以根据需要替换 + boolean isValid = validateAccount(account); + System.out.println("账号是否有效: " + isValid); + } @Transactional(rollbackFor = Exception.class) @Override public FebsResponse register(RegisterDto registerDto) { @@ -79,11 +95,16 @@ * 返回账号和密钥给前端 */ String accountLogin = registerDto.getAccountLogin(); + boolean isValid = validateAccount(accountLogin); + if(!isValid){ + throw new FebsException("账号不规范。"); + } MallMember mallMember = this.baseMapper.selectByAccountLogin(accountLogin); if (mallMember != null) { throw new FebsException("账号已使用,请重新注册。"); } - String userKey = registerDto.getUserKey(); + Integer selectCount = this.baseMapper.selectCount(null); + String userKey = ShareCodeUtil.toSerialNumberCode(selectCount); MallMember mallMemberKey = this.baseMapper.selectByUserKey(userKey); if (mallMemberKey != null) { throw new FebsException("账号已使用,请重新注册。"); @@ -93,7 +114,6 @@ mallMember.setAccountLogin(accountLogin); mallMember.setPassword(SecureUtil.md5(registerDto.getPassword())); mallMember.setUserKey(userKey); - mallMember.setTradePassword(SecureUtil.md5(registerDto.getTradePassword())); Integer count = this.baseMapper.selectCount(null); if (count != null && count != 0) { @@ -103,15 +123,11 @@ } mallMember.setReferrerId(registerDto.getInviteId()); } -// mallMember.setName(registerDto.getName()); -// mallMember.setAccountStatus(MallMember.ACCOUNT_STATUS_ENABLE); mallMember.setAccountStatus(MallMember.ACCOUNT_STATUS_ENABLE); mallMember.setAccountType(MallMember.ACCOUNT_TYPE_NORMAL); mallMember.setLevel(AgentLevelEnum.ZERO_LEVEL.getCode()); mallMember.setIsFrozen(ProductEnum.MEMBER_UNFROZEN.getValue()); -// mallMember.setSex("男"); -// mallMember.setBindPhone(registerDto.getAccount()); - + mallMember.setPartner(2); this.baseMapper.insert(mallMember); String inviteId = ShareCodeUtil.toSerialNumberCodeTwo(mallMember.getId()); @@ -148,17 +164,10 @@ MallMemberWallet wallet = new MallMemberWallet(); wallet.setMemberId(mallMember.getId()); mallMemberWalletMapper.insert(wallet); - MallMemberAmount mallMemberAmount = new MallMemberAmount(); - mallMemberAmount.setMemberId(mallMember.getId()); - mallMemberAmountMapper.insert(mallMemberAmount); - - MallMemberPayment mallMemberPayment = new MallMemberPayment(); - mallMemberPayment.setMemberId(mallMember.getId()); - mallMemberPaymentMapper.insert(mallMemberPayment); ApiRegisterVo apiRegisterVo = new ApiRegisterVo(); apiRegisterVo.setAccount(mallMember.getAccountLogin()); - apiRegisterVo.setUserKey(mallMember.getUserKey()); + apiRegisterVo.setUserKey(registerDto.getPassword()); return new FebsResponse().success().data(apiRegisterVo); } @@ -170,8 +179,8 @@ if (mallMember == null) { throw new FebsException("账号或密码错误"); } - if (MallMember.ACCOUNT_STATUS_DISABLED.equals(mallMember.getAccountStatus())) { - throw new FebsException("账号限制登录"); + if (ProductEnum.MEMBER_FROZEN.getValue() == mallMember.getIsFrozen()) { + throw new FebsException("账号已冻结"); } String redisKey = AppContants.APP_LOGIN_PREFIX + mallMember.getId(); @@ -231,82 +240,14 @@ MallMember mallMember = this.baseMapper.selectById(id); MallMemberVo mallMemberVo = MallMemberConversion.INSTANCE.entityToVo(mallMember); + MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(mallMember.getId()); + mallMemberVo.setBalance(mallMemberWallet.getBalance()); - MallMember referMember = this.baseMapper.selectInfoByInviteId(mallMember.getReferrerId()); - if (referMember != null) { - mallMemberVo.setReferrerName(referMember.getName()); - } - - MallMemberPayment payment = mallMemberPaymentMapper.selectByMemberId(id); - if (payment != null) { - mallMemberVo.setHasPayment(1); - } - - DataDictionaryCustom nftMinDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( - DataDictionaryEnum.NFT_MIN.getType(), - DataDictionaryEnum.NFT_MIN.getCode()); - mallMemberVo.setNftMin(ObjectUtil.isEmpty(nftMinDic) ? new BigDecimal(100) : new BigDecimal(nftMinDic.getValue())); - - DataDictionaryCustom outFcmMinDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( - DataDictionaryEnum.OUT_FCM_MIN.getType(), - DataDictionaryEnum.OUT_FCM_MIN.getCode()); - mallMemberVo.setOutFcmMin(ObjectUtil.isEmpty(outFcmMinDic) ? new BigDecimal(100) : new BigDecimal(outFcmMinDic.getValue())); - - 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 nftFeeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( - DataDictionaryEnum.NFT_FEE.getType(), - DataDictionaryEnum.NFT_FEE.getCode()); - BigDecimal nftFeePercent = ObjectUtil.isEmpty(nftFeeDic) ? new BigDecimal(20) : new BigDecimal(nftFeeDic.getValue()); - mallMemberVo.setNftFee(nftFeePercent); - - DataDictionaryCustom memberFrozenFcmCntDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( - DataDictionaryEnum.MEMBER_FROZEN_FCM_CNT.getType(), - DataDictionaryEnum.MEMBER_FROZEN_FCM_CNT.getCode() + DataDictionaryCustom chargeAddressDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.CHARGE_ADDRESS.getType(), + DataDictionaryEnum.CHARGE_ADDRESS.getCode() ); - BigDecimal memberFrozenFcmCnt = ObjectUtil.isEmpty(memberFrozenFcmCntDic) ? new BigDecimal(100) : new BigDecimal(memberFrozenFcmCntDic.getValue()); - mallMemberVo.setUnfrozenCnt(memberFrozenFcmCnt); - - DataDictionaryCustom insureMinuteDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( - DataDictionaryEnum.INSURE_END_MINUTE.getType(), - DataDictionaryEnum.INSURE_END_MINUTE.getCode() - ); - Integer insureMinute = Integer.parseInt(ObjectUtil.isEmpty(insureMinuteDic) ? "60" : insureMinuteDic.getValue()); - mallMemberVo.setMinuteCnt(insureMinute); - - DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(AppContants.AGENT_LEVEL, mallMember.getLevel()); - if (dic != null) { - mallMemberVo.setLevelName(dic.getDescription()); - } - 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()); - DataDictionaryCustom startTimeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( - DataDictionaryEnum.YU_YUE_START_TIME.getType(), - DataDictionaryEnum.YU_YUE_START_TIME.getCode() - ); - mallMemberVo.setStartTime(startTimeDic.getValue()); - DataDictionaryCustom endTimeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( - DataDictionaryEnum.YU_YUE_END_TIME.getType(), - DataDictionaryEnum.YU_YUE_END_TIME.getCode() - ); - mallMemberVo.setEndTime(endTimeDic.getValue()); - - Integer pickCount = mallProductBuyMapper.selectListByMemberIdAndState(id); - mallMemberVo.setPickCount(pickCount); + mallMemberVo.setSysAddress(chargeAddressDic.getValue()); return new FebsResponse().success().data(mallMemberVo); } @@ -361,24 +302,98 @@ } @Override - public FebsResponse teamList(TeamListDto teamListDto) { - Long memberId = null; - if (teamListDto.getId() == null) { - memberId = LoginUserUtil.getLoginUser().getId(); - } else { - memberId = teamListDto.getId(); - } - + public FebsResponse teamList() { + Long memberId = LoginUserUtil.getLoginUser().getId(); MallMember mallMember = this.baseMapper.selectById(memberId); - List<TeamListVo> list = this.baseMapper.selectTeamListByInviteId(mallMember.getInviteId()); - MyTeamVo myTeamVo = new MyTeamVo(); - myTeamVo.setTeam(list); - myTeamVo.setMyAchieve(this.baseMapper.selectAchieveByMemberId(mallMember.getInviteId(), 1)); - myTeamVo.setMyTeamAchieve(this.baseMapper.selectAchieveByMemberId(mallMember.getInviteId(), 2)); - myTeamVo.setMyTeamCnt(this.baseMapper.selectAllChildAgentListByInviteId(mallMember.getInviteId()).size()); + /** + * 团队人数,只有直属两级 + */ + ArrayList<Long> memberIdList = new ArrayList<>(); + memberIdList.add(memberId); + + QueryWrapper<MallMember> objectQueryWrapper = new QueryWrapper<>(); + objectQueryWrapper.eq("referrer_id",mallMember.getInviteId()); + List<MallMember> mallMembers = this.baseMapper.selectList(objectQueryWrapper); + if(CollUtil.isNotEmpty(mallMembers)){ + for(MallMember directMember : mallMembers){ + //第一代 + memberIdList.add(directMember.getId()); + + QueryWrapper<MallMember> directWrapper = new QueryWrapper<>(); + directWrapper.eq("referrer_id",directMember.getInviteId()); + List<MallMember> refMembers = this.baseMapper.selectList(directWrapper); + if(CollUtil.isNotEmpty(refMembers)){ + for(MallMember refMember : refMembers){ + //第二代 + memberIdList.add(refMember.getId()); + } + } + } + } + BigDecimal chargeAmount = mallMoneyFlowMapper.selectSumAmountByMemberIdAndType(memberIdList,GameFlowTypeEnum.PLAYER_CHARGE.getValue()); + + myTeamVo.setMyTeamCnt(memberIdList.size()); + myTeamVo.setMyAchieve(chargeAmount); return new FebsResponse().success().data(myTeamVo); + } + + @Override + public FebsResponse teamFcmList() { + Long memberId = LoginUserUtil.getLoginUser().getId(); + MallMember mallMember = this.baseMapper.selectById(memberId); + + ArrayList<MyFcmTeamVo> myFcmTeamVos = new ArrayList<>(); + /** + * 团队人数,只有直属两级 + */ + ArrayList<Long> memberIdList = new ArrayList<>(); + memberIdList.add(memberId); + + QueryWrapper<MallMember> objectQueryWrapper = new QueryWrapper<>(); + objectQueryWrapper.eq("referrer_id",mallMember.getInviteId()); + List<MallMember> mallMembers = this.baseMapper.selectList(objectQueryWrapper); + if(CollUtil.isNotEmpty(mallMembers)){ + for(MallMember directMember : mallMembers){ + //第一代 + memberIdList.add(directMember.getId()); + + QueryWrapper<MallMember> directWrapper = new QueryWrapper<>(); + directWrapper.eq("referrer_id",directMember.getInviteId()); + List<MallMember> refMembers = this.baseMapper.selectList(directWrapper); + if(CollUtil.isNotEmpty(refMembers)){ + for(MallMember refMember : refMembers){ + //第二代 + memberIdList.add(refMember.getId()); + } + } + } + } + + for(Long id : memberIdList){ + MyFcmTeamVo myFcmTeamVo = new MyFcmTeamVo(); + + MallMember member = this.baseMapper.selectById(id); + myFcmTeamVo.setAccountLogin(member.getAccountLogin()); + + BigDecimal chargeAmount = mallMoneyFlowMapper.selectSumByMemberIdAndType(id,GameFlowTypeEnum.PLAYER_CHARGE.getValue()); + myFcmTeamVo.setChargeAmount(chargeAmount); + + MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(id); + myFcmTeamVo.setBalance(mallMemberWallet.getBalance()); + + BigDecimal amountBuy = mallMoneyFlowMapper.selectSumByMemberIdAndType(id,GameFlowTypeEnum.PLAYER_PICK_NUM.getValue()); + myFcmTeamVo.setAmountBuy(amountBuy); + + BigDecimal playerPerk = mallMoneyFlowMapper.selectSumByMemberIdAndType(id,GameFlowTypeEnum.PLAYER_PERK.getValue()); + BigDecimal ownerPerk = mallMoneyFlowMapper.selectSumByMemberIdAndType(id,GameFlowTypeEnum.OWNER_PERK.getValue()); + myFcmTeamVo.setAmountPerk(amountBuy.add(playerPerk).add(ownerPerk)); + + myFcmTeamVos.add(myFcmTeamVo); + } + + return new FebsResponse().success().data(myFcmTeamVos); } @Override @@ -391,7 +406,6 @@ IPage<MoneyFlowVo> page = new Page<>(moneyFlowDto.getPageNum(), moneyFlowDto.getPageSize()); Long id = LoginUserUtil.getLoginUser().getId(); moneyFlowDto.setMemberId(id); -// IPage<MoneyFlowVo> pages = mallMoneyFlowMapper.selectApiMoneyFlowInPage(page, moneyFlowDto); IPage<MoneyFlowVo> pages = mallMoneyFlowMapper.selectApiFcmMoneyFlowInPage(page, moneyFlowDto); return new FebsResponse().success().data(pages); } @@ -419,7 +433,7 @@ BigDecimal amount = transferDto.getAmount(); int type = transferDto.getType(); - if(1 != type && 2 != type){ + if(1 != type && 2 != type && 3 != type){ throw new FebsException("请选择互转类型"); } Integer insideWith = loginMember.getInsideWith() == null ? 2 :loginMember.getInsideWith(); @@ -444,7 +458,6 @@ throw new FebsException("交易密码错误"); } - BigDecimal avaAmount = transferDto.getAmount().setScale(2, BigDecimal.ROUND_DOWN); MallMemberAmount mallMemberAmountLogin = mallMemberAmountMapper.selectByMemberId(loginMember.getId()); MallMemberAmount mallMemberAmount = mallMemberAmountMapper.selectByMemberId(mallMember.getId()); if(1 == type){ @@ -475,7 +488,7 @@ } if(2 == type){ if (amount.compareTo(mallMemberAmountLogin.getTokenAva()) > 0) { - throw new FebsException("门票不足"); + throw new FebsException("宝石不足"); } mallMemberAmountLogin.setTokenAva(mallMemberAmountLogin.getTokenAva().subtract(amount)); mallMemberAmountMapper.updateTokenAvaById(mallMemberAmountLogin); @@ -498,6 +511,47 @@ loginMember.getId(), FlowTypeNewEnum.TOKEN.getValue(), MoneyFlowTypeNewEnum.TOKEN_INSIDE_IN.getDescrition()); + } + if(3 == type){ + DataDictionaryCustom dataDictionaryCustom = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.FCM_INSIDE_NFT_PERCENT.getType(), + DataDictionaryEnum.FCM_INSIDE_NFT_PERCENT.getCode() + ); + BigDecimal feePercent = new BigDecimal("0.01").multiply(new BigDecimal(dataDictionaryCustom.getValue())); + if (amount.compareTo(mallMemberAmountLogin.getTrendsNft()) > 0) { + throw new FebsException("卡牌不足"); + } + BigDecimal fee = amount.multiply(feePercent).setScale(2,BigDecimal.ROUND_DOWN); + BigDecimal amountReal = amount.subtract(fee); + mallMemberAmountLogin.setTrendsNft(mallMemberAmountLogin.getTrendsNft().subtract(amount)); + mallMemberAmountMapper.updateTrendsNftById(mallMemberAmountLogin); + String orderNo = MallUtils.getOrderNum("NFT"); + mallMoneyFlowService.addMoneyFlow( + loginMember.getId(), + amountReal.negate(), + MoneyFlowTypeNewEnum.NFT_TRANS_OUT.getValue(), + orderNo, + mallMember.getId(), + FlowTypeNewEnum.NFT.getValue(), + MoneyFlowTypeNewEnum.NFT_TRANS_OUT.getDescrition()); + mallMoneyFlowService.addMoneyFlow( + loginMember.getId(), + fee.negate(), + MoneyFlowTypeNewEnum.NFT_TRANS_OUT_FEE.getValue(), + orderNo, + mallMember.getId(), + FlowTypeNewEnum.NFT.getValue(), + MoneyFlowTypeNewEnum.NFT_TRANS_OUT_FEE.getDescrition()); + mallMemberAmount.setTrendsNft(mallMemberAmount.getTrendsNft().add(amountReal)); + mallMemberAmountMapper.updateTrendsNftById(mallMemberAmount); + mallMoneyFlowService.addMoneyFlow( + mallMember.getId(), + amountReal, + MoneyFlowTypeNewEnum.NFT_TRANS_IN.getValue(), + orderNo, + loginMember.getId(), + FlowTypeNewEnum.NFT.getValue(), + MoneyFlowTypeNewEnum.NFT_TRANS_IN.getDescrition()); } } @@ -788,13 +842,19 @@ @Override public FebsResponse updatePayment(UpdatePaymentDto updatePaymentDto) { Long memberId = LoginUserUtil.getLoginUser().getId(); + QueryWrapper<MallProductBuy> objectQueryWrapper = new QueryWrapper<>(); + objectQueryWrapper.eq("member_id",memberId); + List<MallProductBuy> mallProductBuys = mallProductBuyMapper.selectList(objectQueryWrapper); + if(ObjectUtil.isNotEmpty(mallProductBuys)){ + throw new FebsException("信息无法修改"); + } 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.setBankNo(updatePaymentDto.getBankNo()); +// mallMemberPayment.setBank(updatePaymentDto.getBank()); mallMemberPayment.setPhone(updatePaymentDto.getPhone()); mallMemberPayment.setUsdtTongdao(updatePaymentDto.getUsdtTongdao()); mallMemberPayment.setUsdtAddress(updatePaymentDto.getUsdtAddress()); @@ -806,6 +866,7 @@ @Override public FebsResponse unfreeze(UnfreezeDto unfreezeDto) { Long memberId = LoginUserUtil.getLoginUser().getId(); + MallMember loginMember = this.baseMapper.selectById(memberId); /** * 判断账号是否冻结 * 判断账号FCM代币是否足够 @@ -825,31 +886,31 @@ DataDictionaryEnum.MEMBER_FROZEN_FCM_CNT.getCode() ); BigDecimal memberFrozenFcmCnt = new BigDecimal(memberFrozenFcmCntDic.getValue()); - MallMemberAmount mallMemberAmount = mallMemberAmountMapper.selectByMemberId(unfreezeMemberId); - BigDecimal fcmCntAva = mallMemberAmount.getFcmCntAva(); + MallMemberAmount mallMemberAmount = mallMemberAmountMapper.selectByMemberId(memberId); + BigDecimal fcmCntAva = mallMemberAmount.getTokenAva(); if(memberFrozenFcmCnt.compareTo(fcmCntAva) > 0){ - throw new FebsException("解除冻结需要FCM的数量为:" + fcmCntAva); + throw new FebsException("激活需要宝石的数量为:" + fcmCntAva); } if(2 == unfreezeDto.getType()){ - List<MallMember> mallMembers = this.baseMapper.selectByRefererId(mallMember.getInviteId()); + List<MallMember> mallMembers = this.baseMapper.selectByRefererId(loginMember.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); + mallMemberAmount.setTokenAva(fcmCntAvaSub); mallMemberAmountMapper.updateById(mallMemberAmount); mallMember.setIsFrozen(ProductEnum.MEMBER_UNFROZEN.getValue()); this.baseMapper.updateById(mallMember); mallMoneyFlowService.addMoneyFlow( - mallMember.getId(), + memberId, memberFrozenFcmCnt.negate(), MoneyFlowTypeNewEnum.UNFREEZE_USER.getValue(), MallUtils.getOrderNum(), memberId, - FlowTypeNewEnum.FCM_COIN.getValue(), + FlowTypeNewEnum.TOKEN.getValue(), MoneyFlowTypeNewEnum.UNFREEZE_USER.getDescrition()); return new FebsResponse().success().message("操作成功"); @@ -876,16 +937,65 @@ return new FebsResponse().success().data(pages); } - 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); + @Override + public FebsResponse chargeBalance(ApiChargeBalanceDto apiChargeBalanceDto) { + Long memberId = LoginUserUtil.getLoginUser().getId(); + MallMember mallMember = this.baseMapper.selectById(memberId); + if(ObjectUtil.isEmpty(mallMember.getBindPhone())){ + throw new FebsException("请绑定充值提取地址"); + } + String address = mallMember.getBindPhone(); + BigDecimal amount = apiChargeBalanceDto.getAmount(); + DataDictionaryCustom chargeAmountDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.CHARGE_AMOUNT.getType(), + DataDictionaryEnum.CHARGE_AMOUNT.getCode() + ); + BigDecimal chargeAmount = new BigDecimal(chargeAmountDic.getValue()).setScale(2,BigDecimal.ROUND_DOWN); + if(chargeAmount.compareTo(amount) > 0){ + throw new FebsException("充值金额需要大于"+chargeAmount); } - System.out.println(objects); - System.out.println(objects.size()); + MallMemberCharge mallMemberCharge = new MallMemberCharge(); + mallMemberCharge.setMemberId(memberId); + mallMemberCharge.setAmount(amount); + mallMemberCharge.setAddress(address); + mallMemberCharge.setState(1); + mallMemberChargeMapper.insert(mallMemberCharge); + + return new FebsResponse().success().message("操作成功"); } + + @Override + public FebsResponse bindAddress(ApiBindAddressDto apiBindAddressDto) { + Long memberId = LoginUserUtil.getLoginUser().getId(); + + MallMember mallMember = this.baseMapper.selectById(memberId); + if(ObjectUtil.isNotEmpty(mallMember.getBindPhone())){ + throw new FebsException("账号已绑定,请勿重复提交"); + } + + String address = apiBindAddressDto.getAddress().toLowerCase(); + QueryWrapper<MallMember> objectQueryWrapper = new QueryWrapper<>(); + objectQueryWrapper.eq("bind_phone",address); + List<MallMember> mallMembers = this.baseMapper.selectList(objectQueryWrapper); + if(CollUtil.isNotEmpty(mallMembers)){ + throw new FebsException("请使用未绑定的地址"); + } + mallMember.setBindPhone(address); + this.baseMapper.updateById(mallMember); + 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()); +// } } -- Gitblit v1.9.1