Просмотр исходного кода

流量统计和token统计and直播flv

xw 2 недель назад
Родитель
Сommit
f8f3401d85

+ 57 - 2
fs-company/src/main/java/com/fs/company/controller/course/FsCourseTrafficLogController.java

@@ -1,10 +1,13 @@
 package com.fs.company.controller.course;
 
 import com.fs.common.annotation.Log;
+import com.fs.common.constant.HttpStatus;
 import com.fs.common.core.controller.BaseController;
 import com.fs.common.core.domain.AjaxResult;
 import com.fs.common.core.domain.R;
+import com.fs.common.core.page.PageDomain;
 import com.fs.common.core.page.TableDataInfo;
+import com.fs.common.core.page.TableSupport;
 import com.fs.common.enums.BusinessType;
 import com.fs.common.utils.poi.ExcelUtil;
 import com.fs.course.domain.FsCourseTrafficLog;
@@ -21,6 +24,7 @@ import org.springframework.web.bind.annotation.*;
 import java.time.LocalDateTime;
 import java.time.YearMonth;
 import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
 import java.util.List;
 
 
@@ -44,14 +48,65 @@ public class FsCourseTrafficLogController extends BaseController
 
     /**
      * 查询短链课程流量记录列表
+     * 每个公司只能查看自己公司的数据
      */
     @PreAuthorize("@ss.hasPermi('course:courseTrafficLog:list')")
     @GetMapping("/list")
     public TableDataInfo list(FsCourseTrafficLogParam param)
     {
-        startPage();
+        // 获取当前登录用户的公司ID
+        Long companyId = tokenService.getLoginUser(com.fs.common.utils.ServletUtils.getRequest())
+                .getCompany().getCompanyId();
+        
+        // 强制设置查询条件为当前公司ID,确保只能查看自己公司的数据
+        param.setCompanyId(companyId);
+        
         List<FsCourseTrafficLogListVO> list = fsCourseTrafficLogService.selectTrafficNew(param);
-        return getDataTable(list);
+
+        // 为每条记录计算流量和金额
+        for (FsCourseTrafficLogListVO vo : list) {
+            vo.formatTraffic();
+        }
+
+        // 计算总和
+        FsCourseTrafficLogListVO sumTotal = new FsCourseTrafficLogListVO();
+        sumTotal.setCompanyName("合计");
+        Long totalTrafficSum = list.stream()
+                .filter(item -> item.getTotalInternetTraffic() != null)
+                .mapToLong(FsCourseTrafficLogListVO::getTotalInternetTraffic)
+                .sum();
+        sumTotal.setTotalInternetTraffic(totalTrafficSum);
+        // 为合计行计算流量和金额
+        sumTotal.formatTraffic();
+
+        // 获取分页参数
+        PageDomain pageDomain = TableSupport.buildPageRequest();
+        Integer pageNum = pageDomain.getPageNum();
+        Integer pageSize = pageDomain.getPageSize();
+
+        int total = list.size();
+        // 在内存中进行分页处理
+        if (pageNum != null && pageSize != null) {
+            int fromIndex = (pageNum - 1) * pageSize;
+            int toIndex = Math.min(fromIndex + pageSize, total);
+
+            // 确保索引不越界
+            if (fromIndex < total) {
+                list = list.subList(fromIndex, toIndex);
+            } else {
+                list = new ArrayList<>(); // 返回空列表
+            }
+        }
+
+        list.add(sumTotal); // 将合计行添加到列表末尾
+
+        // 构造返回结果
+        TableDataInfo rspData = new TableDataInfo();
+        rspData.setCode(HttpStatus.SUCCESS);
+        rspData.setMsg("查询成功");
+        rspData.setRows(list);
+        rspData.setTotal(total);
+        return rspData;
     }
 
     /**

+ 99 - 0
fs-company/src/main/java/com/fs/company/controller/fastGpt/FastGptPushTokenTotalController.java

@@ -0,0 +1,99 @@
+package com.fs.company.controller.fastGpt;
+
+import com.fs.common.constant.HttpStatus;
+import com.fs.common.core.controller.BaseController;
+import com.fs.common.core.page.PageDomain;
+import com.fs.common.core.page.TableDataInfo;
+import com.fs.common.core.page.TableSupport;
+import com.fs.common.utils.ServletUtils;
+import com.fs.fastGpt.domain.FastGptPushTokenTotal;
+import com.fs.framework.security.LoginUser;
+import com.fs.framework.service.TokenService;
+import com.fs.qw.service.IQwPushCountService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * FastGPT推送Token统计Controller
+ * 
+ * @author fs
+ * @date 2025-12-24
+ */
+@RestController
+@RequestMapping("/fastGpt/pushTokenTotal")
+public class FastGptPushTokenTotalController extends BaseController {
+
+    @Autowired
+    private IQwPushCountService qwPushCountService;
+
+    @Autowired
+    private TokenService tokenService;
+
+    /**
+     * 查询FastGPT推送Token统计列表
+     * 每个公司只能查看自己公司的数据
+     */
+    @PreAuthorize("@ss.hasPermi('fastGpt:pushTokenTotal:list')")
+    @GetMapping("/list")
+    public TableDataInfo tokenList(FastGptPushTokenTotal pushTokenInfo) {
+        // 获取当前登录用户的公司ID
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        Long companyId = loginUser.getCompany().getCompanyId();
+        
+        // 强制设置查询条件为当前公司ID,确保只能查看自己公司的数据
+        pushTokenInfo.setCompanyId(companyId);
+        
+        // 查询数据
+        List<FastGptPushTokenTotal> list = qwPushCountService.selectFastGptPushTokenTotalList(pushTokenInfo);
+
+        // 计算总和
+        FastGptPushTokenTotal sumTotal = new FastGptPushTokenTotal();
+        sumTotal.setCompanyName("合计");
+        Long sum = list.stream().mapToLong(FastGptPushTokenTotal::getCount).sum();
+        sumTotal.setCount(sum);
+        
+        // 计算合计金额
+        Double amountSum = list.stream()
+            .filter(item -> item.getAmount() != null)
+            .mapToDouble(FastGptPushTokenTotal::getAmount)
+            .sum();
+        sumTotal.setAmount(Math.round(amountSum * 100.0) / 100.0);
+
+        // 获取分页参数
+        PageDomain pageDomain = TableSupport.buildPageRequest();
+        Integer pageNum = pageDomain.getPageNum();
+        Integer pageSize = pageDomain.getPageSize();
+
+        int total = list.size();
+        
+        // 在内存中进行分页处理
+        if (pageNum != null && pageSize != null) {
+            int fromIndex = (pageNum - 1) * pageSize;
+            int toIndex = Math.min(fromIndex + pageSize, total);
+
+            // 确保索引不越界
+            if (fromIndex < total) {
+                list = list.subList(fromIndex, toIndex);
+            } else {
+                list = new ArrayList<>(); // 返回空列表
+            }
+        }
+
+        // 将合计行添加到列表末尾
+        list.add(sumTotal);
+
+        // 构造返回结果
+        TableDataInfo rspData = new TableDataInfo();
+        rspData.setCode(HttpStatus.SUCCESS);
+        rspData.setMsg("查询成功");
+        rspData.setRows(list);
+        rspData.setTotal(total);
+        return rspData;
+    }
+}

+ 1 - 1
fs-service/src/main/java/com/fs/live/service/impl/LiveServiceImpl.java

@@ -279,7 +279,7 @@ public class LiveServiceImpl implements ILiveService
 		        if (queryIndex != -1) {
 		            queryParams = originalUrl.substring(queryIndex);
 		        }
-		        String formattedUrl = String.format("https://live.moonxiang.com/live/%d.m3u8%s", id, queryParams);
+		        String formattedUrl = String.format("https://live.moonxiang.com/live/%d.flv%s", id, queryParams);
 		        liveVo.setFlvHlsUrl(formattedUrl);
 		    } catch (Exception e) {
 		        log.error("解析推流地址失败, liveId={}, url={}", id, originalUrl, e);