From 6ac0aeeea8834ad234623a321a64504a998c05d7 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Mon, 14 Nov 2022 17:34:52 +0800
Subject: [PATCH] 20221114,按日期查看资产

---
 src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java            |    3 
 src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java   |   14 +
 src/main/resources/application-prod.yml                                     |    2 
 src/main/java/cc/mrbird/febs/dapp/vo/AdminMemberChargeVo.java               |   13 
 src/main/java/cc/mrbird/febs/dapp/mapper/DappAccountMoneyChangeDao.java     |    3 
 src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java            |    4 
 src/main/resources/mapper/dapp/DappMemberDao.xml                            |   28 ++
 src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java                 |   10 
 src/main/java/cc/mrbird/febs/dapp/controller/MemberMoneyFlowController.java |    9 
 src/test/java/cc/mrbird/febs/ChainTest.java                                 |   16 
 src/main/java/cc/mrbird/febs/dapp/controller/MemberController.java          |   36 ++
 src/main/resources/templates/febs/views/dapp/money-total.html               |  121 ++++++++
 src/main/java/cc/mrbird/febs/dapp/entity/MemberCoinChargeEntity.java        |    6 
 src/main/resources/templates/febs/views/dapp/money-total-flow-out.html      |   62 ++++
 src/main/java/cc/mrbird/febs/dapp/controller/ViewController.java            |   38 ++
 src/main/java/cc/mrbird/febs/dapp/vo/AdminMemberWithdrawVo.java             |   13 
 src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java   |   28 +
 src/main/resources/templates/febs/views/dapp/money-total-flow.html          |   42 +++
 src/main/resources/mapper/dapp/DappAccountMoneyChangeDao.xml                |   34 ++
 src/main/java/cc/mrbird/febs/dapp/mapper/MemberCoinChargeDao.java           |    3 
 src/test/java/cc/mrbird/febs/JunitTest.java                                 |  274 +++++++++---------
 src/main/java/cc/mrbird/febs/dapp/vo/AdminMoneyTotalVo.java                 |   24 +
 src/main/resources/mapper/dapp/MemberCoinChargeDao.xml                      |   20 +
 src/main/java/cc/mrbird/febs/dapp/entity/MemberCoinWithdrawEntity.java      |    3 
 src/main/java/cc/mrbird/febs/dapp/mapper/MemberCoinWithdrawDao.java         |    5 
 src/main/resources/mapper/dapp/MemberCoinWithdrawMapper.xml                 |   21 +
 26 files changed, 679 insertions(+), 153 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/dapp/controller/MemberController.java b/src/main/java/cc/mrbird/febs/dapp/controller/MemberController.java
index f56cb52..97483c9 100644
--- a/src/main/java/cc/mrbird/febs/dapp/controller/MemberController.java
+++ b/src/main/java/cc/mrbird/febs/dapp/controller/MemberController.java
@@ -12,6 +12,8 @@
 import cc.mrbird.febs.dapp.service.DappMemberService;
 import cc.mrbird.febs.dapp.service.DappSystemService;
 import cc.mrbird.febs.dapp.vo.AdminMemberIdentityVo;
+import cc.mrbird.febs.system.entity.User;
+import cn.hutool.core.util.ObjectUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.ibatis.annotations.Param;
@@ -240,4 +242,38 @@
         Map<String, Object> data = getDataTable(dappMemberService.getMessageListInPage(dappMessageEntity, request));
         return new FebsResponse().success().data(data);
     }
+
+    /**
+     * 每日资产总览-充值列表
+     */
+    @GetMapping("getFlowListByDay")
+    public FebsResponse getFlowListByDay(MemberCoinChargeEntity memberCoinChargeEntity, QueryRequest request, Integer parentId) {
+        if (parentId == null) {
+            ViewController.createTimeStr = "";
+        }
+        User currentUser = FebsUtil.getCurrentUser();
+        if(ObjectUtil.isNotEmpty(currentUser.getDescription())){
+            memberCoinChargeEntity.setDescription(currentUser.getDescription());
+        }
+        memberCoinChargeEntity.setCreateTimeStr(ViewController.createTimeStr);
+        Map<String, Object> data = getDataTable(dappMemberService.getFlowListByDay(memberCoinChargeEntity,request));
+        return new FebsResponse().success().data(data);
+    }
+
+    /**
+     * 每日资产总览-提现列表
+     */
+    @GetMapping("getOutFlowListByDay")
+    public FebsResponse getOutFlowListByDay(MemberCoinWithdrawEntity memberCoinWithdrawEntity, QueryRequest request, Integer parentId) {
+        if (parentId == null) {
+            ViewController.createTimeStr = "";
+        }
+        User currentUser = FebsUtil.getCurrentUser();
+        if(ObjectUtil.isNotEmpty(currentUser.getDescription())){
+            memberCoinWithdrawEntity.setDescription(currentUser.getDescription());
+        }
+        memberCoinWithdrawEntity.setCreateTimeStr(ViewController.createTimeStr);
+        Map<String, Object> data = getDataTable(dappMemberService.getOutFlowListByDay(memberCoinWithdrawEntity,request));
+        return new FebsResponse().success().data(data);
+    }
 }
diff --git a/src/main/java/cc/mrbird/febs/dapp/controller/MemberMoneyFlowController.java b/src/main/java/cc/mrbird/febs/dapp/controller/MemberMoneyFlowController.java
index c292801..ccdabaf 100644
--- a/src/main/java/cc/mrbird/febs/dapp/controller/MemberMoneyFlowController.java
+++ b/src/main/java/cc/mrbird/febs/dapp/controller/MemberMoneyFlowController.java
@@ -59,4 +59,13 @@
         }
         return new FebsResponse().success().data(getDataTable(dappWalletService.accountMoneyChangeInPage(record, request)));
     }
+
+    @RequestMapping(value = "moneyTotal")
+    public FebsResponse moneyTotal(DappAccountMoneyChangeEntity record, QueryRequest request) {
+        User currentUser = FebsUtil.getCurrentUser();
+        if(ObjectUtil.isNotEmpty(currentUser.getDescription())){
+            record.setDescription(currentUser.getDescription());
+        }
+        return new FebsResponse().success().data(getDataTable(dappWalletService.moneyTotal(record, request)));
+    }
 }
diff --git a/src/main/java/cc/mrbird/febs/dapp/controller/ViewController.java b/src/main/java/cc/mrbird/febs/dapp/controller/ViewController.java
index a168847..c51b7c4 100644
--- a/src/main/java/cc/mrbird/febs/dapp/controller/ViewController.java
+++ b/src/main/java/cc/mrbird/febs/dapp/controller/ViewController.java
@@ -6,6 +6,7 @@
 import cc.mrbird.febs.common.utils.RedisUtils;
 import cc.mrbird.febs.dapp.entity.AppVersion;
 import cc.mrbird.febs.dapp.entity.DappMemberEntity;
+import cc.mrbird.febs.dapp.entity.IgtOnHookPlanOrder;
 import cc.mrbird.febs.dapp.mapper.DappMemberDao;
 import cc.mrbird.febs.dapp.service.DappMemberService;
 import lombok.RequiredArgsConstructor;
@@ -227,4 +228,41 @@
         return FebsUtil.view("dapp/message-list");
     }
 
+    /**
+     * 每日资产总览-列表
+     * @return
+     */
+    @GetMapping("moneyTotal")
+    @RequiresPermissions("moneyTotal:view")
+    public String moneyTotal() {
+        return FebsUtil.view("dapp/money-total");
+    }
+
+    /**
+     * 每日资产总览-充值详情
+     * @param createTime
+     * @param model
+     * @return
+     */
+    public static String createTimeStr;
+    @GetMapping("/amountFlow/{createTime}")
+    @RequiresPermissions("amountFlow:update")
+    public String amountFlow(@PathVariable String createTime, Model model) {
+        createTimeStr = createTime;
+        return FebsUtil.view("dapp/money-total-flow");
+    }
+
+    /**
+     * 每日资产总览-提现详情
+     * @param createTime
+     * @param model
+     * @return
+     */
+    @GetMapping("/amountOutFlow/{createTime}")
+    @RequiresPermissions("amountOutFlow:update")
+    public String amountOutFlow(@PathVariable String createTime, Model model) {
+        createTimeStr = createTime;
+        return FebsUtil.view("dapp/money-total-flow-out");
+    }
+
 }
diff --git a/src/main/java/cc/mrbird/febs/dapp/entity/MemberCoinChargeEntity.java b/src/main/java/cc/mrbird/febs/dapp/entity/MemberCoinChargeEntity.java
index ca457bf..f3c1b88 100644
--- a/src/main/java/cc/mrbird/febs/dapp/entity/MemberCoinChargeEntity.java
+++ b/src/main/java/cc/mrbird/febs/dapp/entity/MemberCoinChargeEntity.java
@@ -40,4 +40,10 @@
      */
     @TableField(exist = false)
     private String username;
+
+    @TableField(exist = false)
+    private String createTimeStr;
+
+    @TableField(exist = false)
+    private String description;
 }
diff --git a/src/main/java/cc/mrbird/febs/dapp/entity/MemberCoinWithdrawEntity.java b/src/main/java/cc/mrbird/febs/dapp/entity/MemberCoinWithdrawEntity.java
index 91c931b..a8aff3b 100644
--- a/src/main/java/cc/mrbird/febs/dapp/entity/MemberCoinWithdrawEntity.java
+++ b/src/main/java/cc/mrbird/febs/dapp/entity/MemberCoinWithdrawEntity.java
@@ -63,6 +63,9 @@
 
     @TableField(exist = false)
     private String username;
+
+    @TableField(exist = false)
+    private String createTimeStr;
     
     
 
diff --git a/src/main/java/cc/mrbird/febs/dapp/mapper/DappAccountMoneyChangeDao.java b/src/main/java/cc/mrbird/febs/dapp/mapper/DappAccountMoneyChangeDao.java
index 9d4022e..2bb0894 100644
--- a/src/main/java/cc/mrbird/febs/dapp/mapper/DappAccountMoneyChangeDao.java
+++ b/src/main/java/cc/mrbird/febs/dapp/mapper/DappAccountMoneyChangeDao.java
@@ -2,6 +2,7 @@
 
 import cc.mrbird.febs.dapp.dto.ApiAmountChangeDto;
 import cc.mrbird.febs.dapp.entity.DappAccountMoneyChangeEntity;
+import cc.mrbird.febs.dapp.vo.AdminMoneyTotalVo;
 import cc.mrbird.febs.dapp.vo.ApiAmountChangeListVo;
 import cc.mrbird.febs.dapp.vo.ApiMyTeammateAmountChangeListVo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -16,4 +17,6 @@
     IPage<ApiAmountChangeListVo> selectChangeListInPage(Page<ApiAmountChangeListVo> page, @Param("record") DappAccountMoneyChangeEntity dappAccountMoneyChangeEntity);
 
     IPage<ApiMyTeammateAmountChangeListVo> selectTeammateChangeListInPage(@Param("record")ApiAmountChangeDto apiAmountChangeDto, Page<ApiMyTeammateAmountChangeListVo> page);
+
+    IPage<AdminMoneyTotalVo> selectMoneyTotalInPage(@Param("record")DappAccountMoneyChangeEntity record, Page<DappAccountMoneyChangeEntity> page);
 }
diff --git a/src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java b/src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java
index 7a5fa6e..40681ef 100644
--- a/src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java
+++ b/src/main/java/cc/mrbird/febs/dapp/mapper/DappMemberDao.java
@@ -3,10 +3,8 @@
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.dapp.dto.ApiMyTeammateInfoDto;
 import cc.mrbird.febs.dapp.dto.TeamListDto;
-import cc.mrbird.febs.dapp.entity.AppVersion;
-import cc.mrbird.febs.dapp.entity.DappMemberEntity;
-import cc.mrbird.febs.dapp.entity.DappMessageEntity;
-import cc.mrbird.febs.dapp.entity.MemberCoinChargeEntity;
+import cc.mrbird.febs.dapp.entity.*;
+import cc.mrbird.febs.dapp.vo.AdminMemberCoinWithdrawVo;
 import cc.mrbird.febs.dapp.vo.ApiMyTeammateInfoListVo;
 import cc.mrbird.febs.dapp.vo.TeamListVo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -76,4 +74,8 @@
     List<DappMemberEntity> selectTotalMemberByRefererIdAndIdentity(@Param("inviteId")String inviteId);
 
     IPage<DappMessageEntity> selectMessageListInPage(@Param("record")DappMessageEntity dappMessageEntity, Page<DappMemberEntity> page);
+
+    IPage<MemberCoinChargeEntity> getChargeListByDayInPage(Page<MemberCoinChargeEntity> page, @Param("record")MemberCoinChargeEntity memberCoinChargeEntity);
+
+    IPage<AdminMemberCoinWithdrawVo> getWithDrawListByDayInPage(Page<AdminMemberCoinWithdrawVo> page,  @Param("record")MemberCoinWithdrawEntity memberCoinWithdrawEntity);
 }
diff --git a/src/main/java/cc/mrbird/febs/dapp/mapper/MemberCoinChargeDao.java b/src/main/java/cc/mrbird/febs/dapp/mapper/MemberCoinChargeDao.java
index 29b7be8..2164dd9 100644
--- a/src/main/java/cc/mrbird/febs/dapp/mapper/MemberCoinChargeDao.java
+++ b/src/main/java/cc/mrbird/febs/dapp/mapper/MemberCoinChargeDao.java
@@ -1,11 +1,13 @@
 package cc.mrbird.febs.dapp.mapper;
 
 import cc.mrbird.febs.dapp.entity.MemberCoinChargeEntity;
+import cc.mrbird.febs.dapp.vo.AdminMemberChargeVo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Date;
 import java.util.List;
 
 public interface MemberCoinChargeDao extends BaseMapper<MemberCoinChargeEntity> {
@@ -17,4 +19,5 @@
 	public IPage<MemberCoinChargeEntity> findMemberCoinChargeInPage(Page<MemberCoinChargeEntity> page,
 			@Param("record")MemberCoinChargeEntity memberCoinChargeEntity);
 
+    AdminMemberChargeVo selectTotalAmountByCreateTimeAndInviteId(@Param("createTime") Date createTime, @Param("description") String description);
 }
diff --git a/src/main/java/cc/mrbird/febs/dapp/mapper/MemberCoinWithdrawDao.java b/src/main/java/cc/mrbird/febs/dapp/mapper/MemberCoinWithdrawDao.java
index 02e4119..faee9d5 100644
--- a/src/main/java/cc/mrbird/febs/dapp/mapper/MemberCoinWithdrawDao.java
+++ b/src/main/java/cc/mrbird/febs/dapp/mapper/MemberCoinWithdrawDao.java
@@ -2,14 +2,19 @@
 
 import cc.mrbird.febs.dapp.entity.MemberCoinWithdrawEntity;
 import cc.mrbird.febs.dapp.vo.AdminMemberCoinWithdrawVo;
+import cc.mrbird.febs.dapp.vo.AdminMemberWithdrawVo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Param;
+
+import java.util.Date;
 
 public interface MemberCoinWithdrawDao extends BaseMapper<MemberCoinWithdrawEntity> {
 
     IPage<AdminMemberCoinWithdrawVo> findMemberWithdrawCoinInPage(Page<MemberCoinWithdrawEntity> page, @Param("record")MemberCoinWithdrawEntity memberCoinWithdrawEntity);
 
     Integer selectByMemberIdAndCreateTime(@Param("memberId")Long memberIdOut, @Param("createTime")String createTime, @Param("type")String type);
+
+    AdminMemberWithdrawVo selectTotalAmountByCreateTimeAndInviteId(@Param("createTime") Date createTime, @Param("description") String description);
 }
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java b/src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java
index d874661..7664c7f 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/DappMemberService.java
@@ -108,4 +108,8 @@
     FebsResponse addMessage(AddMessageDto addMessageDto);
 
     IPage<DappMessageEntity> getMessageListInPage(DappMessageEntity dappMessageEntity, QueryRequest request);
+
+    IPage<MemberCoinChargeEntity> getFlowListByDay(MemberCoinChargeEntity memberCoinChargeEntity, QueryRequest request);
+
+    IPage<AdminMemberCoinWithdrawVo> getOutFlowListByDay(MemberCoinWithdrawEntity memberCoinWithdrawEntity, QueryRequest request);
 }
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java b/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java
index c2f8218..e1af962 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/DappWalletService.java
@@ -8,6 +8,7 @@
 import cc.mrbird.febs.dapp.entity.DappWalletCoinEntity;
 import cc.mrbird.febs.dapp.entity.DappWalletMineEntity;
 import cc.mrbird.febs.dapp.vo.ActiveNftListVo;
+import cc.mrbird.febs.dapp.vo.AdminMoneyTotalVo;
 import cc.mrbird.febs.dapp.vo.WalletInfoVo;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 
@@ -76,4 +77,6 @@
      * 判断是否中奖
      */
     Integer isGoal(String num);
+
+    IPage<AdminMoneyTotalVo> moneyTotal(DappAccountMoneyChangeEntity record, QueryRequest request);
 }
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
index 56e38e0..6398996 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappMemberServiceImpl.java
@@ -1078,6 +1078,20 @@
         return dappMemberDao.selectMessageListInPage(dappMessageEntity, page);
     }
 
+    @Override
+    public IPage<MemberCoinChargeEntity> getFlowListByDay(MemberCoinChargeEntity memberCoinChargeEntity, QueryRequest request) {
+        Page<MemberCoinChargeEntity> page = new Page<>(request.getPageNum(), request.getPageSize());
+        IPage<MemberCoinChargeEntity> memberCoinChargeEntityIPage = this.baseMapper.getChargeListByDayInPage(page, memberCoinChargeEntity);
+        return memberCoinChargeEntityIPage;
+    }
+
+    @Override
+    public IPage<AdminMemberCoinWithdrawVo> getOutFlowListByDay(MemberCoinWithdrawEntity memberCoinWithdrawEntity, QueryRequest request) {
+        Page<AdminMemberCoinWithdrawVo> page = new Page<>(request.getPageNum(), request.getPageSize());
+        IPage<AdminMemberCoinWithdrawVo> adminMemberCoinWithdrawVos = this.baseMapper.getWithDrawListByDayInPage(page, memberCoinWithdrawEntity);
+        return adminMemberCoinWithdrawVos;
+    }
+
     public String generateAsaToken(String token) {
         RSA rsa = new RSA(null, AppContants.PUBLIC_KEY);
         return rsa.encryptBase64(token + "_" + System.currentTimeMillis(), KeyType.PublicKey);
diff --git a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java
index 931ef7a..5e0f05a 100644
--- a/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/dapp/service/impl/DappWalletServiceImpl.java
@@ -19,9 +19,7 @@
 import cc.mrbird.febs.dapp.service.DappSystemService;
 import cc.mrbird.febs.dapp.service.DappWalletService;
 import cc.mrbird.febs.dapp.utils.BoxUtil;
-import cc.mrbird.febs.dapp.vo.ActiveNftListVo;
-import cc.mrbird.febs.dapp.vo.ApiMemberWalletCoinVo;
-import cc.mrbird.febs.dapp.vo.WalletInfoVo;
+import cc.mrbird.febs.dapp.vo.*;
 import cc.mrbird.febs.rabbit.producer.UsdtUpdateProducer;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateField;
@@ -1252,6 +1250,30 @@
         }
     }
 
+    private final MemberCoinChargeDao memberCoinChargeDao;
+
+    @Override
+    public IPage<AdminMoneyTotalVo> moneyTotal(DappAccountMoneyChangeEntity record, QueryRequest request) {
+        Page<DappAccountMoneyChangeEntity> page = new Page<>(request.getPageNum(), request.getPageSize());
+        //获取充值提现的所有日期
+        IPage<AdminMoneyTotalVo> adminMoneyTotalVoIPage = dappAccountMoneyChangeDao.selectMoneyTotalInPage(record, page);
+        List<AdminMoneyTotalVo> records = adminMoneyTotalVoIPage.getRecords();
+        if(CollUtil.isNotEmpty(records)){
+            for(AdminMoneyTotalVo adminMoneyTotalVo : records){
+                Date createTime = adminMoneyTotalVo.getCreateTime();
+                //每日充值统计
+                AdminMemberChargeVo adminMemberChargeVos = memberCoinChargeDao.selectTotalAmountByCreateTimeAndInviteId(createTime,record.getDescription());
+                adminMoneyTotalVo.setTotalCharge(adminMemberChargeVos.getTotalCharge().setScale(2,BigDecimal.ROUND_DOWN));
+                adminMoneyTotalVo.setSheetIn(adminMemberChargeVos.getSheetIn());
+                //每日提现统计
+                AdminMemberWithdrawVo adminMemberWithdrawVo = memberCoinWithdrawDao.selectTotalAmountByCreateTimeAndInviteId(createTime,record.getDescription());
+                adminMoneyTotalVo.setTotalWithdraw(adminMemberWithdrawVo.getTotalWithdraw().setScale(2,BigDecimal.ROUND_DOWN));
+                adminMoneyTotalVo.setSheetOut(adminMemberWithdrawVo.getSheetOut());
+            }
+        }
+        return adminMoneyTotalVoIPage;
+    }
+
     public static void main(String[] args) {
 
         DateTime date = DateUtil.date();
diff --git a/src/main/java/cc/mrbird/febs/dapp/vo/AdminMemberChargeVo.java b/src/main/java/cc/mrbird/febs/dapp/vo/AdminMemberChargeVo.java
new file mode 100644
index 0000000..44d84d6
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/vo/AdminMemberChargeVo.java
@@ -0,0 +1,13 @@
+package cc.mrbird.febs.dapp.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class AdminMemberChargeVo {
+
+    private BigDecimal totalCharge;
+
+    private Integer sheetIn;
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/vo/AdminMemberWithdrawVo.java b/src/main/java/cc/mrbird/febs/dapp/vo/AdminMemberWithdrawVo.java
new file mode 100644
index 0000000..16746c9
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/vo/AdminMemberWithdrawVo.java
@@ -0,0 +1,13 @@
+package cc.mrbird.febs.dapp.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class AdminMemberWithdrawVo {
+
+    private BigDecimal totalWithdraw;
+
+    private Integer sheetOut;
+}
diff --git a/src/main/java/cc/mrbird/febs/dapp/vo/AdminMoneyTotalVo.java b/src/main/java/cc/mrbird/febs/dapp/vo/AdminMoneyTotalVo.java
new file mode 100644
index 0000000..0457243
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/dapp/vo/AdminMoneyTotalVo.java
@@ -0,0 +1,24 @@
+package cc.mrbird.febs.dapp.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+public class AdminMoneyTotalVo {
+    //每日充值
+    private BigDecimal totalCharge;
+    //每日充值次数
+    private Integer sheetIn;
+
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date createTime;
+
+    //每日提现
+    private BigDecimal totalWithdraw;
+
+    //每日提现次数
+    private Integer sheetOut;
+}
diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml
index 700b3a8..9de4699 100644
--- a/src/main/resources/application-prod.yml
+++ b/src/main/resources/application-prod.yml
@@ -2,7 +2,7 @@
   datasource:
     dynamic:
       # 是否开启 SQL日志输出,生产环境建议关闭,有性能损耗
-      p6spy: false
+      p6spy: true
       hikari:
         connection-timeout: 30000
         max-lifetime: 1800000
diff --git a/src/main/resources/mapper/dapp/DappAccountMoneyChangeDao.xml b/src/main/resources/mapper/dapp/DappAccountMoneyChangeDao.xml
index 546f861..5688825 100644
--- a/src/main/resources/mapper/dapp/DappAccountMoneyChangeDao.xml
+++ b/src/main/resources/mapper/dapp/DappAccountMoneyChangeDao.xml
@@ -63,4 +63,38 @@
         order by a.create_time desc
     </select>
 
+    <select id="selectMoneyTotalInPage" resultType="cc.mrbird.febs.dapp.vo.AdminMoneyTotalVo">
+        SELECT
+        *
+        FROM
+        (
+        SELECT
+        date_format(create_time, '%Y-%m-%d') createTime
+        FROM
+        member_coin_charge
+        <where>
+            <if test="record.description!=null and record.description!=''">
+                and (member_id in (select id from dapp_member where FIND_IN_SET(#{record.description}, referer_ids)))
+            </if>
+        </where>
+        GROUP BY
+        date_format(create_time, '%Y-%m-%d')
+        UNION
+        SELECT
+        date_format(create_time, '%Y-%m-%d') createTime
+        FROM
+        member_coin_withdraw
+        <where>
+        is_inside = 'N'
+            <if test="record.description!=null and record.description!=''">
+                and (member_id in (select id from dapp_member where FIND_IN_SET(#{record.description}, referer_ids)))
+            </if>
+        </where>
+        GROUP BY
+        date_format(create_time, '%Y-%m-%d')
+        ) as a
+        ORDER BY
+        a.createTime DESC
+    </select>
+
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/dapp/DappMemberDao.xml b/src/main/resources/mapper/dapp/DappMemberDao.xml
index e49b10a..1b64d91 100644
--- a/src/main/resources/mapper/dapp/DappMemberDao.xml
+++ b/src/main/resources/mapper/dapp/DappMemberDao.xml
@@ -289,4 +289,32 @@
         </where>
         order  by create_time desc
     </select>
+
+    <select id="getChargeListByDayInPage" resultType="cc.mrbird.febs.dapp.entity.MemberCoinChargeEntity">
+        select
+        a.*,b.username username
+        from member_coin_charge a
+        left join dapp_member b on b.id = a.member_id
+        <where>
+            date_format(a.create_time, '%Y-%m-%d')  = #{record.createTimeStr}
+            <if test="record.description!=null and record.description!=''">
+                and (a.member_id in (select id from dapp_member where FIND_IN_SET(#{record.description}, referer_ids)))
+            </if>
+        </where>
+        order  by a.create_time desc
+    </select>
+
+    <select id="getWithDrawListByDayInPage" resultType="cc.mrbird.febs.dapp.vo.AdminMemberCoinWithdrawVo">
+        select
+        a.*,b.username username
+        from member_coin_withdraw a
+        left join dapp_member b on b.id = a.member_id
+        <where>
+            date_format(a.create_time, '%Y-%m-%d')  = #{record.createTimeStr}
+            <if test="record.description!=null and record.description!=''">
+                and (a.member_id in (select id from dapp_member where FIND_IN_SET(#{record.description}, referer_ids)))
+            </if>
+        </where>
+        order  by a.create_time desc
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/dapp/MemberCoinChargeDao.xml b/src/main/resources/mapper/dapp/MemberCoinChargeDao.xml
index db21548..1c2f0aa 100644
--- a/src/main/resources/mapper/dapp/MemberCoinChargeDao.xml
+++ b/src/main/resources/mapper/dapp/MemberCoinChargeDao.xml
@@ -29,4 +29,24 @@
 		</if>
 	</select>
 
+	<select id="selectTotalAmountByCreateTimeAndInviteId" resultType="cc.mrbird.febs.dapp.vo.AdminMemberChargeVo">
+		SELECT
+			IFNULL(sum(amount),0) AS totalCharge,
+			count(id) AS sheetIn
+		FROM
+			member_coin_charge
+		WHERE
+		date_format(create_time, '%Y-%m-%d')  = date_format(#{createTime}, '%Y-%m-%d')
+		<if test="description !=null and description != ''">
+			and member_id IN (
+			SELECT
+			id
+			FROM
+			dapp_member
+			WHERE
+			FIND_IN_SET(#{description}, referer_ids)
+			)
+		</if>
+	</select>
+
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/dapp/MemberCoinWithdrawMapper.xml b/src/main/resources/mapper/dapp/MemberCoinWithdrawMapper.xml
index 477ea42..5d363bd 100644
--- a/src/main/resources/mapper/dapp/MemberCoinWithdrawMapper.xml
+++ b/src/main/resources/mapper/dapp/MemberCoinWithdrawMapper.xml
@@ -39,4 +39,25 @@
             and a.is_inside = #{type}
     </select>
 
+    <select id="selectTotalAmountByCreateTimeAndInviteId" resultType="cc.mrbird.febs.dapp.vo.AdminMemberWithdrawVo">
+        SELECT
+            IFNULL(sum(amount),0) AS totalWithdraw,
+            count(id) AS sheetOut
+        FROM
+            member_coin_withdraw
+        WHERE
+        date_format(create_time, '%Y-%m-%d') = date_format(#{createTime}, '%Y-%m-%d')
+        <if test="description !=null and description != ''">
+            and member_id IN (
+            SELECT
+            id
+            FROM
+            dapp_member
+            WHERE
+            FIND_IN_SET(#{description}, referer_ids)
+            )
+        </if>
+
+    </select>
+
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/dapp/money-total-flow-out.html b/src/main/resources/templates/febs/views/dapp/money-total-flow-out.html
new file mode 100644
index 0000000..3a2c214
--- /dev/null
+++ b/src/main/resources/templates/febs/views/dapp/money-total-flow-out.html
@@ -0,0 +1,62 @@
+<div className="layui-fluid layui-anim febs-anim" id="febs-money-total-out-child" lay-title="每日提现">
+    <div className="layui-row febs-container">
+        <div className="layui-col-md12">
+            <div className="layui-card">
+                <div className="layui-card-body febs-table-full">
+                    <table lay-filter="moneyTotalTableOutChild" lay-data="{id: 'moneyTotalTableOutChild'}"></table>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script data-th-inline="none" type="text/javascript">
+    layui.use(['jquery', 'form', 'table', 'febs'], function () {
+        var $ = layui.jquery,
+            febs = layui.febs,
+            form = layui.form,
+            table = layui.table,
+            $view = $('#febs-money-total-out-child'),
+            tableIns;
+
+        form.render();
+
+        initTable();
+
+        function initTable() {
+            tableIns = febs.table.init({
+                elem: $view.find('table'),
+                id: 'moneyTotalTableOutChild',
+                url: ctx + 'member/getOutFlowListByDay?parentId=1',
+                cols: [[
+                    {field: 'username', title: '用户名', minWidth: 120, align: 'left'},
+                    {field: 'amount', title: '提币数量', minWidth: 120, align: 'center'},
+                    {field: 'feeAmount', title: '手续费', minWidth: 120, align: 'center'},
+                    {field: 'status', title: '状态',
+                        templet: function (d) {
+                            if (d.status === 1) {
+                                return '<span>进行中</span>'
+                            } else if (d.status === 2) {
+                                return '<span>同意</span>'
+                            }else if (d.status === 3) {
+                                return '<span>拒绝</span>'
+                            }else{
+                                return ''
+                            }
+                        }, minWidth: 120, align: 'center'},
+                    {field: 'address', title: '提币地址',
+                        templet: function (d) {
+                            if (d.isInside === 'Y') {
+                                return ''
+                            } else if (d.isInside === 'N') {
+                                return '<span>('+d.tag+')'+d.address+'</span>'
+                            }else{
+                                return ''
+                            }
+                        }, minWidth: 300, align: 'center'},
+                    {field: 'createTime', title: '提币时间', minWidth: 180, align: 'center'},
+                ]]
+            });
+        }
+
+    })
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/dapp/money-total-flow.html b/src/main/resources/templates/febs/views/dapp/money-total-flow.html
new file mode 100644
index 0000000..9bdbd81
--- /dev/null
+++ b/src/main/resources/templates/febs/views/dapp/money-total-flow.html
@@ -0,0 +1,42 @@
+<div className="layui-fluid layui-anim febs-anim" id="febs-money-total-child" lay-title="每日充值">
+    <div className="layui-row febs-container">
+        <div className="layui-col-md12">
+            <div className="layui-card">
+                <div className="layui-card-body febs-table-full">
+                    <table lay-filter="moneyTotalTableChild" lay-data="{id: 'moneyTotalTableChild'}"></table>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script data-th-inline="none" type="text/javascript">
+    layui.use(['jquery', 'form', 'table', 'febs'], function () {
+        var $ = layui.jquery,
+            febs = layui.febs,
+            form = layui.form,
+            table = layui.table,
+            $view = $('#febs-money-total-child'),
+            tableIns;
+
+        form.render();
+
+        initTable();
+
+        function initTable() {
+            tableIns = febs.table.init({
+                elem: $view.find('table'),
+                id: 'moneyTotalTableChild',
+                url: ctx + 'member/getFlowListByDay?parentId=1',
+                cols: [[
+                    {field: 'username', title: '用户名', minWidth: 130},
+                    {field: 'amount', title: '充值金额(USDT)', minWidth: 130},
+                    {field: 'symbol', title: '币种', minWidth: 130},
+                    {field: 'address', title: '地址', minWidth: 130},
+                    {field: 'createTime', title: '创建时间', minWidth: 180},
+                    {field: 'hash', title: '交易hash', minWidth: 130}
+                ]]
+            });
+        }
+
+    })
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/dapp/money-total.html b/src/main/resources/templates/febs/views/dapp/money-total.html
new file mode 100644
index 0000000..db8715d
--- /dev/null
+++ b/src/main/resources/templates/febs/views/dapp/money-total.html
@@ -0,0 +1,121 @@
+<div class="layui-fluid layui-anim febs-anim" id="febs-money-total" lay-title="每日资产总览">
+    <div class="layui-row febs-container">
+        <div class="layui-col-md12">
+            <div class="layui-card">
+                <div class="layui-card-body febs-table-full">
+                    <form class="layui-form layui-table-form" lay-filter="money-change-table-form">
+                        <div class="layui-row">
+                            <div class="layui-col-md10">
+                                <div class="layui-form-item">
+                                </div>
+                            </div>
+                            <div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area">
+                            </div>
+                        </div>
+                    </form>
+                    <table lay-filter="moneyTotalTable" lay-data="{id: 'moneyTotalTable'}"></table>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<style>
+    .layui-table-cell {
+        height: auto !important;
+    }
+</style>
+<script data-th-inline="none" type="text/javascript">
+    layui.use(['dropdown', 'jquery', 'laydate', 'form', 'table', 'febs', 'treeSelect'], function () {
+        var $ = layui.jquery,
+            laydate = layui.laydate,
+            febs = layui.febs,
+            form = layui.form,
+            table = layui.table,
+            dropdown = layui.dropdown,
+            $view = $('#febs-money-total'),
+            $query = $view.find('#query'),
+            $reset = $view.find('#reset'),
+            $searchForm = $view.find('form'),
+            sortObject = {field: 'createTime', type: null},
+            tableIns;
+
+        form.render();
+
+        initTable();
+
+        table.on('tool(moneyTotalTable)', function (obj) {
+            var data = obj.data,
+                layEvent = obj.event;
+
+            if (layEvent === 'sheetIn') {
+                febs.modal.open( '每日充值', 'dappView/amountFlow/' + data.createTime, {
+                    maxmin: true,
+                });
+            }
+
+            if (layEvent === 'sheetOut') {
+                febs.modal.open( '每日提现', 'dappView/amountOutFlow/' + data.createTime, {
+                    maxmin: true,
+                });
+            }
+        });
+
+        table.on('sort(moneyTotalTable)', function (obj) {
+            sortObject = obj;
+            tableIns.reload({
+                initSort: obj,
+                where: $.extend(getQueryParams(), {
+                    field: obj.field,
+                    order: obj.type
+                })
+            });
+        });
+
+        $query.on('click', function () {
+            var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type});
+            tableIns.reload({where: params, page: {curr: 1}});
+        });
+
+        $reset.on('click', function () {
+            $searchForm[0].reset();
+            tableIns.reload({where: getQueryParams(), page: {curr: 1}, initSort: sortObject});
+        });
+
+        function initTable() {
+            tableIns = febs.table.init({
+                elem: $view.find('table'),
+                id: 'moneyTotalTable',
+                url: ctx + 'flow/moneyTotal',
+                cols: [[
+                    {field: 'createTime', title: '日期', minWidth: 100},
+                    {field: 'totalCharge', title: '充值总额', minWidth: 100},
+                    {title: '充值次数',
+                        templet: function (d) {
+                            if(d.sheetIn > 0){
+                                return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="sheetIn" shiro:hasPermission="amountFlow:update">'+d.sheetIn+'次</button>'
+                            }else{
+                                return d.sheetIn;
+                            }
+                        },minWidth: 100,align:'center'},
+                    {field: 'totalWithdraw', title: '提现总额', minWidth: 100},
+                    {title: '提现次数',
+                        templet: function (d) {
+                            if(d.sheetOut > 0){
+                                return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="sheetOut" shiro:hasPermission="amountOutFlow:update">'+d.sheetOut+'次</button>'
+                            }else{
+                                return d.sheetOut;
+                            }
+                        },minWidth: 100,align:'center'},
+                ]]
+            });
+        }
+
+        function getQueryParams() {
+            // return {
+            //     type: $searchForm.find("select[name='type']").val(),
+            //     username: $searchForm.find('input[name="username"]').val().trim()
+            // };
+        }
+
+    })
+</script>
diff --git a/src/test/java/cc/mrbird/febs/ChainTest.java b/src/test/java/cc/mrbird/febs/ChainTest.java
index 80a7724..11b245f 100644
--- a/src/test/java/cc/mrbird/febs/ChainTest.java
+++ b/src/test/java/cc/mrbird/febs/ChainTest.java
@@ -192,16 +192,16 @@
     @Autowired
     NotionalPoolingJob notionalPoolingJob;
 
-    @Test
-    public void poolTest() {
-        notionalPoolingJob.poolUsdtTrc20();
-    }
+//    @Test
+//    public void poolTest() {
+//        notionalPoolingJob.poolUsdtTrc20();
+//    }
 
     @Autowired
     RedisUtils redisUtils;
 
-    @Test
-    public void redisTest() {
-        redisUtils.setRemove("list_set", 11222);
-    }
+//    @Test
+//    public void redisTest() {
+//        redisUtils.setRemove("list_set", 11222);
+//    }
 }
diff --git a/src/test/java/cc/mrbird/febs/JunitTest.java b/src/test/java/cc/mrbird/febs/JunitTest.java
index 4dcec51..7e0386b 100644
--- a/src/test/java/cc/mrbird/febs/JunitTest.java
+++ b/src/test/java/cc/mrbird/febs/JunitTest.java
@@ -317,147 +317,147 @@
 //        System.out.println(active);
 //    }
 //
-    @Test
-    public void updateMemberLevel(){
-        Log.info("更新用户代理等级");
-        DateTime date = DateUtil.date();
-        //查询账户总金额大于51的有效用户
-        List<DappMemberEntity> dappMemberEntities = dappWalletCoinDao.selectByIdentity();
-//        List<DappMemberEntity> dappMemberEntities = dappWalletCoinDao.selectTotalAmount();
-        if(CollUtil.isEmpty(dappMemberEntities)){
-            //没有账户金额大于51,则全部为会员
-            dappMemberDao.updateIdentity();
-        }else{
-            List<DappMemberEntity> LEVEL_IB = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_MB.getCode(), DataDictionaryEnum.LEVEL_IB.getCode());
-            List<DappMemberEntity> LEVEL_FIB = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_IB.getCode(), DataDictionaryEnum.LEVEL_FIB.getCode());
-            List<DappMemberEntity> LEVEL_CIB = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_FIB.getCode(), DataDictionaryEnum.LEVEL_CIB.getCode());
-            List<DappMemberEntity> LEVEL_AIB = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_CIB.getCode(), DataDictionaryEnum.LEVEL_AIB.getCode());
-            List<DappMemberEntity> LEVEL_GIB = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_AIB.getCode(), DataDictionaryEnum.LEVEL_GIB.getCode());
-            List<DappMemberEntity> LEVEL_BP = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_GIB.getCode(), DataDictionaryEnum.LEVEL_BP.getCode());
-            List<DappMemberEntity> LEVEL_SP = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_BP.getCode(), DataDictionaryEnum.LEVEL_SP.getCode());
-            List<DappMemberEntity> LEVEL_GP = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_SP.getCode(), DataDictionaryEnum.LEVEL_GP.getCode());
-        }
-    }
-
-    private List<DappMemberEntity> getMemberLevelList(List<DappMemberEntity> dappMemberEntities,String identity,String identityNext){
-        List<DappMemberEntity> dappMemberEntitiesNext = new ArrayList<>();
-        if(CollUtil.isNotEmpty(dappMemberEntities)){
-            for(DappMemberEntity dappMemberEntity : dappMemberEntities){
-                if(ObjectUtil.isEmpty(dappMemberEntity)){
-                    continue;
-                }
-                Long memberEntityId = dappMemberEntity.getId();
-                String refererId = dappMemberEntity.getRefererId();
-                String inviteId = dappMemberEntity.getInviteId();
-                //是否存在三条以上的推广线路,存在才能升级,不满足则
-                List<DappMemberEntity> levelMbMembers = dappMemberDao.selectTotalMemberByRefererIdAndIdentity(inviteId);
-                if(3 > levelMbMembers.size()){
-                    dappMemberEntity.setIdentity(DataDictionaryEnum.LEVEL_MB.getCode());
-                    dappMemberDao.updateById(dappMemberEntity);
-                    continue;
-                }
-                int identityDown = 0;
-                for(DappMemberEntity dappMemberDown : levelMbMembers){
-                    //下级是否存在账户总金额大于51的会员,并且代理等级为identity
-                    List<DappMemberEntity> levelMbMembersDown = dappMemberDao.selectTotalAmountByRefererIdAndIdentity(dappMemberDown.getInviteId(),identity);
-                    if(CollUtil.isNotEmpty(levelMbMembersDown)){
-                        identityDown = identityDown + 1;
-                    }
-
-                }
-                if(identityDown >= 3){
-                    //设置identityNext级别
-                    dappMemberDao.updateIdentityByMemberId(identityNext,memberEntityId);
-                }
-            }
-        }
-        return dappMemberEntitiesNext;
-    }
+//    @Test
+//    public void updateMemberLevel(){
+//        Log.info("更新用户代理等级");
+//        DateTime date = DateUtil.date();
+//        //查询账户总金额大于51的有效用户
+//        List<DappMemberEntity> dappMemberEntities = dappWalletCoinDao.selectByIdentity();
+////        List<DappMemberEntity> dappMemberEntities = dappWalletCoinDao.selectTotalAmount();
+//        if(CollUtil.isEmpty(dappMemberEntities)){
+//            //没有账户金额大于51,则全部为会员
+//            dappMemberDao.updateIdentity();
+//        }else{
+//            List<DappMemberEntity> LEVEL_IB = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_MB.getCode(), DataDictionaryEnum.LEVEL_IB.getCode());
+//            List<DappMemberEntity> LEVEL_FIB = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_IB.getCode(), DataDictionaryEnum.LEVEL_FIB.getCode());
+//            List<DappMemberEntity> LEVEL_CIB = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_FIB.getCode(), DataDictionaryEnum.LEVEL_CIB.getCode());
+//            List<DappMemberEntity> LEVEL_AIB = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_CIB.getCode(), DataDictionaryEnum.LEVEL_AIB.getCode());
+//            List<DappMemberEntity> LEVEL_GIB = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_AIB.getCode(), DataDictionaryEnum.LEVEL_GIB.getCode());
+//            List<DappMemberEntity> LEVEL_BP = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_GIB.getCode(), DataDictionaryEnum.LEVEL_BP.getCode());
+//            List<DappMemberEntity> LEVEL_SP = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_BP.getCode(), DataDictionaryEnum.LEVEL_SP.getCode());
+//            List<DappMemberEntity> LEVEL_GP = getMemberLevelList(dappMemberEntities, DataDictionaryEnum.LEVEL_SP.getCode(), DataDictionaryEnum.LEVEL_GP.getCode());
+//        }
+//    }
 //
-    @Test
-    public void testProfitSharing(){
-        IgtOnHookPlanOrder igtOnHookPlanOrder = igtOnHookPlanOrderDao.selectById(3220L);
-        if(ObjectUtil.isEmpty(igtOnHookPlanOrder)){
-            return;
-        }
-        Long memberId = igtOnHookPlanOrder.getMemberId();
-        BigDecimal planAmount = igtOnHookPlanOrder.getPlanAmount();
-
-        DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
-        if(ObjectUtil.isEmpty(dappMemberEntity)){
-            return;
-        }
-        //避免重复
-        QueryWrapper<DappOnHookDone> objectQueryWrapper = new QueryWrapper<>();
-        objectQueryWrapper.eq("order_id",igtOnHookPlanOrder.getId());
-        List<DappOnHookDone> dappOnHookDones = dappOnHookDoneDao.selectList(objectQueryWrapper);
-        if(CollUtil.isNotEmpty(dappOnHookDones)){
-            return;
-        }
-        //生成记录
-        DappOnHookDone dappOnHookDone = new DappOnHookDone(dappMemberEntity.getId(), igtOnHookPlanOrder.getId());
-        dappOnHookDoneDao.insert(dappOnHookDone);
-        //获取收益率
-        DataDictionaryCustom identityDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.LEVEL_MB.getType(), dappMemberEntity.getIdentity());
-        String identityDicValue = identityDic.getValue();
-        JSONObject identityDicValueParse = JSONUtil.parseObj(identityDicValue);
-        BigDecimal hangingRevenueLevel = new BigDecimal(identityDicValueParse.get("hangingRevenue").toString())
-                .multiply(new BigDecimal(0.01)).setScale(4,BigDecimal.ROUND_DOWN);
-        //获取收益
-        //获取当前用户每分钟应该获取的收益
-        BigDecimal multiply = hangingRevenueLevel.multiply(planAmount);
-        DataDictionaryCustom maxHoursDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.MAX_HOURS.getType(), DataDictionaryEnum.MAX_HOURS.getCode());
-        //挂机总时长(分钟)
-        BigDecimal maxHours = new BigDecimal(maxHoursDic.getValue()).multiply(new BigDecimal(60));
-        //得到每分钟的收益
-        BigDecimal minuteProfit = multiply.divide(maxHours, 4, BigDecimal.ROUND_DOWN);
-        //获取挂机开始时间到现在的总时长(分钟数)
-        Date startTime = igtOnHookPlanOrder.getStartTime();
-        long between = DateUtil.between(startTime, DateUtil.date(), DateUnit.MINUTE);
-        //获得总收益
-        BigDecimal totalProfit = minuteProfit.multiply(new BigDecimal(between)).setScale(4,BigDecimal.ROUND_DOWN);
-//        BigDecimal totalProfit = planAmount.multiply(hangingRevenueLevel).setScale(4,BigDecimal.ROUND_DOWN);
-
-        String refererIds = dappMemberEntity.getRefererIds();
-        List<String> refererIdList = StrUtil.split(refererIds, ",", -1, true, true);
-        //只有上级用户金额大于51U才能得到对应的佣金
-//        ArrayList<String> refererIdLisstUp = new ArrayList<>();
-//        for(String inviteId : refererIdList){
-//            DappMemberEntity dappMemberUp = dappMemberDao.selectMemberInfoByInviteId(inviteId);
-//            if(ObjectUtil.isNotEmpty(dappMemberUp)){
-//                DappWalletCoinEntity dappWalletCoinEntity = dappWalletCoinDao.selectByMemberId(dappMemberUp.getId());
-//                if(AppContants.ONHOOK_BASIC_AMOUNT.compareTo(dappWalletCoinEntity.getAvailableAmount())<=0){
-//                    refererIdLisstUp.add(inviteId);
+//    private List<DappMemberEntity> getMemberLevelList(List<DappMemberEntity> dappMemberEntities,String identity,String identityNext){
+//        List<DappMemberEntity> dappMemberEntitiesNext = new ArrayList<>();
+//        if(CollUtil.isNotEmpty(dappMemberEntities)){
+//            for(DappMemberEntity dappMemberEntity : dappMemberEntities){
+//                if(ObjectUtil.isEmpty(dappMemberEntity)){
+//                    continue;
+//                }
+//                Long memberEntityId = dappMemberEntity.getId();
+//                String refererId = dappMemberEntity.getRefererId();
+//                String inviteId = dappMemberEntity.getInviteId();
+//                //是否存在三条以上的推广线路,存在才能升级,不满足则
+//                List<DappMemberEntity> levelMbMembers = dappMemberDao.selectTotalMemberByRefererIdAndIdentity(inviteId);
+//                if(3 > levelMbMembers.size()){
+//                    dappMemberEntity.setIdentity(DataDictionaryEnum.LEVEL_MB.getCode());
+//                    dappMemberDao.updateById(dappMemberEntity);
+//                    continue;
+//                }
+//                int identityDown = 0;
+//                for(DappMemberEntity dappMemberDown : levelMbMembers){
+//                    //下级是否存在账户总金额大于51的会员,并且代理等级为identity
+//                    List<DappMemberEntity> levelMbMembersDown = dappMemberDao.selectTotalAmountByRefererIdAndIdentity(dappMemberDown.getInviteId(),identity);
+//                    if(CollUtil.isNotEmpty(levelMbMembersDown)){
+//                        identityDown = identityDown + 1;
+//                    }
+//
+//                }
+//                if(identityDown >= 3){
+//                    //设置identityNext级别
+//                    dappMemberDao.updateIdentityByMemberId(identityNext,memberEntityId);
 //                }
 //            }
 //        }
-        //生成流水佣金和盈利分成和流水记录,返回剩余盈利
-        BigDecimal profitSharingTotal = dappWalletService.updateLSYJYLFC(refererIdList, totalProfit,igtOnHookPlanOrder.getId());
-        //平台分成
-        //平台拿走35%盈利分成和流水佣金剩下的全部
-        BigDecimal systemAdd = totalProfit.multiply(new BigDecimal(0.4)).subtract(profitSharingTotal);
-        BigDecimal systemTotal = dappWalletService.updatePTFC(memberId,systemAdd,igtOnHookPlanOrder.getId());
-        //个人固定拿走60%
-        totalProfit = totalProfit.multiply(new BigDecimal(0.6));
-        igtOnHookPlanOrder.setState(2);
-        //一次挂机剩余的全部金额
-        BigDecimal totalMoney = totalProfit.add(planAmount);
-
-        igtOnHookPlanOrder.setProfit(totalProfit);
-        igtOnHookPlanOrderDao.updateById(igtOnHookPlanOrder);
-        dappMemberEntity.setIsOnHook(3);
-        dappMemberDao.updateById(dappMemberEntity);
-
-        DappWalletCoinEntity dappWalletCoinEntity = dappWalletCoinDao.selectByMemberId(memberId);
-        BigDecimal availableAmount = dappWalletCoinEntity.getAvailableAmount();
-        dappWalletCoinDao.addTotalAndaddAvailableById(dappWalletCoinEntity.getId(),totalMoney);
-
-        BigDecimal add = availableAmount.add(totalMoney);
-        BigDecimal subtract = add.subtract(totalProfit);
-        DappAccountMoneyChangeEntity dappAccountMoneyChangeEntity = new DappAccountMoneyChangeEntity(memberId, subtract, totalProfit, add, "投注盈利", 5,igtOnHookPlanOrder.getId());
-        dappAccountMoneyChangeDao.insert(dappAccountMoneyChangeEntity);
-
-    }
+//        return dappMemberEntitiesNext;
+//    }
+////
+//    @Test
+//    public void testProfitSharing(){
+//        IgtOnHookPlanOrder igtOnHookPlanOrder = igtOnHookPlanOrderDao.selectById(3220L);
+//        if(ObjectUtil.isEmpty(igtOnHookPlanOrder)){
+//            return;
+//        }
+//        Long memberId = igtOnHookPlanOrder.getMemberId();
+//        BigDecimal planAmount = igtOnHookPlanOrder.getPlanAmount();
+//
+//        DappMemberEntity dappMemberEntity = dappMemberDao.selectById(memberId);
+//        if(ObjectUtil.isEmpty(dappMemberEntity)){
+//            return;
+//        }
+//        //避免重复
+//        QueryWrapper<DappOnHookDone> objectQueryWrapper = new QueryWrapper<>();
+//        objectQueryWrapper.eq("order_id",igtOnHookPlanOrder.getId());
+//        List<DappOnHookDone> dappOnHookDones = dappOnHookDoneDao.selectList(objectQueryWrapper);
+//        if(CollUtil.isNotEmpty(dappOnHookDones)){
+//            return;
+//        }
+//        //生成记录
+//        DappOnHookDone dappOnHookDone = new DappOnHookDone(dappMemberEntity.getId(), igtOnHookPlanOrder.getId());
+//        dappOnHookDoneDao.insert(dappOnHookDone);
+//        //获取收益率
+//        DataDictionaryCustom identityDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.LEVEL_MB.getType(), dappMemberEntity.getIdentity());
+//        String identityDicValue = identityDic.getValue();
+//        JSONObject identityDicValueParse = JSONUtil.parseObj(identityDicValue);
+//        BigDecimal hangingRevenueLevel = new BigDecimal(identityDicValueParse.get("hangingRevenue").toString())
+//                .multiply(new BigDecimal(0.01)).setScale(4,BigDecimal.ROUND_DOWN);
+//        //获取收益
+//        //获取当前用户每分钟应该获取的收益
+//        BigDecimal multiply = hangingRevenueLevel.multiply(planAmount);
+//        DataDictionaryCustom maxHoursDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.MAX_HOURS.getType(), DataDictionaryEnum.MAX_HOURS.getCode());
+//        //挂机总时长(分钟)
+//        BigDecimal maxHours = new BigDecimal(maxHoursDic.getValue()).multiply(new BigDecimal(60));
+//        //得到每分钟的收益
+//        BigDecimal minuteProfit = multiply.divide(maxHours, 4, BigDecimal.ROUND_DOWN);
+//        //获取挂机开始时间到现在的总时长(分钟数)
+//        Date startTime = igtOnHookPlanOrder.getStartTime();
+//        long between = DateUtil.between(startTime, DateUtil.date(), DateUnit.MINUTE);
+//        //获得总收益
+//        BigDecimal totalProfit = minuteProfit.multiply(new BigDecimal(between)).setScale(4,BigDecimal.ROUND_DOWN);
+////        BigDecimal totalProfit = planAmount.multiply(hangingRevenueLevel).setScale(4,BigDecimal.ROUND_DOWN);
+//
+//        String refererIds = dappMemberEntity.getRefererIds();
+//        List<String> refererIdList = StrUtil.split(refererIds, ",", -1, true, true);
+//        //只有上级用户金额大于51U才能得到对应的佣金
+////        ArrayList<String> refererIdLisstUp = new ArrayList<>();
+////        for(String inviteId : refererIdList){
+////            DappMemberEntity dappMemberUp = dappMemberDao.selectMemberInfoByInviteId(inviteId);
+////            if(ObjectUtil.isNotEmpty(dappMemberUp)){
+////                DappWalletCoinEntity dappWalletCoinEntity = dappWalletCoinDao.selectByMemberId(dappMemberUp.getId());
+////                if(AppContants.ONHOOK_BASIC_AMOUNT.compareTo(dappWalletCoinEntity.getAvailableAmount())<=0){
+////                    refererIdLisstUp.add(inviteId);
+////                }
+////            }
+////        }
+//        //生成流水佣金和盈利分成和流水记录,返回剩余盈利
+//        BigDecimal profitSharingTotal = dappWalletService.updateLSYJYLFC(refererIdList, totalProfit,igtOnHookPlanOrder.getId());
+//        //平台分成
+//        //平台拿走35%盈利分成和流水佣金剩下的全部
+//        BigDecimal systemAdd = totalProfit.multiply(new BigDecimal(0.4)).subtract(profitSharingTotal);
+//        BigDecimal systemTotal = dappWalletService.updatePTFC(memberId,systemAdd,igtOnHookPlanOrder.getId());
+//        //个人固定拿走60%
+//        totalProfit = totalProfit.multiply(new BigDecimal(0.6));
+//        igtOnHookPlanOrder.setState(2);
+//        //一次挂机剩余的全部金额
+//        BigDecimal totalMoney = totalProfit.add(planAmount);
+//
+//        igtOnHookPlanOrder.setProfit(totalProfit);
+//        igtOnHookPlanOrderDao.updateById(igtOnHookPlanOrder);
+//        dappMemberEntity.setIsOnHook(3);
+//        dappMemberDao.updateById(dappMemberEntity);
+//
+//        DappWalletCoinEntity dappWalletCoinEntity = dappWalletCoinDao.selectByMemberId(memberId);
+//        BigDecimal availableAmount = dappWalletCoinEntity.getAvailableAmount();
+//        dappWalletCoinDao.addTotalAndaddAvailableById(dappWalletCoinEntity.getId(),totalMoney);
+//
+//        BigDecimal add = availableAmount.add(totalMoney);
+//        BigDecimal subtract = add.subtract(totalProfit);
+//        DappAccountMoneyChangeEntity dappAccountMoneyChangeEntity = new DappAccountMoneyChangeEntity(memberId, subtract, totalProfit, add, "投注盈利", 5,igtOnHookPlanOrder.getId());
+//        dappAccountMoneyChangeDao.insert(dappAccountMoneyChangeEntity);
+//
+//    }
 //
 //    @Test
 //    public void createAwardInfo(){

--
Gitblit v1.9.1