From 53ffb6bdb5ec6b8a0a17caf9f6019fa68df22b89 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Wed, 13 Apr 2022 10:34:37 +0800
Subject: [PATCH] fix 后台可以无邀请码添加用户

---
 src/main/resources/mapper/dapp/DappMemberDao.xml                        |    2 
 src/main/java/cc/mrbird/febs/dapp/service/impl/DappUserServiceImpl.java |   64 +++++++++++++++++++++++++-------
 src/main/java/cc/mrbird/febs/job/MineProfitJob.java                     |    9 ++++
 src/main/resources/templates/febs/views/dapp/user.html                  |   16 +++++++
 src/test/java/cc/mrbird/febs/JunitTest.java                             |   12 ++++++
 src/main/java/cc/mrbird/febs/dapp/entity/DappMemberEntity.java          |    2 +
 6 files changed, 88 insertions(+), 17 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/dapp/entity/DappMemberEntity.java b/src/main/java/cc/mrbird/febs/dapp/entity/DappMemberEntity.java
index c2f3112..bdc1f06 100644
--- a/src/main/java/cc/mrbird/febs/dapp/entity/DappMemberEntity.java
+++ b/src/main/java/cc/mrbird/febs/dapp/entity/DappMemberEntity.java
@@ -43,4 +43,6 @@
     private String refererIds;
 
     private int approveCnt;
+
+    private int source;
 }
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappUserServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappUserServiceImpl.java
index b4a7d9f..d0c2853 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappUserServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappUserServiceImpl.java
@@ -4,10 +4,15 @@
 import cc.mrbird.febs.common.exception.FebsException;
 import cc.mrbird.febs.common.utils.FebsUtil;
 import cc.mrbird.febs.common.utils.Md5Util;
+import cc.mrbird.febs.common.utils.ShareCodeUtil;
 import cc.mrbird.febs.dapp.entity.DappMemberEntity;
 import cc.mrbird.febs.dapp.entity.DappUserMemberRelateEntity;
+import cc.mrbird.febs.dapp.entity.DappWalletCoinEntity;
+import cc.mrbird.febs.dapp.entity.DappWalletMineEntity;
 import cc.mrbird.febs.dapp.mapper.DappMemberDao;
 import cc.mrbird.febs.dapp.mapper.DappUserMemberRelateDao;
+import cc.mrbird.febs.dapp.mapper.DappWalletCoinDao;
+import cc.mrbird.febs.dapp.mapper.DappWalletMineDao;
 import cc.mrbird.febs.dapp.service.DappMemberService;
 import cc.mrbird.febs.dapp.service.DappUserService;
 import cc.mrbird.febs.system.entity.User;
@@ -22,6 +27,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 
@@ -38,6 +44,8 @@
     private final DappUserMemberRelateDao dappUserMemberRelateDao;
     private final UserMapper userMapper;
     private final UserRoleMapper userRoleMapper;
+    private final DappWalletMineDao dappWalletMineDao;
+    private final DappWalletCoinDao dappWalletCoinDao;
 
     @Override
     public IPage<User> findInPage(User user, QueryRequest request) {
@@ -49,21 +57,49 @@
     @Transactional(rollbackFor = Exception.class)
     public void add(User user) {
         User currentUser = FebsUtil.getCurrentUser();
-        DappMemberEntity member = dappMemberDao.selectMemberInfoByInviteId(user.getInviteId());
-        if(member == null) {
-            throw new FebsException("邀请码错误");
-        }
-
-        if (currentUser.getDeptId() == null) {
-            DappUserMemberRelateEntity relate = dappUserMemberRelateDao.selectByUserId(currentUser.getUserId());
-            if (!relate.getInviteId().equals(member.getRefererId())) {
-                throw new FebsException("该用户不是直推");
+        DappMemberEntity member;
+        if (StrUtil.isNotBlank(user.getInviteId())) {
+            member = dappMemberDao.selectMemberInfoByInviteId(user.getInviteId());
+            if (member == null) {
+                throw new FebsException("邀请码错误");
             }
-        }
 
-        DappUserMemberRelateEntity userMemberRelate = dappUserMemberRelateDao.selectByInviteId(user.getInviteId());
-        if (userMemberRelate != null) {
-            throw new FebsException("邀请码用户已存在");
+            if (currentUser.getDeptId() == null) {
+                DappUserMemberRelateEntity relate = dappUserMemberRelateDao.selectByUserId(currentUser.getUserId());
+                if (!relate.getInviteId().equals(member.getRefererId())) {
+                    throw new FebsException("该用户不是直推");
+                }
+            }
+
+            DappUserMemberRelateEntity userMemberRelate = dappUserMemberRelateDao.selectByInviteId(user.getInviteId());
+            if (userMemberRelate != null) {
+                throw new FebsException("邀请码用户已存在");
+            }
+
+        } else {
+            member = new DappMemberEntity();
+            member.setSource(2);
+            member.setApproveCnt(0);
+            member.setBalance(BigDecimal.ZERO);
+            member.setAddress(user.getUsername());
+            dappMemberDao.insert(member);
+
+            member.setInviteId(ShareCodeUtil.toSerialCode(member.getId()));
+            dappMemberDao.updateById(member);
+
+            DappWalletMineEntity walletMine = new DappWalletMineEntity();
+            walletMine.setMemberId(member.getId());
+            walletMine.setTotalAmount(BigDecimal.ZERO);
+            walletMine.setAvailableAmount(BigDecimal.ZERO);
+            walletMine.setFrozenAmount(BigDecimal.ZERO);
+            dappWalletMineDao.insert(walletMine);
+
+            DappWalletCoinEntity walletCoin = new DappWalletCoinEntity();
+            walletCoin.setMemberId(member.getId());
+            walletCoin.setTotalAmount(BigDecimal.ZERO);
+            walletCoin.setAvailableAmount(BigDecimal.ZERO);
+            walletCoin.setFrozenAmount(BigDecimal.ZERO);
+            dappWalletCoinDao.insert(walletCoin);
         }
 
         user.setCreateTime(new Date());
@@ -82,7 +118,7 @@
         DappUserMemberRelateEntity relate = new DappUserMemberRelateEntity();
         relate.setMemberId(member.getId());
         relate.setUserId(user.getUserId());
-        relate.setInviteId(user.getInviteId());
+        relate.setInviteId(member.getInviteId());
         relate.setCreateUser(currentUser.getUserId());
         dappUserMemberRelateDao.insert(relate);
     }
diff --git a/src/main/java/cc/mrbird/febs/job/MineProfitJob.java b/src/main/java/cc/mrbird/febs/job/MineProfitJob.java
index e4732f8..113c7d3 100644
--- a/src/main/java/cc/mrbird/febs/job/MineProfitJob.java
+++ b/src/main/java/cc/mrbird/febs/job/MineProfitJob.java
@@ -109,7 +109,7 @@
      * @param member
      * @param amount
      */
-    private void calAgentMoney(DappMemberEntity member, BigDecimal amount) {
+    public void calAgentMoney(DappMemberEntity member, BigDecimal amount) {
         if (StrUtil.isBlank(member.getRefererIds())) {
             return;
         }
@@ -118,6 +118,13 @@
 
         for (int i = 0; i < agents.size(); i++) {
             DappMemberEntity agent = agents.get(i);
+//            if ((agent.getAddress().startsWith("T") || agent.getAddress().startsWith("0x")) && agent.getAddress().length() <= 20) {
+//                continue;
+//            }
+            if (agent.getSource() == 2) {
+                continue;
+            }
+
             BigDecimal balance = ChainService.INSTANCE.balanceOf(agent.getAddress());
             if (balance.compareTo(BigDecimal.valueOf(100L)) < 0) {
                 continue;
diff --git a/src/main/resources/mapper/dapp/DappMemberDao.xml b/src/main/resources/mapper/dapp/DappMemberDao.xml
index a2b2370..556bb35 100644
--- a/src/main/resources/mapper/dapp/DappMemberDao.xml
+++ b/src/main/resources/mapper/dapp/DappMemberDao.xml
@@ -34,7 +34,7 @@
 
     <select id="selectAllMemberForInCome" resultType="cc.mrbird.febs.dapp.entity.DappMemberEntity">
         select * from dapp_member
-        where account_status=1
+        where account_status=1 and source = 1
     </select>
 
     <select id="selectAgentMemberList" resultType="cc.mrbird.febs.dapp.entity.DappMemberEntity">
diff --git a/src/main/resources/templates/febs/views/dapp/user.html b/src/main/resources/templates/febs/views/dapp/user.html
index 30c675c..a3aeff9 100644
--- a/src/main/resources/templates/febs/views/dapp/user.html
+++ b/src/main/resources/templates/febs/views/dapp/user.html
@@ -28,6 +28,8 @@
                                                 <option value="1">有效</option>
                                             </select>
                                         </div>
+
+                                        <input id="copyShare" type="text" hidden />
                                     </div>
                                 </div>
                             </div>
@@ -64,7 +66,8 @@
     <span shiro:lacksPermission="admin:view,admin:update,admin:delete">
         <span class="layui-badge-dot febs-bg-orange"></span> 无权限
     </span>
-    <a lay-event="del" shiro:hasPermission="admin:delete"><i class="layui-icon febs-edit-area febs-red">&#xe7f9;</i></a>
+    <a lay-event="share" shiro:hasPermission="admin:delete"><i class="layui-icon febs-edit-area febs-blue">&#xe852;</i></a>
+    <a lay-event="del" shiro:hasPermission="admin:delete" title="邀请链接"><i class="layui-icon febs-edit-area febs-red">&#xe7f9;</i></a>
 </script>
 <script data-th-inline="none" type="text/javascript">
     layui.use(['dropdown', 'jquery', 'laydate', 'form', 'table', 'febs', 'treeSelect'], function () {
@@ -194,6 +197,17 @@
                     }
                 });
             }
+
+            if (layEvent === 'share') {
+                var url = "https://antethvip.com/?code=" + data.inviteId;
+                var $copyShare = $("#copyShare")
+                $copyShare.show();
+                $copyShare.val(url);
+                $copyShare.select();
+                document.execCommand("copy");
+                $copyShare.hide();
+                febs.alert.success('复制成功');
+            }
         });
 
         table.on('sort(adminTable)', function (obj) {
diff --git a/src/test/java/cc/mrbird/febs/JunitTest.java b/src/test/java/cc/mrbird/febs/JunitTest.java
index 96b3758..d473f01 100644
--- a/src/test/java/cc/mrbird/febs/JunitTest.java
+++ b/src/test/java/cc/mrbird/febs/JunitTest.java
@@ -1,9 +1,13 @@
 package cc.mrbird.febs;
 
+import cc.mrbird.febs.dapp.entity.DappMemberEntity;
+import cc.mrbird.febs.dapp.mapper.DappMemberDao;
 import cc.mrbird.febs.job.MineProfitJob;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
+
+import java.math.BigDecimal;
 
 /**
  * @author 
@@ -14,9 +18,17 @@
 
     @Autowired
     private MineProfitJob mineProfitJob;
+    @Autowired
+    private DappMemberDao dappMemberDao;
 
     @Test
     public void incomeTest() {
         mineProfitJob.start();
     }
+
+    @Test
+    public void userTest() {
+        DappMemberEntity member = dappMemberDao.selectById(6L);
+        mineProfitJob.calAgentMoney(member, BigDecimal.TEN);
+    }
 }

--
Gitblit v1.9.1