1、使用记录

beetlsql3-dev
wgf 2 years ago
parent 4caab36310
commit 2c3e1640fd

@ -12,7 +12,9 @@ import com.auth0.jwt.interfaces.Claim;
import com.ibeetl.admin.core.entity.CoreUser;
import com.ibeetl.admin.core.enums.MenuEnums;
import com.ibeetl.admin.core.service.CoreUserService;
import com.ibeetl.jlw.dao.StudentTeacherSystemUseLogAnalysisDao;
import com.ibeetl.jlw.dao.SysLogDao;
import com.ibeetl.jlw.entity.StudentTeacherSystemUseLogAnalysis;
import com.ibeetl.jlw.entity.SysLog;
import com.ibeetl.jlw.service.SysLogService;
import lombok.extern.slf4j.Slf4j;
@ -53,6 +55,8 @@ public class KeyExpiredListener extends KeyExpirationEventMessageListener {
@Autowired
private SysLogDao sysLogDao;
@Autowired
private StudentTeacherSystemUseLogAnalysisDao studentTeacherSystemUseLogAnalysisDao;
public KeyExpiredListener(RedisMessageListenerContainer listenerContainer) {
super(listenerContainer);
@ -123,6 +127,15 @@ public class KeyExpiredListener extends KeyExpirationEventMessageListener {
sysLog.setStudentId(Long.valueOf(realId));
}
sysLogService.insert(sysLog);
List<StudentTeacherSystemUseLogAnalysis> teacherSystemUseLogAnalyses = studentTeacherSystemUseLogAnalysisDao.getSQLManager()
.lambdaQuery(StudentTeacherSystemUseLogAnalysis.class)
.andIsNull(StudentTeacherSystemUseLogAnalysis::getDayTime).select();
teacherSystemUseLogAnalyses.forEach(item ->{
long time = (Objects.isNull(item.getAddTime()) ? 0 : item.getAddTime().getTime()) + (Objects.isNull(item.getUseDuration()) ? 0 : (item.getUseDuration() * 60 * 1000));
item.setDayTime(DateUtil.formatDateTime(DateUtil.date(time)));
studentTeacherSystemUseLogAnalysisDao.updateTemplateById(item);
});
}
} catch (Exception e) {

@ -49,6 +49,13 @@ public interface StudentDao extends BaseMapper<Student>{
}
List<Student> getStudentLog (StudentQuery studentQuery);
PageQuery<StudentUseLogVO> queryStudentUseLogByCondition(PageQuery query);
/**
* -使
* @param query
* @return
*/
PageQuery<StudentUseLogVO> queryStudentTeacherOrUseLogBy(PageQuery query);
PageQuery<StudentLoginLogVO> queryStudentLoginLogByCondition(PageQuery query);
/**

@ -165,7 +165,7 @@ public class StudentTeacherSystemUseLogAnalysis extends BaseEntity{
public String getDayTime(){
return dayTime;
}
/**
/**()
*@param dayTime
*/
public void setDayTime(String dayTime){

@ -57,44 +57,38 @@ public class StudentLoginLogVO extends BaseEntity {
/**
*
*/
// @ExcelProperty(value = "班级名称", index = 4)
@ExcelProperty(value = "班级名称", index = 4)
private String className;
/**
*
*/
// @ExcelProperty(value = "登入时间", index = 5)
@ExcelProperty(value = "登入时间", index = 4)
@ExcelProperty(value = "登入时间", index = 5)
private String loginTime;
/**
*
*/
// @ExcelProperty(value = "登出时间", index = 6)
@ExcelProperty(value = "登出时间", index = 5)
@ExcelProperty(value = "登出时间", index = 6)
private String logoutTime;
/**
* 线
*/
// @ExcelProperty(value = "在线时长", index = 7)
@ExcelProperty(value = "在线时长", index = 6)
@ExcelProperty(value = "在线时长", index = 7)
private String onlineDuration;
/**
* 线
*/
// @ExcelProperty(value = "是否在线", index = 8)
@ExcelProperty(value = "是否在线", index = 7)
@ExcelProperty(value = "是否在线", index = 8)
private Boolean isOnLine;
/**
* IP
*/
// @ExcelProperty(value = "登录IP", index = 9)
@ExcelProperty(value = "登录IP", index = 8)
@ExcelProperty(value = "登录IP", index = 9)
private String ip;
/**
* IP
*/
// @ExcelProperty(value = "IP所属地", index = 10)
@ExcelProperty(value = "IP所属地", index = 9)
@ExcelProperty(value = "IP所属地", index = 10)
private String ipAddress;
/**
*

@ -224,7 +224,8 @@ public class StudentService extends CoreBaseService<Student>{
if (null != uniAdmin) {
query.setPara("universitiesCollegesId", uniAdmin.getUniversitiesCollegesId());
}
return studentDao.queryStudentUseLogByCondition(query);
// return studentDao.queryStudentUseLogByCondition(query);
return studentDao.queryStudentTeacherOrUseLogBy(query);
}
/**

@ -51,7 +51,8 @@ import static com.ibeetl.admin.core.util.ExcelUtil.getCellFormatValue;
@Validated
public class StudentTeacherSystemUseLogAnalysisService extends CoreBaseService<StudentTeacherSystemUseLogAnalysis> {
@Autowired private StudentTeacherSystemUseLogAnalysisDao studentTeacherSystemUseLogAnalysisDao;
@Autowired
private StudentTeacherSystemUseLogAnalysisDao studentTeacherSystemUseLogAnalysisDao;
@Autowired
private StudentService studentService;
@Autowired
@ -98,7 +99,8 @@ public class StudentTeacherSystemUseLogAnalysisService extends CoreBaseService<S
} catch (Exception e) {
try {
studentTeacherSystemUseLogAnalysisList.add(JSONObject.parseObject(studentTeacherSystemUseLogAnalysisQuery.getStudentTeacherSystemUseLogAnalysisJsonStr(), StudentTeacherSystemUseLogAnalysis.class));
} catch (Exception e1) {}
} catch (Exception e1) {
}
}
ToolUtils.deleteNullList(studentTeacherSystemUseLogAnalysisList);
if (null != studentTeacherSystemUseLogAnalysisList && studentTeacherSystemUseLogAnalysisList.size() > 0) {
@ -277,40 +279,31 @@ public class StudentTeacherSystemUseLogAnalysisService extends CoreBaseService<S
if (StringUtils.isBlank(firstName)) {
errMsg.add(new String[]{"第" + ToolUtils.numberToLetter(map.get(columns[0]) + 1) + "列,第" + (i + 1) + "行一级名称为空"});
continue;
}else
if(StringUtils.isBlank(secondName)){
} else if (StringUtils.isBlank(secondName)) {
errMsg.add(new String[]{"第" + ToolUtils.numberToLetter(map.get(columns[1]) + 1) + "列,第" + (i + 1) + "行二级名称为空"});
continue;
}else
if(StringUtils.isBlank(universitiesCollegesName)){
} else if (StringUtils.isBlank(universitiesCollegesName)) {
errMsg.add(new String[]{"第" + ToolUtils.numberToLetter(map.get(columns[2]) + 1) + "列,第" + (i + 1) + "行院校名称为空"});
continue;
}else
if(StringUtils.isBlank(universitiesCollegesId)){
} else if (StringUtils.isBlank(universitiesCollegesId)) {
errMsg.add(new String[]{"第" + ToolUtils.numberToLetter(map.get(columns[3]) + 1) + "列,第" + (i + 1) + "行院校为空"});
continue;
}else
if(StringUtils.isBlank(userType)){
} else if (StringUtils.isBlank(userType)) {
errMsg.add(new String[]{"第" + ToolUtils.numberToLetter(map.get(columns[4]) + 1) + "列,第" + (i + 1) + "行用户类型 UserTypeEnum为空"});
continue;
}else
if(StringUtils.isBlank(province)){
} else if (StringUtils.isBlank(province)) {
errMsg.add(new String[]{"第" + ToolUtils.numberToLetter(map.get(columns[5]) + 1) + "列,第" + (i + 1) + "行所在省份为空"});
continue;
}else
if(StringUtils.isBlank(dayTime)){
} else if (StringUtils.isBlank(dayTime)) {
errMsg.add(new String[]{"第" + ToolUtils.numberToLetter(map.get(columns[6]) + 1) + "列,第" + (i + 1) + "行日期为空"});
continue;
}else
if(StringUtils.isBlank(useDuration)){
} else if (StringUtils.isBlank(useDuration)) {
errMsg.add(new String[]{"第" + ToolUtils.numberToLetter(map.get(columns[7]) + 1) + "列,第" + (i + 1) + "行使用时长为空"});
continue;
}else
if(StringUtils.isBlank(addTime)){
} else if (StringUtils.isBlank(addTime)) {
errMsg.add(new String[]{"第" + ToolUtils.numberToLetter(map.get(columns[8]) + 1) + "列,第" + (i + 1) + "行创建时间为空"});
continue;
}else
{
} else {
//TODO 保存
StudentTeacherSystemUseLogAnalysis studentTeacherSystemUseLogAnalysis = new StudentTeacherSystemUseLogAnalysis();
studentTeacherSystemUseLogAnalysis.setFirstName(firstName);
@ -345,6 +338,7 @@ public class StudentTeacherSystemUseLogAnalysisService extends CoreBaseService<S
/**
* 使
*
* @param page
* @return
*/
@ -379,12 +373,88 @@ public class StudentTeacherSystemUseLogAnalysisService extends CoreBaseService<S
*/
public void addOrUpdateUseLog(StudentTeacherSystemUseLogAnalysisAddDTO dto, CoreUser coreUser) {
// 追加的使用时长
// Long appendUseDuration = defaultIfNull(dto.getUseDuration(), 5L);
// final String firstName = Objects.isNull(dto.getFirstName()) ? null : dto.getFirstName().trim();
// final String secondName = Objects.isNull(dto.getSecondName()) ? null : dto.getSecondName().trim();
// final Long userId = coreUser.getId();
// final Long orgId = coreUser.getOrgId();
// final String today = DateUtil.today();
// // 院校名称
// String universitiesCollegesName = "";
// // 院校ID
// Long universitiesCollegesId = null;
// // 院校所在省
// String province = null;
// // 用户类型
// UseTypeEnum useType = null;
//
// // 查询唯一的条件,如果没查到那肯定是要新增一条数据咯
// StudentTeacherSystemUseLogAnalysisQuery query = new StudentTeacherSystemUseLogAnalysisQuery();
// query.setFirstName(firstName);
// query.setSecondName(secondName);
// query.setUserId(userId);
// query.setOrgId(orgId);
// query.setDayTime(today);
//
// // 追加院校ID条件
// if (coreUser.isStudent()) {
// Student student = studentService.getByUserId(userId);
// useType = UseTypeEnum.STUDENT;
// if (student != null) {
// UniversitiesColleges universitiesColleges = universitiesCollegesService.getUniversitiesCollegesByStudent(student);
// province = universitiesColleges.getUniversitiesCollegesProvince();
// universitiesCollegesId = universitiesColleges.getUniversitiesCollegesId();
// universitiesCollegesName = universitiesColleges.getUniversitiesCollegesName();
// query.setUniversitiesCollegesId(universitiesCollegesId);
// }
// }
// if (coreUser.isTeacher()) {
// Teacher teacher = teacherService.getByUserId(userId);
// useType = UseTypeEnum.TEACHER;
// if (teacher != null) {
// UniversitiesColleges universitiesColleges = universitiesCollegesService.getUniversitiesCollegesByTeacher(teacher);
// province = universitiesColleges.getUniversitiesCollegesProvince();
// universitiesCollegesId = universitiesColleges.getUniversitiesCollegesId();
// universitiesCollegesName = universitiesColleges.getUniversitiesCollegesName();
// query.setUniversitiesCollegesId(universitiesColleges.getUniversitiesCollegesId());
// }
// }
//
// List<StudentTeacherSystemUseLogAnalysis> logAnalysisList = getValuesByQueryNotWithPermission(query);
//
// // 如果查询到数据,则追加使用时长(分钟)
// if (CollectionUtil.isNotEmpty(logAnalysisList)) {
// StudentTeacherSystemUseLogAnalysis logAnalysis = getFirst(logAnalysisList);
// logAnalysis.setUseDuration(defaultIfNull(logAnalysis.getUseDuration(), 0L) + appendUseDuration);
// updateTemplate(logAnalysis);
// }
//
// // 否则新增一条数据
// else {
// StudentTeacherSystemUseLogAnalysis useLogAnalysis = new StudentTeacherSystemUseLogAnalysis();
// useLogAnalysis.setFirstName(firstName);
// useLogAnalysis.setSecondName(secondName);
// useLogAnalysis.setUniversitiesCollegesName(universitiesCollegesName);
// useLogAnalysis.setUniversitiesCollegesId(universitiesCollegesId);
// useLogAnalysis.setUserType(useType);
// useLogAnalysis.setProvince(province);
// useLogAnalysis.setDayTime(today);
// useLogAnalysis.setUseDuration(appendUseDuration);
// useLogAnalysis.setAddTime(now());
// useLogAnalysis.setOrgId(orgId);
// useLogAnalysis.setUserId(userId);
//
// insert(useLogAnalysis);
// }
// 追加的使用时长
Long appendUseDuration = defaultIfNull(dto.getUseDuration(), 5L);
final String firstName = dto.getFirstName().trim();
final String secondName = dto.getSecondName().trim();
final Long userId = coreUser.getId();
final Long orgId = coreUser.getOrgId();
final String today = DateUtil.today();
String firstName = Objects.isNull(dto.getFirstName()) ? null : dto.getFirstName().trim();
String secondName = Objects.isNull(dto.getSecondName()) ? null : dto.getSecondName().trim();
Long userId = coreUser.getId();
Long orgId = coreUser.getOrgId();
// 院校名称
String universitiesCollegesName = "";
// 院校ID
@ -394,13 +464,6 @@ public class StudentTeacherSystemUseLogAnalysisService extends CoreBaseService<S
// 用户类型
UseTypeEnum useType = null;
// 查询唯一的条件,如果没查到那肯定是要新增一条数据咯
StudentTeacherSystemUseLogAnalysisQuery query = new StudentTeacherSystemUseLogAnalysisQuery();
query.setFirstName(firstName);
query.setSecondName(secondName);
query.setUserId(userId);
query.setOrgId(orgId);
query.setDayTime(today);
// 追加院校ID条件
if (coreUser.isStudent()) {
@ -411,9 +474,9 @@ public class StudentTeacherSystemUseLogAnalysisService extends CoreBaseService<S
province = universitiesColleges.getUniversitiesCollegesProvince();
universitiesCollegesId = universitiesColleges.getUniversitiesCollegesId();
universitiesCollegesName = universitiesColleges.getUniversitiesCollegesName();
query.setUniversitiesCollegesId(universitiesCollegesId);
}
}
if (coreUser.isTeacher()) {
Teacher teacher = teacherService.getByUserId(userId);
useType = UseTypeEnum.TEACHER;
@ -422,21 +485,31 @@ public class StudentTeacherSystemUseLogAnalysisService extends CoreBaseService<S
province = universitiesColleges.getUniversitiesCollegesProvince();
universitiesCollegesId = universitiesColleges.getUniversitiesCollegesId();
universitiesCollegesName = universitiesColleges.getUniversitiesCollegesName();
query.setUniversitiesCollegesId(universitiesColleges.getUniversitiesCollegesId());
}
}
List<StudentTeacherSystemUseLogAnalysis> logAnalysisList = getValuesByQueryNotWithPermission(query);
StudentTeacherSystemUseLogAnalysis logAnalysis = sqlManager.lambdaQuery(StudentTeacherSystemUseLogAnalysis.class)
.andEq(StudentTeacherSystemUseLogAnalysis::getUniversitiesCollegesId, universitiesCollegesId)
.andEq(StudentTeacherSystemUseLogAnalysis::getOrgId, orgId)
.andEq(StudentTeacherSystemUseLogAnalysis::getUserId, userId)
.orderBy("id DESC")
.limit(0, 1)
.single();
// 如果查询到数据,则追加使用时长(分钟)
if (CollectionUtil.isNotEmpty(logAnalysisList)) {
StudentTeacherSystemUseLogAnalysis logAnalysis = getFirst(logAnalysisList);
//查看数据库最新一条进行对比,如果是相同模块就累计时间
if (!Objects.isNull(logAnalysis) && StringUtils.equals(logAnalysis.getFirstName(), firstName) && StringUtils.isEmpty(logAnalysis.getDayTime())) {
logAnalysis.setUseDuration(defaultIfNull(logAnalysis.getUseDuration(), 0L) + appendUseDuration);
updateTemplate(logAnalysis);
} else {
if (!Objects.isNull(logAnalysis) && StringUtils.isEmpty(logAnalysis.getDayTime())) {
long time = (Objects.isNull(logAnalysis.getAddTime()) ? 0 : logAnalysis.getAddTime().getTime()) + (Objects.isNull(logAnalysis.getUseDuration()) ? 0 : (logAnalysis.getUseDuration() * 60 * 1000));
logAnalysis.setDayTime(DateUtil.formatDateTime(DateUtil.date(time)));
updateTemplate(logAnalysis);
}
// 否则新增一条数据
else {
StudentTeacherSystemUseLogAnalysis useLogAnalysis = new StudentTeacherSystemUseLogAnalysis();
useLogAnalysis.setFirstName(firstName);
useLogAnalysis.setSecondName(secondName);
@ -444,7 +517,6 @@ public class StudentTeacherSystemUseLogAnalysisService extends CoreBaseService<S
useLogAnalysis.setUniversitiesCollegesId(universitiesCollegesId);
useLogAnalysis.setUserType(useType);
useLogAnalysis.setProvince(province);
useLogAnalysis.setDayTime(today);
useLogAnalysis.setUseDuration(appendUseDuration);
useLogAnalysis.setAddTime(now());
useLogAnalysis.setOrgId(orgId);

@ -2341,7 +2341,8 @@ public class StudentController extends BaseController{
@ResponseBody
public String studentLoginLogListExport(StudentLoginLogQuery condition, @SCoreUser CoreUser coreUser) throws IOException {
Assert.isFalse(coreUser.isStudent(), "暂无权限访问!");
condition.setLoginPath(ResponseControllerAdvice.LOGIN_URL);
condition.setLogoutPath(KeyExpiredListener.TOKEN_EXPIRED_MESSAGE);
condition.setPage(1); condition.setLimit(Integer.MAX_VALUE + 0L);
// PageQuery<StudentLoginLogVO> page = studentService.queryStudentLoginLogByCondition(condition.getPageQuery());
PageQuery<StudentLoginLogVO> page = studentService.queryUserLoginLogByCondition(condition.getPageQuery());

@ -1970,7 +1970,8 @@ queryUserLoginLogByCondition
jsl.create_time AS logout_time,
timediff(jsl.create_time,a.create_time) AS online_duration,
isnull(jsl.create_time) AS is_on_line,
a.ip
a.ip,
tb.class_name
@}
FROM
sys_log a
@ -1980,6 +1981,15 @@ queryUserLoginLogByCondition
universities_colleges uc ON uc.org_id = cu.ORG_ID
LEFT JOIN
sys_log jsl ON jsl.request_url = #logoutPath# AND jsl.user_id = a.user_id AND FIND_IN_SET(a.id,jsl.result)
LEFT JOIN
(
SELECT
sc.class_name,
s.user_id
FROM
student s
LEFT JOIN school_class sc ON sc.class_id = s.class_id
) tb on tb.user_id = a.user_id
WHERE
a.request_url LIKE #'%'+loginPath+'%'#
AND a.user_id IS NOT NULL
@ -2059,3 +2069,46 @@ queryStatisticalStatementNumberPeopleByCondition
) b
GROUP BY b.time,b.universities_colleges_name,b.universities_colleges_province
) c
queryStudentTeacherOrUseLogBy
===
* 使用日志:
* 院校管理员 只能查看他院校下面的学生、教师、院校管理跳转子应用的日志
* 超管 查看院校菜单导航栏功能模块的使用时长
SELECT
@pageTag() {
cu.`NAME`,
cu.`CODE`,
a.universities_colleges_name,
a.province AS universities_colleges_province,
a.first_name AS platform,
a.add_time AS login_time,
a.day_time AS logout_time,
SEC_TO_TIME(a.use_duration * 60) AS online_duration,
tb.class_name
@}
FROM
student_teacher_system_use_log_analysis a
LEFT JOIN core_user cu ON cu.ID = a.user_id
LEFT JOIN
(
SELECT
sc.class_name,
s.user_id
FROM
student s
LEFT JOIN school_class sc ON sc.class_id = s.class_id
) tb on tb.user_id = a.user_id
WHERE
1=1
@if(!isEmpty(codeOrName)) {
AND concat(cu.`NAME`, cu.`CODE`) LIKE #'%'+codeOrName+'%'#
@}
@if(!isEmpty(universitiesCollegesId)) {
AND a.universities_colleges_id = #universitiesCollegesId#
@}
@if(!isEmpty(loginStartTime) && !isEmpty(loginEndTime)) {
AND a.add_time between str_to_date(#loginStartTime#,'%Y-%m-%d') AND date_add(str_to_date(#loginEndTime#,'%Y-%m-%d'),interval 1 day)
@}
ORDER BY a.add_time DESC

Loading…
Cancel
Save