| | |
| | | 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; |
| | |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.*; |
| | | import java.util.regex.Pattern; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | 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) { |
| | |
| | | * 返回账号和密钥给前端 |
| | | */ |
| | | 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("账号已使用,请重新注册。"); |
| | |
| | | DataDictionaryCustom fcmPriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.FCM_PRICE.getType(), |
| | | DataDictionaryEnum.FCM_PRICE.getCode()); |
| | | mallMemberVo.setFcmPrice(ObjectUtil.isEmpty(fcmPriceDic) ? new BigDecimal(2) : new BigDecimal(fcmPriceDic.getValue())); |
| | | mallMemberVo.setFcmPrice(ObjectUtil.isEmpty(fcmPriceDic) ? new BigDecimal(8) : new BigDecimal(fcmPriceDic.getValue())); |
| | | |
| | | DataDictionaryCustom outFcmFeeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.OUT_FCM_FEE.getType(), |
| | |
| | | mallMemberVo.setFcmCntFrozen(mallMemberAmount.getFcmCntFrozen()); |
| | | mallMemberVo.setTokenAva(mallMemberAmount.getTokenAva()); |
| | | mallMemberVo.setTokenFrozen(mallMemberAmount.getTokenFrozen()); |
| | | mallMemberVo.setTotalPerk(mallMemberAmount.getTotalPerk()); |
| | | DataDictionaryCustom startTimeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.YU_YUE_START_TIME.getType(), |
| | | DataDictionaryEnum.YU_YUE_START_TIME.getCode() |
| | |
| | | Integer pickCount = mallProductBuyMapper.selectListByMemberIdAndState(id); |
| | | mallMemberVo.setPickCount(pickCount); |
| | | |
| | | BigDecimal totalPerk = mallProductBuyMapper.selectTotalPerkByMemberId(mallMember.getId()); |
| | | mallMemberVo.setTotalPerk(totalPerk); |
| | | // BigDecimal totalPerk = mallProductBuyMapper.selectTotalPerkByMemberId(mallMember.getId()); |
| | | // mallMemberVo.setTotalPerk(totalPerk); |
| | | |
| | | DataDictionaryCustom insideNFTPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.FCM_INSIDE_NFT_PERCENT.getType(), |
| | | DataDictionaryEnum.FCM_INSIDE_NFT_PERCENT.getCode() |
| | | ); |
| | | mallMemberVo.setInsideNFTPercent(insideNFTPercentDic.getValue()); |
| | | |
| | | DataDictionaryCustom chargeAddressDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.CHARGE_ADDRESS.getType(), |
| | | DataDictionaryEnum.CHARGE_ADDRESS.getCode() |
| | | ); |
| | | mallMemberVo.setChargeAddress(chargeAddressDic.getValue()); |
| | | |
| | | DataDictionaryCustom withdrawAmountDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.WITHDRAW_AMOUNT.getType(), |
| | | DataDictionaryEnum.WITHDRAW_AMOUNT.getCode() |
| | | ); |
| | | BigDecimal withdrawAmount = new BigDecimal(withdrawAmountDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN); |
| | | mallMemberVo.setWithdrawAmount(withdrawAmount); |
| | | |
| | | DataDictionaryCustom usdtPriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.USDT_PRICE.getType(), |
| | | DataDictionaryEnum.USDT_PRICE.getCode() |
| | | ); |
| | | BigDecimal usdtPrice = new BigDecimal(usdtPriceDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN); |
| | | mallMemberVo.setUsdtPrice(usdtPrice); |
| | | return new FebsResponse().success().data(mallMemberVo); |
| | | } |
| | | |
| | |
| | | myTeamDirectVo.setMemberId(mallMembersDirect.getId()); |
| | | myTeamDirectVo.setAccountLogin(mallMembersDirect.getAccountLogin()); |
| | | myTeamDirectVo.setIsFrozen(mallMembersDirect.getIsFrozen()); |
| | | myTeamDirectVo.setLevelName(MemberLevelNewEnum.ZERO_LEVEL.getLevelName(mallMembersDirect.getLevel())); |
| | | myTeamDirectVo.setLevelName( |
| | | dataDictionaryCustomMapper.selectDicDataByTypeAndCode(mallMembersDirect.getLevel(),mallMembersDirect.getLevel()).getDescription() |
| | | ); |
| | | |
| | | BigDecimal myAchieveBuyDirect = this.baseMapper.selectAchieveBuyByMemberId(mallMembersDirect.getInviteId(), 1); |
| | | myTeamDirectVo.setMyAchieveBuy(myAchieveBuyDirect); |
| | |
| | | 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(); |
| | |
| | | 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){ |
| | |
| | | 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()); |
| | | } |
| | | } |
| | | |
| | |
| | | @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.setWxQrcode(updatePaymentDto.getWxQrcode()); |
| | | mallMemberPayment.setAliQrcode(updatePaymentDto.getAliQrcode()); |
| | | mallMemberPayment.setBankName(updatePaymentDto.getBankName()); |
| | | // mallMemberPayment.setBankNo(updatePaymentDto.getBankNo()); |
| | | // mallMemberPayment.setBank(updatePaymentDto.getBank()); |
| | |
| | | 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); |
| | | 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()); |
| | | if (StrUtil.isBlank(mallMember.getTradePassword())) { |
| | | throw new FebsException("请设置交易密码"); |
| | | } |
| | | |
| | | if (!mallMember.getTradePassword().equals(SecureUtil.md5(apiChargeBalanceDto.getTradePassword()))) { |
| | | throw new FebsException("交易密码错误"); |
| | | } |
| | | MallMemberCharge mallMemberCharge = new MallMemberCharge(); |
| | | mallMemberCharge.setMemberId(memberId); |
| | | mallMemberCharge.setAmount(amount); |
| | | mallMemberCharge.setAddress(apiChargeBalanceDto.getAddress()); |
| | | mallMemberCharge.setState(1); |
| | | mallMemberChargeMapper.insert(mallMemberCharge); |
| | | |
| | | |
| | | 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()); |
| | | // } |
| | | } |