Commit 10a396d2 authored by brent's avatar brent

modify task type

parent bfc209e0
No preview for this file type
...@@ -5,6 +5,7 @@ import ( ...@@ -5,6 +5,7 @@ import (
"ai_developer_admin/libs/kong" "ai_developer_admin/libs/kong"
"ai_developer_admin/libs/mysql" "ai_developer_admin/libs/mysql"
"ai_developer_admin/libs/odysseus" "ai_developer_admin/libs/odysseus"
"ai_developer_admin/libs/postgres"
"ai_developer_admin/libs/redis" "ai_developer_admin/libs/redis"
"ai_developer_admin/libs/utils" "ai_developer_admin/libs/utils"
"ai_developer_admin/models" "ai_developer_admin/models"
...@@ -248,19 +249,43 @@ func (server *UserController) FreeCallCount() { ...@@ -248,19 +249,43 @@ func (server *UserController) FreeCallCount() {
} }
offset := (appRequest.Page - 1) * appRequest.Size offset := (appRequest.Page - 1) * appRequest.Size
checkUser := &models.User{Id: info.UserID}
err = mysql.GetMysqlInstace().Ormer.Read(checkUser)
if err != nil {
server.respond(models.BusinessFailed, err.Error())
return
}
checkUserLevel := &models.UserLevel{Level: checkUser.Level}
err = mysql.GetMysqlInstace().Ormer.Read(checkUserLevel, "level")
if err != nil {
server.respond(models.BusinessFailed, err.Error())
return
}
countQB, _ := orm.NewQueryBuilder("mysql") countQB, _ := orm.NewQueryBuilder("mysql")
queryQB, _ := orm.NewQueryBuilder("mysql") queryQB, _ := orm.NewQueryBuilder("mysql")
countQB.Select("count(*) AS total"). countQB.Select("count(*) AS total").
From("task_type") From("task_type").Where("deleted = 0")
queryQB.Select("id", "name", "api_path"). cond := fmt.Sprintf("user_level_task_type.task_type_id = task_type.id and user_level_task_type.user_level = %d", checkUser.Level)
From("task_type") queryQB.Select("task_type.id",
"task_type.name",
if !(info.Role == 1 || info.Role == 2) { "task_type.api_path",
countQB.And(fmt.Sprintf("user_id = '%d'", info.UserID)) "task_type.type",
queryQB.And(fmt.Sprintf("user_id = '%d'", info.UserID)) "task_type.category",
} "user_level_task_type.free_call_count_day",
"user_level_task_type.free_call_count_month",
"user_level_task_type.free_call_count_year",
"user_level_task_type.free_call_count_total").
From("task_type").LeftJoin("user_level_task_type").On(cond)
queryQB.Where("task_type.deleted = 0")
//if !(info.Role == 1 || info.Role == 2) {
//countQB.And(fmt.Sprintf("user_id = '%d'", info.UserID))
//queryQB.And(fmt.Sprintf("user_id = '%d'", info.UserID))
//}
if appRequest.Keyword != "" { if appRequest.Keyword != "" {
keyword := "%" + appRequest.Keyword + "%" keyword := "%" + appRequest.Keyword + "%"
countQB.And(fmt.Sprintf("name like '%s'", keyword)) countQB.And(fmt.Sprintf("name like '%s'", keyword))
...@@ -273,21 +298,126 @@ func (server *UserController) FreeCallCount() { ...@@ -273,21 +298,126 @@ func (server *UserController) FreeCallCount() {
_ = mysql.GetMysqlInstace().Ormer.Raw(sql).QueryRow(&total) _ = mysql.GetMysqlInstace().Ormer.Raw(sql).QueryRow(&total)
// 导出 SQL 语句 // 导出 SQL 语句
var taskTypes []*models.TaskType type TempTaskType struct {
Id int64 `json:"id"`
Name string `json:"name"`
Type int `json:"type"`
TypeDesc string `json:"type_desc"`
ApiPath string `json:"api_path"`
Category int `json:"category"`
FreeCallCountDay int64 `json:"free_call_count_day"`
FreeCallCountMonth int64 `json:"free_call_count_month"`
WeekCount int `json:"week_count"`
MonthCount int `json:"month_count"`
//FreeCallCountYear int64 `json:"free_call_count_year"`
//FreeCallCountTotal int64 `json:"free_call_count_total"`
}
var taskTypes []*TempTaskType
sql = queryQB.String() sql = queryQB.String()
mysql.GetMysqlInstace().Ormer.Raw(sql).QueryRows(&taskTypes) mysql.GetMysqlInstace().Ormer.Raw(sql).QueryRows(&taskTypes)
var ids []int64
idsString := ""
for _, value := range taskTypes {
ids = append(ids, value.Id)
idsString = idsString + "'" + strconv.Itoa(int(value.Id)) + "'" + ","
value.TypeDesc = models.ModelType(value.Type).String()
}
idsString = idsString[:len(idsString)-1]
uids := []int64{
int64(info.UserID),
}
totalDayUsed := int64(0)
totalMonthUsed := int64(0)
uesd, err := odysseus.UserFreeUesd(uids, ids)
if err == nil {
userdata := uesd[int64(info.UserID)]
totalDayUsed = userdata.TotalDayUsed
totalMonthUsed = userdata.TotalMonthUsed
for _, value := range taskTypes {
taskUesd := userdata.TasksUsed[value.Id]
value.FreeCallCountDay = value.FreeCallCountDay - taskUesd.TaskDayUsed
value.FreeCallCountMonth = value.FreeCallCountMonth - taskUesd.TaskMonthUsed
}
}
currentTime := time.Now()
end := time.Date(currentTime.Year(), currentTime.Month(), currentTime.Day(), 23, 59, 59, 0, time.UTC)
temp := fmt.Sprintf("-%dh", 24*7)
m, _ := time.ParseDuration(temp)
tempTime := currentTime.Add(m)
tempTime = time.Date(tempTime.Year(), tempTime.Month(), tempTime.Day(), 0, 0, 0, 0, time.UTC)
startTime := fmt.Sprintf(tempTime.Format(format))
endTime := fmt.Sprintf(end.Format(format))
weekCountQB, _ := orm.NewQueryBuilder("mysql")
weekCountQB.Select("count(*)", "type").
From("tasks").
Where(fmt.Sprintf("time >= '%s'", startTime)).
And(fmt.Sprintf("time <= '%s'", endTime)).
And(fmt.Sprintf("uid >= '%d'", info.UserID)).
And(fmt.Sprintf("type in(%s)", idsString))
sql = weekCountQB.String()
weekCount, err := postgres.CountTasks(sql)
if err == nil && weekCount != nil && len(weekCount) > 0 {
for _, value := range taskTypes {
count := findTaskCount(weekCount, int(value.Id))
value.WeekCount = count
}
}
temp = fmt.Sprintf("-%dh", 24*30)
m, _ = time.ParseDuration(temp)
tempTime = currentTime.Add(m)
tempTime = time.Date(tempTime.Year(), tempTime.Month(), tempTime.Day(), 0, 0, 0, 0, time.UTC)
startTime = fmt.Sprintf(tempTime.Format(format))
monthCountQB, _ := orm.NewQueryBuilder("mysql")
monthCountQB.Select("count(*)", "type").
From("tasks").
Where(fmt.Sprintf("time >= '%s'", startTime)).
And(fmt.Sprintf("time <= '%s'", endTime)).
And(fmt.Sprintf("uid >= '%d'", info.UserID)).
And(fmt.Sprintf("type in(%s)", idsString))
sql = monthCountQB.String()
monthCount, err := postgres.CountTasks(sql)
if err == nil && monthCount != nil && len(monthCount) > 0 {
for _, value := range taskTypes {
count := findTaskCount(monthCount, int(value.Id))
value.MonthCount = count
}
}
responseData := struct { responseData := struct {
Total int64 `json:"total"` Total int64 `json:"total"`
Data interface{} `json:"data,omitempty"` TotalDayUsed int64 `json:"total_day_used"`
TotalMonthUsed int64 `json:"total_month_used"`
FreeCallCountDay int `json:"free_call_count_day"`
FreeCallCountMonth int `json:"free_call_count_month"`
Data interface{} `json:"data,omitempty"`
}{ }{
Total: total, Total: total,
Data: taskTypes, TotalDayUsed: totalDayUsed,
TotalMonthUsed: totalMonthUsed,
FreeCallCountDay: checkUserLevel.FreeCallCountDay,
FreeCallCountMonth: checkUserLevel.FreeCallCountMonth,
Data: taskTypes,
} }
server.respond(http.StatusOK, "", responseData) server.respond(http.StatusOK, "", responseData)
} }
func findTaskCount(counts []models.TaskCount, id int) int {
idString := strconv.Itoa(id)
for _, value := range counts {
if strings.Compare(value.Type, idString) == 0 {
count, _ := strconv.Atoi(value.Count)
return count
}
}
return 0
}
func regisgerUser(user models.User) (*models.User, error) { func regisgerUser(user models.User) (*models.User, error) {
var err error var err error
qs := mysql.GetMysqlInstace().Ormer.QueryTable("user") qs := mysql.GetMysqlInstace().Ormer.QueryTable("user")
......
...@@ -58,11 +58,11 @@ func GetUserBalance(id int64) (int64, error) { ...@@ -58,11 +58,11 @@ func GetUserBalance(id int64) (int64, error) {
return user.Balance, err return user.Balance, err
} }
//func GetUserBalance(id int64) (int64, error) { func UserFreeUesd(uids []int64, tids []int64) (map[int64]cachedata.UserFreeUsedInfo, error) {
// user, err := syncinfo.GetUserInfo(id) used, err := syncinfo.GetUserFreeUsedInfo(uids, tids)
// logs.Debug("GetUserInfo = ", user, err) logs.Debug("GetUserInfo = ", used, err)
// return user.Balance, err return used, err
//} }
func SetTaskDataToRedis(task *model.TaskType) error { func SetTaskDataToRedis(task *model.TaskType) error {
return syncinfo.SetTaskDataToRedis(task) return syncinfo.SetTaskDataToRedis(task)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment