Bladeren bron

手动补算力统计/注释掉一些qw_task 不必要的日志

三七 3 dagen geleden
bovenliggende
commit
0f3b6001e8

+ 4 - 0
fs-qw-task/src/main/java/com/fs/app/controller/CommonController.java

@@ -18,6 +18,7 @@ import com.fs.course.param.FsCourseLinkMiniParam;
 import com.fs.course.param.newfs.FsUserCourseAddCompanyUserParam;
 import com.fs.course.service.*;
 import com.fs.course.vo.FsUserCourseVideoQVO;
+import com.fs.fastGpt.domain.FastGptPushTokenTotal;
 import com.fs.his.domain.FsUser;
 import com.fs.his.service.IFsInquiryOrderService;
 import com.fs.his.utils.qrcode.QRCodeUtils;
@@ -26,6 +27,7 @@ import com.fs.qw.domain.QwExternalContact;
 import com.fs.qw.domain.QwIpadServerLog;
 import com.fs.qw.domain.QwUser;
 import com.fs.qw.mapper.QwExternalContactMapper;
+import com.fs.qw.mapper.QwRestrictionPushRecordMapper;
 import com.fs.qw.mapper.QwUserMapper;
 import com.fs.qw.service.*;
 import com.fs.qwApi.domain.QwExternalContactResult;
@@ -161,6 +163,8 @@ public class CommonController {
     @Autowired
     private ISysConfigService configService;
 
+
+
     @GetMapping("/roomLinkAllow")
     public R roomLinkAllow() {
 

+ 25 - 24
fs-qw-task/src/main/java/com/fs/app/taskService/impl/SopLogsTaskServiceImpl.java

@@ -992,14 +992,14 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
         // 深拷贝 Content 对象,避免使用 JSON
         QwSopTempSetting.Content clonedContent = deepCopyContent(content);
         if (clonedContent == null) {
-            log.error("Failed to clone content, skipping handleCourseMessage.");
+//            log.error("Failed to clone content, skipping handleCourseMessage.");
             return;
         }
 
         List<QwSopTempSetting.Content.Setting> settings = clonedContent.getSetting();
         List<QwSopTempSetting.Content.Setting> settingAll = new ArrayList<>();
         if (settings == null || settings.isEmpty()) {
-            log.error("Cloned content settings are empty, skipping.");
+//            log.error("Cloned content settings are empty, skipping.");
             return;
         }
         // 顺序处理每个 Setting,避免过多的并行导致线程开销
@@ -1118,7 +1118,7 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
                             // 2. 获取系统配置
                             SysConfig luckyBagConfig = sysConfigMapper.selectConfigByConfigKey("luckyBag.config");
                             if (ObjectUtil.isEmpty(luckyBagConfig) || StringUtil.strIsNullOrEmpty(luckyBagConfig.getConfigValue())) {
-                                log.warn("福袋配置为空,设置发送状态为失败");
+//                                log.warn("福袋配置为空,设置发送状态为失败");
                                 setSopLogsStatus(sopLogs, 5L, 0L, "福袋配置不存在");
                             }
 
@@ -1127,7 +1127,7 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
                             try {
                                 jsonObject = JSON.parseObject(luckyBagConfig.getConfigValue());
                             } catch (Exception e) {
-                                log.error("解析福袋配置JSON失败: {}", luckyBagConfig.getConfigValue(), e);
+//                                log.error("解析福袋配置JSON失败: {}", luckyBagConfig.getConfigValue(), e);
                                 setSopLogsStatus(sopLogs, 5L, 0L, "福袋配置格式错误");
                             }
 
@@ -1143,7 +1143,7 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
                             }
 
                             if (count == null) {
-                                log.warn("周限制次数配置为空");
+//                                log.warn("周限制次数配置为空");
                                 setSopLogsStatus(sopLogs, 5L, 0L, "周限制次数配置错误");
                             }
 
@@ -1173,12 +1173,12 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
                                 Object cachedCount = redisCache.getCacheObject(countCacheKey);
                                 if (cachedCount != null && cachedCount instanceof Integer) {
                                     recordCount = (Integer) cachedCount;
-                                    log.debug("福袋计数缓存命中,userId: {},次数: {}", fsUserId, recordCount);
+//                                    log.debug("福袋计数缓存命中,userId: {},次数: {}", fsUserId, recordCount);
 
                                     // 如果只需要判断是否超限,且已超限,直接返回
                                     if (recordCount >= count) {
-                                        log.info("用户福袋次数已达上限(计数缓存), userId: {}, 当前次数: {}, 限制次数: {}",
-                                                fsUserId, recordCount, count);
+//                                        log.info("用户福袋次数已达上限(计数缓存), userId: {}, 当前次数: {}, 限制次数: {}",
+//                                                fsUserId, recordCount, count);
                                         setSopLogsStatus(sopLogs, 5L, 0L, "超过福袋发放次数");
                                         luckyBagCollectRecords = Collections.emptyList();
                                         // 可以直接返回,不需要查询完整记录
@@ -1226,7 +1226,7 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
 
                             // 6. 检查次数限制
                             if (recordCount >= count) {
-                                log.info("用户福袋次数已达上限, userId: {}, 当前次数: {}, 限制次数: {}", fsUserId, recordCount, count);
+//                                log.info("用户福袋次数已达上限, userId: {}, 当前次数: {}, 限制次数: {}", fsUserId, recordCount, count);
                                 setSopLogsStatus(sopLogs, 5L, 0L, "超过福袋发放次数");
                             }
                         }
@@ -1242,7 +1242,7 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
                                         0L, 0L, qwUserId, companyUserId, companyId, cachedCourseConfig, null);
                             }
                         } catch (Exception e) {
-                            log.error("生成活动链接失败", e);
+//                            log.error("生成活动链接失败", e);
                             setSopLogsStatus(sopLogs, 5L, 0L, "生成活动链接失败");
                             return;
                         }
@@ -1271,7 +1271,7 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
                         setting.setMiniprogramTitle("福袋发放");
                         setting.setMiniprogramPage(link);
 
-                        log.info("福袋配置成功,userId: {}, appId: {}", fsUserId, finalAppId);
+//                        log.info("福袋配置成功,userId: {}, appId: {}", fsUserId, finalAppId);
 
                     } catch (Exception e) {
                         log.error("任务模板福袋发放失败", e);
@@ -1362,7 +1362,7 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
         }
 
         if (config == null) {
-            log.error("CourseConfig is not loaded.");
+//            log.error("CourseConfig is not loaded.");
             return "";
         }
         FsCourseLink link = new FsCourseLink();
@@ -1418,13 +1418,13 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
         // 深拷贝 Content 对象,避免使用 JSON
         QwSopTempSetting.Content clonedContent = deepCopyContent(content);
         if (clonedContent == null) {
-            log.error("Failed to clone content, skipping handleCourseMessage.");
+//            log.error("Failed to clone content, skipping handleCourseMessage.");
             return;
         }
         clonedContent.setLiveId(liveId);
         List<QwSopTempSetting.Content.Setting> settings = clonedContent.getSetting();
         if (settings == null || settings.isEmpty()) {
-            log.error("Cloned content settings are empty, skipping.");
+//            log.error("Cloned content settings are empty, skipping.");
             return;
         }
 
@@ -1506,7 +1506,7 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
         // 深拷贝 Content 对象,避免使用 JSON
         QwSopTempSetting.Content clonedContent = deepCopyContent(content);
         if (clonedContent == null) {
-            log.error("Failed to clone content, skipping handleCourseMessage.");
+//            log.error("Failed to clone content, skipping handleCourseMessage.");
             return;
         }
 
@@ -1517,7 +1517,7 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
 
         List<QwSopTempSetting.Content.Setting> settings = clonedContent.getSetting();
         if (settings == null || settings.isEmpty()) {
-            log.error("Cloned content settings are empty, skipping.");
+//            log.error("Cloned content settings are empty, skipping.");
             return;
         }
         //如果是@所有人,就添加
@@ -1633,9 +1633,10 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
                         setting.setMiniType(miniType);
                         if (!StringUtil.strIsNullOrEmpty(finalAppId)) {
                             setting.setMiniprogramAppid(finalAppId);
-                        } else {
-                            log.error("公司的小程序id为空:采用了前端传的固定值" + sopLogs.getSopId());
                         }
+//                        else {
+//                            log.error("公司的小程序id为空:采用了前端传的固定值" + sopLogs.getSopId());
+//                        }
 
                     }
 
@@ -1785,8 +1786,8 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
         st.setBusinessId(String.valueOf(businessId));
         String realLinkFull = appActivitlLink + JSON.toJSONString(courseMap);
         link.setRealLink(realLinkFull);
-        log.error("存入fs_course_link:" + registeredRealLink);
-        log.error("QwSopCourseFinishTempSetting.Setting:{}", st);
+//        log.error("存入fs_course_link:" + registeredRealLink);
+//        log.error("QwSopCourseFinishTempSetting.Setting:{}", st);
         //存短链-
         fsCourseLinkMapper.insertFsCourseLink(link);
         return link.getRealLink();
@@ -1865,7 +1866,7 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
                 return null;
             }
 
-            log.info("福袋记录添加成功 [recordId:{}, luckyBagId:{}]", recordId, content.getLuckyBagId());
+//            log.info("福袋记录添加成功 [recordId:{}, luckyBagId:{}]", recordId, content.getLuckyBagId());
             return recordId;
 
         } catch (NumberFormatException e) {
@@ -1978,7 +1979,7 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
         }
 
         if (config == null) {
-            log.error("CourseConfig is not loaded.");
+//            log.error("CourseConfig is not loaded.");
             return "";
         }
 
@@ -2075,7 +2076,7 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
         }
 
         if (config == null) {
-            log.error("CourseConfig is not loaded.");
+//            log.error("CourseConfig is not loaded.");
             return null;
         }
         FsCourseLink link = createFsCourseLink(corpId, sendTime, courseId, videoId, qwUserId,
@@ -2192,7 +2193,7 @@ public class SopLogsTaskServiceImpl implements SopLogsTaskService {
         }
 
         if (config == null) {
-            log.error("CourseConfig is not loaded.");
+//            log.error("CourseConfig is not loaded.");
             return "";
         }
 

+ 61 - 0
fs-qwhook-sop/src/main/java/com/fs/app/controller/ApisCommonController.java

@@ -5,12 +5,14 @@ import com.fs.common.core.domain.R;
 import com.fs.common.core.redis.RedisCache;
 import com.fs.course.mapper.FsCourseWatchLogMapper;
 import com.fs.course.mapper.FsUserCourseVideoMapper;
+import com.fs.fastGpt.domain.FastGptPushTokenTotal;
 import com.fs.fastGpt.mapper.FastgptChatVoiceHomoMapper;
 import com.fs.his.domain.FsAppVersion;
 import com.fs.his.service.IFsAppVersionService;
 import com.fs.qw.domain.QwUser;
 import com.fs.qw.mapper.QwCompanyMapper;
 import com.fs.qw.mapper.QwExternalContactCrmMapper;
+import com.fs.qw.mapper.QwRestrictionPushRecordMapper;
 import com.fs.qw.mapper.QwUserMapper;
 import com.fs.qw.param.QwConfigSignatureParam;
 import com.fs.qw.service.IQwJsApiService;
@@ -27,6 +29,9 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.time.LocalDate;
+import java.util.List;
+
 
 @Api("公共接口")
 @RestController
@@ -70,6 +75,62 @@ public class ApisCommonController {
     @Autowired
     private IQwUserVideoService qwUserVideoService;
 
+
+    @Autowired
+    private QwRestrictionPushRecordMapper qwRestrictionPushRecordMapper;
+
+    /**
+     * 统计指定时间段内的ai事件埋点
+     * @param startDate 开始日期 (格式: yyyy-MM-dd)
+     * @param endDate 结束日期 (格式: yyyy-MM-dd)
+     */
+    @GetMapping("/eventLogTotals")
+    public void eventLogTotals(String startDate, String endDate) {
+        try {
+            // 解析开始和结束日期
+            LocalDate start = LocalDate.parse(startDate);
+            LocalDate end = LocalDate.parse(endDate);
+
+            // 循环处理每一天
+            LocalDate current = start;
+            while (!current.isAfter(end)) {
+                String dateTime = current.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+
+                log.info("开始处理日期: {}", dateTime);
+
+                List<FastGptPushTokenTotal> fastGptPushTotalList = qwRestrictionPushRecordMapper.selectFastgptPushTokenTotal(dateTime);
+                if (fastGptPushTotalList != null && !fastGptPushTotalList.isEmpty()) {
+                    for (FastGptPushTokenTotal fastGptPushTotal : fastGptPushTotalList) {
+                        // 获取统计数据
+                        Integer type = fastGptPushTotal.getType();
+                        Long count = 0L;
+                        if(type == 7){
+                            count = fastGptPushTotal.getCount() * 450;
+                        }else{
+                            count = fastGptPushTotal.getCount() * 150;
+                        }
+                        fastGptPushTotal.setCount(count);
+                        FastGptPushTokenTotal pushTotal = qwRestrictionPushRecordMapper.selectFastGptPushTokenTotalByInfo(fastGptPushTotal);
+                        if(pushTotal == null){
+                            qwRestrictionPushRecordMapper.insertPushTokenTotal(fastGptPushTotal);
+                        }else{
+                            fastGptPushTotal.setId(pushTotal.getId());
+                            qwRestrictionPushRecordMapper.updatePushTokenTotal(fastGptPushTotal);
+                        }
+                    }
+                }
+
+                // 移动到下一天
+                current = current.plusDays(1);
+            }
+
+            log.info("时间段 {} 至 {} 的AI事件统计处理完成", startDate, endDate);
+        } catch (Exception e) {
+            log.error("处理时间段AI事件统计异常,时间范围: " + startDate + " 至 " + endDate, e);
+        }
+    }
+
+
     @PostMapping("/qwHookSendMsg")
     public R qwHookSendMsg(@RequestBody QwHookSendMsgParam param ) {
         param.setClientId(2);

+ 1 - 36
fs-qwhook/src/main/java/com/fs/app/controller/ApisCommonController.java

@@ -88,8 +88,6 @@ public class ApisCommonController {
     @Autowired
     private IFsCourseLinkService iFsCourseLinkService;
 
-    @Autowired
-    private QwRestrictionPushRecordMapper qwRestrictionPushRecordMapper;
 
     @Autowired
     private FsUserMapper userMapper;
@@ -130,40 +128,7 @@ public class ApisCommonController {
         System.out.println(usersByPhone);
     }
 
-    @GetMapping("/sopPushTokenTotal")
-    public void sopPushTokenTotal(String dateTime) {
-
-        // 获取日期字符串(今天或昨天)
-//        String dateTime;
-//            dateTime = DateUtils.getDate();
-        log.info("开始执行sop任务token消耗统计");
-        try {
-            List<FastGptPushTokenTotal> fastGptPushTotalList = qwRestrictionPushRecordMapper.selectFastgptPushTokenTotal(dateTime);
-            if (fastGptPushTotalList != null && !fastGptPushTotalList.isEmpty()) {
-                for (FastGptPushTokenTotal fastGptPushTotal : fastGptPushTotalList) {
-                    // 获取统计数据
-                    Integer type = fastGptPushTotal.getType();
-                    Long count = 0L;
-                    if(type == 7){
-                        count = fastGptPushTotal.getCount() * 450;
-                    }else{
-                        count = fastGptPushTotal.getCount() * 150;
-                    }
-                    fastGptPushTotal.setCount(count);
-                    FastGptPushTokenTotal pushTotal = qwRestrictionPushRecordMapper.selectFastGptPushTokenTotalByInfo(fastGptPushTotal);
-                    if(pushTotal == null){
-                        qwRestrictionPushRecordMapper.insertPushTokenTotal(fastGptPushTotal);
-                    }else{
-                        fastGptPushTotal.setId(pushTotal.getId());
-                        qwRestrictionPushRecordMapper.updatePushTokenTotal(fastGptPushTotal);
-                    }
-                }
-            }
-            log.info("结束执行sop任务token消耗统计");
-        } catch (Exception e) {
-            log.error("执行sop任务token消耗统计异常", e);
-        }
-    }
+
 
     /**
      * 获取跳转微信小程序的链接地址

+ 0 - 1
fs-service/src/main/java/com/fs/qw/service/AsyncQwAiChatSopService.java

@@ -158,7 +158,6 @@ public class AsyncQwAiChatSopService {
                     sopLogs.setSendTime(sendTime);
 
                     Date expirySendTime = Date.from(expiryDateTime.atZone(ZoneId.of("Asia/Shanghai")).toInstant());
-
                     //过滤违禁词
                     if ("1".equals(setting.getContentType())) {
                         sopUserLogsInfoService.replaceContent(setting.getContentType(), setting.getValue(), setting::setValue, words); // 替换 value