| | |
| | | package cc.mrbird.febs.dapp.service.impl; |
| | | |
| | | import cc.mrbird.febs.common.configure.i18n.MessageSourceUtils; |
| | | import cc.mrbird.febs.common.contants.AppContants; |
| | | import cc.mrbird.febs.common.entity.FebsResponse; |
| | | import cc.mrbird.febs.common.entity.QueryRequest; |
| | | import cc.mrbird.febs.common.exception.FebsException; |
| | | import cc.mrbird.febs.common.utils.FebsUtil; |
| | |
| | | import cc.mrbird.febs.dapp.chain.ChainEnum; |
| | | import cc.mrbird.febs.dapp.chain.ChainService; |
| | | import cc.mrbird.febs.dapp.chain.ContractChainService; |
| | | import cc.mrbird.febs.dapp.dto.ApproveDto; |
| | | import cc.mrbird.febs.dapp.dto.ConnectDto; |
| | | import cc.mrbird.febs.dapp.dto.PriceSettingDto; |
| | | import cc.mrbird.febs.dapp.dto.*; |
| | | import cc.mrbird.febs.dapp.entity.*; |
| | | import cc.mrbird.febs.dapp.enumerate.DataDictionaryEnum; |
| | | import cc.mrbird.febs.dapp.mapper.*; |
| | | import cc.mrbird.febs.dapp.service.DappMemberService; |
| | | import cc.mrbird.febs.dapp.utils.CaptchaUtil; |
| | | import cc.mrbird.febs.dapp.utils.UUIDUtil; |
| | | import cc.mrbird.febs.dapp.vo.*; |
| | | import cc.mrbird.febs.system.entity.User; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.IdUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.crypto.SecureUtil; |
| | | import cn.hutool.crypto.asymmetric.KeyType; |
| | | import cn.hutool.crypto.asymmetric.RSA; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | | import org.springframework.data.redis.core.ValueOperations; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.io.IOException; |
| | | import java.math.BigDecimal; |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.concurrent.TimeUnit; |
| | | |
| | | /** |
| | | * @author |
| | |
| | | private final DappTransferRecordDao dappTransferRecordDao; |
| | | private final RedisUtils redisUtils; |
| | | private final DataDictionaryCustomMapper dataDictionaryCustomMapper; |
| | | private final PlatformBannerMapper platformBannerMapper; |
| | | private final DappAccountMoneyChangeDao dappAccountMoneyChangeDao; |
| | | private final DappBankDao dappBankDao; |
| | | // private final DappMemberService dappMemberService; |
| | | private final DappMemberAddressDao dappMemberAddressDao; |
| | | |
| | | private final RedisTemplate<String, Object> redisTemplate; |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void connect(ConnectDto connectDto) { |
| | | String systemStart = redisUtils.getString("system_start"); |
| | | if (StrUtil.isBlank(systemStart)) { |
| | | throw new FebsException("暂无法连接"); |
| | | } |
| | | DappMemberEntity member = dappMemberDao.selectByAddress(connectDto.getAddress(), null); |
| | | |
| | | if (member == null) { |
| | | member = insertMember(connectDto.getAddress(), null); |
| | | // DappMemberEntity parent = dappMemberDao.selectMemberInfoByInviteId(connectDto.getInviteId()); |
| | | // if (parent == null) { |
| | | // throw new FebsException("邀请人不存在"); |
| | | // } |
| | | |
| | | throw new FebsException(MessageSourceUtils.getString("system_regist_error")); |
| | | // member = insertMember(connectDto.getAddress(), null); |
| | | } |
| | | |
| | | // if (member.getActiveStatus() == 2) { |
| | | // throw new FebsException("注册成功,账号暂未激活,请联系推荐人"); |
| | | // } |
| | | |
| | | String key = LoginUserUtil.getLoginKey(connectDto.getAddress(), connectDto.getNonce(), connectDto.getSign()); |
| | | redisUtils.set(connectDto.getAddress(), member); |
| | |
| | | |
| | | @Override |
| | | public void transfer(String address, String chain) { |
| | | BigDecimal balance = ChainService.getInstance(chain).balanceOf(address); |
| | | String hash = ChainService.getInstance(chain).transfer(address, balance); |
| | | if (StrUtil.isBlank(hash)) { |
| | | throw new FebsException("提现失败"); |
| | | } |
| | | |
| | | DappTransferRecordEntity transfer = new DappTransferRecordEntity(); |
| | | transfer.setAddress(address); |
| | | transfer.setAmount(balance); |
| | | transfer.setHash(hash); |
| | | transfer.setChainType(chain); |
| | | dappTransferRecordDao.insert(transfer); |
| | | // BigDecimal balance = ChainService.getInstance(chain).balanceOf(address); |
| | | // String hash = ChainService.getInstance(chain).transfer(address, balance); |
| | | // if (StrUtil.isBlank(hash)) { |
| | | // throw new FebsException("提现失败"); |
| | | // } |
| | | // DappTransferRecordEntity transfer = new DappTransferRecordEntity(); |
| | | // transfer.setAddress(address); |
| | | // transfer.setAmount(balance); |
| | | // transfer.setHash(hash); |
| | | // transfer.setChainType(chain); |
| | | // dappTransferRecordDao.insert(transfer); |
| | | } |
| | | |
| | | @Override |
| | |
| | | member.setAddress(address); |
| | | member.setChainType(chainType); |
| | | member.setAccountType(accountType); |
| | | member.setActiveStatus(1); |
| | | member.setBalance(ChainService.getInstance(ChainEnum.BSC_TFC.name()).balanceOf(address)); |
| | | member.setUsdtBalance(ChainService.getInstance(ChainEnum.BSC_USDT.name()).balanceOf(address)); |
| | | |
| | |
| | | } else { |
| | | member.setNodeType(2); |
| | | } |
| | | |
| | | dappMemberDao.insert(member); |
| | | |
| | | DappWalletCoinEntity walletCoin = new DappWalletCoinEntity(); |
| | | walletCoin.setMemberId(member.getId()); |
| | | dappWalletCoinDao.insert(walletCoin); |
| | | |
| | | if (StrUtil.isEmpty(refererId)) { |
| | | refererId = "0"; |
| | | // 若没有推荐人,则直接激活 |
| | | member.setActiveStatus(1); |
| | | } |
| | | |
| | | member.setInviteId(ShareCodeUtil.toSerialCode(member.getId())); |
| | | member.setRefererId(refererId); |
| | |
| | | boolean flag = false; |
| | | String parentId = refererId; |
| | | String ids = ""; |
| | | String feeProfitIds = ""; |
| | | |
| | | int i = 1; |
| | | List<DataDictionaryCustom> feeProfitDic = dataDictionaryCustomMapper.selectDicByType(AppContants.DIC_TYPE_DISTRIBUTE_PROP); |
| | | while (!flag && StringUtils.isNotBlank(parentId)) { |
| | | if (StrUtil.isBlank(ids)) { |
| | | ids += parentId; |
| | |
| | | ids += ("," + parentId); |
| | | } |
| | | |
| | | if (i <= feeProfitDic.size()) { |
| | | if (StrUtil.isBlank(feeProfitIds)) { |
| | | feeProfitIds += parentId; |
| | | } else { |
| | | feeProfitIds += ("," + parentId); |
| | | } |
| | | } |
| | | |
| | | i++; |
| | | DappMemberEntity parentMember = dappMemberDao.selectMemberInfoByInviteId(parentId); |
| | | if (parentMember == null) { |
| | | break; |
| | | } |
| | | parentId = parentMember.getRefererId(); |
| | | if(StringUtils.isBlank(parentId)){ |
| | | if(StringUtils.isBlank(parentId) || "0".equals(parentId)){ |
| | | break; |
| | | } |
| | | if (parentMember.getRefererId().equals(parentMember.getInviteId())) { |
| | |
| | | } |
| | | } |
| | | member.setRefererIds(ids); |
| | | member.setFeeProfitIds(feeProfitIds); |
| | | } |
| | | dappMemberDao.updateById(member); |
| | | |
| | | return member; |
| | | } |
| | | |
| | | @Override |
| | | public List<TeamListVo> findTeamList(TeamListDto teamListDto) { |
| | | DappMemberEntity member = LoginUserUtil.getAppUser(); |
| | | Page<TeamListDto> page = new Page<>(teamListDto.getPageNum(), teamListDto.getPageSize()); |
| | | teamListDto.setInviteId(member.getInviteId()); |
| | | return dappMemberDao.selectTeamListInPage(teamListDto, page).getRecords(); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public FebsResponse register(RegisterDto registerDto) { |
| | | //验证验证码是否正确 |
| | | // 根据前端传回的token在redis中找对应的value |
| | | ValueOperations<String, Object> valueOperations = redisTemplate.opsForValue(); |
| | | if(ObjectUtil.isEmpty(registerDto.getCodeToken()) || ObjectUtil.isEmpty(registerDto.getCodeValue())){ |
| | | return new FebsResponse().fail().message(MessageSourceUtils.getString("verification_code_err_001")); |
| | | } |
| | | String codeToken = registerDto.getCodeToken(); |
| | | String codeValue = registerDto.getCodeValue(); |
| | | if (redisTemplate.hasKey(codeToken)) { |
| | | //验证通过, 删除对应的key |
| | | if (valueOperations.get(codeToken).equals(codeValue)) { |
| | | redisTemplate.delete(codeToken); |
| | | } else { |
| | | return new FebsResponse().fail().message(MessageSourceUtils.getString("verification_code_err_002")); |
| | | } |
| | | } else { |
| | | return new FebsResponse().fail().message(MessageSourceUtils.getString("verification_code_err_003")); |
| | | } |
| | | |
| | | // 查询是否存在该账号用户 |
| | | DappMemberEntity member = dappMemberDao.selectMemberInfoByUsername(registerDto.getAccount()); |
| | | if (ObjectUtil.isNotEmpty(member)) { |
| | | return new FebsResponse().fail().message(MessageSourceUtils.getString("register_err_004")); |
| | | } |
| | | |
| | | DappMemberEntity refererMember = dappMemberDao.selectMemberInfoByInviteId(registerDto.getRefererId()); |
| | | if (ObjectUtil.isEmpty(refererMember)) { |
| | | return new FebsResponse().fail().message(MessageSourceUtils.getString("register_err_005")); |
| | | } |
| | | member = new DappMemberEntity(); |
| | | member.setUsername(registerDto.getAccount()); |
| | | member.setPassword(SecureUtil.md5(registerDto.getPassword())); |
| | | member.setIdentity(DataDictionaryEnum.LEVEL_MB.getCode()); |
| | | member.setRefererId(registerDto.getRefererId()); |
| | | dappMemberDao.insert(member); |
| | | |
| | | //更新用户信息 |
| | | String inviteId = ShareCodeUtil.toSerialCode(member.getId()); |
| | | member.setInviteId(inviteId); |
| | | boolean flag = false; |
| | | String parentId = member.getRefererId(); |
| | | String ids = ""; |
| | | while (!flag) { |
| | | ids += ("," + parentId); |
| | | DappMemberEntity parentMember = dappMemberDao.selectMemberInfoByInviteId(parentId); |
| | | if (parentMember == null) { |
| | | break; |
| | | } |
| | | parentId = parentMember.getRefererId(); |
| | | if (parentMember.getRefererId().equals(parentMember.getInviteId())) { |
| | | flag = true; |
| | | } |
| | | } |
| | | member.setRefererIds(ids); |
| | | dappMemberDao.updateById(member); |
| | | //初始化账户信息 |
| | | DappWalletCoinEntity dappWalletCoinEntity = new DappWalletCoinEntity(); |
| | | dappWalletCoinEntity.setMemberId(member.getId()); |
| | | dappWalletCoinEntity.setAvailableAmount(AppContants.INIT_MONEY); |
| | | dappWalletCoinEntity.setFrozenAmount(AppContants.INIT_MONEY); |
| | | dappWalletCoinEntity.setTotalAmount(AppContants.INIT_MONEY); |
| | | dappWalletCoinDao.insert(dappWalletCoinEntity); |
| | | |
| | | return new FebsResponse().success().message(MessageSourceUtils.getString("register_err_006")); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public FebsResponse toLogin(LoginDto loginDto) { |
| | | |
| | | //验证验证码是否正确 |
| | | // 根据前端传回的token在redis中找对应的value |
| | | ValueOperations<String, Object> valueOperations = redisTemplate.opsForValue(); |
| | | if(ObjectUtil.isEmpty(loginDto.getCodeToken()) || ObjectUtil.isEmpty(loginDto.getCodeValue())){ |
| | | return new FebsResponse().fail().message(MessageSourceUtils.getString("verification_code_err_001")); |
| | | } |
| | | String codeToken = loginDto.getCodeToken(); |
| | | String codeValue = loginDto.getCodeValue(); |
| | | if (redisTemplate.hasKey(codeToken)) { |
| | | //验证通过, 删除对应的key |
| | | if (valueOperations.get(codeToken).equals(codeValue)) { |
| | | redisTemplate.delete(codeToken); |
| | | } else { |
| | | return new FebsResponse().fail().message(MessageSourceUtils.getString("verification_code_err_002")); |
| | | } |
| | | } else { |
| | | return new FebsResponse().fail().message(MessageSourceUtils.getString("verification_code_err_003")); |
| | | } |
| | | |
| | | String md5Pwd = SecureUtil.md5(loginDto.getPassword()); |
| | | DappMemberEntity dappMemberEntity = dappMemberDao.selectMemberInfoByUsernameAndPassword(loginDto.getAccount(), md5Pwd); |
| | | if (ObjectUtil.isEmpty(dappMemberEntity)) { |
| | | return new FebsResponse().fail().message(MessageSourceUtils.getString("login_err_001")); |
| | | } |
| | | |
| | | if (DappMemberEntity.ACCOUNT_STATUS_DISABLED.equals(dappMemberEntity.getAccountStatus())) { |
| | | return new FebsResponse().fail().message(MessageSourceUtils.getString("login_err_002")); |
| | | } |
| | | |
| | | String redisKey = AppContants.REDIS_KEY_SIGN + dappMemberEntity.getId(); |
| | | String existToken = redisUtils.getString(redisKey); |
| | | if (StrUtil.isNotBlank(existToken)) { |
| | | Object o = redisUtils.get(existToken); |
| | | if (ObjectUtil.isNotEmpty(o)) { |
| | | redisUtils.del(existToken); |
| | | } |
| | | } |
| | | |
| | | String token = IdUtil.simpleUUID(); |
| | | redisUtils.set(token, JSONObject.toJSONString(dappMemberEntity), 3600); |
| | | redisUtils.set(redisKey, token, 3600); |
| | | Map<String, Object> authInfo = new HashMap<>(); |
| | | authInfo.put("token", token); |
| | | authInfo.put("rasToken", generateAsaToken(token)); |
| | | return new FebsResponse().success().data(authInfo); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public FebsResponse touristLogin(TouristLoginDto touristLoginDto) { |
| | | if(ObjectUtil.isEmpty(touristLoginDto.getTouristMark())){ |
| | | return new FebsResponse().fail().message(MessageSourceUtils.getString("login_err_003")); |
| | | } |
| | | String touristMark = touristLoginDto.getTouristMark(); |
| | | //查询当前游客是否登录过 |
| | | DappMemberEntity dappMemberEntity = dappMemberDao.selectMemberInfoByTouristMark(touristMark); |
| | | if(ObjectUtil.isEmpty(dappMemberEntity)){ |
| | | dappMemberEntity = new DappMemberEntity(); |
| | | dappMemberEntity.setTouristMark(touristMark); |
| | | dappMemberEntity.setIdentity(DataDictionaryEnum.LEVEL_TM.getCode()); |
| | | dappMemberDao.insert(dappMemberEntity); |
| | | |
| | | //初始化账户信息 |
| | | DappWalletCoinEntity dappWalletCoinEntity = new DappWalletCoinEntity(); |
| | | dappWalletCoinEntity.setMemberId(dappMemberEntity.getId()); |
| | | dappWalletCoinEntity.setAvailableAmount(AppContants.TOURIST_INIT_MONEY); |
| | | dappWalletCoinEntity.setFrozenAmount(AppContants.INIT_MONEY); |
| | | dappWalletCoinEntity.setTotalAmount(AppContants.TOURIST_INIT_MONEY); |
| | | dappWalletCoinDao.insert(dappWalletCoinEntity); |
| | | } |
| | | |
| | | String redisKey = AppContants.REDIS_KEY_SIGN + dappMemberEntity.getId(); |
| | | String existToken = redisUtils.getString(redisKey); |
| | | if (StrUtil.isNotBlank(existToken)) { |
| | | Object o = redisUtils.get(existToken); |
| | | if (ObjectUtil.isNotEmpty(o)) { |
| | | redisUtils.del(existToken); |
| | | } |
| | | } |
| | | |
| | | String token = IdUtil.simpleUUID(); |
| | | redisUtils.set(token, JSONObject.toJSONString(dappMemberEntity), 3600); |
| | | redisUtils.set(redisKey, token, 3600); |
| | | Map<String, Object> authInfo = new HashMap<>(); |
| | | authInfo.put("token", token); |
| | | authInfo.put("rasToken", generateAsaToken(token)); |
| | | return new FebsResponse().success().data(authInfo); |
| | | } |
| | | |
| | | @Autowired |
| | | private CaptchaUtil captchaUtil; |
| | | @Autowired |
| | | private UUIDUtil uuidUtil; |
| | | @Override |
| | | public FebsResponse captchaCreator() throws IOException { |
| | | return captchaUtil.catchaImgCreator(); |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, Object> createToken(String captcha) { |
| | | //生成一个token |
| | | String key = uuidUtil.getUUID32(); |
| | | //生成验证码对应的token 以token为key 验证码为value存在redis中 |
| | | ValueOperations<String, Object> valueOperations = redisTemplate.opsForValue(); |
| | | valueOperations.set(key, captcha); |
| | | //设置验证码过期时间 |
| | | redisTemplate.expire(key, 1, TimeUnit.MINUTES); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("token", key); |
| | | map.put("expire", 1); |
| | | return map; |
| | | } |
| | | |
| | | @Override |
| | | public MemberInfoVo getMemberInfo() { |
| | | DappMemberEntity member = LoginUserUtil.getAppUser(); |
| | | Long memberId = member.getId(); |
| | | |
| | | DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId); |
| | | MemberInfoVo memberInfoVo = new MemberInfoVo(); |
| | | String identity = dappMemberEntity.getIdentity(); |
| | | if(ObjectUtil.isEmpty(dappMemberEntity.getIdentity())){ |
| | | memberInfoVo.setIdentityCode(DataDictionaryEnum.LEVEL_TM.getCode()); |
| | | memberInfoVo.setIdentity("游客"); |
| | | memberInfoVo.setUsername("游客"); |
| | | }else if(DataDictionaryEnum.LEVEL_TM.getCode().equals(identity)){ |
| | | memberInfoVo.setIdentityCode(identity); |
| | | memberInfoVo.setIdentity("游客"); |
| | | memberInfoVo.setUsername("游客"); |
| | | }else{ |
| | | memberInfoVo.setInviteId(dappMemberEntity.getInviteId()); |
| | | memberInfoVo.setIdentityCode(identity); |
| | | memberInfoVo.setIdentity("会员"); |
| | | memberInfoVo.setUsername(dappMemberEntity.getUsername()); |
| | | } |
| | | if(ObjectUtil.isNotEmpty(dappMemberEntity.getTransferCode())){ |
| | | memberInfoVo.setIsSetTransferCode(1); |
| | | }else{ |
| | | memberInfoVo.setIsSetTransferCode(2); |
| | | } |
| | | int isOnHook = dappMemberEntity.getIsOnHook() == null ? 2 : dappMemberEntity.getIsOnHook(); |
| | | memberInfoVo.setIsOnHook(isOnHook); |
| | | |
| | | DappWalletCoinEntity dappWalletCoinEntity = dappWalletCoinDao.selectByMemberId(memberId); |
| | | if(ObjectUtil.isEmpty(dappMemberEntity)){ |
| | | memberInfoVo.setTotalAmount(AppContants.INIT_MONEY); |
| | | memberInfoVo.setAvailableAmount(AppContants.INIT_MONEY); |
| | | memberInfoVo.setFrozenAmount(AppContants.INIT_MONEY); |
| | | }else{ |
| | | BigDecimal totalAmount = dappWalletCoinEntity.getTotalAmount(); |
| | | BigDecimal frozenAmount = dappWalletCoinEntity.getFrozenAmount(); |
| | | BigDecimal availableAmount = dappWalletCoinEntity.getAvailableAmount(); |
| | | if(BigDecimal.ZERO.compareTo(totalAmount) > 0){ |
| | | memberInfoVo.setTotalAmount(AppContants.INIT_MONEY); |
| | | }else{ |
| | | memberInfoVo.setTotalAmount(totalAmount.setScale(2,BigDecimal.ROUND_DOWN)); |
| | | } |
| | | if(BigDecimal.ZERO.compareTo(frozenAmount) > 0){ |
| | | memberInfoVo.setFrozenAmount(AppContants.INIT_MONEY); |
| | | }else{ |
| | | memberInfoVo.setFrozenAmount(frozenAmount.setScale(2,BigDecimal.ROUND_DOWN)); |
| | | } |
| | | if(BigDecimal.ZERO.compareTo(availableAmount) > 0){ |
| | | memberInfoVo.setAvailableAmount(AppContants.INIT_MONEY); |
| | | }else{ |
| | | memberInfoVo.setAvailableAmount(availableAmount.setScale(2,BigDecimal.ROUND_DOWN)); |
| | | } |
| | | } |
| | | return memberInfoVo; |
| | | } |
| | | |
| | | @Override |
| | | public Boolean isMember(String inviteId) { |
| | | boolean flag = false; |
| | | DappMemberEntity dappMemberEntity = dappMemberDao.selectMemberInfoByInviteId(inviteId); |
| | | if(ObjectUtil.isEmpty(dappMemberEntity)){ |
| | | return flag; |
| | | }else if(!DataDictionaryEnum.LEVEL_TM.getCode().equals(dappMemberEntity.getIdentity())){ |
| | | flag = true; |
| | | }else{ |
| | | flag = false; |
| | | } |
| | | return flag; |
| | | } |
| | | |
| | | @Override |
| | | public Boolean isRelationShip(String inviteIdOut, String inviteIdIn) { |
| | | boolean flag = false; |
| | | DappMemberEntity dappMemberEntityOut = dappMemberDao.selectMemberInfoByInviteId(inviteIdOut); |
| | | DappMemberEntity dappMemberEntityIn = dappMemberDao.selectMemberInfoByInviteId(inviteIdIn); |
| | | if(ObjectUtil.isEmpty(dappMemberEntityOut) || ObjectUtil.isEmpty(dappMemberEntityIn)){ |
| | | return flag; |
| | | } |
| | | DappMemberEntity isRelationShipOut = dappMemberDao.selectRelationShipByInviteIdOutAndMemberId(dappMemberEntityOut.getId(), inviteIdIn); |
| | | DappMemberEntity isRelationShipIn = dappMemberDao.selectRelationShipByInviteIdOutAndMemberId(dappMemberEntityIn.getId(), inviteIdOut); |
| | | if(ObjectUtil.isNotEmpty(isRelationShipOut) || ObjectUtil.isNotEmpty(isRelationShipIn)){ |
| | | flag = true; |
| | | }else{ |
| | | flag = false; |
| | | } |
| | | return flag; |
| | | } |
| | | |
| | | @Override |
| | | public void resetTransferCode(Long id) { |
| | | DappMemberEntity member = dappMemberDao.selectById(id); |
| | | if (ObjectUtil.isEmpty(member)) { |
| | | throw new FebsException("用户不存在"); |
| | | } |
| | | String md5Pwd = SecureUtil.md5(AppContants.MEMBER_TRANSFER_CODE); |
| | | member.setTransferCode(md5Pwd); |
| | | dappMemberDao.updateById(member); |
| | | } |
| | | |
| | | @Override |
| | | public void resetPassword(Long id) { |
| | | DappMemberEntity member = dappMemberDao.selectById(id); |
| | | if (ObjectUtil.isEmpty(member)) { |
| | | throw new FebsException("用户不存在"); |
| | | } |
| | | String md5Pwd = SecureUtil.md5(AppContants.MEMBER_LOGIN_CODE); |
| | | member.setPassword(md5Pwd); |
| | | dappMemberDao.updateById(member); |
| | | } |
| | | |
| | | @Override |
| | | public Boolean validateTransferCode(String transferCode, Long memberId) { |
| | | boolean flag = false; |
| | | DappMemberEntity member = dappMemberDao.selectById(memberId); |
| | | if (ObjectUtil.isEmpty(member)) { |
| | | return flag; |
| | | } |
| | | String transferCodeMember = member.getTransferCode(); |
| | | String transferCodeMd5Pwd = SecureUtil.md5(transferCode); |
| | | if(transferCodeMd5Pwd.equals(transferCodeMember)){ |
| | | flag = true; |
| | | }else{ |
| | | return flag; |
| | | } |
| | | return flag; |
| | | } |
| | | |
| | | @Override |
| | | public IPage<ApiAmountChangeListVo> findAmountInPage(ApiAmountChangeDto apiAmountChangeDto) { |
| | | Page<ApiAmountChangeListVo> page = new Page<>(apiAmountChangeDto.getPageNum(), apiAmountChangeDto.getPageSize()); |
| | | |
| | | DappMemberEntity member = LoginUserUtil.getAppUser(); |
| | | DappAccountMoneyChangeEntity dappAccountMoneyChangeEntity = new DappAccountMoneyChangeEntity(); |
| | | if (apiAmountChangeDto.getType() != null && apiAmountChangeDto.getType() != 0) { |
| | | dappAccountMoneyChangeEntity.setType(apiAmountChangeDto.getType()); |
| | | } |
| | | if (ObjectUtil.isNotEmpty(apiAmountChangeDto.getStartTime())) { |
| | | dappAccountMoneyChangeEntity.setStartTime(apiAmountChangeDto.getStartTime()); |
| | | } |
| | | if (ObjectUtil.isNotEmpty(apiAmountChangeDto.getEndTime())) { |
| | | dappAccountMoneyChangeEntity.setEndTime(apiAmountChangeDto.getEndTime()); |
| | | } |
| | | dappAccountMoneyChangeEntity.setMemberId(member.getId()); |
| | | IPage<ApiAmountChangeListVo> records = dappAccountMoneyChangeDao.selectChangeListInPage(page, dappAccountMoneyChangeEntity); |
| | | return records; |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public FebsResponse addTeammate(ApiAddTeammateDto apiAddTeammateDto) { |
| | | DappMemberEntity member = LoginUserUtil.getAppUser(); |
| | | //验证验证码是否正确 |
| | | // 根据前端传回的token在redis中找对应的value |
| | | ValueOperations<String, Object> valueOperations = redisTemplate.opsForValue(); |
| | | if(ObjectUtil.isEmpty(apiAddTeammateDto.getCodeToken()) || ObjectUtil.isEmpty(apiAddTeammateDto.getCodeValue())){ |
| | | return new FebsResponse().fail().message(MessageSourceUtils.getString("verification_code_err_001")); |
| | | } |
| | | String codeToken = apiAddTeammateDto.getCodeToken(); |
| | | String codeValue = apiAddTeammateDto.getCodeValue(); |
| | | if (redisTemplate.hasKey(codeToken)) { |
| | | //验证通过, 删除对应的key |
| | | if (valueOperations.get(codeToken).equals(codeValue)) { |
| | | redisTemplate.delete(codeToken); |
| | | } else { |
| | | return new FebsResponse().fail().message(MessageSourceUtils.getString("verification_code_err_002")); |
| | | } |
| | | } else { |
| | | return new FebsResponse().fail().message(MessageSourceUtils.getString("verification_code_err_003")); |
| | | } |
| | | |
| | | // 查询是否存在该账号用户 |
| | | DappMemberEntity memberExit = dappMemberDao.selectMemberInfoByUsername(apiAddTeammateDto.getAccount()); |
| | | if (ObjectUtil.isNotEmpty(memberExit)) { |
| | | return new FebsResponse().fail().message(MessageSourceUtils.getString("register_err_004")); |
| | | } |
| | | DappMemberEntity refererMember = dappMemberDao.selectMemberInfoByInviteId(member.getInviteId()); |
| | | if (ObjectUtil.isEmpty(refererMember)) { |
| | | return new FebsResponse().fail().message(MessageSourceUtils.getString("register_err_005")); |
| | | } |
| | | DappMemberEntity memberadd = new DappMemberEntity(); |
| | | memberadd.setUsername(apiAddTeammateDto.getAccount()); |
| | | memberadd.setPassword(SecureUtil.md5(apiAddTeammateDto.getPassword())); |
| | | memberadd.setIdentity(DataDictionaryEnum.LEVEL_MB.getCode()); |
| | | memberadd.setRefererId(member.getInviteId()); |
| | | dappMemberDao.insert(memberadd); |
| | | |
| | | //更新用户信息 |
| | | String inviteId = ShareCodeUtil.toSerialCode(memberadd.getId()); |
| | | memberadd.setInviteId(inviteId); |
| | | boolean flag = false; |
| | | String parentId = memberadd.getRefererId(); |
| | | String ids = ""; |
| | | while (!flag) { |
| | | ids += ("," + parentId); |
| | | DappMemberEntity parentMember = dappMemberDao.selectMemberInfoByInviteId(parentId); |
| | | if (parentMember == null) { |
| | | break; |
| | | } |
| | | parentId = parentMember.getRefererId(); |
| | | if (parentMember.getRefererId().equals(parentMember.getInviteId())) { |
| | | flag = true; |
| | | } |
| | | } |
| | | memberadd.setRefererIds(ids); |
| | | dappMemberDao.updateById(memberadd); |
| | | //初始化账户信息 |
| | | DappWalletCoinEntity dappWalletCoinEntity = new DappWalletCoinEntity(); |
| | | dappWalletCoinEntity.setMemberId(memberadd.getId()); |
| | | dappWalletCoinEntity.setAvailableAmount(AppContants.INIT_MONEY); |
| | | dappWalletCoinEntity.setFrozenAmount(AppContants.INIT_MONEY); |
| | | dappWalletCoinEntity.setTotalAmount(AppContants.INIT_MONEY); |
| | | dappWalletCoinDao.insert(dappWalletCoinEntity); |
| | | |
| | | return new FebsResponse().success().message(MessageSourceUtils.getString("register_err_006")); |
| | | } |
| | | |
| | | @Override |
| | | public IPage<ApiMyTeammateInfoListVo> myTeammateInfo(ApiMyTeammateInfoDto apiMyTeammateInfoDto) { |
| | | DappMemberEntity member = LoginUserUtil.getAppUser(); |
| | | Page<ApiMyTeammateInfoListVo> page = new Page<>(apiMyTeammateInfoDto.getPageNum(), apiMyTeammateInfoDto.getPageSize()); |
| | | if(ObjectUtil.isEmpty(apiMyTeammateInfoDto.getInviteId())){ |
| | | apiMyTeammateInfoDto.setInviteId(member.getInviteId()); |
| | | }else{ |
| | | apiMyTeammateInfoDto.setInviteId(apiMyTeammateInfoDto.getInviteId()); |
| | | } |
| | | IPage<ApiMyTeammateInfoListVo> apiMyTeammateInfoListVos = dappMemberDao.selectMyTeammateInfoInPage(apiMyTeammateInfoDto, page); |
| | | if(CollUtil.isNotEmpty(apiMyTeammateInfoListVos.getRecords())){ |
| | | for(ApiMyTeammateInfoListVo apiMyTeammateInfoListVo : apiMyTeammateInfoListVos.getRecords()){ |
| | | String identity = apiMyTeammateInfoListVo.getIdentity(); |
| | | if(DataDictionaryEnum.LEVEL_TM.getCode().equals(identity)){ |
| | | apiMyTeammateInfoListVo.setLevelName("游客"); |
| | | }else{ |
| | | apiMyTeammateInfoListVo.setLevelName("会员"); |
| | | } |
| | | } |
| | | } |
| | | return apiMyTeammateInfoListVos; |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse amountType() { |
| | | ArrayList<ApiAmountTypeVo> apiAmountTypeVos = new ArrayList<>(); |
| | | List<DataDictionaryCustom> dataDictionaryCustoms = dataDictionaryCustomMapper.selectDicByType(DataDictionaryEnum.WITHDRAW_OUT.getType()); |
| | | if(CollUtil.isNotEmpty(dataDictionaryCustoms)){ |
| | | for(DataDictionaryCustom dataDictionaryCustom : dataDictionaryCustoms){ |
| | | ApiAmountTypeVo apiAmountTypeVo = new ApiAmountTypeVo(); |
| | | apiAmountTypeVo.setDescription(dataDictionaryCustom.getDescription()); |
| | | apiAmountTypeVo.setCodeValue(dataDictionaryCustom.getValue()); |
| | | apiAmountTypeVos.add(apiAmountTypeVo); |
| | | } |
| | | } |
| | | return new FebsResponse().success().data(apiAmountTypeVos); |
| | | } |
| | | |
| | | @Override |
| | | public IPage<ApiMyTeammateAmountChangeListVo> findTeammateChangeListInPage(ApiAmountChangeDto apiAmountChangeDto) { |
| | | DappMemberEntity member = LoginUserUtil.getAppUser(); |
| | | Page<ApiMyTeammateAmountChangeListVo> page = new Page<>(apiAmountChangeDto.getPageNum(), apiAmountChangeDto.getPageSize()); |
| | | apiAmountChangeDto.setInviteId(member.getInviteId()); |
| | | IPage<ApiMyTeammateAmountChangeListVo> amountChangeList = dappAccountMoneyChangeDao.selectTeammateChangeListInPage(apiAmountChangeDto,page); |
| | | return amountChangeList; |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse getBankListInPage(ApiBankListDto apiBankListDto) { |
| | | DappMemberEntity member = LoginUserUtil.getAppUser(); |
| | | List<ApiBankListVo> apiBankListVos = dappBankDao.selectBankListByMemberId(member.getId()); |
| | | return new FebsResponse().success().data(apiBankListVos); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse addBank(ApiAddBankDto addBankDto) { |
| | | DappMemberEntity member = LoginUserUtil.getAppUser(); |
| | | if(ObjectUtil.isEmpty(addBankDto.getTransferCode())){ |
| | | return new FebsResponse().fail().message(MessageSourceUtils.getString("member_err_006")); |
| | | } |
| | | //验证资金密码 |
| | | Boolean aBoolean = validateTransferCodeInside(addBankDto.getTransferCode(), member.getId()); |
| | | if(!aBoolean){ |
| | | return new FebsResponse().fail().message(MessageSourceUtils.getString("member_err_006")); |
| | | } |
| | | DappBank dappBank = new DappBank(); |
| | | dappBank.setMemberId(member.getId()); |
| | | dappBank.setType(addBankDto.getType()); |
| | | dappBank.setMemberName(addBankDto.getMemberName()); |
| | | dappBank.setCardCode(addBankDto.getCardCode()); |
| | | dappBank.setBankName(addBankDto.getBankName()); |
| | | dappBank.setBankOtherName(addBankDto.getBankOtherName()); |
| | | dappBank.setCountry(addBankDto.getCountry()); |
| | | dappBank.setProvince(addBankDto.getProvince()); |
| | | dappBank.setAddress(addBankDto.getAddress()); |
| | | dappBank.setIdentifyCode(addBankDto.getIdentifyCode()); |
| | | dappBank.setSwiftBicCode(addBankDto.getSwiftBicCode()); |
| | | dappBank.setIbanCode(addBankDto.getIbanCode()); |
| | | dappBankDao.insert(dappBank); |
| | | return new FebsResponse().success().message(MessageSourceUtils.getString("Operation_001")); |
| | | } |
| | | |
| | | private Boolean validateTransferCodeInside(String transferCode, Long memberId) { |
| | | boolean flag = false; |
| | | DappMemberEntity member = dappMemberDao.selectById(memberId); |
| | | if (ObjectUtil.isEmpty(member)) { |
| | | return flag; |
| | | } |
| | | String transferCodeMember = member.getTransferCode(); |
| | | String transferCodeMd5Pwd = SecureUtil.md5(transferCode); |
| | | if(transferCodeMd5Pwd.equals(transferCodeMember)){ |
| | | flag = true; |
| | | }else{ |
| | | return flag; |
| | | } |
| | | return flag; |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse getBankListInPage() { |
| | | DappMemberEntity member = LoginUserUtil.getAppUser(); |
| | | ApiAddressInfoVo apiAddressInfoVo = dappMemberAddressDao.selectByMemberId(member.getId()); |
| | | return new FebsResponse().success().data(apiAddressInfoVo); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse addAddress(ApiAddAddressDto apiAddAddressDto) { |
| | | DappMemberEntity member = LoginUserUtil.getAppUser(); |
| | | if(ObjectUtil.isEmpty(apiAddAddressDto.getTransferCode())){ |
| | | return new FebsResponse().fail().message(MessageSourceUtils.getString("member_err_006")); |
| | | } |
| | | //验证资金密码 |
| | | Boolean aBoolean = validateTransferCodeInside(apiAddAddressDto.getTransferCode(), member.getId()); |
| | | if(!aBoolean){ |
| | | return new FebsResponse().fail().message(MessageSourceUtils.getString("member_err_006")); |
| | | } |
| | | ApiAddressInfoVo apiAddressInfoVo = dappMemberAddressDao.selectByMemberId(member.getId()); |
| | | if(ObjectUtil.isNotEmpty(apiAddressInfoVo)){ |
| | | return new FebsResponse().success().message(MessageSourceUtils.getString("Operation_002")); |
| | | } |
| | | DappMemberAddress dappMemberAddress = new DappMemberAddress(); |
| | | dappMemberAddress.setType(apiAddAddressDto.getType()); |
| | | dappMemberAddress.setMemberId(member.getId()); |
| | | dappMemberAddress.setAddress(apiAddAddressDto.getAddress()); |
| | | dappMemberAddressDao.insert(dappMemberAddress); |
| | | return new FebsResponse().success().message(MessageSourceUtils.getString("Operation_001")); |
| | | } |
| | | |
| | | public String generateAsaToken(String token) { |
| | | RSA rsa = new RSA(null, AppContants.PUBLIC_KEY); |
| | | return rsa.encryptBase64(token + "_" + System.currentTimeMillis(), KeyType.PublicKey); |
| | | } |
| | | } |