| | |
| | | package cc.mrbird.febs.mall.service.impl; |
| | | |
| | | import cc.mrbird.febs.common.entity.FebsResponse; |
| | | import cc.mrbird.febs.common.enumerates.AgentLevelEnum; |
| | | import cc.mrbird.febs.common.enumerates.FlowTypeEnum; |
| | | import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum; |
| | | 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.MallMemberConversion; |
| | | 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 cn.hutool.core.date.DateTime; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.core.util.IdUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | 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 DataDictionaryCustomMapper dataDictionaryCustomMapper; |
| | | 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(); |
| | | 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.name()); |
| | | mallMember.setSex("男"); |
| | | mallMember.setBindPhone(registerDto.getAccount()); |
| | | mallMember.setLevel(AgentLevelEnum.ZERO_LEVEL.getCode()); |
| | | mallMember.setIsFrozen(ProductEnum.MEMBER_FROZEN.getValue()); |
| | | // 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.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 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 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.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()); |
| | | 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()); |
| | | 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 |
| | |
| | | MallMember mallMember = this.baseMapper.selectById(memberId); |
| | | |
| | | List<TeamListVo> list = this.baseMapper.selectTeamListByInviteId(mallMember.getInviteId()); |
| | | // BigDecimal ownAmount = this.baseMapper.selectOwnOrderAmountByInviteId(mallMember.getInviteId()); |
| | | // TeamListVo own = new TeamListVo(); |
| | | // own.setCreatedTime(mallMember.getCreatedTime()); |
| | | // own.setAmount(ownAmount); |
| | | // own.setName(mallMember.getName()); |
| | | // own.setPhone(mallMember.getPhone()); |
| | | // own.setInviteId(mallMember.getInviteId()); |
| | | // own.setIsCurrent(1); |
| | | // own.setCnt(this.baseMapper.selectOwnCntByInviteId(mallMember.getInviteId())); |
| | | // own.setOrderCnt(this.baseMapper.selectOwnOrderCntByInviteId(mallMember.getInviteId())); |
| | | // own.setId(mallMember.getId()); |
| | | |
| | | 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(list.size()); |
| | | myTeamVo.setMyTeamCnt(this.baseMapper.selectAllChildAgentListByInviteId(mallMember.getInviteId()).size()); |
| | | return new FebsResponse().success().data(myTeamVo); |
| | | } |
| | | |
| | |
| | | @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 (loginMember.getPhone().equals(transferDto.getAccount()) || loginMember.getInviteId().equals(transferDto.getAccount())) { |
| | | if(1 != type || 2 != type){ |
| | | throw new FebsException("请选择互转类型"); |
| | | } |
| | | Integer insideWith = loginMember.getInsideWith() == null ? 2 :loginMember.getInsideWith(); |
| | | if (1 != insideWith) { |
| | | throw new FebsException("功能升级中"); |
| | | } |
| | | |
| | | MallMember mallMember = this.baseMapper.selectByAccountLogin(transferDto.getAccount()); |
| | | if (mallMember == null) { |
| | | throw new FebsException("转出账户不存在"); |
| | | } |
| | | |
| | | 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("交易密码错误"); |
| | | } |
| | | |
| | | walletService.reduceBalance(transferDto.getAmount(), memberId); |
| | | String orderNo = MallUtils.getOrderNum("T"); |
| | | this.addMoneyFlow(memberId, transferDto.getAmount().negate(), MoneyFlowTypeEnum.TRANSFER.getValue(), orderNo, null, null, mallMember.getId(), null, FlowTypeEnum.BALANCE.getValue()); |
| | | |
| | | walletService.addBalance(transferDto.getAmount(), mallMember.getId()); |
| | | this.addMoneyFlow(mallMember.getId(), transferDto.getAmount(), 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 |
| | |
| | | MallMemberWallet wallet = mallMemberWalletMapper.selectWalletByMemberId(memberId); |
| | | BigDecimal profit = mallMoneyFlowMapper.selectProfitByDateAndMemberId(memberId); |
| | | |
| | | BigDecimal canMoney = wallet.getBalance(); |
| | | BigDecimal canMoney = wallet.getCommission(); |
| | | if (profit != null) { |
| | | if(canMoney.compareTo(BigDecimal.ZERO) > 0) { |
| | | canMoney = canMoney.subtract(profit); |
| | |
| | | } |
| | | |
| | | MallMemberWallet wallet = mallMemberWalletMapper.selectWalletByMemberId(id); |
| | | commissionVo.setCommission(wallet.getCommission()); |
| | | commissionVo.setCommission(wallet.getBalance()); |
| | | commissionVo.setToday(mallMoneyFlowMapper.selectCommissionIncome(1, new Date(), id)); |
| | | commissionVo.setMonth(mallMoneyFlowMapper.selectCommissionIncome(2, new Date(), id)); |
| | | commissionVo.setTotal(mallMoneyFlowMapper.selectCommissionIncome(null, null, id)); |
| | |
| | | MallShopApply hasApply = mallShopApplyMapper.selectNewestApplyByMemberId(member.getId()); |
| | | if (hasApply != null) { |
| | | if (!hasApply.getStatus().equals(MallShopApply.APPLY_DISAGREE)) { |
| | | throw new FebsException("审核中或审核已通过"); |
| | | throw new FebsException("请勿重复提交申请"); |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | mallRegisterAppealMapper.insert(isExist); |
| | | } |
| | | |
| | | @Override |
| | | public CashOutSettingVo cashOutSetting() { |
| | | CashOutSettingVo cashOutSettingVo = new CashOutSettingVo(); |
| | | DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.CASHOUT_SETTING.getType(), DataDictionaryEnum.CASHOUT_SETTING.getCode()); |
| | | if (dic != null) { |
| | | cashOutSettingVo = JSONObject.parseObject(dic.getValue(), CashOutSettingVo.class); |
| | | } |
| | | DataDictionaryCustom voucherOnOffDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | GreenScoreEnum.VOUCHER_ON_OFF.getType(), GreenScoreEnum.VOUCHER_ON_OFF.getCode()); |
| | | if(ObjectUtil.isNotEmpty(voucherOnOffDic)){ |
| | | cashOutSettingVo.setVoucherOnOff(voucherOnOffDic.getValue()); |
| | | DataDictionaryCustom voucherPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | GreenScoreEnum.VOUCHER_PERCENT.getType(), GreenScoreEnum.VOUCHER_PERCENT.getCode()); |
| | | if(ObjectUtil.isNotEmpty(voucherPercentDic)){ |
| | | cashOutSettingVo.setVoucherPercent(new BigDecimal(voucherPercentDic.getValue())); |
| | | } |
| | | } |
| | | |
| | | return cashOutSettingVo; |
| | | } |
| | | |
| | | @Override |
| | | public List<ShopListVo> findShopListVo(ShopListDto shopListDto) { |
| | | Page<MallShopApply> page = new Page<>(shopListDto.getPageNow(), shopListDto.getPageSize()); |
| | | |
| | | MallShopApply shopApply = new MallShopApply(); |
| | | shopApply.setStatus(MallShopApply.APPLY_AGREE); |
| | | IPage<MallShopApply> pageResult = mallShopApplyMapper.selectShopApplyInPage(shopApply, page); |
| | | |
| | | List<MallShopApply> list = pageResult.getRecords(); |
| | | if (CollUtil.isEmpty(list)) { |
| | | list = new ArrayList<>(); |
| | | } |
| | | return MallShopApplyConversion.INSTANCE.entitiesToVOs(list); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public FebsResponse addMemberBank(AddMemberBankDto addMemberBankDto) { |
| | | MallMember member = LoginUserUtil.getLoginUser(); |
| | | MallMemberBank mallMemberBank = MallMemberBankConversion.INSTANCE.dtoToentity(addMemberBankDto); |
| | | mallMemberBank.setMemberId(member.getId()); |
| | | mallMemberBankMapper.insert(mallMemberBank); |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse findMemberBankList(MemberBankListDto memberBankListDto) { |
| | | MallMember member = LoginUserUtil.getLoginUser(); |
| | | Page<MemberBankListVo> page = new Page<>(memberBankListDto.getPageNum(), memberBankListDto.getPageSize()); |
| | | memberBankListDto.setMemberId(member.getId()); |
| | | IPage<MemberBankListVo> pageResult = mallMemberBankMapper.findMemberBankListInPage(memberBankListDto, page); |
| | | return new FebsResponse().success().data(pageResult); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse findBankDetailsById(Long id) { |
| | | MallMemberBank mallMemberBank = mallMemberBankMapper.selectById(id); |
| | | MemberBankListVo memberBankListVo = MallMemberBankConversion.INSTANCE.entityToVo(mallMemberBank); |
| | | return new FebsResponse().success().data(memberBankListVo); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public FebsResponse updateMemberBank(UpdateMemberBankDto updateMemberBankDto) { |
| | | Long id = updateMemberBankDto.getId(); |
| | | MallMemberBank mallMemberBank = mallMemberBankMapper.selectById(id); |
| | | mallMemberBank.setName(updateMemberBankDto.getName()); |
| | | mallMemberBank.setIdType(updateMemberBankDto.getIdType()); |
| | | mallMemberBank.setIdCardNum(updateMemberBankDto.getIdCardNum()); |
| | | mallMemberBank.setBankNo(updateMemberBankDto.getBankNo()); |
| | | mallMemberBank.setPhone(updateMemberBankDto.getPhone()); |
| | | 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(); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public FebsResponse delMemberBank(Long id) { |
| | | 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(ProductEnum.MEMBER_UNFROZEN.getValue() == 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(ProductEnum.MEMBER_UNFROZEN.getValue()); |
| | | 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()); |
| | | } |
| | | } |