@@ -69,3 +69,28 @@ func IndexAppList(c *gin.Context) { | |||||
e.OutSuc(c, res, nil) | e.OutSuc(c, res, nil) | ||||
return | return | ||||
} | } | ||||
// IndexAppListTable | |||||
// @Summary 应用数据-每个应用的折线图 | |||||
// @Tags 首页------嘉俊 | |||||
// @Description 首页-应用数据-每个应用的折线图 | |||||
// @param Authorization header string true "验证参数Bearer和token空格拼接" | |||||
// @Accept json | |||||
// @Produce json | |||||
// @Param args body md.IndexAppListTableReq true "请求参数" | |||||
// @Success 200 {string} "具体看返回内容 " | |||||
// @Failure 400 {object} md.Response "具体错误" | |||||
// @Router /api/index/app/list/table [POST] | |||||
func IndexAppListTable(c *gin.Context) { | |||||
var req md.IndexAppListTableReq | |||||
err := c.ShouldBindJSON(&req) | |||||
if err != nil { | |||||
err = validate.HandleValidateErr(err) | |||||
err1 := err.(e.E) | |||||
e.OutErr(c, err1.Code, err1.Error()) | |||||
return | |||||
} | |||||
res := svc.BeforeSevenPoint(c, req) | |||||
e.OutSuc(c, res, nil) | |||||
return | |||||
} |
@@ -536,3 +536,60 @@ func GetMob(c *gin.Context) { | |||||
}, nil) | }, nil) | ||||
return | return | ||||
} | } | ||||
// SetLogo | |||||
// @Summary logo设置 | |||||
// @Tags 设置中心-基础设置 | |||||
// @Description 基础设置-logo设置 | |||||
// @param Authorization header string true "验证参数Bearer和token空格拼接" | |||||
// @Accept json | |||||
// @Produce json | |||||
// @Param args body md.SetLogoReq true "请求参数" | |||||
// @Success 200 {string} "success" | |||||
// @Failure 400 {object} md.Response "具体错误" | |||||
// @Router /api/setCenter/basic/setLogo [POST] | |||||
func SetLogo(c *gin.Context) { | |||||
var req md.SetLogoReq | |||||
err := c.ShouldBindJSON(&req) | |||||
if err != nil { | |||||
err = validate.HandleValidateErr(err) | |||||
err1 := err.(e.E) | |||||
e.OutErr(c, err1.Code, err1.Error()) | |||||
return | |||||
} | |||||
masterId := svc.GetMasterId(c) | |||||
engine := db.DBs[masterId] | |||||
sysCfgDb := implement2.NewSysCfgDb(engine, masterId) | |||||
sysCfgDb.SysCfgUpdate("medium_logo", req.MediumLogo) | |||||
sysCfgDb.SysCfgUpdate("agent_logo", req.AgentLogo) | |||||
svc.ClearRedis(c, masterId, "medium_logo") | |||||
svc.ClearRedis(c, masterId, "agent_logo") | |||||
svc.ClearAllRedis(c, masterId) | |||||
e.OutSuc(c, "success", nil) | |||||
return | |||||
} | |||||
// GetLogo | |||||
// @Summary logo获取 | |||||
// @Tags 设置中心-基础设置 | |||||
// @Description 基础设置-logo获取 | |||||
// @param Authorization header string true "验证参数Bearer和token空格拼接" | |||||
// @Accept json | |||||
// @Produce json | |||||
// @Success 200 {object} md.SetLogoResp | |||||
// @Failure 400 {object} md.Response "具体错误" | |||||
// @Router /api/setCenter/basic/getLogo [GET] | |||||
func GetLogo(c *gin.Context) { | |||||
masterId := svc.GetMasterId(c) | |||||
engine := db.DBs[masterId] | |||||
sysCfgDb := implement2.NewSysCfgDb(engine, masterId) | |||||
res := sysCfgDb.SysCfgFindWithDb("medium_logo", "agent_logo") | |||||
e.OutSuc(c, md.SetLogoResp{ | |||||
Data: md.SetLogoReq{ | |||||
MediumLogo: res["medium_logo"], | |||||
AgentLogo: res["agent_logo"], | |||||
}, | |||||
}, nil) | |||||
return | |||||
} |
@@ -55,3 +55,10 @@ type SetMobReq struct { | |||||
type SetMobResp struct { | type SetMobResp struct { | ||||
Data SetMobReq `json:"data"` //数据内容 | Data SetMobReq `json:"data"` //数据内容 | ||||
} | } | ||||
type SetLogoReq struct { | |||||
MediumLogo string `json:"medium_logo"` | |||||
AgentLogo string `json:"agent_logo"` | |||||
} | |||||
type SetLogoResp struct { | |||||
Data SetLogoReq `json:"data"` //数据内容 | |||||
} |
@@ -79,9 +79,10 @@ func route(r *gin.RouterGroup) { | |||||
rFinancialDynamics(r.Group("/financialDynamics")) //资产动态 | rFinancialDynamics(r.Group("/financialDynamics")) //资产动态 | ||||
} | } | ||||
func rIndex(r *gin.RouterGroup) { | func rIndex(r *gin.RouterGroup) { | ||||
r.GET("/base", hdl.Base) //首页-基本信息 | |||||
r.GET("/total", hdl.IndexTotal) //首页-统计数据 | |||||
r.POST("/app/list", hdl.IndexAppList) //首页-应用数据 | |||||
r.GET("/base", hdl.Base) //首页-基本信息 | |||||
r.GET("/total", hdl.IndexTotal) //首页-统计数据 | |||||
r.POST("/app/list", hdl.IndexAppList) //首页-应用数据 | |||||
r.POST("/app/list/table", hdl.IndexAppListTable) //首页-应用数据-每个应用的折线图 | |||||
} | } | ||||
func rRole(r *gin.RouterGroup) { | func rRole(r *gin.RouterGroup) { | ||||
r.GET("/roleList", hdl.RoleList) //角色列表 | r.GET("/roleList", hdl.RoleList) //角色列表 | ||||
@@ -127,6 +128,8 @@ func rSetCenter(r *gin.RouterGroup) { | |||||
rBasicSetCenter.GET("/wxOpenGet", hdl.WxOpenGet) | rBasicSetCenter.GET("/wxOpenGet", hdl.WxOpenGet) | ||||
rBasicSetCenter.POST("/setMob", hdl.SetMob) | rBasicSetCenter.POST("/setMob", hdl.SetMob) | ||||
rBasicSetCenter.GET("/getMob", hdl.GetMob) | rBasicSetCenter.GET("/getMob", hdl.GetMob) | ||||
rBasicSetCenter.POST("/setLogo", hdl.SetLogo) | |||||
rBasicSetCenter.GET("/getLogo", hdl.GetLogo) | |||||
} | } | ||||
rAppletSetCenter := r.Group("/applet") | rAppletSetCenter := r.Group("/applet") | ||||
{ | { | ||||
@@ -57,16 +57,46 @@ func commBili(c *gin.Context, before, after []map[string]string, types string) s | |||||
} | } | ||||
return bili | return bili | ||||
} | } | ||||
func beforeSevenPoint(c *gin.Context, req md.IndexAppListTableReq) { | |||||
//start := utils.TimeStdParseUnix(req.StartDate + " 00:00:00") | |||||
//day := (utils.TimeStdParseUnix(req.EndDate+" 00:00:00") - start) / 86400 | |||||
//firstTime := time.Unix(start-1-day*86400*7, 0).Format("2006-01-02") | |||||
//list := make([]map[string]interface{}, 0) | |||||
//if len(req.AppId) > 0 { | |||||
// commTotalByDate(c, firstTime, req.EndDate, req.AppId) | |||||
//} | |||||
//{Name: "广告预估收益", Type: "media_revenue", Bili: commBili(c, dataLastMap[v["app_id"]], tmpList, "media_revenue"), Value: utils.Float64ToStr(utils.StrToFloat64(v["media_revenue"]) / 100)}, | |||||
func BeforeSevenPoint(c *gin.Context, req md.IndexAppListTableReq) map[string][]string { | |||||
start := utils.TimeStdParseUnix(req.StartDate + " 00:00:00") | |||||
day := (utils.TimeStdParseUnix(req.EndDate+" 00:00:00")-start)/86400 + 1 | |||||
first := start - day*86400*6 | |||||
dayAll := (utils.TimeStdParseUnix(req.EndDate+" 00:00:00")-first)/86400 + 1 | |||||
firstTime := time.Unix(first, 0).Format("2006-01-02") | |||||
appData := make(map[string][]string) | |||||
for _, v := range req.AppId { | |||||
appData[v] = make([]string, dayAll/day+1, dayAll/day+1) | |||||
} | |||||
dateList := make(map[int]string) | |||||
j := 1 | |||||
for i := 0; i < int(dayAll); i++ { | |||||
if i >= (j-1)*int(day) && i < j*int(day) { | |||||
dateList[j-1] += "," + time.Unix(first+int64(i)*86400, 0).Format("2006-01-02") | |||||
continue | |||||
} | |||||
j++ | |||||
dateList[j-1] += "," + time.Unix(first+int64(i)*86400, 0).Format("2006-01-02") | |||||
} | |||||
if len(req.AppId) > 0 { | |||||
date := commTotalByDate(c, firstTime, req.EndDate, req.AppId) | |||||
for _, v := range date { | |||||
for k1, v1 := range dateList { | |||||
if strings.Contains(v1, v["date"]) { | |||||
appData[v["app_id"]][k1] = utils.Float64ToStr(utils.StrToFloat64(appData[v["app_id"]][k1]) + utils.StrToFloat64(v["media_revenue"])) | |||||
} | |||||
} | |||||
} | |||||
} | |||||
for k, v := range appData { | |||||
for k1, v1 := range v { | |||||
if v1 == "" { | |||||
appData[k][k1] = "0" | |||||
} | |||||
} | |||||
} | |||||
return appData | |||||
} | } | ||||
func IndexAppList(c *gin.Context, req md.IndexAppListReq) md.IndexAppListRes { | func IndexAppList(c *gin.Context, req md.IndexAppListReq) md.IndexAppListRes { | ||||
@@ -176,7 +206,7 @@ func commTotalByApp(c *gin.Context, req md.IndexAppListReq, appId []string) []ma | |||||
where += " and medium_id in(" + mediumId + ")" | where += " and medium_id in(" + mediumId + ")" | ||||
} | } | ||||
if len(appId) > 0 { | if len(appId) > 0 { | ||||
where += " and app_id in(" + strings.Join(appId, ",") + ")" | |||||
where += " and app_id in(‘" + strings.Join(appId, ",") + "’)" | |||||
} | } | ||||
if req.Sort == "" { | if req.Sort == "" { | ||||
req.Sort = "media_revenue desc" | req.Sort = "media_revenue desc" | ||||
@@ -206,9 +236,10 @@ func commTotalByDate(c *gin.Context, startDate, endDate string, appId []string) | |||||
where += " and date<='" + endDate + "'" | where += " and date<='" + endDate + "'" | ||||
} | } | ||||
if len(appId) > 0 { | if len(appId) > 0 { | ||||
where += " and app_id in(" + strings.Join(appId, ",") + ")" | |||||
where += " and app_id in('" + strings.Join(appId, ",") + "')" | |||||
} | } | ||||
sql = fmt.Sprintf(sql, where) | sql = fmt.Sprintf(sql, where) | ||||
nativeString, _ := db.QueryNativeString(db.Db, sql) | |||||
nativeString, err := db.QueryNativeString(db.Db, sql) | |||||
fmt.Println(err) | |||||
return nativeString | return nativeString | ||||
} | } |