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