| | |
| | | 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 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 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.regex.Pattern; |
| | | 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; |
| | | 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) { |
| | | MallMember mallMember = this.baseMapper.selectInfoByAccount(registerDto.getAccount()); |
| | | /** |
| | | * 验证账户密钥是否重复 |
| | | * 验证邀请码是否存在 |
| | | * 生成用户信息 |
| | | * 返回账号和密钥给前端 |
| | | */ |
| | | 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("该账号已被占用"); |
| | | 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("验证码错误"); |
| | | Integer selectCount = this.baseMapper.selectCount(null); |
| | | String userKey = ShareCodeUtil.toSerialNumberCode(selectCount); |
| | | 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); |
| | | |
| | | 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.setAccountType(MallMember.ACCOUNT_TYPE_NORMAL); |
| | | mallMember.setLevel(AgentLevelEnum.FIRST_LEVEL.name()); |
| | | mallMember.setSex("男"); |
| | | |
| | | mallMember.setLevel(AgentLevelEnum.ZERO_LEVEL.getCode()); |
| | | mallMember.setIsFrozen(ProductEnum.MEMBER_UNFROZEN.getValue()); |
| | | mallMember.setPartner(2); |
| | | 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); |
| | | return new FebsResponse().success().message("注册成功"); |
| | | |
| | | ApiRegisterVo apiRegisterVo = new ApiRegisterVo(); |
| | | apiRegisterVo.setAccount(mallMember.getAccountLogin()); |
| | | apiRegisterVo.setUserKey(registerDto.getPassword()); |
| | | return new FebsResponse().success().data(apiRegisterVo); |
| | | } |
| | | |
| | | @Override |
| | | 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("该账号存在异常, 暂限制登录"); |
| | | if (ProductEnum.MEMBER_FROZEN.getValue() == mallMember.getIsFrozen()) { |
| | | 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 |
| | |
| | | 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()); |
| | | } |
| | | |
| | | if (StrUtil.isNotBlank(mallMember.getTradePassword())) { |
| | | mallMemberVo.setHasTradePwd(1); |
| | | } |
| | | |
| | | MallMemberPayment payment = mallMemberPaymentMapper.selectByMemberId(id); |
| | | if (payment != null) { |
| | | mallMemberVo.setHasPayment(1); |
| | | } |
| | | |
| | | 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)); |
| | | DataDictionaryCustom chargeAddressDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | | DataDictionaryEnum.CHARGE_ADDRESS.getType(), |
| | | DataDictionaryEnum.CHARGE_ADDRESS.getCode() |
| | | ); |
| | | mallMemberVo.setSysAddress(chargeAddressDic.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 |
| | | 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()); |
| | | 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()); |
| | | // list.add(0, own); |
| | | |
| | | MyTeamVo myTeamVo = new MyTeamVo(); |
| | | myTeamVo.setTeam(list); |
| | | myTeamVo.setMyAchieve(BigDecimal.valueOf(100)); |
| | | myTeamVo.setMyTeamAchieve(BigDecimal.valueOf(100)); |
| | | myTeamVo.setMyTeamCnt(100); |
| | | /** |
| | | * 团队人数,只有直属两级 |
| | | */ |
| | | 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 |
| | |
| | | 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); |
| | | } |
| | | |
| | |
| | | @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 && 3 != 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()); |
| | | 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()); |
| | | } |
| | | 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 |
| | |
| | | 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(); |
| | | 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.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(); |
| | | MallMember loginMember = this.baseMapper.selectById(memberId); |
| | | /** |
| | | * 判断账号是否冻结 |
| | | * 判断账号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(memberId); |
| | | BigDecimal fcmCntAva = mallMemberAmount.getTokenAva(); |
| | | if(memberFrozenFcmCnt.compareTo(fcmCntAva) > 0){ |
| | | throw new FebsException("激活需要宝石的数量为:" + fcmCntAva); |
| | | } |
| | | if(2 == unfreezeDto.getType()){ |
| | | 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.setTokenAva(fcmCntAvaSub); |
| | | mallMemberAmountMapper.updateById(mallMemberAmount); |
| | | mallMember.setIsFrozen(ProductEnum.MEMBER_UNFROZEN.getValue()); |
| | | this.baseMapper.updateById(mallMember); |
| | | |
| | | mallMoneyFlowService.addMoneyFlow( |
| | | memberId, |
| | | memberFrozenFcmCnt.negate(), |
| | | MoneyFlowTypeNewEnum.UNFREEZE_USER.getValue(), |
| | | MallUtils.getOrderNum(), |
| | | memberId, |
| | | FlowTypeNewEnum.TOKEN.getValue(), |
| | | MoneyFlowTypeNewEnum.UNFREEZE_USER.getDescrition()); |
| | | |
| | | return new FebsResponse().success().message("操作成功"); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse memberSpeak(ApiMemberSpeakDto memberSpeakDto) { |
| | | MallMemberSpeak mallMemberSpeak = new MallMemberSpeak(); |
| | | if(ObjectUtil.isNotEmpty(memberSpeakDto.getMemberId())){ |
| | | mallMemberSpeak.setMemberId(memberSpeakDto.getMemberId()); |
| | | } |
| | | mallMemberSpeak.setState(ProductEnum.SPEAK_NO_DEAL.getValue()); |
| | | mallMemberSpeak.setDescription(memberSpeakDto.getDescription()); |
| | | mallMemberSpeakMapper.insert(mallMemberSpeak); |
| | | return new FebsResponse().success().message("操作成功"); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse moneyFlowInside(MoneyFlowDto moneyFlowDto) { |
| | | IPage<MoneyFlowVo> page = new Page<>(moneyFlowDto.getPageNum(), moneyFlowDto.getPageSize()); |
| | | Long id = LoginUserUtil.getLoginUser().getId(); |
| | | moneyFlowDto.setMemberId(id); |
| | | IPage<MoneyFlowVo> pages = mallMoneyFlowMapper.selectApiFcmMoneyFlowInsideInPage(page, moneyFlowDto); |
| | | return new FebsResponse().success().data(pages); |
| | | } |
| | | |
| | | @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); |
| | | } |
| | | |
| | | 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()); |
| | | // } |
| | | } |