From 95ddc08c4e62c00485b12b7909e32288de80a7b9 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Tue, 24 Oct 2023 17:18:15 +0800
Subject: [PATCH] 版本管理

---
 src/main/java/cc/mrbird/febs/mall/mapper/ChatUserMapper.java        |    7 ++
 src/main/resources/templates/febs/views/index.html                  |   89 +++++++++++++++++++++++++++++
 src/main/java/cc/mrbird/febs/system/controller/LoginController.java |   44 ++++++++++++++
 src/main/resources/mapper/modules/ChatUserMapper.xml                |   31 ++++++++++
 4 files changed, 171 insertions(+), 0 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/ChatUserMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/ChatUserMapper.java
index addda91..e42f0d0 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/ChatUserMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/ChatUserMapper.java
@@ -10,6 +10,7 @@
 import org.apache.ibatis.annotations.Param;
 
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 
 public interface ChatUserMapper extends BaseMapper<ChatUser> {
@@ -61,4 +62,10 @@
     void updateNicknameById(@Param("userId")Long userId, @Param("nickName")String i);
 
     List<ChatUser> selectListByIsRobot(@Param("isRobot")int i);
+
+    BigDecimal selectTotalAmount();
+
+    BigDecimal selectTotalType(@Param("type")int i,@Param("dateType") String type, @Param("date") Date date);
+
+    List<ChatUser> selectUserList(@Param("isRobot")int i,@Param("dateType") String type, @Param("date") Date date);
 }
diff --git a/src/main/java/cc/mrbird/febs/system/controller/LoginController.java b/src/main/java/cc/mrbird/febs/system/controller/LoginController.java
index 9811cc6..b6cf968 100644
--- a/src/main/java/cc/mrbird/febs/system/controller/LoginController.java
+++ b/src/main/java/cc/mrbird/febs/system/controller/LoginController.java
@@ -10,7 +10,9 @@
 import cc.mrbird.febs.common.service.ValidateCodeService;
 import cc.mrbird.febs.common.utils.Md5Util;
 import cc.mrbird.febs.common.utils.RedisUtils;
+import cc.mrbird.febs.mall.entity.ChatUser;
 import cc.mrbird.febs.mall.entity.MallMember;
+import cc.mrbird.febs.mall.mapper.ChatUserMapper;
 import cc.mrbird.febs.mall.mapper.MallAchieveRecordMapper;
 import cc.mrbird.febs.mall.mapper.MallMemberMapper;
 import cc.mrbird.febs.mall.mapper.MallOrderInfoMapper;
@@ -18,7 +20,9 @@
 import cc.mrbird.febs.monitor.service.ILoginLogService;
 import cc.mrbird.febs.system.entity.User;
 import cc.mrbird.febs.system.service.IUserService;
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.NumberUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import lombok.RequiredArgsConstructor;
 import org.apache.shiro.authc.UsernamePasswordToken;
@@ -33,6 +37,9 @@
 import javax.servlet.http.HttpSession;
 import javax.validation.constraints.NotBlank;
 import java.io.IOException;
+import java.math.BigDecimal;
+import java.text.NumberFormat;
+import java.text.ParseException;
 import java.util.*;
 
 /**
@@ -49,6 +56,7 @@
     private final MallMemberMapper mallMemberMapper;
     private final MallOrderInfoMapper mallOrderInfoMapper;
     private final MallAchieveRecordMapper mallAchieveRecordMapper;
+    private final ChatUserMapper chatUserMapper;
     private final RedisUtils redisUtils;
 
     @PostMapping("login")
@@ -97,9 +105,45 @@
         param.setUsername(username);
         List<Map<String, Object>> lastSevenUserVisitCount = this.loginLogService.findLastSevenDaysVisitCount(param);
         data.put("lastSevenUserVisitCount", lastSevenUserVisitCount);
+
+        data.put("totalAmount", NumberUtil.decimalFormatMoney(chatUserMapper.selectTotalAmount().doubleValue()));
+        List<ChatUser> chatUsers = chatUserMapper.selectUserList(0,null,null);
+        List<ChatUser> chatRobots = chatUserMapper.selectUserList(1,null,null);
+        data.put("totalUser", (CollUtil.isEmpty(chatUsers) ? 0:chatUsers.size()) +"-"+(CollUtil.isEmpty(chatRobots) ? 0:chatRobots.size()));
+        data.put("totalSystemPay", NumberUtil.decimalFormatMoney(chatUserMapper.selectTotalType(6,null,null).doubleValue()));
+        data.put("totalIncome", NumberUtil.decimalFormatMoney(chatUserMapper.selectTotalType(8,null,null).doubleValue()));
+
+        data.put("todaySystemPay", NumberUtil.decimalFormatMoney(chatUserMapper.selectTotalType(6,"D",DateUtil.date()).doubleValue()));
+        data.put("todayIncome", NumberUtil.decimalFormatMoney(chatUserMapper.selectTotalType(8,"D",DateUtil.date()).doubleValue()));
+        List<ChatUser> chatUsersToday = chatUserMapper.selectUserList(0,"D",DateUtil.date());
+        List<ChatUser> chatRobotsToday = chatUserMapper.selectUserList(1,"D",DateUtil.date());
+        data.put("todayUser", (CollUtil.isEmpty(chatUsersToday) ? 0:chatUsersToday.size()) +"-"+(CollUtil.isEmpty(chatRobotsToday) ? 0:chatRobotsToday.size()));
+
         return new FebsResponse().success().data(data);
     }
 
+    public static BigDecimal formatCurrency(BigDecimal amount) {
+        // 设置本地化格式为当前默认地区
+        Locale locale = Locale.getDefault();
+
+        // 创建一个货币格式化对象
+        NumberFormat currencyFormat = NumberFormat.getCurrencyInstance(locale);
+
+        // 将 BigDecimal 格式化为货币格式的字符串
+        String formattedAmount = currencyFormat.format(amount);
+
+        // 将格式化的字符串转换回 BigDecimal 对象
+        BigDecimal formattedBigDecimal = null;
+        try {
+            formattedBigDecimal = new BigDecimal(currencyFormat.parse(formattedAmount).doubleValue());
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+
+        // 返回格式化后的 BigDecimal 对象
+        return formattedBigDecimal;
+    }
+
     @GetMapping("images/captcha")
     @Limit(key = "get_captcha", period = 60, count = 10, name = "获取验证码", prefix = "limit")
     public void captcha(HttpServletRequest request, HttpServletResponse response) throws IOException, FebsException {
diff --git a/src/main/resources/mapper/modules/ChatUserMapper.xml b/src/main/resources/mapper/modules/ChatUserMapper.xml
index 5ae926c..a6baa1a 100644
--- a/src/main/resources/mapper/modules/ChatUserMapper.xml
+++ b/src/main/resources/mapper/modules/ChatUserMapper.xml
@@ -286,5 +286,36 @@
         where is_robot = #{isRobot}
     </select>
 
+    <select id="selectTotalAmount" resultType="java.math.BigDecimal">
+        select IFNULL(sum(IFNULL(total_amount,0)),0)
+        from chat_wallet
+        where type = 'USDT'
+    </select>
+
+    <select id="selectTotalType" resultType="java.math.BigDecimal">
+        select IFNULL(sum(IFNULL(amount,0)),0)
+        from chat_amount_flow
+        where type = #{type}
+        <if test='dateType == "D"'>
+            and date_format(create_time, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d');
+        </if>
+        <if test='dateType == "M"'>
+            and date_format(create_time, '%Y-%m') = date_format(#{date}, '%Y-%m');
+        </if>
+    </select>
+
+    <select id="selectUserList" resultType="cc.mrbird.febs.mall.entity.ChatUser">
+        select
+        a.*
+        from chat_user a
+        where is_robot = #{isRobot}
+        <if test='dateType == "D"'>
+            and date_format(create_time, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d');
+        </if>
+        <if test='dateType == "M"'>
+            and date_format(create_time, '%Y-%m') = date_format(#{date}, '%Y-%m');
+        </if>
+    </select>
+
 
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/index.html b/src/main/resources/templates/febs/views/index.html
index b09c3f9..ab90b0d 100644
--- a/src/main/resources/templates/febs/views/index.html
+++ b/src/main/resources/templates/febs/views/index.html
@@ -132,6 +132,85 @@
                         </div>
                     </div>
                 </div>
+
+                <div class="layui-card-body layui-anim layui-anim-fadein">
+                    <div class="layui-row">
+                        <div class="m-title">系统总览</div>
+                        <div class="layui-row layui-col-space15">
+                            <div class="layui-col-md3">
+                                <div class="layui-panel">
+                                    <div class="box">
+                                        <p class="name">账户总余额</p>
+                                        <p class="num"><span id="totalAmount"></span></p>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="layui-col-md3">
+                                <div class="layui-panel">
+                                    <div class="box">
+                                        <p class="name">账户总拨付</p>
+                                        <p class="num"><span id="totalSystemPay"></span></p>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="layui-col-md3">
+                                <div class="layui-panel">
+                                    <div class="box">
+                                        <p class="name">总注册人数(真实用户-机器人)</p>
+                                        <p class="num"><span id="totalUser"></span></p>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="layui-col-md3">
+                                <div class="layui-panel">
+                                    <div class="box">
+                                        <p class="name">总收益(扣除等级收益之后)</p>
+                                        <p class="num"><span id="totalIncome"></span></p>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+
+                <div class="layui-card-body layui-anim layui-anim-fadein">
+                    <div class="layui-row">
+                        <div class="m-title">今日数据</div>
+                        <div class="layui-row layui-col-space15">
+                            <div class="layui-col-md3">
+                                <div class="layui-panel">
+                                    <div class="box">
+                                        <p class="name">今日注册(真实用户-机器人)</p>
+                                        <p class="num"><span id="todayUser"></span></p>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="layui-col-md3">
+                                <div class="layui-panel">
+                                    <div class="box">
+                                        <p class="name">今日拨付</p>
+                                        <p class="num"><span id="todaySystemPay"></span></p>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="layui-col-md3">
+                                <div class="layui-panel">
+                                    <div class="box">
+                                        <p class="name">今日收益(扣除等级收益之后)</p>
+                                        <p class="num"><span id="todayIncome"></span></p>
+                                    </div>
+                                </div>
+                            </div>
+                            <div class="layui-col-md3">
+                                <div class="layui-panel">
+                                    <div class="box">
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+
             </div>
         </div>
     </div>
@@ -167,6 +246,16 @@
                 .find('#user-role').text(currentUser.roleName ? currentUser.roleName : '暂无角色').end()
                 .find('#last-login-time').text(currentUser.lastLoginTime ? currentUser.lastLoginTime : '第一次访问系统').end()
                 .find('#welcome-message').html(welcomeMessage).end()
+
+                .find('#totalAmount').text(data.totalAmount).end()
+                .find('#totalSystemPay').text(data.totalSystemPay).end()
+                .find('#totalUser').text(data.totalUser).end()
+                .find('#totalIncome').text(data.totalIncome).end()
+
+                .find('#todaySystemPay').text(data.todaySystemPay).end()
+                .find('#todayIncome').text(data.todayIncome).end()
+                .find('#todayUser').text(data.todayUser).end()
+
                 .find('#user-avatar').attr('src', ctx + "febs/images/avatar/" + currentUser.avatar);
 
             var currentTime = new Date().getTime();

--
Gitblit v1.9.1