feat: 通用授权后台、离线证、Waffo 支付页与仪表盘加强

支持多产品计划展示、LICOFF 离线签发、支付独立配置与调试,以及分析看板;同步更新 README 与集成文档。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Logan.LiandCursor committed 2026-08-12 20:25:46 +08:00
1 parent 0966375076
commit 8cc2c83f9d
41 files changed
+3177 -332

No files matched your search

@@ -90,3 +90,33 @@ func (ctrl *AnalyticsController) GetProductDistribution(c *gin.Context) {
}
c.JSON(http.StatusOK, gin.H{"code": 0, "data": stats})
}
// GetGeoDistribution 地理分布 // Logan.Li
func (ctrl *AnalyticsController) GetGeoDistribution(c *gin.Context) {
stats, err := ctrl.svc.GetGeoDistribution()
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"code": 500, "message": err.Error()})
return
}
c.JSON(http.StatusOK, gin.H{"code": 0, "data": stats})
}
// GetPlatformDistribution 客户端形态分布 // Logan.Li
func (ctrl *AnalyticsController) GetPlatformDistribution(c *gin.Context) {
stats, err := ctrl.svc.GetPlatformDistribution()
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"code": 500, "message": err.Error()})
return
}
c.JSON(http.StatusOK, gin.H{"code": 0, "data": stats})
}
// GetLicenseGrowthDetail 增长明细(累计+新增) // Logan.Li
func (ctrl *AnalyticsController) GetLicenseGrowthDetail(c *gin.Context) {
stats, err := ctrl.svc.GetLicenseGrowthDetail()
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"code": 500, "message": err.Error()})
return
}
c.JSON(http.StatusOK, gin.H{"code": 0, "data": stats})
}