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 | 640 +++++++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 569 insertions(+), 71 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 4b4e073..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;
@@ -30,29 +44,24 @@
import com.xcong.excoin.modules.member.parameter.dto.MemberUpdateTradePwdDto;
import com.xcong.excoin.modules.member.parameter.dto.MemberUpdateTradersPwdTimeDto;
import com.xcong.excoin.modules.member.parameter.vo.*;
-import com.xcong.excoin.modules.member.parameter.vo.MemberAuthenticationInfoVo;
-import com.xcong.excoin.modules.member.parameter.vo.MemberAvivableCoinInfoVo;
-import com.xcong.excoin.modules.member.parameter.vo.MemberCoinAddressCountListVo;
-import com.xcong.excoin.modules.member.parameter.vo.MemberCoinAddressCountVo;
-import com.xcong.excoin.modules.member.parameter.vo.MemberCoinAddressListVo;
-import com.xcong.excoin.modules.member.parameter.vo.MemberCoinAddressVo;
-import com.xcong.excoin.modules.member.parameter.vo.MemberCoinInfoListVo;
-import com.xcong.excoin.modules.member.parameter.vo.MemberCoinInfoVo;
-import com.xcong.excoin.modules.member.parameter.vo.MemberInfoVo;
-import com.xcong.excoin.modules.member.parameter.vo.MemberPaymethodDetailListVo;
-import com.xcong.excoin.modules.member.parameter.vo.MemberPaymethodDetailVo;
-import com.xcong.excoin.modules.member.parameter.vo.MemberPersonCenterInfoVo;
-import com.xcong.excoin.modules.member.parameter.vo.MemberSendCodeWayVo;
import com.xcong.excoin.modules.member.service.MemberService;
import com.xcong.excoin.modules.platform.dao.PlatformFeeSettingDao;
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;
@@ -62,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;
@@ -117,8 +127,24 @@
MemberCoinWithdrawDao memberCoinWithdrawDao;
@Resource
- private MemberWalletContractSimulateDao memberWalletContractSimulateDao;
+ 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) {
@@ -128,31 +154,47 @@
return Result.fail("账号已存在");
}
+// boolean isTrue = commonservice.verifyCode(registerDto.getAccount(), registerDto.getCode());
+// if (!isTrue) {
+// return Result.fail(MessageSourceUtils.getString("common_verify_code"));
+// }
+
member = new MemberEntity();
member.setPassword(SecureUtil.md5(registerDto.getPassword()));
// 判断账号类型
- if (MemberEntity.ACCOUNT_TYPE_PHONE == registerDto.getType()) {
+ if (MemberEntity.ACCOUNT_TYPE_PHONE.equals(registerDto.getType())) {
member.setPhone(registerDto.getAccount());
- } else if (MemberEntity.ACCOUNT_TYPE_EMAIL == registerDto.getType()) {
+ } 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 (StrUtil.isBlank(registerDto.getRefererId())) {
+// registerDto.setRefererId(AppContants.SYSTEM_REFERER);
+// }
+ if (!AppContants.SYSTEM_REFERER.equals(registerDto.getRefererId())) {
+ MemberEntity isExist = memberDao.selectMemberInfoByInviteId(registerDto.getRefererId());
+ if (isExist != null) {
+ member.setRefererId(registerDto.getRefererId());
+ }
}
-
- member.setRefererId(registerDto.getRefererId());
member.setAccountStatus(MemberEntity.ACCOUNT_STATUS_ENABLE);
- member.setAccountType(registerDto.getType());
+ member.setAccountType(MemberEntity.ACCOUNT_TYPE_NORMAL);
member.setAgentLevel(MemberEntity.ACCOUNT_AGENT_LEVEL);
- member.setCertifyStatus(MemberEntity.CERTIFY_STATUS_ING);
- member.setIsForce(0);
+ 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);
@@ -160,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;
}
@@ -219,7 +264,8 @@
levelRate.setSymbol(symbolEnum.getValue());
memberLevelRateDao.insert(levelRate);
}
- return Result.ok("success");
+
+ return Result.ok(MessageSourceUtils.getString("home_service_0009"));
}
@Override
@@ -229,7 +275,14 @@
MemberEntity memberEntity = memberDao.selectById(memberId);
MemberInfoVo memberInfoVo = new MemberInfoVo();
if (ObjectUtil.isNotEmpty(memberEntity)) {
- memberInfoVo.setPhone(memberEntity.getPhone());
+ String email = memberEntity.getEmail();
+ String phone = memberEntity.getPhone();
+ if (StrUtil.isNotEmpty(phone)) {
+ memberInfoVo.setPhone(phone);
+ } else if (StrUtil.isNotEmpty(email)) {
+ memberInfoVo.setPhone(email);
+ }
+
memberInfoVo.setInviteId(memberEntity.getInviteId());
}
return Result.ok(memberInfoVo);
@@ -319,8 +372,13 @@
//获取用户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 (ObjectUtil.isNotEmpty(member)) {
+
MemberAuthenticationEntity memberAuthenticationEntity = new MemberAuthenticationEntity();
+
if (MemberEntity.CERTIFY_STATUS_Y == member.getCertifyStatus()) {
return Result.fail(MessageSourceUtils.getString("member_service_0055"));
}
@@ -344,6 +402,9 @@
}
memberAuthenticationEntity.setSecondName(memberAuthenticationDto.getSecondName());
+ String type = memberAuthenticationDto.getType();
+ memberAuthenticationEntity.setType(type);
+
String idCardNo = memberAuthenticationDto.getIdCardNo();
if (StrUtil.isBlank(idCardNo)) {
return Result.fail(MessageSourceUtils.getString("member_service_0060"));
@@ -354,6 +415,11 @@
if (count > 0) {
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())
|| StrUtil.isBlank(memberAuthenticationDto.getIdCardImage())) {
@@ -362,19 +428,22 @@
memberAuthenticationEntity.setIdcardImageFront(memberAuthenticationDto.getIdCardFront());
memberAuthenticationEntity.setIdcardImageBack(memberAuthenticationDto.getIdCardReverse());
memberAuthenticationEntity.setIdcardImageInHand(memberAuthenticationDto.getIdCardImage());
- memberAuthenticationDao.insert(memberAuthenticationEntity);
+
+ 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);
+ }
member.setCertifyStatus(MemberEntity.CERTIFY_STATUS_ING);
member.setIdcardNo(idCardNo);
memberDao.updateById(member);
- /**
- * TODO dingtalk
- Constant.excutor.execute(new Runnable() {
- @Override public void run() {
- DingTalkUtils.sendActionCard(4);
- }
- });*/
+ ThreadPoolUtils.sendDingTalk(4);
return Result.ok(MessageSourceUtils.getString("member_service_0024"));
}
return Result.fail(MessageSourceUtils.getString("member_service_0063"));
@@ -406,6 +475,7 @@
if (flag) {
memberEntity.setTradePassword(SecureUtil.md5(password));
memberDao.updateById(memberEntity);
+ LoginUserUtils.resetAppLoginUser(memberEntity);
return Result.ok(MessageSourceUtils.getString("member_service_0051"));
}
return Result.fail(MessageSourceUtils.getString("member_service_0045"));
@@ -443,6 +513,8 @@
if (flag) {
memberEntity.setTradePassword(SecureUtil.md5(password));
memberDao.updateById(memberEntity);
+ // 重置内存中的用户信息
+ LoginUserUtils.resetAppLoginUser(memberEntity);
} else {
return Result.fail(MessageSourceUtils.getString("member_service_0015"));
}
@@ -459,6 +531,17 @@
if (!MemberEntity.CERTIFY_STATUS_Y.equals(member.getCertifyStatus())) {
return Result.fail(MessageSourceUtils.getString("member_service_0077"));
+ }
+
+ 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"));
+ }
+ }
}
String account = memberPaymethodDto.getAccount();
String bank = memberPaymethodDto.getBank();
@@ -546,18 +629,25 @@
String code = memberBindPhoneDto.getCode();
MemberEntity member = memberDao.selectById(memberId);
- String smsCode = redisUtils.get("SMS_" + phone) + "";
if (ObjectUtil.isNotEmpty(member)) {
- if (StrUtil.isEmpty(smsCode)) {
- return Result.fail(MessageSourceUtils.getString("member_service_0038"));
- }
- if (!smsCode.equals(code)) {
+ if (!commonservice.mutiVerifyCode(member.getEmail(), memberBindPhoneDto.getOtherCode(), phone, code)) {
return Result.fail(MessageSourceUtils.getString("member_service_0013"));
}
- member.setPhone(phone);
- memberDao.updateById(member);
- return Result.ok(MessageSourceUtils.getString("member_service_0014"));
+ // 验证邮箱验证码
+// 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"));
+ }
}
return Result.fail(MessageSourceUtils.getString("member_service_0015"));
@@ -573,12 +663,26 @@
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) {
- member.setEmail(email);
- memberDao.updateById(member);
- return Result.ok(MessageSourceUtils.getString("member_service_0018"));
+ Map<String, Object> columnMap = new HashMap<>();
+ columnMap.put("email", 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"));
+ }
}
}
return Result.fail(MessageSourceUtils.getString("member_service_0019"));
@@ -601,10 +705,7 @@
public Result memberCoinAddressList(String symbol) {
//获取用户ID
Long memberId = LoginUserUtils.getAppLoginUser().getId();
- Map<String, Object> columnMap = new HashMap<>();
- columnMap.put("member_id", memberId);
- columnMap.put("symbol", symbol);
- List<MemberCoinAddressEntity> selectByMap = memberCoinAddressDao.selectByMap(columnMap);
+ List<MemberCoinAddressEntity> selectByMap = memberCoinAddressDao.selectCoinAddressListByMap(symbol, memberId);
MemberCoinAddressListVo memberCoinAddressListVo = new MemberCoinAddressListVo();
List<MemberCoinAddressVo> arrayList = new ArrayList<>();
if (CollUtil.isNotEmpty(selectByMap)) {
@@ -642,7 +743,7 @@
MemberCoinAddressEntity memberCoinAddressEntity = new MemberCoinAddressEntity();
memberCoinAddressEntity.setAddress(address);
memberCoinAddressEntity.setMemberId(memberId);
- memberCoinAddressEntity.setIsBiyict(isBiyict);
+ memberCoinAddressEntity.setIsBiyict(MemberCoinAddressEntity.IS_BIYICT_NO);
memberCoinAddressEntity.setSymbolscoinId(symbolscoinId);
memberCoinAddressEntity.setLabel(remark);
memberCoinAddressEntity.setSymbol(platformSymbolsCoinEntity.getName());
@@ -696,6 +797,7 @@
memberAuthnticationInfoVo.setSecondName(memberAuthenticationEntity.getSecondName());
memberAuthnticationInfoVo.setNation(memberAuthenticationEntity.getNation());
memberAuthnticationInfoVo.setIdCardNo(memberAuthenticationEntity.getIdcardNo());
+ memberAuthnticationInfoVo.setType(memberAuthenticationEntity.getType());
}
}
return Result.ok(memberAuthnticationInfoVo);
@@ -708,6 +810,19 @@
MemberEntity member = memberDao.selectById(memberId);
MemberPersonCenterInfoVo memberPersonCenterInfoVo = new MemberPersonCenterInfoVo();
+
+ Integer certifyStatus = member.getCertifyStatus();
+ memberPersonCenterInfoVo.setCertifyStatus(certifyStatus);
+
+ 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 (StrUtil.isNotEmpty(member.getPhone())) {
memberPersonCenterInfoVo.setPhone(1);
} else {
@@ -738,8 +853,6 @@
@Override
public Result memberCoinInfoList() {
- //获取用户ID
- Long memberId = LoginUserUtils.getAppLoginUser().getId();
MemberCoinInfoListVo memberCoinInfoListVo = new MemberCoinInfoListVo();
List<PlatformSymbolsCoinEntity> selectByMap = platformSymbolsCoinDao.selectByMap(new HashMap<>());
@@ -765,15 +878,22 @@
return Result.fail(MessageSourceUtils.getString("member_service_0087"));
}
- MemberAvivableCoinInfoVo memberAvivableCoinInfoVo = new MemberAvivableCoinInfoVo();
- memberAvivableCoinInfoVo.setAvailableBalance(walletCoin.getAvailableBalance());
+ List<MemberAvivableCoinInfoVo> arrayList = new ArrayList<>();
- PlatformFeeSettingEntity feeSetting = platformFeeSettingDao.getFeeSettingByTypeAndSymbol(2, symbol);
- if (ObjectUtil.isEmpty(feeSetting)) {
+
+ List<PlatformFeeSettingEntity> feeSettingByTypeAndSymbolLable = platformFeeSettingDao.getFeeSettingsByTypeAndSymbol(2, symbol);
+ if (CollUtil.isEmpty(feeSettingByTypeAndSymbolLable)) {
return Result.fail(MessageSourceUtils.getString("member_service_0087"));
}
- memberAvivableCoinInfoVo.setFee(feeSetting.getFeePrice());
- return Result.ok(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);
}
@Override
@@ -807,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"));
}
@@ -824,9 +952,9 @@
if (flag) {
MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, memberSubmitCoinApplyDto.getSymbol());
BigDecimal availableBalance = walletCoin.getAvailableBalance();
- BigDecimal coinNumber = memberSubmitCoinApplyDto.getCoinNumber().add(memberSubmitCoinApplyDto.getFeeAmount());
+ BigDecimal coinNumber = memberSubmitCoinApplyDto.getCoinNumber();
if (availableBalance.compareTo(BigDecimal.ZERO) > 0
- && availableBalance.compareTo(coinNumber) > 0) {
+ && availableBalance.compareTo(coinNumber) >= 0) {
//新增提币记录
MemberCoinWithdrawEntity memberCoinWithdrawEntity = new MemberCoinWithdrawEntity();
memberCoinWithdrawEntity.setAddress(memberSubmitCoinApplyDto.getAddress());
@@ -839,6 +967,7 @@
Map<String, Object> columnMap = new HashMap<>();
columnMap.put("symbol", memberSubmitCoinApplyDto.getSymbol());
columnMap.put("address", memberSubmitCoinApplyDto.getAddress());
+ columnMap.put("is_biyict", MemberCoinAddressEntity.IS_BIYICT_YES);
List<MemberCoinAddressEntity> selectByMap = memberCoinAddressDao.selectByMap(columnMap);
if (CollUtil.isEmpty(selectByMap)) {
memberCoinWithdrawEntity.setIsInside(MemberCoinWithdrawEntity.ISINSIDE_NO);
@@ -855,22 +984,17 @@
MemberAccountMoneyChange accountRecord = new MemberAccountMoneyChange();
accountRecord.setContent("提币");
accountRecord.setMemberId(memberId);
- accountRecord.setAmount(memberSubmitCoinApplyDto.getCoinNumber());
+ accountRecord.setAmount(coinNumber);
+ accountRecord.setWithdrawId(memberCoinWithdrawEntity.getId());
accountRecord.setStatus(MemberAccountMoneyChange.STATUS_WAIT_INTEGER);
accountRecord.setSymbol(memberSubmitCoinApplyDto.getSymbol());
accountRecord.setType(MemberAccountMoneyChange.TYPE_WALLET_COIN);
memberAccountMoneyChangeDao.insert(accountRecord);
- /**
- * TODO dingtalk
- Constant.excutor.execute(new Runnable() {
- @Override public void run() {
- DingTalkUtils.sendActionCard(3);
- }
- });
- */
+
+ ThreadPoolUtils.sendDingTalk(3);
return Result.ok(MessageSourceUtils.getString("member_service_0086"));
} else {
- return Result.fail(MessageSourceUtils.getString("order_service_0040"));
+ return Result.fail(MessageSourceUtils.getString("member_service_0005"));
}
} else {
@@ -878,6 +1002,380 @@
}
}
+ @Override
+ public Result getMemberAccountInfo(String account, int type) {
+
+ Map<String, Object> hashMap = new HashMap<>();
+ if (type == 1) {
+ hashMap.put("phone", account);
+ } else {
+ hashMap.put("email", account);
+ }
+ List<MemberEntity> member = memberDao.selectByMap(hashMap);
+ if (CollUtil.isEmpty(member)) {
+ return Result.fail(MessageSourceUtils.getString("home_service_0003"));
+ }
+
+ 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 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