| | |
| | | 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("账号已使用,请重新注册。"); |
| | |
| | | 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) { |
| | |
| | | } |
| | | 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()); |
| | |
| | | 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); |
| | | } |
| | | |
| | |
| | | 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(); |
| | |
| | | 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); |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | @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(TeamListDto teamListDto) { |
| | | Long memberId = null; |
| | | if (ObjectUtil.isEmpty(teamListDto.getId())) { |
| | | memberId = LoginUserUtil.getLoginUser().getId(); |
| | | } else { |
| | | memberId = teamListDto.getId(); |
| | | } |
| | | |
| | | public FebsResponse teamFcmList() { |
| | | Long memberId = LoginUserUtil.getLoginUser().getId(); |
| | | MallMember mallMember = this.baseMapper.selectById(memberId); |
| | | |
| | | MyFcmTeamVo myTeamVo = new MyFcmTeamVo(); |
| | | myTeamVo.setMemberId(mallMember.getId()); |
| | | myTeamVo.setAccountLogin(mallMember.getAccountLogin()); |
| | | myTeamVo.setIsFrozen(mallMember.getIsFrozen()); |
| | | myTeamVo.setLevelName(MemberLevelNewEnum.ZERO_LEVEL.getLevelName(mallMember.getLevel())); |
| | | myTeamVo.setMyAchieveBuy(this.baseMapper.selectAchieveBuyByMemberId(mallMember.getInviteId(), 1)); |
| | | myTeamVo.setMyAchieveSell(this.baseMapper.selectAchieveSellByMemberId(mallMember.getInviteId(), 1)); |
| | | myTeamVo.setMyTeamAchieveBuy(this.baseMapper.selectAchieveBuyByMemberId(mallMember.getInviteId(), 2)); |
| | | myTeamVo.setMyTeamAchieveSell(this.baseMapper.selectAchieveSellByMemberId(mallMember.getInviteId(), 2)); |
| | | myTeamVo.setMyTeamMemberCnt(this.baseMapper.selectAllChildAgentListByInviteId(mallMember.getInviteId()).size()); |
| | | Integer buyCnt = this.baseMapper.selectAchieveBuyOrderCntByMemberId(mallMember.getInviteId()); |
| | | Integer sellCnt = this.baseMapper.selectAchieveSellOrderCntByMemberId(mallMember.getInviteId()); |
| | | myTeamVo.setMyTeamOrderCnt(buyCnt+sellCnt); |
| | | ArrayList<MyFcmTeamVo> myFcmTeamVos = new ArrayList<>(); |
| | | /** |
| | | * 团队人数,只有直属两级 |
| | | */ |
| | | ArrayList<Long> memberIdList = new ArrayList<>(); |
| | | memberIdList.add(memberId); |
| | | |
| | | List<MallMember> mallMembersDirects = this.baseMapper.selectChildAgentListByInviteId(mallMember.getInviteId()); |
| | | List<MyFcmTeamVo> list = new ArrayList<>(); |
| | | if(CollUtil.isNotEmpty(mallMembersDirects)){ |
| | | for(MallMember mallMembersDirect : mallMembersDirects){ |
| | | MyFcmTeamVo myTeamDirectVo = new MyFcmTeamVo(); |
| | | myTeamDirectVo.setMemberId(mallMembersDirect.getId()); |
| | | myTeamDirectVo.setAccountLogin(mallMembersDirect.getAccountLogin()); |
| | | myTeamDirectVo.setIsFrozen(mallMembersDirect.getIsFrozen()); |
| | | myTeamDirectVo.setLevelName(MemberLevelNewEnum.ZERO_LEVEL.getLevelName(mallMembersDirect.getLevel())); |
| | | myTeamDirectVo.setMyAchieveBuy(this.baseMapper.selectAchieveBuyByMemberId(mallMembersDirect.getInviteId(), 1)); |
| | | myTeamDirectVo.setMyAchieveSell(this.baseMapper.selectAchieveSellByMemberId(mallMembersDirect.getInviteId(), 1)); |
| | | myTeamDirectVo.setMyTeamAchieveBuy(this.baseMapper.selectAchieveBuyByMemberId(mallMembersDirect.getInviteId(), 2)); |
| | | myTeamDirectVo.setMyTeamAchieveSell(this.baseMapper.selectAchieveSellByMemberId(mallMembersDirect.getInviteId(), 2)); |
| | | myTeamDirectVo.setMyTeamMemberCnt(this.baseMapper.selectAllChildAgentListByInviteId(mallMembersDirect.getInviteId()).size()); |
| | | Integer buyCntDirect = this.baseMapper.selectAchieveBuyOrderCntByMemberId(mallMembersDirect.getInviteId()); |
| | | Integer sellCntDirect = this.baseMapper.selectAchieveSellOrderCntByMemberId(mallMembersDirect.getInviteId()); |
| | | myTeamDirectVo.setMyTeamOrderCnt(buyCntDirect+sellCntDirect); |
| | | list.add(myTeamDirectVo); |
| | | 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()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | myTeamVo.setTeam(list); |
| | | 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); |
| | | |
| | | return new FebsResponse().success().data(myTeamVo); |
| | | 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 |
| | |
| | | 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); |
| | | } |
| | |
| | | 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){ |
| | |
| | | } |
| | | if(2 == type){ |
| | | if (amount.compareTo(mallMemberAmountLogin.getTokenAva()) > 0) { |
| | | throw new FebsException("门票不足"); |
| | | throw new FebsException("宝石不足"); |
| | | } |
| | | mallMemberAmountLogin.setTokenAva(mallMemberAmountLogin.getTokenAva().subtract(amount)); |
| | | mallMemberAmountMapper.updateTokenAvaById(mallMemberAmountLogin); |
| | |
| | | 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.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()); |
| | |
| | | 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(loginMember.getInviteId()); |
| | |
| | | } |
| | | } |
| | | 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("操作成功"); |
| | |
| | | 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()); |
| | | // } |
| | | } |