From 4c0935d38fc3b8a04cbee29072ce28b8301f73f4 Mon Sep 17 00:00:00 2001
From: gao <gaoleox@163>
Date: Fri, 22 May 2020 15:01:07 +0800
Subject: [PATCH] Merge branch 'master' of https://chonggaoxiao:xcg523511090712@gitee.com/chonggaoxiao/new_excoin.git

---
 src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java |  134 ++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 132 insertions(+), 2 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 5d93e06..cf19f1b 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
@@ -1,13 +1,143 @@
 package com.xcong.excoin.modules.member.service.impl;
 
+import cn.hutool.core.codec.Base64;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.crypto.SecureUtil;
+import cn.hutool.crypto.asymmetric.Sign;
+import cn.hutool.crypto.asymmetric.SignAlgorithm;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.xcong.excoin.modules.member.dao.MemberDao;
-import com.xcong.excoin.modules.member.entity.MemberEntity;
+import com.xcong.excoin.common.contants.AppContants;
+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.RegisterDto;
+import com.xcong.excoin.modules.member.dao.*;
+import com.xcong.excoin.modules.member.entity.*;
 import com.xcong.excoin.modules.member.service.MemberService;
+import com.xcong.excoin.utils.ShareCodeUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
 
 /**
  * @author wzy
  * @date 2020-05-18
  **/
+@Slf4j
+@Service
 public class MemberServiceImpl extends ServiceImpl<MemberDao, MemberEntity> implements MemberService {
+
+    @Resource
+    private MemberDao memberDao;
+
+    @Resource
+    private MemberWalletAgentDao memberWalletAgentDao;
+
+    @Resource
+    private MemberWalletContractDao memberWalletContractDao;
+
+    @Resource
+    private MemberWalletCoinDao memberWalletCoinDao;
+
+    @Resource
+    private MemberLevelRateDao memberLevelRateDao;
+
+    @Transactional()
+    @Override
+    public Result register(RegisterDto registerDto) {
+        // 查询是否存在该账号用户
+        MemberEntity member = memberDao.selectMemberInfoByAccount(registerDto.getAccount());
+        if (member != null) {
+            return Result.fail("账号已存在");
+        }
+
+        member = new MemberEntity();
+        member.setPassword(SecureUtil.md5(registerDto.getPassword()));
+
+        // 判断账号类型
+        if (MemberEntity.ACCOUNT_TYPE_PHONE == registerDto.getType()) {
+            member.setPhone(registerDto.getAccount());
+        } else if (MemberEntity.ACCOUNT_TYPE_EMAIL == registerDto.getType()) {
+            member.setEmail(registerDto.getAccount());
+        } else {
+            return Result.fail("账号类型错误");
+        }
+
+        // 判断是否拥有推荐人,若为空则默认系统
+        if (StrUtil.isBlank(registerDto.getRefererId())) {
+            registerDto.setRefererId(AppContants.SYSTEM_REFERER);
+        }
+
+        member.setRefererId(registerDto.getRefererId());
+        member.setAccountStatus(MemberEntity.ACCOUNT_STATUS_ENABLE);
+        member.setAccountType(registerDto.getType());
+        member.setAgentLevel(MemberEntity.ACCOUNT_AGENT_LEVEL);
+        member.setCertifyStatus(MemberEntity.CERTIFY_STATUS_ING);
+        member.setIsForce(0);
+        member.setIsProfit(0);
+        memberDao.insert(member);
+
+        String inviteId = ShareCodeUtil.toSerialCode(member.getId());
+        member.setInviteId(inviteId);
+
+        boolean flag = false;
+        String parentId = member.getRefererId();
+        String ids = "";
+        while (!flag) {
+            ids += ("," + parentId);
+            MemberEntity parentMember = memberDao.selectMemberInfoByRefererId(parentId);
+            if (parentMember == null) {
+                break;
+            }
+            parentId = parentMember.getRefererId();
+            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);
+
+
+        // 初始化币币钱包
+        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);
+        }
+
+
+        return Result.ok("success");
+    }
+
 }

--
Gitblit v1.9.1