Administrator 4 жил өмнө
parent
commit
db428a0de8

+ 1 - 1
ruoyi-admin/src/main/resources/application.yml

@@ -44,7 +44,7 @@ spring:
     # 国际化资源文件路径
     basename: i18n/messages
   profiles:
-    active: druid
+    active: prod
   # 文件上传
   servlet:
      multipart:

+ 14 - 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/SysLogininfor.java

@@ -1,6 +1,8 @@
 package com.ruoyi.system.domain;
 
 import java.util.Date;
+import java.util.List;
+
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.annotation.Excel;
 import com.ruoyi.common.annotation.Excel.ColumnType;
@@ -56,6 +58,18 @@ public class SysLogininfor extends BaseEntity
      * 多少天未登录
      */
     private String loginDay;
+    /**
+     * 登录信息id
+     */
+    private List<String> userNames;
+
+    public List<String> getUserNames() {
+        return userNames;
+    }
+
+    public void setUserNames(List<String> userNames) {
+        this.userNames = userNames;
+    }
 
     public String getLoginDay() {
         return loginDay;

+ 33 - 22
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java

@@ -62,7 +62,7 @@ public class SysLogininforServiceImpl implements ISysLogininforService {
             sysLogininfors = logininforMapper.selectLogininforDayList(logininfor);
             List<SysDictData> dictDataList = sysDictDataMapper.selectDictDataByType("sys_login_day");
             String msg = "";
-            if (dictDataList != null && dictDataList.size() > 0){
+            if (dictDataList != null && dictDataList.size() > 0) {
                 for (SysDictData sysDictData : dictDataList) {
                     String dictValue = sysDictData.getDictValue();
                     if (dictValue.equals(loginDay)) {
@@ -71,7 +71,7 @@ public class SysLogininforServiceImpl implements ISysLogininforService {
                     }
                 }
             }
-            if (sysLogininfors != null && sysLogininfors.size() > 0){
+            if (sysLogininfors != null && sysLogininfors.size() > 0) {
                 for (SysLogininfor sysLogininfor : sysLogininfors) {
                     sysLogininfor.setStatus(msg + "未登录");
                 }
@@ -79,27 +79,38 @@ public class SysLogininforServiceImpl implements ISysLogininforService {
 
         } else {
             sysLogininfors = logininforMapper.selectLogininforList(logininfor);
-            List<SysDictData> dictDataList = sysDictDataMapper.selectDictDataByType("sys_login_day");
-            //分组查询出对应用户最后的登录日期
-            List<SysLogininfor> sysLogininforsDay = logininforMapper.selectLogininforDayList(logininfor);
-            //判断这个用户是多少天未登录
-            for (SysLogininfor sysLogininfor : sysLogininforsDay) {
-                Date loginTime = sysLogininfor.getLoginTime();
-                LocalDate localDate = DateUtils.date2LocalDate(loginTime);
-                long days = localDate.until(now, ChronoUnit.DAYS);
-                sysLogininfor.setStatus("成功登录");
-                for (SysDictData sysDictData : dictDataList) {
-                    long dictValue = Long.parseLong(sysDictData.getDictValue());
-                    if (days > dictValue){
-                        sysLogininfor.setStatus(sysDictData.getDictLabel()+"未登录");
-                    }
+            List<String> userNames = new ArrayList();
+            if (sysLogininfors != null && sysLogininfors.size() > 0) {
+                for (SysLogininfor sysLogininfor : sysLogininfors) {
+                    userNames.add(sysLogininfor.getUserName());
                 }
-            }
-            for (SysLogininfor sysLogininfor : sysLogininfors) {
-                for (SysLogininfor sysLogininfor1 : sysLogininforsDay) {
-                    if (sysLogininfor.getUserName().equals(sysLogininfor1.getUserName())){
-                        sysLogininfor.setStatus(sysLogininfor1.getStatus());
-                        break;
+                logininfor.setUserNames(userNames);
+
+                List<SysDictData> dictDataList = sysDictDataMapper.selectDictDataByType("sys_login_day");
+                //分组查询出对应用户最后的登录日期
+                List<SysLogininfor> sysLogininforsDay = logininforMapper.selectLogininforDayList(logininfor);
+                if (sysLogininforsDay != null && sysLogininforsDay.size() > 0) {
+                    //判断这个用户是多少天未登录
+                    for (SysLogininfor sysLogininfor : sysLogininforsDay) {
+                        sysLogininfor.setStatus("正常");
+                        Date loginTime = sysLogininfor.getLoginTime();
+                        LocalDate localDate = DateUtils.date2LocalDate(loginTime);
+                        long days = localDate.until(now, ChronoUnit.DAYS);
+                        for (SysDictData sysDictData : dictDataList) {
+                            long dictValue = Long.parseLong(sysDictData.getDictValue());
+                            if (days > dictValue) {
+                                sysLogininfor.setStatus(sysDictData.getDictLabel() + "未登录");
+                            }
+                        }
+                    }
+                    for (SysLogininfor sysLogininfor : sysLogininfors) {
+                        sysLogininfor.setStatus("正常");
+                        for (SysLogininfor sysLogininfor1 : sysLogininforsDay) {
+                            if (sysLogininfor.getUserName().equals(sysLogininfor1.getUserName())) {
+                                sysLogininfor.setStatus(sysLogininfor1.getStatus());
+                                break;
+                            }
+                        }
                     }
                 }
             }

+ 9 - 9
ruoyi-system/src/main/resources/mapper/system/SysLogininforMapper.xml

@@ -45,23 +45,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
 
 	<select id="selectLogininforDayList" parameterType="SysLogininfor" resultMap="SysLogininforResult">
-		SELECT
-		s1.*
-		FROM
-		( SELECT info_id, user_name, ipaddr, login_location, browser, os, STATUS, msg, login_time FROM sys_logininfor
+        SELECT info_id, user_name, ipaddr, login_location, browser, os, STATUS, msg, max(login_time) as login_time FROM sys_logininfor
 		<where>
+			<if test="userNames != null and userNames.size > 0">
+			user_name in
+			<foreach collection="userNames" item="userName" open="(" separator="," close=")">
+				#{userName}
+			</foreach>
+			</if>
 			<if test="userName != null and userName != ''">
 				AND user_name like concat('%', #{userName}, '%')
 			</if>
-		</where>
-		 ORDER BY login_time DESC ) s1
-		<where>
 			<if test="loginTime != null"><!-- 近期未登录 -->
-				 date_format(login_time,'%y-%m-%d') &lt; date_format(#{loginTime},'%y-%m-%d' )
+				AND date_format(login_time,'%y-%m-%d') &lt; date_format(#{loginTime},'%y-%m-%d' )
 			</if>
 		</where>
 		GROUP BY
-		s1.user_name
+		user_name
 	</select>
 	
 	<delete id="deleteLogininforByIds" parameterType="Long">