From 3af20297ca45b2161bfe51cbd8fd918b293223c2 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Mon, 23 Nov 2020 14:55:55 +0800
Subject: [PATCH] 20201123
---
src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java | 551 +++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 479 insertions(+), 72 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java b/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
index fc96eb1..39564d2 100644
--- a/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
@@ -5,16 +5,30 @@
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xcong.excoin.common.LoginUserUtils;
import com.xcong.excoin.common.contants.AppContants;
+import com.xcong.excoin.common.contants.WalletConstants;
import com.xcong.excoin.common.enumerates.CoinTypeEnum;
import com.xcong.excoin.common.enumerates.SymbolEnum;
import com.xcong.excoin.common.response.Result;
+import com.xcong.excoin.common.system.dto.OutCenterRegisterDto;
import com.xcong.excoin.common.system.dto.RegisterDto;
+import com.xcong.excoin.common.system.dto.WtWalletDto;
import com.xcong.excoin.common.system.service.CommonService;
import com.xcong.excoin.modules.coin.dao.MemberAccountMoneyChangeDao;
import com.xcong.excoin.modules.coin.entity.MemberAccountMoneyChange;
+import com.xcong.excoin.modules.login.dao.WalletDetailDao;
+import com.xcong.excoin.modules.login.dao.WtTokenDao;
+import com.xcong.excoin.modules.login.dao.WtWalletDao;
+import com.xcong.excoin.modules.login.dao.WtWordDao;
+import com.xcong.excoin.modules.login.entity.WtToken;
+import com.xcong.excoin.modules.login.entity.WtWallet;
+import com.xcong.excoin.modules.login.entity.WtWalletDetail;
+import com.xcong.excoin.modules.login.vo.LoginVo;
import com.xcong.excoin.modules.member.dao.*;
import com.xcong.excoin.modules.member.entity.*;
import com.xcong.excoin.modules.member.parameter.dto.MemberAddCoinAddressDto;
@@ -35,12 +49,19 @@
import com.xcong.excoin.modules.platform.dao.PlatformSymbolsCoinDao;
import com.xcong.excoin.modules.platform.entity.PlatformFeeSettingEntity;
import com.xcong.excoin.modules.platform.entity.PlatformSymbolsCoinEntity;
+import com.xcong.excoin.utils.MD5Util;
import com.xcong.excoin.utils.MessageSourceUtils;
import com.xcong.excoin.utils.RedisUtils;
import com.xcong.excoin.utils.ShareCodeUtil;
import com.xcong.excoin.utils.ThreadPoolUtils;
+import com.xcong.excoin.utils.ToolUtil;
+import com.xcong.excoin.utils.UUIDUtil;
+import com.xcong.excoin.utils.WordsUtil;
+
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -50,6 +71,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Random;
import javax.annotation.Resource;
import javax.validation.Valid;
@@ -106,10 +128,23 @@
@Resource
AppVersionDao appVersionDao;
+ @Resource
+ private MemberSettingDao memberSettingDao;
@Resource
private MemberWalletContractSimulateDao memberWalletContractSimulateDao;
+
+ @Resource
+ private WtWalletDao wtWalletDao;
+ @Resource
+ private WtWordDao wtWordDao;
+
+ @Resource
+ private WtTokenDao wtTokenDao;
+ @Resource
+ private WalletDetailDao walletDetailDao;
+
@Transactional()
@Override
public Result register(RegisterDto registerDto) {
@@ -142,21 +177,24 @@
// }
if (!AppContants.SYSTEM_REFERER.equals(registerDto.getRefererId())) {
MemberEntity isExist = memberDao.selectMemberInfoByInviteId(registerDto.getRefererId());
- if (isExist == null) {
- return Result.fail("推荐人不存在");
+ if (isExist != null) {
+ member.setRefererId(registerDto.getRefererId());
}
}
-
- member.setRefererId(registerDto.getRefererId());
member.setAccountStatus(MemberEntity.ACCOUNT_STATUS_ENABLE);
member.setAccountType(MemberEntity.ACCOUNT_TYPE_NORMAL);
member.setAgentLevel(MemberEntity.ACCOUNT_AGENT_LEVEL);
member.setCertifyStatus(MemberEntity.CERTIFY_STATUS_UN_SUBMIT);
member.setIsForce(1);
member.setIsProfit(0);
- member.setSpread(BigDecimal.ONE);
- member.setClosingSpread(BigDecimal.ONE);
memberDao.insert(member);
+
+ MemberSettingEntity memberSettingEntity = new MemberSettingEntity();
+ memberSettingEntity.setSpread(BigDecimal.ONE);
+ memberSettingEntity.setClosingSpread(BigDecimal.valueOf(5));
+ memberSettingEntity.setForceParam(BigDecimal.valueOf(0.0030));
+ memberSettingEntity.setMemberId(member.getId());
+ memberSettingDao.insert(memberSettingEntity);
String inviteId = ShareCodeUtil.toSerialCode(member.getId());
member.setInviteId(inviteId);
@@ -164,13 +202,16 @@
boolean flag = false;
String parentId = member.getRefererId();
String ids = "";
- while (!flag) {
+ while (!flag && StringUtils.isNotBlank(parentId)) {
ids += ("," + parentId);
MemberEntity parentMember = memberDao.selectMemberInfoByInviteId(parentId);
if (parentMember == null) {
break;
}
parentId = parentMember.getRefererId();
+ if(StringUtils.isBlank(parentId)){
+ break;
+ }
if (parentMember.getRefererId().equals(parentMember.getInviteId())) {
flag = true;
}
@@ -331,12 +372,12 @@
//获取用户ID
Long memberId = LoginUserUtils.getAppLoginUser().getId();
MemberEntity member = memberDao.selectById(memberId);
- if(MemberEntity.CERTIFY_STATUS_ING.equals(member.getCertifyStatus())) {
- return Result.fail(MessageSourceUtils.getString("member_service_4000"));
- }
+ if (MemberEntity.CERTIFY_STATUS_ING.equals(member.getCertifyStatus())) {
+ return Result.fail(MessageSourceUtils.getString("member_service_4000"));
+ }
if (ObjectUtil.isNotEmpty(member)) {
- MemberAuthenticationEntity memberAuthenticationEntity = new MemberAuthenticationEntity();
+ MemberAuthenticationEntity memberAuthenticationEntity = new MemberAuthenticationEntity();
if (MemberEntity.CERTIFY_STATUS_Y == member.getCertifyStatus()) {
return Result.fail(MessageSourceUtils.getString("member_service_0055"));
@@ -366,13 +407,18 @@
String idCardNo = memberAuthenticationDto.getIdCardNo();
if (StrUtil.isBlank(idCardNo)) {
- return Result.fail(MessageSourceUtils.getString("member_service_0060"));
+ return Result.fail(MessageSourceUtils.getString("member_service_0060"));
}
memberAuthenticationEntity.setIdcardNo(idCardNo);
//同一个身份证号码不能重复实名认证
int count = memberAuthenticationDao.findMemberbyIdCardNoCount(idCardNo);
if (count > 0) {
- return Result.fail(MessageSourceUtils.getString("member_service_0060"));
+ return Result.fail(MessageSourceUtils.getString("member_service_0060"));
+ }
+ // 同一个人只能认证一次
+ int authenByMemberId = memberAuthenticationDao.findAuthenByMemberId(memberId);
+ if (authenByMemberId > 0) {
+ return Result.fail(MessageSourceUtils.getString("member_service_0055"));
}
if (StrUtil.isBlank(memberAuthenticationDto.getIdCardFront())
|| StrUtil.isBlank(memberAuthenticationDto.getIdCardReverse())
@@ -384,14 +430,14 @@
memberAuthenticationEntity.setIdcardImageInHand(memberAuthenticationDto.getIdCardImage());
Map<String, Object> columnMap = new HashMap<>();
- columnMap.put("member_id", memberId);
- List<MemberAuthenticationEntity> selectByMap = memberAuthenticationDao.selectByMap(columnMap);
- if(CollUtil.isEmpty(selectByMap)) {
- memberAuthenticationDao.insert(memberAuthenticationEntity);
- }else {
- memberAuthenticationEntity.setId(selectByMap.get(0).getId());
- memberAuthenticationDao.updateById(memberAuthenticationEntity);
- }
+ columnMap.put("member_id", memberId);
+ List<MemberAuthenticationEntity> selectByMap = memberAuthenticationDao.selectByMap(columnMap);
+ if (CollUtil.isEmpty(selectByMap)) {
+ memberAuthenticationDao.insert(memberAuthenticationEntity);
+ } else {
+ memberAuthenticationEntity.setId(selectByMap.get(0).getId());
+ memberAuthenticationDao.updateById(memberAuthenticationEntity);
+ }
member.setCertifyStatus(MemberEntity.CERTIFY_STATUS_ING);
member.setIdcardNo(idCardNo);
@@ -455,7 +501,8 @@
@Transactional
public Result memberTradersPwd(@Valid MemberForgetPwdDto memberForgetPwdDto) {
//获取用户ID
- MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
+ Long memberId = LoginUserUtils.getAppLoginUser().getId();
+ MemberEntity memberEntity = memberDao.selectById(memberId);
String code = memberForgetPwdDto.getCode();
String password = memberForgetPwdDto.getPassword();
@@ -488,14 +535,14 @@
Map<String, Object> columnMap = new HashMap<>();
columnMap.put("member_id", memberId);
- List<MemberPaymentMethodEntity> selectByMap = memberPaymentMethodDao.selectByMap(columnMap);
- if(CollUtil.isNotEmpty(selectByMap)) {
- for(MemberPaymentMethodEntity memberPaymentMethodEntity : selectByMap) {
- if(memberPaymethodDto.getAccount().equals(memberPaymentMethodEntity.getAccount())) {
- return Result.fail(MessageSourceUtils.getString("member_service_0097"));
- }
- }
- }
+ List<MemberPaymentMethodEntity> selectByMap = memberPaymentMethodDao.selectByMap(columnMap);
+ if (CollUtil.isNotEmpty(selectByMap)) {
+ for (MemberPaymentMethodEntity memberPaymentMethodEntity : selectByMap) {
+ if (memberPaymethodDto.getAccount().equals(memberPaymentMethodEntity.getAccount())) {
+ return Result.fail(MessageSourceUtils.getString("member_service_0097"));
+ }
+ }
+ }
String account = memberPaymethodDto.getAccount();
String bank = memberPaymethodDto.getBank();
String name = memberPaymethodDto.getName();
@@ -576,7 +623,7 @@
@Override
@Transactional
public Result memberBindPhone(@Valid MemberBindPhoneDto memberBindPhoneDto) {
- //获取用户ID
+ //获取用户ID
Long memberId = LoginUserUtils.getAppLoginUser().getId();
String phone = memberBindPhoneDto.getPhone();
String code = memberBindPhoneDto.getCode();
@@ -584,18 +631,22 @@
MemberEntity member = memberDao.selectById(memberId);
if (ObjectUtil.isNotEmpty(member)) {
- if (!commonservice.verifyCode(phone, code)) {
+ if (!commonservice.mutiVerifyCode(member.getEmail(), memberBindPhoneDto.getOtherCode(), phone, code)) {
return Result.fail(MessageSourceUtils.getString("member_service_0013"));
}
+ // 验证邮箱验证码
+// if (!commonservice.verifyCode(member.getEmail(), memberBindPhoneDto.getOtherCode())) {
+// return Result.fail("邮箱"+MessageSourceUtils.getString("member_service_0013"));
+// }
Map<String, Object> columnMap = new HashMap<>();
columnMap.put("phone", phone);
- List<MemberEntity> selectByMap = memberDao.selectByMap(columnMap );
- if(CollUtil.isEmpty(selectByMap)) {
- member.setPhone(phone);
- memberDao.updateById(member);
- return Result.ok(MessageSourceUtils.getString("member_service_0014"));
- }else {
- return Result.fail(MessageSourceUtils.getString("member_service_1400"));
+ List<MemberEntity> selectByMap = memberDao.selectByMap(columnMap);
+ if (CollUtil.isEmpty(selectByMap)) {
+ member.setPhone(phone);
+ memberDao.updateById(member);
+ return Result.ok(MessageSourceUtils.getString("member_service_0014"));
+ } else {
+ return Result.fail(MessageSourceUtils.getString("member_service_1400"));
}
}
@@ -606,24 +657,31 @@
@Transactional
public Result memberBindEmail(@Valid MemberBindEmailDto memberBindEmailDto) {
- //获取用户ID
+ //获取用户ID
Long memberId = LoginUserUtils.getAppLoginUser().getId();
String email = memberBindEmailDto.getEmail();
String code = memberBindEmailDto.getCode();
MemberEntity member = memberDao.selectById(memberId);
- boolean flag = commonservice.verifyCode(email, code);
+ boolean flag = commonservice.mutiVerifyCode(email, code, member.getPhone(), memberBindEmailDto.getOtherCode());
+// boolean flag2 = commonservice.verifyCode(member.getPhone(), memberBindEmailDto.getOtherCode());
+ if(!flag){
+ return Result.fail(MessageSourceUtils.getString("member_service_0013"));
+ }
+// if(!flag2){
+// return Result.fail("手机"+MessageSourceUtils.getString("member_service_0013"));
+// }
if (ObjectUtil.isNotEmpty(member)) {
if (flag) {
- Map<String, Object> columnMap = new HashMap<>();
+ Map<String, Object> columnMap = new HashMap<>();
columnMap.put("email", email);
- List<MemberEntity> selectByMap = memberDao.selectByMap(columnMap );
- if(CollUtil.isEmpty(selectByMap)) {
- member.setEmail(email);
+ List<MemberEntity> selectByMap = memberDao.selectByMap(columnMap);
+ if (CollUtil.isEmpty(selectByMap)) {
+ member.setEmail(email);
memberDao.updateById(member);
return Result.ok(MessageSourceUtils.getString("member_service_0018"));
- }else {
- return Result.fail(MessageSourceUtils.getString("member_service_1400"));
+ } else {
+ return Result.fail(MessageSourceUtils.getString("member_service_1400"));
}
}
}
@@ -759,10 +817,10 @@
Map<String, Object> columnMap = new HashMap<>();
columnMap.put("member_id", memberId);
List<MemberPaymentMethodEntity> selectByMap = memberPaymentMethodDao.selectByMap(columnMap);
- if(CollUtil.isEmpty(selectByMap)) {
- memberPersonCenterInfoVo.setMemberPaymentMethod(0);
- }else {
- memberPersonCenterInfoVo.setMemberPaymentMethod(1);
+ if (CollUtil.isEmpty(selectByMap)) {
+ memberPersonCenterInfoVo.setMemberPaymentMethod(0);
+ } else {
+ memberPersonCenterInfoVo.setMemberPaymentMethod(1);
}
if (StrUtil.isNotEmpty(member.getPhone())) {
@@ -823,16 +881,16 @@
List<MemberAvivableCoinInfoVo> arrayList = new ArrayList<>();
- List<PlatformFeeSettingEntity> feeSettingByTypeAndSymbolLable = platformFeeSettingDao.getFeeSettingsByTypeAndSymbol(2, symbol);
+ List<PlatformFeeSettingEntity> feeSettingByTypeAndSymbolLable = platformFeeSettingDao.getFeeSettingsByTypeAndSymbol(2, symbol);
if (CollUtil.isEmpty(feeSettingByTypeAndSymbolLable)) {
return Result.fail(MessageSourceUtils.getString("member_service_0087"));
}
- for(PlatformFeeSettingEntity platformFeeSettingEntity : feeSettingByTypeAndSymbolLable) {
- MemberAvivableCoinInfoVo memberAvivableCoinInfoVo = new MemberAvivableCoinInfoVo();
- memberAvivableCoinInfoVo.setAvailableBalance(walletCoin.getAvailableBalance());
- memberAvivableCoinInfoVo.setFee(platformFeeSettingEntity.getFeePrice());
- memberAvivableCoinInfoVo.setLable(platformFeeSettingEntity.getLable());
- arrayList.add(memberAvivableCoinInfoVo);
+ for (PlatformFeeSettingEntity platformFeeSettingEntity : feeSettingByTypeAndSymbolLable) {
+ MemberAvivableCoinInfoVo memberAvivableCoinInfoVo = new MemberAvivableCoinInfoVo();
+ memberAvivableCoinInfoVo.setAvailableBalance(walletCoin.getAvailableBalance());
+ memberAvivableCoinInfoVo.setFee(platformFeeSettingEntity.getFeePrice());
+ memberAvivableCoinInfoVo.setLable(platformFeeSettingEntity.getLable());
+ arrayList.add(memberAvivableCoinInfoVo);
}
return Result.ok(arrayList);
@@ -869,6 +927,14 @@
//获取用户ID
Long memberId = LoginUserUtils.getAppLoginUser().getId();
MemberEntity member = memberDao.selectById(memberId);
+ String golden_limit_transfer = redisUtils.getString("GOLDEN_LIMIT_TRANSFER");
+ // 判断是否限制
+ if(StringUtils.isNotBlank(member.getPhone()) &&StringUtils.isNotBlank(golden_limit_transfer) && golden_limit_transfer.contains(member.getPhone())){
+ return Result.fail("此账号有财务问题,需联系客服");
+ }
+ if(StringUtils.isNotBlank(member.getEmail()) &&StringUtils.isNotBlank(golden_limit_transfer) && golden_limit_transfer.contains(member.getEmail())){
+ return Result.fail("此账号有财务问题,需联系客服");
+ }
if (member.getCertifyStatus() != MemberEntity.CERTIFY_STATUS_Y) {
return Result.fail(MessageSourceUtils.getString("member_service_0077"));
}
@@ -953,21 +1019,362 @@
return Result.ok("");
}
+ @Override
+ public Result getAppVersionInfo() {
+ Map<String, Object> columnMap = new HashMap<>();
+ List<AppVersionEntity> selectByMap = appVersionDao.selectByMap(columnMap);
+ List<Object> arrayList = new ArrayList<>();
+ if (CollUtil.isNotEmpty(selectByMap)) {
+ for (AppVersionEntity appVersionEntity : selectByMap) {
+ AppVersionVo appVersionVo = new AppVersionVo();
+ appVersionVo.setAddress(appVersionEntity.getAddress());
+ appVersionVo.setType(appVersionEntity.getType());
+ appVersionVo.setVersion(appVersionEntity.getVersion());
+ arrayList.add(appVersionVo);
+ }
+ }
+ return Result.ok(arrayList);
+ }
+
+ @Override
+ public Result getPcVersionInfo() {
+ Map<String, Object> columnMap = new HashMap<>();
+ List<AppVersionEntity> selectByMap = appVersionDao.selectByMap(columnMap);
+ List<Object> arrayList = new ArrayList<>();
+ if (CollUtil.isNotEmpty(selectByMap)) {
+ for (AppVersionEntity appVersionEntity : selectByMap) {
+ AppVersionVo appVersionVo = new AppVersionVo();
+ appVersionVo.setAddress(appVersionEntity.getAddress());
+ appVersionVo.setType(appVersionEntity.getType());
+ appVersionVo.setVersion(appVersionEntity.getVersion());
+ arrayList.add(appVersionVo);
+ }
+ }
+ return Result.ok(arrayList);
+ }
+
+ @Transactional()
@Override
- public Result getAppVersionInfo() {
- Map<String, Object> columnMap = new HashMap<>();
- List<AppVersionEntity> selectByMap = appVersionDao.selectByMap(columnMap);
- List<Object> arrayList = new ArrayList<>();
- if(CollUtil.isNotEmpty(selectByMap)) {
- for(AppVersionEntity appVersionEntity : selectByMap) {
- AppVersionVo appVersionVo = new AppVersionVo();
- appVersionVo.setAddress(appVersionEntity.getAddress());
- appVersionVo.setType(appVersionEntity.getType());
- appVersionVo.setVersion(appVersionEntity.getVersion());
- arrayList.add(appVersionVo);
- }
- }
- return Result.ok(arrayList);
+ public Result registerOutCenter(OutCenterRegisterDto outCenterRegisterDto) {
+ LoginVo loginVo = new LoginVo();
+ log.info("钱包初始化");
+ /**
+ * 钱包初始化
+ */
+ // 创建钱包需要先清除这个设备之前的钱包
+ //wtWalletDao.deleteTerminal(outCenterRegisterDto.getTerminalId());
+ WtWallet wtWallet = new WtWallet();
+ wtWallet.setWalletName(outCenterRegisterDto.getWalletName());
+ wtWallet.setTerminalId(outCenterRegisterDto.getTerminalId());
+ wtWallet.setPassword(MD5Util.strToMD5(outCenterRegisterDto.getPassword()));
+ // 校验钱包名和密码
+ // 得到助记词
+ List<String> words = getWords();
+ wtWallet.setMnemonicWordList(words);
+ loginVo.setMnemonicWordList(words);
+ if(CollectionUtils.isEmpty(words)){
+ // 报错 不能生成钱包
+ return Result.fail(MessageSourceUtils.getString("login_init"));
+ }
+ // 创建钱包
+ // 生成钱包地址和私钥 34 52 42 64
+ // 公链钱包地址36位 私钥 46
+ String randomID = UUIDUtil.getRandomID();
+ String address = WalletConstants.ADDRESS_PREFIX+randomID;
+ String privateKey = (UUIDUtil.getRandomID()+UUIDUtil.getRandomID()).substring(0,46);
+ wtWallet.setAddress(address);
+ loginVo.setAddress(address);
+ String strToMD5 = MD5Util.strToMD5(address);
+ loginVo.setAddressMd(strToMD5);
+
+ wtWallet.setPrivateKey(privateKey);
+ wtWallet.setMnemonicWords(ToolUtil.listToString(words,","));
+ wtWalletDao.insert(wtWallet);
+ // 同时需要创建各个token
+ List<WtToken> wtTokens = wtTokenDao.selectAllToken();
+ List<WtWalletDetail> wtWalletDetails = new ArrayList<>();
+ WtWalletDetail wtWalletDetail = null;
+ if(CollectionUtils.isNotEmpty(wtTokens)){
+ for(WtToken token : wtTokens){
+ wtWalletDetail = new WtWalletDetail();
+ String symbol = token.getSymbol();
+ wtWalletDetail.setAddress(address);
+ wtWalletDetail.setBalance(BigDecimal.ZERO);
+ wtWalletDetail.setSymbol(symbol);
+ wtWalletDetail.setMain(token.getMain());
+ wtWalletDetail.setIsShow(0);
+ wtWalletDetails.add(wtWalletDetail);
+ }
+ walletDetailDao.batchInsert(wtWalletDetails);
+ }
+ // 置空敏感信息
+ wtWallet.setTerminalId(null);
+ wtWallet.setPassword(null);
+ wtWallet.setPrivateKey(null);
+ // 查询是否存在该账号用户
+// MemberEntity member = memberDao.selectMemberInfoByAccount(registerDto.getAccount());
+// if (member != null) {
+// return Result.fail("账号已存在");
+// }
+
+// boolean isTrue = commonservice.verifyCode(registerDto.getAccount(), registerDto.getCode());
+// if (!isTrue) {
+// return Result.fail(MessageSourceUtils.getString("common_verify_code"));
+// }
+
+ log.info("用户初始化");
+ /**
+ * 用户初始化
+ */
+ MemberEntity member = new MemberEntity();
+ member.setAddress(address);
+ member.setPassword(SecureUtil.md5(outCenterRegisterDto.getPassword()));
+ member.setTradePassword(SecureUtil.md5(outCenterRegisterDto.getPassword()));
+
+ // 判断账号类型
+// if (MemberEntity.ACCOUNT_TYPE_PHONE.equals(registerDto.getType())) {
+// member.setPhone(registerDto.getAccount());
+// } else if (MemberEntity.ACCOUNT_TYPE_EMAIL.equals(registerDto.getType())) {
+// member.setEmail(registerDto.getAccount());
+// } else {
+// return Result.fail("账号类型错误");
+// }
+
+ // 判断是否拥有推荐人,若为空则默认系统
+// if (StrUtil.isBlank(registerDto.getRefererId())) {
+// registerDto.setRefererId(AppContants.SYSTEM_REFERER);
+// }
+// if (!AppContants.SYSTEM_REFERER.equals(outCenterRegisterDto.getRefererId())) {
+// MemberEntity isExist = memberDao.selectMemberInfoByInviteId(outCenterRegisterDto.getRefererId());
+// if (isExist != null) {
+// member.setRefererId(outCenterRegisterDto.getRefererId());
+// }
+// }
+ member.setAccountStatus(MemberEntity.ACCOUNT_STATUS_ENABLE);
+ member.setAccountType(MemberEntity.ACCOUNT_TYPE_NORMAL);
+ member.setAgentLevel(MemberEntity.ACCOUNT_AGENT_LEVEL);
+ member.setCertifyStatus(MemberEntity.CERTIFY_STATUS_UN_SUBMIT);
+ member.setIsForce(1);
+ member.setIsProfit(0);
+ memberDao.insert(member);
+
+ MemberSettingEntity memberSettingEntity = new MemberSettingEntity();
+ memberSettingEntity.setSpread(BigDecimal.ONE);
+ memberSettingEntity.setClosingSpread(BigDecimal.valueOf(5));
+ memberSettingEntity.setForceParam(BigDecimal.valueOf(0.0030));
+ memberSettingEntity.setMemberId(member.getId());
+ memberSettingDao.insert(memberSettingEntity);
+
+ String inviteId = ShareCodeUtil.toSerialCode(member.getId());
+ member.setInviteId(inviteId);
+
+// boolean flag = false;
+// String parentId = member.getRefererId();
+// String ids = "";
+// while (!flag && StringUtils.isNotBlank(parentId)) {
+// ids += ("," + parentId);
+// MemberEntity parentMember = memberDao.selectMemberInfoByInviteId(parentId);
+// if (parentMember == null) {
+// break;
+// }
+// parentId = parentMember.getRefererId();
+// if(StringUtils.isBlank(parentId)){
+// break;
+// }
+// if (parentMember.getRefererId().equals(parentMember.getInviteId())) {
+// flag = true;
+// }
+// }
+// member.setRefererIds(ids);
+ memberDao.updateById(member);
+
+ //初始化合约钱包
+ MemberWalletContractEntity walletContract = new MemberWalletContractEntity();
+ walletContract.setMemberId(member.getId());
+ walletContract.setAvailableBalance(AppContants.INIT_MONEY);
+ walletContract.setFrozenBalance(AppContants.INIT_MONEY);
+ walletContract.setTotalBalance(AppContants.INIT_MONEY);
+ walletContract.setBorrowedFund(AppContants.INIT_MONEY);
+ walletContract.setWalletCode(CoinTypeEnum.USDT.name());
+ memberWalletContractDao.insert(walletContract);
+
+ MemberWalletContractSimulateEntity walletContractSimulate = new MemberWalletContractSimulateEntity();
+ walletContractSimulate.setMemberId(member.getId());
+ walletContractSimulate.setAvailableBalance(new BigDecimal(AppContants.INIT_SIMULATE_MONEY));
+ walletContractSimulate.setTotalBalance(new BigDecimal(AppContants.INIT_SIMULATE_MONEY));
+ walletContractSimulate.setFrozenBalance(AppContants.INIT_MONEY);
+ walletContractSimulate.setBorrowedFund(AppContants.INIT_MONEY);
+ walletContractSimulate.setWalletCode(CoinTypeEnum.USDT.name());
+ memberWalletContractSimulateDao.insert(walletContractSimulate);
+
+
+ // 初始化币币钱包
+ for (CoinTypeEnum coinTypeEnum : CoinTypeEnum.values()) {
+ MemberWalletCoinEntity walletCoin = new MemberWalletCoinEntity();
+ walletCoin.setWalletCode(coinTypeEnum.name());
+ walletCoin.setMemberId(member.getId());
+ walletCoin.setAvailableBalance(AppContants.INIT_MONEY);
+ walletCoin.setFrozenBalance(AppContants.INIT_MONEY);
+ walletCoin.setTotalBalance(AppContants.INIT_MONEY);
+ walletCoin.setBorrowedFund(AppContants.INIT_MONEY);
+ memberWalletCoinDao.insert(walletCoin);
+ }
+
+ // 初始化代理佣金钱包
+ MemberWalletAgentEntity walletAgent = new MemberWalletAgentEntity();
+ walletAgent.setMemberId(member.getId());
+ walletAgent.setWalletCode(CoinTypeEnum.USDT.name());
+ memberWalletAgentDao.insert(walletAgent);
+
+ // 初始化杠杆
+ for (SymbolEnum symbolEnum : SymbolEnum.values()) {
+ MemberLevelRateEntity levelRate = new MemberLevelRateEntity();
+ levelRate.setMemberId(member.getId());
+ levelRate.setSymbol(symbolEnum.getValue());
+ memberLevelRateDao.insert(levelRate);
+ }
+ //加密地址为key,member为value
+ redisUtils.set(strToMD5, JSONObject.toJSONString(member));
+ return Result.ok(loginVo);
+ }
+
+ public List<String> getWords(){
+ if(CollectionUtils.isEmpty(WordsUtil.words_list)){
+ WordsUtil.words_list = wtWordDao.selectAllWords();
+ }
+ // 随机得12个单词
+ if(CollectionUtils.isEmpty(WordsUtil.words_list)){
+ throw new RuntimeException("error");
+ }
+ int size = WordsUtil.words_list.size();
+ Random random = new Random();
+ // 获得12个单词
+ List<String> zjc = new ArrayList<>(12);
+ boolean loop = true;
+ while (loop){
+ int randInt = random.nextInt(size - 1);
+ // 根据得到的随机数去取
+ String s = WordsUtil.words_list.get(randInt);
+ if(!zjc.contains(s)){
+ zjc.add(s);
+ }
+ if(zjc.size()>=12){
+ loop = false;
+ }
+ }
+ return zjc;
+ }
+
+ @Transactional
+ @Override
+ public Result recovery(WtWalletDto wtWalletDto) {
+
+ LoginVo loginVo = new LoginVo();
+
+ /**
+ * 判断钱包是否存在
+ */
+ List<String> mnemonicWordList = wtWalletDto.getMnemonicWordList();
+ if(CollectionUtils.isEmpty(mnemonicWordList)){
+ return Result.fail(MessageSourceUtils.getString("login_recovery_001"));
+ }
+ String mnemonicWords = ToolUtil.listToString(mnemonicWordList, ",");
+ WtWallet wtWallet = wtWalletDao.selectByMnemonicWords(mnemonicWords);
+ if(wtWallet==null){
+ return Result.fail(MessageSourceUtils.getString("login_recovery_002"));
+ }
+
+ /**
+ * 通过地址获取该用户是否存在
+ */
+ String address = wtWallet.getAddress();
+ String strToMD5 = MD5Util.strToMD5(address);
+ loginVo.setAddress(address);
+ loginVo.setAddressMd(strToMD5);
+ Wrapper<MemberEntity> queryWrapperOrepool = new QueryWrapper<>();
+ ((QueryWrapper<MemberEntity>) queryWrapperOrepool).eq("address", address);
+ MemberEntity memberEntity = memberDao.selectOne(queryWrapperOrepool);
+ if(ObjectUtil.isEmpty(memberEntity)) {
+ log.info("用户初始化");
+ /**
+ * 用户初始化
+ */
+ MemberEntity member = new MemberEntity();
+ member.setAddress(address);
+ member.setPassword(MD5Util.strToMD5(wtWalletDto.getPassword()));
+ member.setTradePassword(MD5Util.strToMD5(wtWalletDto.getPassword()));
+ member.setAccountStatus(MemberEntity.ACCOUNT_STATUS_ENABLE);
+ member.setAccountType(MemberEntity.ACCOUNT_TYPE_NORMAL);
+ member.setAgentLevel(MemberEntity.ACCOUNT_AGENT_LEVEL);
+ member.setCertifyStatus(MemberEntity.CERTIFY_STATUS_UN_SUBMIT);
+ member.setIsForce(1);
+ member.setIsProfit(0);
+ memberDao.insert(member);
+
+ MemberSettingEntity memberSettingEntity = new MemberSettingEntity();
+ memberSettingEntity.setSpread(BigDecimal.ONE);
+ memberSettingEntity.setClosingSpread(BigDecimal.valueOf(5));
+ memberSettingEntity.setForceParam(BigDecimal.valueOf(0.0030));
+ memberSettingEntity.setMemberId(member.getId());
+ memberSettingDao.insert(memberSettingEntity);
+
+ String inviteId = ShareCodeUtil.toSerialCode(member.getId());
+ member.setInviteId(inviteId);
+ memberDao.updateById(member);
+
+ //初始化合约钱包
+ MemberWalletContractEntity walletContract = new MemberWalletContractEntity();
+ walletContract.setMemberId(member.getId());
+ walletContract.setAvailableBalance(AppContants.INIT_MONEY);
+ walletContract.setFrozenBalance(AppContants.INIT_MONEY);
+ walletContract.setTotalBalance(AppContants.INIT_MONEY);
+ walletContract.setBorrowedFund(AppContants.INIT_MONEY);
+ walletContract.setWalletCode(CoinTypeEnum.USDT.name());
+ memberWalletContractDao.insert(walletContract);
+
+ MemberWalletContractSimulateEntity walletContractSimulate = new MemberWalletContractSimulateEntity();
+ walletContractSimulate.setMemberId(member.getId());
+ walletContractSimulate.setAvailableBalance(new BigDecimal(AppContants.INIT_SIMULATE_MONEY));
+ walletContractSimulate.setTotalBalance(new BigDecimal(AppContants.INIT_SIMULATE_MONEY));
+ walletContractSimulate.setFrozenBalance(AppContants.INIT_MONEY);
+ walletContractSimulate.setBorrowedFund(AppContants.INIT_MONEY);
+ walletContractSimulate.setWalletCode(CoinTypeEnum.USDT.name());
+ memberWalletContractSimulateDao.insert(walletContractSimulate);
+
+
+ // 初始化币币钱包
+ for (CoinTypeEnum coinTypeEnum : CoinTypeEnum.values()) {
+ MemberWalletCoinEntity walletCoin = new MemberWalletCoinEntity();
+ walletCoin.setWalletCode(coinTypeEnum.name());
+ walletCoin.setMemberId(member.getId());
+ walletCoin.setAvailableBalance(AppContants.INIT_MONEY);
+ walletCoin.setFrozenBalance(AppContants.INIT_MONEY);
+ walletCoin.setTotalBalance(AppContants.INIT_MONEY);
+ walletCoin.setBorrowedFund(AppContants.INIT_MONEY);
+ memberWalletCoinDao.insert(walletCoin);
+ }
+
+ // 初始化代理佣金钱包
+ MemberWalletAgentEntity walletAgent = new MemberWalletAgentEntity();
+ walletAgent.setMemberId(member.getId());
+ walletAgent.setWalletCode(CoinTypeEnum.USDT.name());
+ memberWalletAgentDao.insert(walletAgent);
+
+ // 初始化杠杆
+ for (SymbolEnum symbolEnum : SymbolEnum.values()) {
+ MemberLevelRateEntity levelRate = new MemberLevelRateEntity();
+ levelRate.setMemberId(member.getId());
+ levelRate.setSymbol(symbolEnum.getValue());
+ memberLevelRateDao.insert(levelRate);
+ }
+
+ //加密地址为key,member为value
+ redisUtils.set(strToMD5, JSONObject.toJSONString(member));
+ }else {
+ redisUtils.set(strToMD5, JSONObject.toJSONString(memberEntity));
+ }
+
+ return Result.ok(loginVo);
}
}
--
Gitblit v1.9.1