xiaoyong931011
2023-10-24 95ddc08c4e62c00485b12b7909e32288de80a7b9
src/main/java/cc/mrbird/febs/system/controller/LoginController.java
@@ -3,16 +3,27 @@
import cc.mrbird.febs.common.annotation.Limit;
import cc.mrbird.febs.common.controller.BaseController;
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
import cc.mrbird.febs.common.enumerates.OrderPayMethodEnum;
import cc.mrbird.febs.common.enumerates.OrderStatusEnum;
import cc.mrbird.febs.common.exception.FebsException;
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;
import cc.mrbird.febs.monitor.entity.LoginLog;
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;
import org.springframework.validation.annotation.Validated;
@@ -26,10 +37,10 @@
import javax.servlet.http.HttpSession;
import javax.validation.constraints.NotBlank;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.math.BigDecimal;
import java.text.NumberFormat;
import java.text.ParseException;
import java.util.*;
/**
 * @author MrBird
@@ -43,7 +54,10 @@
    private final ValidateCodeService validateCodeService;
    private final ILoginLogService loginLogService;
    private final MallMemberMapper mallMemberMapper;
    private final MallOrderInfoMapper mallOrderInfoMapper;
    private final MallAchieveRecordMapper mallAchieveRecordMapper;
    private final ChatUserMapper chatUserMapper;
    private final RedisUtils redisUtils;
    @PostMapping("login")
    @Limit(key = "login", period = 60, count = 10, name = "登录接口", prefix = "limit")
@@ -83,18 +97,6 @@
        // 更新登录时间
        this.userService.updateLoginTime(username);
        Map<String, Object> data = new HashMap<>(5);
        // 获取系统访问记录
//        Long totalVisitCount = this.loginLogService.findTotalVisitCount();
//        data.put("totalVisitCount", totalVisitCount);
//        Long todayVisitCount = this.loginLogService.findTodayVisitCount();
//        data.put("todayVisitCount", todayVisitCount);
//        Long todayIp = this.loginLogService.findTodayIp();
//        data.put("todayIp", todayIp);
        data.put("lastDay", mallAchieveRecordMapper.selectAchieveTotal("D", DateUtil.offsetDay(new Date(), -1)));
        data.put("today", mallAchieveRecordMapper.selectAchieveTotal("D", new Date()));
        data.put("lastMonth", mallAchieveRecordMapper.selectAchieveTotal("M", DateUtil.offsetMonth(new Date(), -1)));
        data.put("thisMonth", mallAchieveRecordMapper.selectAchieveTotal("M", new Date()));
        // 获取近期系统访问记录
        List<Map<String, Object>> lastSevenVisitCount = this.loginLogService.findLastSevenDaysVisitCount(null);
@@ -103,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 {