作者 dong

修改日志管理代码,首页修改指标说明提示修改,

设置-功能按钮,设置-样式修改,知识库跳转,设置-全部字段必填,设置-将智能助手配置放菜单管理下
... ... @@ -84,6 +84,8 @@ public class AiragChatsettingController extends JeecgController<AiragChatsetting
// 处理按钮ID为数组
if (StringUtils.isNotBlank(airagChatsettingConfig.getButtonId())) {
airagChatsettingConfig.setButtonIds(Arrays.asList(airagChatsettingConfig.getButtonId().split(",")));
}else{
airagChatsettingConfig.setButtonIds(Collections.emptyList());
}
... ...
... ... @@ -308,11 +308,27 @@ public class AiragLogController extends JeecgController<AiragLog, IAiragLogServi
@AutoLog(value = "日志管理-获取统计信息")
@Operation(summary="日志管理-获取统计信息")
@GetMapping(value = "/getStatistics")
public Result<Map<String, Object>> getStatistics(
public Result<Map<String, Object>> getStatistics() {
Map<String, Object> result = airagLogService.getStatistics();
return Result.OK(result);
}
@AutoLog(value = "日志管理-获取按钮统计信息")
@Operation(summary="日志管理-获取按钮统计信息")
@GetMapping(value = "/getButtonStats")
public Result<List<Map<String, Object>>> getButtonStats(
@RequestParam(name = "rangeType", required = false) String rangeType,
@RequestParam(name = "startTime", required = false) String startTime,
@RequestParam(name = "endTime", required = false) String endTime) {
Map<String, Object> result = airagLogService.getStatistics(rangeType, startTime, endTime);
List<Map<String, Object>> result = airagLogService.getButtonStats(rangeType, startTime, endTime);
return Result.OK(result);
}
@AutoLog(value = "日志管理-获取问题输入统计信息")
@Operation(summary="日志管理-获取文日输入统计信息")
@GetMapping(value = "/getQuestionStatistics")
public Result<Map<String, Object>> getQuestionStatistics() {
Map<String, Object> result = airagLogService.getQuestionStatistics();
return Result.OK(result);
}
}
... ...
... ... @@ -30,4 +30,7 @@ public interface AiragLogMapper extends BaseMapper<AiragLog> {
@Param("startTime") String startTime,
@Param("endTime") String endTime
);
List<Map<String, Object>> getDailyCountForLast7Days();
List<Map<String, Object>> getDailyRejectedCountForLast7Days();
}
... ...
... ... @@ -103,4 +103,53 @@
ORDER BY total DESC
LIMIT 7
</select>
<select id="getDailyCountForLast7Days" resultType="java.util.Map">
SELECT
DATE_FORMAT(date_range.date, '%Y-%m-%d') AS date,
IFNULL(log_counts.count, 0) AS count
FROM (
SELECT CURDATE() AS date
UNION ALL SELECT DATE_SUB(CURDATE(), INTERVAL 1 DAY)
UNION ALL SELECT DATE_SUB(CURDATE(), INTERVAL 2 DAY)
UNION ALL SELECT DATE_SUB(CURDATE(), INTERVAL 3 DAY)
UNION ALL SELECT DATE_SUB(CURDATE(), INTERVAL 4 DAY)
UNION ALL SELECT DATE_SUB(CURDATE(), INTERVAL 5 DAY)
UNION ALL SELECT DATE_SUB(CURDATE(), INTERVAL 6 DAY)
) date_range
LEFT JOIN (
SELECT
DATE(create_time) AS date,
COUNT(*) AS count
FROM airag_log
WHERE create_time >= DATE_SUB(CURDATE(), INTERVAL 6 DAY)
GROUP BY DATE(create_time)
) log_counts ON date_range.date = log_counts.date
ORDER BY date_range.date ASC
</select>
<select id="getDailyRejectedCountForLast7Days" resultType="java.util.Map">
SELECT
DATE_FORMAT(date_range.date, '%Y-%m-%d') AS date,
IFNULL(log_counts.count, 0) AS count
FROM (
SELECT CURDATE() AS date
UNION ALL SELECT DATE_SUB(CURDATE(), INTERVAL 1 DAY)
UNION ALL SELECT DATE_SUB(CURDATE(), INTERVAL 2 DAY)
UNION ALL SELECT DATE_SUB(CURDATE(), INTERVAL 3 DAY)
UNION ALL SELECT DATE_SUB(CURDATE(), INTERVAL 4 DAY)
UNION ALL SELECT DATE_SUB(CURDATE(), INTERVAL 5 DAY)
UNION ALL SELECT DATE_SUB(CURDATE(), INTERVAL 6 DAY)
) date_range
LEFT JOIN (
SELECT
DATE(create_time) AS date,
COUNT(*) AS count
FROM airag_log
WHERE create_time >= DATE_SUB(CURDATE(), INTERVAL 6 DAY)
AND answer_type = 3 <!-- 假设3表示拒绝回答 -->
GROUP BY DATE(create_time)
) log_counts ON date_range.date = log_counts.date
ORDER BY date_range.date ASC
</select>
</mapper>
\ No newline at end of file
... ...
... ... @@ -24,5 +24,9 @@ public interface IAiragLogService extends IService<AiragLog> {
IPage<AiragLog> pageList(AiragLog airagLog, Page<AiragLog> page);
Map<String, Object> getStatistics(String rangeType, String startTime, String endTime);
Map<String, Object> getStatistics();
List<Map<String, Object>> getButtonStats(String rangeType, String startTime, String endTime);
Map<String, Object> getQuestionStatistics();
}
... ...
... ... @@ -88,7 +88,7 @@ public class AiragLogServiceImpl extends ServiceImpl<AiragLogMapper, AiragLog> i
@Override
public Map<String, Object> getStatistics(String rangeType, String startTime, String endTime) {
public Map<String, Object> getStatistics() {
Map<String, Object> result = new HashMap<>();
// 1. 获取今日问答次数
... ... @@ -130,26 +130,79 @@ public class AiragLogServiceImpl extends ServiceImpl<AiragLogMapper, AiragLog> i
averageCount = Math.round(averageCount * 100.0) / 100.0;
}
// 7.获取按钮问题和按钮code次数,只获取有按钮code的问题(log.question)
List<Map<String, Object>> buttonStats = airagLogMapper.getButtonRankList(
rangeType,
startTime,
endTime
);
// 8. 获取最近12个月的月度数据
List<Map<String, Object>> monthlyData = airagLogMapper.getMonthlyCount();
// 9. 添加数据
// 9.获取近七日每日问答次数和近七日每日拒绝问答次数
List<Map<String, Object>> dailyCounts = airagLogMapper.getDailyCountForLast7Days();
List<Map<String, Object>> dailyRejectedCounts = airagLogMapper.getDailyRejectedCountForLast7Days();
// 10. 添加数据
result.put("yesterdayCount", yesterdayCount);
result.put("growthRate", Math.round(growthRate * 100.0) / 100.0); // 保留两位小数
result.put("todayCount", todayCount);
result.put("rejectedCount", rejectedCount);
result.put("totalCount", totalCount);
result.put("averageCount", averageCount);
result.put("buttonStats", buttonStats);
result.put("monthlyData", monthlyData);
result.put("dailyCounts", dailyCounts);
result.put("dailyRejectedCounts", dailyRejectedCounts);
return result;
}
@Override
public List<Map<String, Object>> getButtonStats(String rangeType, String startTime, String endTime){
List<Map<String, Object>> buttonStats = airagLogMapper.getButtonRankList(
rangeType,
startTime,
endTime
);
return buttonStats;
}
@Override
public Map<String, Object> getQuestionStatistics() {
Map<String, Object> result = new HashMap<>();
// 1. 今日问题输入量
QueryWrapper<AiragLog> todayWrapper = new QueryWrapper<>();
todayWrapper.apply("DATE(create_time) = CURDATE()")
.eq("code_type", 0);
long todayCount = this.count(todayWrapper);
// 2. 本周问题输入量
QueryWrapper<AiragLog> weekWrapper = new QueryWrapper<>();
weekWrapper.apply("YEARWEEK(create_time, 1) = YEARWEEK(CURDATE(), 1)")
.eq("code_type", 0);
long weekCount = this.count(weekWrapper);
// 3. 本月问题输入量
QueryWrapper<AiragLog> monthWrapper = new QueryWrapper<>();
monthWrapper.apply("DATE_FORMAT(create_time, '%Y%m') = DATE_FORMAT(CURDATE(), '%Y%m')")
.eq("code_type", 0);
long monthCount = this.count(monthWrapper);
// 4. 本年问题输入量
QueryWrapper<AiragLog> yearWrapper = new QueryWrapper<>();
yearWrapper.apply("YEAR(create_time) = YEAR(CURDATE())")
.eq("code_type", 0);
long yearCount = this.count(yearWrapper);
// 5. 全部问题输入量
QueryWrapper<AiragLog> totalWrapper = new QueryWrapper<>();
totalWrapper.eq("code_type", 0);
long totalCount = this.count(totalWrapper);
// 6. 返回结果
result.put("todayCount", todayCount);
result.put("weekCount", weekCount);
result.put("monthCount", monthCount);
result.put("yearCount", yearCount);
result.put("totalCount", totalCount);
return result;
}
... ...