Commit 1f030fd2 authored by brent's avatar brent

add monitor

parent 72714a4b
No preview for this file type
...@@ -71,15 +71,44 @@ func (server *AppController) ApiKeys() { ...@@ -71,15 +71,44 @@ func (server *AppController) ApiKeys() {
server.respond(http.StatusUnauthorized, err.Error()) server.respond(http.StatusUnauthorized, err.Error())
return return
} }
qs := mysql.GetMysqlInstace().Ormer.QueryTable("api_key") body := server.Ctx.Input.RequestBody
keyQs := qs.Filter("user_id", info.UserID) appRequest := models.AppRequest{}
err = json.Unmarshal(body, &appRequest) //解析body中数据
logs.Debug("appRequest", appRequest, string(body))
//if err != nil {
// server.respond(models.NoRequestBody, err.Error())
// return
//}
if appRequest.Page == 0 {
appRequest.Page = 1
}
if appRequest.Size == 0 {
appRequest.Size = 10
}
offset := (appRequest.Page - 1) * appRequest.Size
qs := mysql.GetMysqlInstace().Ormer.QueryTable("api_key").Filter("user_id", info.UserID)
if info.Role == 1 || info.Role == 2 {
qs = mysql.GetMysqlInstace().Ormer.QueryTable("api_key")
}
keyQs := qs.Offset(offset).Limit(appRequest.Size)
count, err := keyQs.Count() count, err := keyQs.Count()
logs.Debug("Count = ", count) logs.Debug("Count = ", count)
var keys []*models.ApiKey var keys []*models.ApiKey
if count > 0 { if count > 0 {
keyQs.All(&keys) keyQs.All(&keys)
} }
server.respond(http.StatusOK, "", keys) total, err := qs.Count()
responseData := struct {
Total int64 `json:"total"`
Data interface{} `json:"data,omitempty"`
}{
Total: total,
Data: keys,
}
server.respond(http.StatusOK, "", responseData)
} }
func (server *AppController) UpdateApikey() { func (server *AppController) UpdateApikey() {
...@@ -243,8 +272,28 @@ func (server *AppController) JwtTokens() { ...@@ -243,8 +272,28 @@ func (server *AppController) JwtTokens() {
server.respond(http.StatusUnauthorized, err.Error()) server.respond(http.StatusUnauthorized, err.Error())
return return
} }
qs := mysql.GetMysqlInstace().Ormer.QueryTable("jwt_token") body := server.Ctx.Input.RequestBody
keyQs := qs.Filter("user_id", info.UserID) appRequest := models.AppRequest{}
err = json.Unmarshal(body, &appRequest) //解析body中数据
logs.Debug("appRequest", appRequest, string(body))
//if err != nil {
// server.respond(models.NoRequestBody, err.Error())
// return
//}
if appRequest.Page == 0 {
appRequest.Page = 1
}
if appRequest.Size == 0 {
appRequest.Size = 10
}
offset := (appRequest.Page - 1) * appRequest.Size
qs := mysql.GetMysqlInstace().Ormer.QueryTable("jwt_token").Filter("user_id", info.UserID)
if info.Role == 1 || info.Role == 2 {
qs = mysql.GetMysqlInstace().Ormer.QueryTable("jwt_token")
}
keyQs := qs.Offset(offset).Limit(appRequest.Size)
count, err := keyQs.Count() count, err := keyQs.Count()
logs.Debug("Count = ", count) logs.Debug("Count = ", count)
var tokens []*models.JwtToken var tokens []*models.JwtToken
...@@ -254,7 +303,15 @@ func (server *AppController) JwtTokens() { ...@@ -254,7 +303,15 @@ func (server *AppController) JwtTokens() {
for _, value := range tokens { for _, value := range tokens {
value.JwtCredential = "" value.JwtCredential = ""
} }
server.respond(http.StatusOK, "", tokens) total, err := qs.Count()
responseData := struct {
Total int64 `json:"total"`
Data interface{} `json:"data,omitempty"`
}{
Total: total,
Data: tokens,
}
server.respond(http.StatusOK, "", responseData)
} }
func (server *AppController) UpdateJWT() { func (server *AppController) UpdateJWT() {
......
...@@ -5,9 +5,11 @@ import ( ...@@ -5,9 +5,11 @@ import (
"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/postgres"
"ai_developer_admin/libs/snowflake"
"ai_developer_admin/models" "ai_developer_admin/models"
"encoding/json" "encoding/json"
"fmt" "fmt"
"github.com/beego/beego/orm"
"github.com/beego/beego/v2/core/logs" "github.com/beego/beego/v2/core/logs"
"net/http" "net/http"
"strconv" "strconv"
...@@ -57,12 +59,15 @@ func (server *FundsController) Recharge() { ...@@ -57,12 +59,15 @@ func (server *FundsController) Recharge() {
balance := int64((float64(checkUser.Balance/1000000) + chargeRequest.Amount) * 1000000) balance := int64((float64(checkUser.Balance/1000000) + chargeRequest.Amount) * 1000000)
sql := "SELECT Max(id) AS count FROM funds;" //sql := "SELECT Max(id) AS count FROM funds;"
max, err := postgres.QueryTotal(sql) max, _ := snowflake.NextId()
if err != nil { order, _ := snowflake.NextId()
server.respond(models.BusinessFailed, err.Error()) orderId := strconv.FormatInt(int64(order), 10)
return
} //if err != nil {
// server.respond(models.BusinessFailed, err.Error())
// return
//}
tradeTime := fmt.Sprintf(time.Now().Format(format)) tradeTime := fmt.Sprintf(time.Now().Format(format))
//fundsData := models.Funds{ //fundsData := models.Funds{
...@@ -80,7 +85,7 @@ func (server *FundsController) Recharge() { ...@@ -80,7 +85,7 @@ func (server *FundsController) Recharge() {
// OrderId: "", // OrderId: "",
//} //}
//flag, err := postgres.InsertFunds(&fundsData) //flag, err := postgres.InsertFunds(&fundsData)
sql = fmt.Sprintf("INSERT INTO funds ("+ sql := fmt.Sprintf("INSERT INTO funds ("+
"channel_serial,"+ "channel_serial,"+
"order_id,"+ "order_id,"+
"remark,"+ "remark,"+
...@@ -105,9 +110,9 @@ func (server *FundsController) Recharge() { ...@@ -105,9 +110,9 @@ func (server *FundsController) Recharge() {
"%d,"+ "%d,"+
"'%s');", "'%s');",
"", "",
orderId,
"", "",
"", max,
max+1,
4, 4,
info.UserID, info.UserID,
int(models.Income), int(models.Income),
...@@ -176,10 +181,10 @@ func (server *FundsController) RechargeRecords() { ...@@ -176,10 +181,10 @@ func (server *FundsController) RechargeRecords() {
appRequest := models.AppRequest{} appRequest := models.AppRequest{}
err = json.Unmarshal(body, &appRequest) //解析body中数据 err = json.Unmarshal(body, &appRequest) //解析body中数据
logs.Debug("appRequest", appRequest, string(body)) logs.Debug("appRequest", appRequest, string(body))
if err != nil { //if err != nil {
server.respond(models.NoRequestBody, err.Error()) // server.respond(models.NoRequestBody, err.Error())
return // return
} //}
if appRequest.Page == 0 { if appRequest.Page == 0 {
appRequest.Page = 1 appRequest.Page = 1
...@@ -221,10 +226,10 @@ func (server *FundsController) IncomeAndExpense() { ...@@ -221,10 +226,10 @@ func (server *FundsController) IncomeAndExpense() {
appRequest := models.AppRequest{} appRequest := models.AppRequest{}
err = json.Unmarshal(body, &appRequest) //解析body中数据 err = json.Unmarshal(body, &appRequest) //解析body中数据
logs.Debug("appRequest", appRequest, string(body)) logs.Debug("appRequest", appRequest, string(body))
if err != nil { //if err != nil {
server.respond(models.NoRequestBody, err.Error()) // server.respond(models.NoRequestBody, err.Error())
return // return
} //}
if appRequest.Page == 0 { if appRequest.Page == 0 {
appRequest.Page = 1 appRequest.Page = 1
...@@ -256,8 +261,74 @@ func (server *FundsController) IncomeAndExpense() { ...@@ -256,8 +261,74 @@ func (server *FundsController) IncomeAndExpense() {
timeCondition = fmt.Sprintf("time >= '%s' and time <= '%s'", startTime, endTime) timeCondition = fmt.Sprintf("time >= '%s' and time <= '%s'", startTime, endTime)
// //infoQs = qs.Filter("trade_time__gte", startTime).Filter("trade_time__lte", endTime) // //infoQs = qs.Filter("trade_time__gte", startTime).Filter("trade_time__lte", endTime)
} }
if appRequest.TradeType != 0 {
if timeCondition != "" {
timeCondition = timeCondition + " and"
}
timeCondition = fmt.Sprintf("%s trade_type = %d", timeCondition, appRequest.TradeType)
}
if appRequest.TradeFlow != 0 {
if timeCondition != "" {
timeCondition = timeCondition + " and"
}
timeCondition = fmt.Sprintf("%s trade_flow = %d", timeCondition, appRequest.TradeFlow)
}
if appRequest.TradeChannel != 0 {
if timeCondition != "" {
timeCondition = timeCondition + " and"
}
timeCondition = fmt.Sprintf("%s trade_channel = %d", timeCondition, appRequest.TradeChannel)
}
countQB, _ := orm.NewQueryBuilder("mysql")
countQB.Select("count(*)").
From("funds")
queryQB, _ := orm.NewQueryBuilder("mysql")
queryQB.Select("*").
From("funds")
if info.Role != 1 && info.Role != 2 {
countQB.Where(fmt.Sprintf("uid = '%d'", info.UserID))
queryQB.Where(fmt.Sprintf("uid = '%d'", info.UserID))
}
if appRequest.StartTime != "" && appRequest.EndTime != "" {
temp, _ := time.Parse(layout, appRequest.StartTime)
startTime := fmt.Sprintf(temp.Format(format))
temp, _ = time.Parse(layout, appRequest.EndTime)
endTime := fmt.Sprintf(temp.Format(format))
if info.Role == 1 || info.Role == 2 {
countQB.Where(fmt.Sprintf("time >= '%s'", startTime)).And(fmt.Sprintf("time <= '%s'", endTime))
queryQB.Where(fmt.Sprintf("time >= '%s'", startTime)).And(fmt.Sprintf("time <= '%s'", endTime))
} else {
countQB.And(fmt.Sprintf("time >= '%s'", startTime)).And(fmt.Sprintf("time <= '%s'", endTime))
queryQB.And(fmt.Sprintf("time >= '%s'", startTime)).And(fmt.Sprintf("time <= '%s'", endTime))
}
}
if appRequest.TradeType != 0 {
countQB.And(fmt.Sprintf("trade_type = %d", appRequest.TradeType))
queryQB.And(fmt.Sprintf("trade_type = %d", appRequest.TradeType))
}
if appRequest.TradeFlow != 0 {
countQB.And(fmt.Sprintf("trade_flow = %d", appRequest.TradeFlow))
queryQB.And(fmt.Sprintf("trade_flow = %d", appRequest.TradeFlow))
}
if appRequest.TradeChannel != 0 {
countQB.And(fmt.Sprintf("trade_channel = %d", appRequest.TradeChannel))
queryQB.And(fmt.Sprintf("trade_channel = %d", appRequest.TradeChannel))
}
sql := countQB.String()
var types []*models.Funds var types []*models.Funds
sql := fmt.Sprintf("SELECT count(*) FROM funds WHERE uid = %d %s;", info.UserID, timeCondition) //sql := fmt.Sprintf("SELECT count(*) FROM funds WHERE uid = %d %s;", info.UserID, timeCondition)
//if info.Role == 1 || info.Role == 2 {
// if timeCondition != "" {
// timeCondition = "WHERE" + timeCondition
// }
// sql = fmt.Sprintf("SELECT count(*) FROM funds %s;", timeCondition)
//}
total, err := postgres.QueryTotal(sql) total, err := postgres.QueryTotal(sql)
logs.Debug("total = %d", total) logs.Debug("total = %d", total)
if total == 0 { if total == 0 {
...@@ -272,12 +343,27 @@ func (server *FundsController) IncomeAndExpense() { ...@@ -272,12 +343,27 @@ func (server *FundsController) IncomeAndExpense() {
return return
} }
sql = fmt.Sprintf("SELECT * FROM funds WHERE uid = %d %s LIMIT %d,%d;", info.UserID, timeCondition, offset, size) queryQB.OrderBy("time").Desc()
sql = fmt.Sprintf("%s LIMIT %d,%d;", queryQB.String(), offset, size)
//sql = fmt.Sprintf("SELECT * FROM funds WHERE uid = %d %s LIMIT %d,%d;", info.UserID, timeCondition, offset, size)
//if info.Role == 1 || info.Role == 2 {
// sql = fmt.Sprintf("SELECT * FROM funds %s LIMIT %d,%d;", timeCondition, offset, size)
//}
data, err := postgres.QueryFunds(sql) data, err := postgres.QueryFunds(sql)
if err != nil { if err != nil {
server.respond(models.BusinessFailed, err.Error()) server.respond(models.BusinessFailed, err.Error())
return return
} }
var ids []int
for _, fund := range data {
id, _ := strconv.Atoi(fund.Uid)
ids = append(ids, id)
}
var users []models.User
if info.Role == 1 || info.Role == 2 {
_, _ = mysql.GetMysqlInstace().Ormer.QueryTable("user").Filter("id__in", ids).All(&users)
}
var responseTypes []models.ResponseFunds var responseTypes []models.ResponseFunds
for _, fund := range data { for _, fund := range data {
amountInt, _ := strconv.Atoi(fund.Amount) amountInt, _ := strconv.Atoi(fund.Amount)
...@@ -290,6 +376,9 @@ func (server *FundsController) IncomeAndExpense() { ...@@ -290,6 +376,9 @@ func (server *FundsController) IncomeAndExpense() {
status, _ := strconv.Atoi(fund.Status) status, _ := strconv.Atoi(fund.Status)
tradeFlow, _ := strconv.Atoi(fund.TradeFlow) tradeFlow, _ := strconv.Atoi(fund.TradeFlow)
tradeType, _ := strconv.Atoi(fund.TradeType) tradeType, _ := strconv.Atoi(fund.TradeType)
id, _ := strconv.Atoi(fund.Uid)
username := FindName(users, id)
responseType := models.ResponseFunds{ responseType := models.ResponseFunds{
Id: fund.Id, // int64 Id: fund.Id, // int64
Uid: fund.Uid, // int Uid: fund.Uid, // int
...@@ -304,6 +393,7 @@ func (server *FundsController) IncomeAndExpense() { ...@@ -304,6 +393,7 @@ func (server *FundsController) IncomeAndExpense() {
Balance: float64(balance), // int64 Balance: float64(balance), // int64
Remark: fund.Remark, // string Remark: fund.Remark, // string
OrderId: fund.OrderId, OrderId: fund.OrderId,
UserName: username,
} }
responseTypes = append(responseTypes, responseType) responseTypes = append(responseTypes, responseType)
} }
...@@ -316,3 +406,64 @@ func (server *FundsController) IncomeAndExpense() { ...@@ -316,3 +406,64 @@ func (server *FundsController) IncomeAndExpense() {
} }
server.respond(http.StatusOK, "", responseData) server.respond(http.StatusOK, "", responseData)
} }
func FindName(users []models.User, id int) string {
if len(users) <= 0 {
return ""
}
for _, value := range users {
if value.Id == id {
return value.Name
}
}
return ""
}
func (server *FundsController) Enumeration() {
_, err := server.Check()
if err != nil {
server.respond(http.StatusUnauthorized, err.Error())
return
}
var kinds []*models.EnumType
for _, value := range [...]models.TradeKind{models.Charge, models.Spending, models.Withdrawal} {
typeData := models.EnumType{
Id: int(value),
Desc: value.String(),
EnDesc: value.EnString(),
}
kinds = append(kinds, &typeData)
}
var flows []*models.EnumType
for _, value := range [...]models.TradeFlowType{models.Income, models.Expenditure} {
typeData := models.EnumType{
Id: int(value),
Desc: value.String(),
EnDesc: value.EnString(),
}
flows = append(flows, &typeData)
}
var channels []*models.EnumType
for _, value := range [...]models.PayMethodType{models.WeixinPay, models.AliPay, models.UnionPay, models.PayPal, models.ApplePay, models.ManualPay} {
typeData := models.EnumType{
Id: int(value),
Desc: value.String(),
EnDesc: value.EnString(),
}
channels = append(channels, &typeData)
}
responseData := struct {
TradeChannels []*models.EnumType `json:"trade_channels,omitempty"`
TradeTypes []*models.EnumType `json:"trade_types,omitempty"`
TradeFlows []*models.EnumType `json:"trade_flows,omitempty"`
}{
TradeChannels: channels,
TradeTypes: kinds,
TradeFlows: flows,
}
server.respond(http.StatusOK, "", responseData)
}
...@@ -10,10 +10,12 @@ import ( ...@@ -10,10 +10,12 @@ import (
"ai_developer_admin/models" "ai_developer_admin/models"
"encoding/json" "encoding/json"
"fmt" "fmt"
"github.com/beego/beego/orm"
"github.com/beego/beego/v2/core/logs" "github.com/beego/beego/v2/core/logs"
"net/http" "net/http"
"sort" "sort"
"strconv" "strconv"
"strings"
"time" "time"
) )
...@@ -30,26 +32,13 @@ func (server *TaskController) Bills() { ...@@ -30,26 +32,13 @@ func (server *TaskController) Bills() {
server.respond(http.StatusUnauthorized, err.Error()) server.respond(http.StatusUnauthorized, err.Error())
return return
} }
//params := server.Ctx.Input.Params()
//logs.Debug("temp", params)
body := server.Ctx.Input.RequestBody body := server.Ctx.Input.RequestBody
//if len(body) == 0 {
// data, err := json.Marshal(params)
// if err != nil {
// server.respond(models.NoRequestBody, err.Error())
// return
// }
// body = data
//}
appRequest := models.AppRequest{} appRequest := models.AppRequest{}
err = json.Unmarshal(body, &appRequest) //解析body中数据 err = json.Unmarshal(body, &appRequest) //解析body中数据
logs.Debug("appRequest", appRequest) logs.Debug("appRequest", appRequest)
if err != nil {
server.respond(models.NoRequestBody, err.Error())
return
}
currentTime := time.Now()
currentTime := time.Now()
if appRequest.EndTime == "" { if appRequest.EndTime == "" {
endTime := time.Date(currentTime.Year(), currentTime.Month(), currentTime.Day(), 23, 59, 59, 0, currentTime.Location()) endTime := time.Date(currentTime.Year(), currentTime.Month(), currentTime.Day(), 23, 59, 59, 0, currentTime.Location())
appRequest.EndTime = fmt.Sprintf(endTime.Format(format)) appRequest.EndTime = fmt.Sprintf(endTime.Format(format))
...@@ -66,11 +55,9 @@ func (server *TaskController) Bills() { ...@@ -66,11 +55,9 @@ func (server *TaskController) Bills() {
if appRequest.Page == 0 { if appRequest.Page == 0 {
appRequest.Page = 1 appRequest.Page = 1
} }
if appRequest.Size == 0 { if appRequest.Size == 0 {
appRequest.Size = 10 appRequest.Size = 10
} }
offset := (appRequest.Page - 1) * appRequest.Size offset := (appRequest.Page - 1) * appRequest.Size
size := appRequest.Page * appRequest.Size size := appRequest.Page * appRequest.Size
...@@ -81,7 +68,23 @@ func (server *TaskController) Bills() { ...@@ -81,7 +68,23 @@ func (server *TaskController) Bills() {
startTime := fmt.Sprintf(startTimeIn.Format(format)) startTime := fmt.Sprintf(startTimeIn.Format(format))
endTime := fmt.Sprintf(endTimeIn.Format(format)) endTime := fmt.Sprintf(endTimeIn.Format(format))
sql := fmt.Sprintf("SELECT count(*) FROM bills WHERE uid='%d' and time >= '%s' and time <= '%s' SAMPLE BY 1M ALIGN TO CALENDAR;", info.UserID, startTime, endTime) countQB, _ := orm.NewQueryBuilder("mysql")
countQB.Select("count(*)").
From("bills").Where("worker_acc != ''")
queryQB, _ := orm.NewQueryBuilder("mysql")
queryQB.Select("sum(fee) AS fee", "time").
From("bills").Where("worker_acc != ''")
//Where("worker_acc != ''")
if info.Role != 1 && info.Role != 2 {
countQB.And(fmt.Sprintf("uid = '%d'", info.UserID))
queryQB.And(fmt.Sprintf("uid = '%d'", info.UserID))
}
countQB.And(fmt.Sprintf("time >= '%s'", startTime)).And(fmt.Sprintf("time <= '%s'", endTime))
queryQB.And(fmt.Sprintf("time >= '%s'", startTime)).And(fmt.Sprintf("time <= '%s'", endTime))
sql := fmt.Sprintf("%s SAMPLE BY 1M ALIGN TO CALENDAR;", countQB.String())
total, err := postgres.QueryTotal(sql) total, err := postgres.QueryTotal(sql)
if err != nil { if err != nil {
server.respond(models.BusinessFailed, err.Error()) server.respond(models.BusinessFailed, err.Error())
...@@ -101,7 +104,8 @@ func (server *TaskController) Bills() { ...@@ -101,7 +104,8 @@ func (server *TaskController) Bills() {
return return
} }
sql = fmt.Sprintf("SELECT time,sum(fee) AS fee FROM bills WHERE uid='%d' and time >= '%s' and time <= '%s' SAMPLE BY 1M ALIGN TO CALENDAR ORDER BY time DESC LIMIT %d,%d;", info.UserID, startTime, endTime, offset, size) queryQB.OrderBy("time").Desc()
sql = fmt.Sprintf("%s SAMPLE BY 1M ALIGN TO CALENDAR LIMIT %d,%d;", queryQB.String(), offset, size)
counts, err := postgres.CountTasks(sql) counts, err := postgres.CountTasks(sql)
if err != nil { if err != nil {
server.respond(models.BusinessFailed, err.Error()) server.respond(models.BusinessFailed, err.Error())
...@@ -127,34 +131,49 @@ func (server *TaskController) BillDetails() { ...@@ -127,34 +131,49 @@ func (server *TaskController) BillDetails() {
appRequest := models.AppRequest{} appRequest := models.AppRequest{}
err = json.Unmarshal(body, &appRequest) //解析body中数据 err = json.Unmarshal(body, &appRequest) //解析body中数据
logs.Debug("appRequest", appRequest) logs.Debug("appRequest", appRequest)
if err != nil {
server.respond(models.NoRequestBody, err.Error())
return
}
if appRequest.Page == 0 { if appRequest.Page == 0 {
appRequest.Page = 1 appRequest.Page = 1
} }
if appRequest.Size == 0 { if appRequest.Size == 0 {
appRequest.Size = 10 appRequest.Size = 10
} }
offset := (appRequest.Page - 1) * appRequest.Size offset := (appRequest.Page - 1) * appRequest.Size
size := appRequest.Page * appRequest.Size size := appRequest.Page * appRequest.Size
timeCondition := "" countQB, _ := orm.NewQueryBuilder("mysql")
startTime := "" countQB.Select("count(*)").
endTime := "" From("bills").Where("worker_acc != ''")
queryQB, _ := orm.NewQueryBuilder("mysql")
queryQB.Select("id", "fee", "type", "time", "result").
From("bills").Where("worker_acc != ''")
if info.Role != 1 && info.Role != 2 {
countQB.And(fmt.Sprintf("uid = '%d'", info.UserID))
queryQB.And(fmt.Sprintf("uid = '%d'", info.UserID))
}
if appRequest.StartTime != "" && appRequest.EndTime != "" { if appRequest.StartTime != "" && appRequest.EndTime != "" {
temp, _ := time.Parse(layout, appRequest.StartTime) temp, _ := time.Parse(layout, appRequest.StartTime)
startTime = fmt.Sprintf(temp.Format(format)) startTime := fmt.Sprintf(temp.Format(format))
temp, _ = time.Parse(layout, appRequest.EndTime) temp, _ = time.Parse(layout, appRequest.EndTime)
endTime = fmt.Sprintf(temp.Format(format)) endTime := fmt.Sprintf(temp.Format(format))
timeCondition = fmt.Sprintf(" and time >= '%s' and time <= '%s'", startTime, endTime) countQB.And(fmt.Sprintf("time >= '%s'", startTime)).And(fmt.Sprintf("time <= '%s'", endTime))
queryQB.And(fmt.Sprintf("time >= '%s'", startTime)).And(fmt.Sprintf("time <= '%s'", endTime))
}
if appRequest.FeeCondition != 0 {
if appRequest.FeeCondition == int(models.FeeFree) {
countQB.And("fee <= 0")
queryQB.And("fee <= 0")
}
if appRequest.FeeCondition == int(models.FeeBased) {
countQB.And("fee > 0")
queryQB.And("fee > 0")
}
} }
sql := fmt.Sprintf("SELECT count(*) FROM bills WHERE uid='%d'%s;", info.UserID, timeCondition) sql := countQB.String()
total, err := postgres.QueryTotal(sql) total, err := postgres.QueryTotal(sql)
if err != nil { if err != nil {
server.respond(models.BusinessFailed, err.Error()) server.respond(models.BusinessFailed, err.Error())
...@@ -174,7 +193,9 @@ func (server *TaskController) BillDetails() { ...@@ -174,7 +193,9 @@ func (server *TaskController) BillDetails() {
return return
} }
sql = fmt.Sprintf("SELECT id,type,time,fee,result FROM bills WHERE uid='%d'%s ORDER BY time DESC LIMIT %d,%d;", info.UserID, timeCondition, offset, size) //qb.OrderBy("time").Desc().Offset(int(offset)).Limit(int(size))
queryQB.OrderBy("time").Desc()
sql = fmt.Sprintf("%s LIMIT %d,%d;", queryQB.String(), offset, size)
data, err := postgres.QueryBills(sql) data, err := postgres.QueryBills(sql)
if err != nil { if err != nil {
server.respond(models.BusinessFailed, err.Error()) server.respond(models.BusinessFailed, err.Error())
...@@ -227,25 +248,15 @@ func (server *TaskController) Tasks() { ...@@ -227,25 +248,15 @@ func (server *TaskController) Tasks() {
appRequest := models.AppRequest{} appRequest := models.AppRequest{}
err := json.Unmarshal(body, &appRequest) //解析body中数据 err := json.Unmarshal(body, &appRequest) //解析body中数据
logs.Debug("appRequest", appRequest, string(body)) logs.Debug("appRequest", appRequest, string(body))
//if err != nil && {
// server.respond(models.NoRequestBody, err.Error())
// return
//}
if appRequest.Page == 0 { if appRequest.Page == 0 {
appRequest.Page = 1 appRequest.Page = 1
} }
if appRequest.Size == 0 { if appRequest.Size == 0 {
appRequest.Size = 10 appRequest.Size = 10
} }
offset := (appRequest.Page - 1) * appRequest.Size offset := (appRequest.Page - 1) * appRequest.Size
size := appRequest.Page * appRequest.Size size := appRequest.Page * appRequest.Size
timeCondition := ""
startTime := ""
endTime := ""
if appRequest.StartTime == "" && appRequest.EndTime != "" { if appRequest.StartTime == "" && appRequest.EndTime != "" {
server.respond(models.MissingParameter, "缺少开始时间") server.respond(models.MissingParameter, "缺少开始时间")
return return
...@@ -254,50 +265,37 @@ func (server *TaskController) Tasks() { ...@@ -254,50 +265,37 @@ func (server *TaskController) Tasks() {
server.respond(models.MissingParameter, "缺少结束时间") server.respond(models.MissingParameter, "缺少结束时间")
return return
} }
countQB, _ := orm.NewQueryBuilder("mysql")
countQB.Select("count(*)").
From("bills").Where("worker_acc != ''")
queryQB, _ := orm.NewQueryBuilder("mysql")
queryQB.Select("id", "fee", "type", "time", "exec_duration", "workload", "profit_acc", "worker_acc", "result").
From("bills").Where("worker_acc != ''")
if appRequest.StartTime != "" && appRequest.EndTime != "" { if appRequest.StartTime != "" && appRequest.EndTime != "" {
if timeCondition == "" { start, _ := time.Parse(layout, appRequest.StartTime)
timeCondition = "WHERE" startTime := fmt.Sprintf(start.Format(format))
} end, _ := time.Parse(layout, appRequest.EndTime)
temp, _ := time.Parse(layout, appRequest.StartTime) endTime := fmt.Sprintf(end.Format(format))
startTime = fmt.Sprintf(temp.Format(format)) if end.Before(start) {
temp, _ = time.Parse(layout, appRequest.EndTime) server.respond(models.BusinessFailed, "起始时间不能大于结束时间")
endTime = fmt.Sprintf(temp.Format(format)) return
timeCondition = fmt.Sprintf("%s time >= '%s' and time <= '%s'", timeCondition, startTime, endTime)
if appRequest.ProfitAcc != "" || appRequest.WorkerAcc != "" {
timeCondition = fmt.Sprintf("%s and", timeCondition)
} }
countQB.And(fmt.Sprintf("time >= '%s'", startTime)).And(fmt.Sprintf("time <= '%s'", endTime))
queryQB.And(fmt.Sprintf("time >= '%s'", startTime)).And(fmt.Sprintf("time <= '%s'", endTime))
} }
if appRequest.ProfitAcc != "" { if appRequest.ProfitAcc != "" {
if timeCondition == "" { countQB.And(fmt.Sprintf("profit_acc = '%s'", appRequest.ProfitAcc))
timeCondition = "WHERE" queryQB.And(fmt.Sprintf("profit_acc = '%s'", appRequest.ProfitAcc))
} }
timeCondition = fmt.Sprintf("%s profit_acc = '%s'", timeCondition, appRequest.ProfitAcc)
if appRequest.WorkerAcc != "" { if appRequest.WorkerAcc != "" {
timeCondition = fmt.Sprintf("%s and", timeCondition) countQB.And(fmt.Sprintf("worker_acc = '%s'", appRequest.WorkerAcc))
} queryQB.And(fmt.Sprintf("worker_acc = '%s'", appRequest.WorkerAcc))
}
if appRequest.WorkerAcc != "" {
if timeCondition == "" {
timeCondition = "WHERE"
}
timeCondition = fmt.Sprintf("%s worker_acc = '%s'", timeCondition, appRequest.WorkerAcc)
} }
//qb, _ := orm.NewQueryBuilder("mysql")
//
//qb.Select("id", "type", "time", "workload", "profit_acc", "worker_acc", "result").
// From("bills").
// Where("profit_acc = ?").
// And("worker_acc = ?").
// And("time >= ?").
// And("time <= ?").
// OrderBy("time").Desc()
//testSql := qb.String()
//testSql = fmt.Sprintf("%s LIMIT %d,%d;", testSql, offset, appRequest.Size)
//
//temp, err1 := postgres.QueryTset(testSql, appRequest.WorkerAcc, appRequest.ProfitAcc, startTime, endTime)
//logs.Debug("QueryTset = %s", temp, err1.Error())
sql := fmt.Sprintf("SELECT count(*) FROM bills %s;", timeCondition) sql := countQB.String()
total, err := postgres.QueryTotal(sql) total, err := postgres.QueryTotal(sql)
if err != nil { if err != nil {
server.respond(models.BusinessFailed, err.Error()) server.respond(models.BusinessFailed, err.Error())
...@@ -317,7 +315,8 @@ func (server *TaskController) Tasks() { ...@@ -317,7 +315,8 @@ func (server *TaskController) Tasks() {
return return
} }
sql = fmt.Sprintf("SELECT id,type,time,workload,profit_acc,worker_acc,result FROM bills %s ORDER BY time DESC LIMIT %d,%d;", timeCondition, offset, size) queryQB.OrderBy("time").Desc()
sql = fmt.Sprintf("%s LIMIT %d,%d;", queryQB.String(), offset, size)
data, err := postgres.QueryBills(sql) data, err := postgres.QueryBills(sql)
if err != nil { if err != nil {
server.respond(models.BusinessFailed, err.Error()) server.respond(models.BusinessFailed, err.Error())
...@@ -373,10 +372,10 @@ func (server *TaskController) TasksPerDay() { ...@@ -373,10 +372,10 @@ func (server *TaskController) TasksPerDay() {
appRequest := models.AppRequest{} appRequest := models.AppRequest{}
err := json.Unmarshal(body, &appRequest) //解析body中数据 err := json.Unmarshal(body, &appRequest) //解析body中数据
logs.Debug("appRequest", appRequest) logs.Debug("appRequest", appRequest)
if err != nil { //if err != nil {
server.respond(models.NoRequestBody, err.Error()) // server.respond(models.NoRequestBody, err.Error())
return // return
} //}
if appRequest.StartTime == "" && appRequest.EndTime != "" { if appRequest.StartTime == "" && appRequest.EndTime != "" {
server.respond(models.MissingParameter, "缺少开始时间") server.respond(models.MissingParameter, "缺少开始时间")
return return
...@@ -409,20 +408,33 @@ func (server *TaskController) TasksPerDay() { ...@@ -409,20 +408,33 @@ func (server *TaskController) TasksPerDay() {
return return
} }
timeCondition := "" startTime := fmt.Sprintf(startTimeIn.Format(format))
endTime := fmt.Sprintf(endTimeIn.Format(format))
countQB, _ := orm.NewQueryBuilder("mysql")
countQB.Select("count(*)", "time").
From("bills").Where("worker_acc != ''")
//queryQB, _ := orm.NewQueryBuilder("mysql")
//queryQB.Select("sum(fee) AS fee", "time").
// From("bills").Where("worker_acc != ''")
countQB.And(fmt.Sprintf("time >= '%s'", startTime)).And(fmt.Sprintf("time <= '%s'", endTime))
//queryQB.And(fmt.Sprintf("time >= '%s'", startTime)).And(fmt.Sprintf("time <= '%s'", endTime))
if appRequest.ProfitAcc != "" { if appRequest.ProfitAcc != "" {
timeCondition = fmt.Sprintf("%s and profit_acc = '%s'", timeCondition, appRequest.ProfitAcc) countQB.And(fmt.Sprintf("profit_acc = '%s'", appRequest.ProfitAcc))
//queryQB.And(fmt.Sprintf("profit_acc = '%s'", appRequest.ProfitAcc))
} }
if appRequest.WorkerAcc != "" { if appRequest.WorkerAcc != "" {
timeCondition = fmt.Sprintf("%s and worker_acc = '%s'", timeCondition, appRequest.WorkerAcc) countQB.And(fmt.Sprintf("worker_acc = '%s'", appRequest.WorkerAcc))
//queryQB.And(fmt.Sprintf("worker_acc = '%s'", appRequest.WorkerAcc))
} }
sql := fmt.Sprintf("%s SAMPLE BY 1d ALIGN TO CALENDAR;", countQB.String())
startTime := fmt.Sprintf(startTimeIn.Format(format))
endTime := fmt.Sprintf(endTimeIn.Format(format))
endDateIn := time.Date(endTimeIn.Year(), endTimeIn.Month(), endTimeIn.Day(), 0, 0, 0, 0, endTimeIn.Location()) endDateIn := time.Date(endTimeIn.Year(), endTimeIn.Month(), endTimeIn.Day(), 0, 0, 0, 0, endTimeIn.Location())
endDate := fmt.Sprintf(endDateIn.Format(format)) endDate := fmt.Sprintf(endDateIn.Format(format))
dates := utils.SplitDate(startTime, endDate, format) dates := utils.SplitDate(startTime, endDate, format)
sql := fmt.Sprintf("SELECT time,count(*) FROM bills WHERE time >= '%s' and time <= '%s' %s SAMPLE BY 1d ALIGN TO CALENDAR;", startTime, endTime, timeCondition)
//sql := fmt.Sprintf("SELECT time,count(*) FROM bills WHERE worker_acc != '' and time >= '%s' and time <= '%s' %s SAMPLE BY 1d ALIGN TO CALENDAR;", startTime, endTime, timeCondition)
counts, err := postgres.CountTasks(sql) counts, err := postgres.CountTasks(sql)
if err != nil { if err != nil {
server.respond(models.BusinessFailed, err.Error()) server.respond(models.BusinessFailed, err.Error())
...@@ -456,33 +468,48 @@ func (server *TaskController) UserTasks() { ...@@ -456,33 +468,48 @@ func (server *TaskController) UserTasks() {
appRequest := models.AppRequest{} appRequest := models.AppRequest{}
err = json.Unmarshal(body, &appRequest) //解析body中数据 err = json.Unmarshal(body, &appRequest) //解析body中数据
logs.Debug("appRequest", appRequest) logs.Debug("appRequest", appRequest)
if err != nil {
server.respond(models.NoRequestBody, err.Error())
return
}
if appRequest.Page == 0 { if appRequest.Page == 0 {
appRequest.Page = 1 appRequest.Page = 1
} }
if appRequest.Size == 0 { if appRequest.Size == 0 {
appRequest.Size = 10 appRequest.Size = 10
} }
offset := (appRequest.Page - 1) * appRequest.Size offset := (appRequest.Page - 1) * appRequest.Size
size := appRequest.Page * appRequest.Size size := appRequest.Page * appRequest.Size
timeCondition := "" countQB, _ := orm.NewQueryBuilder("mysql")
startTime := "" countQB.Select("count(*)").
endTime := "" From("tasks")
queryQB, _ := orm.NewQueryBuilder("mysql")
queryQB.Select("id", "type", "time", "fee", "in_len").
From("tasks")
if info.Role != 1 && info.Role != 2 {
countQB.Where(fmt.Sprintf("uid = '%d'", info.UserID))
queryQB.Where(fmt.Sprintf("uid = '%d'", info.UserID))
}
if appRequest.StartTime != "" && appRequest.EndTime != "" { if appRequest.StartTime != "" && appRequest.EndTime != "" {
temp, _ := time.Parse(layout, appRequest.StartTime) temp, _ := time.Parse(layout, appRequest.StartTime)
startTime = fmt.Sprintf(temp.Format(format)) startTime := fmt.Sprintf(temp.Format(format))
temp, _ = time.Parse(layout, appRequest.EndTime) temp, _ = time.Parse(layout, appRequest.EndTime)
endTime = fmt.Sprintf(temp.Format(format)) endTime := fmt.Sprintf(temp.Format(format))
timeCondition = fmt.Sprintf(" and time >= '%s' and time <= '%s'", startTime, endTime) if info.Role == 1 || info.Role == 2 {
countQB.Where(fmt.Sprintf("time >= '%s'", startTime)).And(fmt.Sprintf("time <= '%s'", endTime))
queryQB.Where(fmt.Sprintf("time >= '%s'", startTime)).And(fmt.Sprintf("time <= '%s'", endTime))
} else {
countQB.And(fmt.Sprintf("time >= '%s'", startTime)).And(fmt.Sprintf("time <= '%s'", endTime))
queryQB.And(fmt.Sprintf("time >= '%s'", startTime)).And(fmt.Sprintf("time <= '%s'", endTime))
}
} }
sql := fmt.Sprintf("SELECT count(*) FROM tasks WHERE uid='%d'%s;", info.UserID, timeCondition)
sql := countQB.String()
//sql := fmt.Sprintf("%s SAMPLE BY 1d ALIGN TO CALENDAR;", countQB.String())
//sql := fmt.Sprintf("SELECT count(*) FROM tasks WHERE uid='%d'%s%s;", info.UserID, cond, timeCondition)
//if info.Role == 1 || info.Role == 2 {
// sql = fmt.Sprintf("SELECT count(*) FROM tasks WHERE %s;", timeCondition)
//}
total, err := postgres.QueryTotal(sql) total, err := postgres.QueryTotal(sql)
if err != nil { if err != nil {
server.respond(models.BusinessFailed, err.Error()) server.respond(models.BusinessFailed, err.Error())
...@@ -500,8 +527,14 @@ func (server *TaskController) UserTasks() { ...@@ -500,8 +527,14 @@ func (server *TaskController) UserTasks() {
server.respond(http.StatusOK, "", responseData) server.respond(http.StatusOK, "", responseData)
return return
} }
queryQB.OrderBy("time").Desc()
sql = fmt.Sprintf("%s LIMIT %d,%d;", queryQB.String(), offset, size)
//qb.Select("id", "type", "time", "fee", "in_len").From("tasks").Where("uid=?").And("time>='?'").And("time<='?").OrderBy("time").Desc().Offset(int(offset)).Limit(int(appRequest.Size)) //qb.Select("id", "type", "time", "fee", "in_len").From("tasks").Where("uid=?").And("time>='?'").And("time<='?").OrderBy("time").Desc().Offset(int(offset)).Limit(int(appRequest.Size))
sql = fmt.Sprintf("SELECT id,type,time,fee,in_len FROM tasks WHERE uid='%d'%s ORDER BY time DESC LIMIT %d,%d;", info.UserID, timeCondition, offset, size) //sql = fmt.Sprintf("SELECT id,type,time,fee,in_len FROM tasks WHERE uid='%d'%s%s ORDER BY time DESC LIMIT %d,%d;", info.UserID, cond, timeCondition, offset, size)
//if info.Role == 1 || info.Role == 2 {
// sql = fmt.Sprintf("SELECT id,type,time,fee,in_len FROM tasks WHERE %s ORDER BY time DESC LIMIT %d,%d;", timeCondition, offset, size)
//}
tasks, err := postgres.QueryBills(sql) tasks, err := postgres.QueryBills(sql)
if err != nil { if err != nil {
server.respond(models.BusinessFailed, err.Error()) server.respond(models.BusinessFailed, err.Error())
...@@ -511,25 +544,35 @@ func (server *TaskController) UserTasks() { ...@@ -511,25 +544,35 @@ func (server *TaskController) UserTasks() {
server.respond(models.BusinessFailed, "未查询到数据") server.respond(models.BusinessFailed, "未查询到数据")
return return
} }
first := tasks[0] ids := ""
logs.Debug("first = ", first.Time) for _, value := range tasks {
fmt.Printf("time = %s\n", first.Time) ids = ids + "'" + value.Id + "'" + ","
fmt.Printf("format = %s\n", first.Time.Format(format)) }
startTime = fmt.Sprintf(first.Time.Format(format)) ids = ids[:len(ids)-1]
last := tasks[len(tasks)-1] queryBillQB, _ := orm.NewQueryBuilder("mysql")
endTime = fmt.Sprintf(last.Time.Format(format)) queryBillQB.Select("id", "result", "time", "fee", "out_len", "task_duration").
timeCondition = fmt.Sprintf(" and time >= '%s' and time <= '%s'", endTime, startTime) From("bills").Where(fmt.Sprintf("id IN(%s)", ids)).OrderBy("time").Desc()
sql = fmt.Sprintf("%s LIMIT %d,%d;", queryBillQB.String(), offset, size)
//first := tasks[0]
//logs.Debug("first = ", first.Time)
//fmt.Printf("time = %s\n", first.Time)
//fmt.Printf("format = %s\n", first.Time.Format(format))
//startTime = fmt.Sprintf(first.Time.Format(format))
//last := tasks[len(tasks)-1]
//endTime = fmt.Sprintf(last.Time.Format(format))
//timeCondition = fmt.Sprintf(" and time >= '%s' and time <= '%s'", endTime, startTime)
//qb.Select("id", "out_len", "time", "fee", "result", "duration").From("bills").Where("uid=?").And("time>='?'").And("time<='?").OrderBy("time").Desc().Offset(int(offset)).Limit(int(appRequest.Size)) //qb.Select("id", "out_len", "time", "fee", "result", "duration").From("bills").Where("uid=?").And("time>='?'").And("time<='?").OrderBy("time").Desc().Offset(int(offset)).Limit(int(appRequest.Size))
sql = fmt.Sprintf("SELECT id,time,fee,out_len,result,task_duration FROM bills WHERE uid='%d'%s ORDER BY time DESC LIMIT %d,%d;", info.UserID, timeCondition, offset, size) //sql = fmt.Sprintf("SELECT id,time,fee,out_len,result,task_duration FROM bills %s ORDER BY time DESC LIMIT %d,%d;", timeCondition, offset, size)
bills, err := postgres.QueryBills(sql) bills, err := postgres.QueryBills(sql)
if err != nil { if err != nil {
server.respond(models.BusinessFailed, err.Error()) server.respond(models.BusinessFailed, err.Error())
return return
} }
for index, task := range tasks { for _, task := range tasks {
apiPath := "" apiPath := ""
desc := "" desc := ""
taskId, err := strconv.Atoi(task.Type) taskId, err := strconv.Atoi(task.Type)
...@@ -541,15 +584,17 @@ func (server *TaskController) UserTasks() { ...@@ -541,15 +584,17 @@ func (server *TaskController) UserTasks() {
} }
} }
bill := findBills(bills, task.Id)
reTask := models.Bills{ reTask := models.Bills{
Id: task.Id, Id: task.Id,
Type: task.Type, Type: task.Type,
Time: task.Time, Time: task.Time,
InLen: task.InLen, InLen: task.InLen,
OutLen: bills[index].OutLen, OutLen: bill.OutLen,
TaskDuration: bills[index].TaskDuration, TaskDuration: bill.TaskDuration,
Result: bills[index].Result, Result: bill.Result,
Fee: bills[index].Fee, Fee: bill.Fee,
ApiPath: apiPath, ApiPath: apiPath,
Desc: desc, Desc: desc,
} }
...@@ -566,6 +611,15 @@ func (server *TaskController) UserTasks() { ...@@ -566,6 +611,15 @@ func (server *TaskController) UserTasks() {
server.respond(http.StatusOK, "", responseData) server.respond(http.StatusOK, "", responseData)
} }
func findBills(bills []models.Bills, id string) models.Bills {
for _, value := range bills {
if strings.Compare(value.Id, id) == 0 {
return value
}
}
return models.Bills{}
}
func (server *TaskController) UserTasksPerDay() { func (server *TaskController) UserTasksPerDay() {
info, err := server.Check() info, err := server.Check()
if err != nil { if err != nil {
...@@ -576,10 +630,10 @@ func (server *TaskController) UserTasksPerDay() { ...@@ -576,10 +630,10 @@ func (server *TaskController) UserTasksPerDay() {
appRequest := models.AppRequest{} appRequest := models.AppRequest{}
err = json.Unmarshal(body, &appRequest) //解析body中数据 err = json.Unmarshal(body, &appRequest) //解析body中数据
logs.Debug("appRequest", appRequest) logs.Debug("appRequest", appRequest)
if err != nil { //if err != nil {
server.respond(models.NoRequestBody, err.Error()) // server.respond(models.NoRequestBody, err.Error())
return // return
} //}
if appRequest.StartTime == "" && appRequest.EndTime != "" { if appRequest.StartTime == "" && appRequest.EndTime != "" {
server.respond(models.MissingParameter, "缺少开始时间") server.respond(models.MissingParameter, "缺少开始时间")
return return
...@@ -614,10 +668,22 @@ func (server *TaskController) UserTasksPerDay() { ...@@ -614,10 +668,22 @@ func (server *TaskController) UserTasksPerDay() {
startTime := fmt.Sprintf(startTimeIn.Format(format)) startTime := fmt.Sprintf(startTimeIn.Format(format))
endTime := fmt.Sprintf(endTimeIn.Format(format)) endTime := fmt.Sprintf(endTimeIn.Format(format))
countQB, _ := orm.NewQueryBuilder("mysql")
countQB.Select("count(*)", "time").
From("tasks").Where(fmt.Sprintf("time >= '%s'", startTime)).And(fmt.Sprintf("time <= '%s'", endTime))
if info.Role != 1 && info.Role != 2 {
countQB.And(fmt.Sprintf("uid = %d", info.UserID))
}
sql := fmt.Sprintf("%s SAMPLE BY 1d ALIGN TO CALENDAR;", countQB.String())
endDateIn := time.Date(endTimeIn.Year(), endTimeIn.Month(), endTimeIn.Day(), 0, 0, 0, 0, endTimeIn.Location()) endDateIn := time.Date(endTimeIn.Year(), endTimeIn.Month(), endTimeIn.Day(), 0, 0, 0, 0, endTimeIn.Location())
endDate := fmt.Sprintf(endDateIn.Format(format)) endDate := fmt.Sprintf(endDateIn.Format(format))
dates := utils.SplitDate(startTime, endDate, format) dates := utils.SplitDate(startTime, endDate, format)
sql := fmt.Sprintf("SELECT time,count(*) FROM tasks WHERE uid='%d' and time >= '%s' and time <= '%s' SAMPLE BY 1d ALIGN TO CALENDAR;", info.UserID, startTime, endTime) //sql := fmt.Sprintf("SELECT time,count(*) FROM tasks WHERE uid='%d' and time >= '%s' and time <= '%s' SAMPLE BY 1d ALIGN TO CALENDAR;", info.UserID, startTime, endTime)
//if info.Role == 1 || info.Role == 2 {
// sql = fmt.Sprintf("SELECT time,count(*) FROM tasks WHERE time >= '%s' and time <= '%s' SAMPLE BY 1d ALIGN TO CALENDAR;", startTime, endTime)
//}
counts, err := postgres.CountTasks(sql) counts, err := postgres.CountTasks(sql)
if err != nil { if err != nil {
server.respond(models.BusinessFailed, err.Error()) server.respond(models.BusinessFailed, err.Error())
...@@ -651,10 +717,10 @@ func (server *TaskController) UserTaskTypePerDay() { ...@@ -651,10 +717,10 @@ func (server *TaskController) UserTaskTypePerDay() {
appRequest := models.AppRequest{} appRequest := models.AppRequest{}
err = json.Unmarshal(body, &appRequest) //解析body中数据 err = json.Unmarshal(body, &appRequest) //解析body中数据
logs.Debug("appRequest", appRequest) logs.Debug("appRequest", appRequest)
if err != nil { //if err != nil {
server.respond(models.NoRequestBody, err.Error()) // server.respond(models.NoRequestBody, err.Error())
return // return
} //}
if appRequest.StartTime == "" && appRequest.EndTime != "" { if appRequest.StartTime == "" && appRequest.EndTime != "" {
server.respond(models.MissingParameter, "缺少开始时间") server.respond(models.MissingParameter, "缺少开始时间")
return return
...@@ -688,10 +754,22 @@ func (server *TaskController) UserTaskTypePerDay() { ...@@ -688,10 +754,22 @@ func (server *TaskController) UserTaskTypePerDay() {
startTime := fmt.Sprintf(startTimeIn.Format(format)) startTime := fmt.Sprintf(startTimeIn.Format(format))
endTime := fmt.Sprintf(endTimeIn.Format(format)) endTime := fmt.Sprintf(endTimeIn.Format(format))
countQB, _ := orm.NewQueryBuilder("mysql")
countQB.Select("count(*)", "time", "type").
From("tasks").Where(fmt.Sprintf("time >= '%s'", startTime)).And(fmt.Sprintf("time <= '%s'", endTime))
if info.Role != 1 && info.Role != 2 {
countQB.And(fmt.Sprintf("uid = %d", info.UserID))
}
sql := fmt.Sprintf("%s SAMPLE BY 1d ALIGN TO CALENDAR;", countQB.String())
endDateIn := time.Date(endTimeIn.Year(), endTimeIn.Month(), endTimeIn.Day(), 0, 0, 0, 0, endTimeIn.Location()) endDateIn := time.Date(endTimeIn.Year(), endTimeIn.Month(), endTimeIn.Day(), 0, 0, 0, 0, endTimeIn.Location())
endDate := fmt.Sprintf(endDateIn.Format(format)) endDate := fmt.Sprintf(endDateIn.Format(format))
dates := utils.SplitDate(startTime, endDate, format) dates := utils.SplitDate(startTime, endDate, format)
sql := fmt.Sprintf("SELECT type, time,count(*) FROM tasks WHERE uid='%d' and time >= '%s' and time <= '%s' SAMPLE BY 1d ALIGN TO CALENDAR;", info.UserID, startTime, endTime) //sql := fmt.Sprintf("SELECT type, time,count(*) FROM tasks WHERE uid='%d' and time >= '%s' and time <= '%s' SAMPLE BY 1d ALIGN TO CALENDAR;", info.UserID, startTime, endTime)
//if info.Role == 1 || info.Role == 2 {
// sql = fmt.Sprintf("SELECT type, time,count(*) FROM tasks WHERE time >= '%s' and time <= '%s' SAMPLE BY 1d ALIGN TO CALENDAR;", startTime, endTime)
//}
counts, err := postgres.CountTasks(sql) counts, err := postgres.CountTasks(sql)
if err != nil { if err != nil {
server.respond(models.BusinessFailed, err.Error()) server.respond(models.BusinessFailed, err.Error())
...@@ -755,10 +833,10 @@ func (server *TaskController) UserTaskTypePercentage() { ...@@ -755,10 +833,10 @@ func (server *TaskController) UserTaskTypePercentage() {
appRequest := models.AppRequest{} appRequest := models.AppRequest{}
err = json.Unmarshal(body, &appRequest) //解析body中数据 err = json.Unmarshal(body, &appRequest) //解析body中数据
logs.Debug("appRequest", appRequest) logs.Debug("appRequest", appRequest)
if err != nil { //if err != nil {
server.respond(models.NoRequestBody, err.Error()) // server.respond(models.NoRequestBody, err.Error())
return // return
} //}
if appRequest.StartTime == "" && appRequest.EndTime != "" { if appRequest.StartTime == "" && appRequest.EndTime != "" {
server.respond(models.MissingParameter, "缺少开始时间") server.respond(models.MissingParameter, "缺少开始时间")
return return
...@@ -793,7 +871,19 @@ func (server *TaskController) UserTaskTypePercentage() { ...@@ -793,7 +871,19 @@ func (server *TaskController) UserTaskTypePercentage() {
startTime := fmt.Sprintf(startTimeIn.Format(format)) startTime := fmt.Sprintf(startTimeIn.Format(format))
endTime := fmt.Sprintf(endTimeIn.Format(format)) endTime := fmt.Sprintf(endTimeIn.Format(format))
sql := fmt.Sprintf("SELECT type, count(type) FROM tasks WHERE uid='%d' and time >= '%s' and time <= '%s' GROUP BY type;", info.UserID, startTime, endTime) countQB, _ := orm.NewQueryBuilder("mysql")
countQB.Select("count(type)", "type").
From("tasks").Where(fmt.Sprintf("time >= '%s'", startTime)).And(fmt.Sprintf("time <= '%s'", endTime))
if info.Role != 1 && info.Role != 2 {
countQB.And(fmt.Sprintf("uid = %d", info.UserID))
}
countQB.GroupBy("type")
sql := countQB.String()
//sql := fmt.Sprintf("SELECT type, count(type) FROM tasks WHERE uid='%d' and time >= '%s' and time <= '%s' GROUP BY type;", info.UserID, startTime, endTime)
//if info.Role == 1 || info.Role == 2 {
// sql = fmt.Sprintf("SELECT type, count(type) FROM tasks WHERE time >= '%s' and time <= '%s' GROUP BY type;", startTime, endTime)
//}
counts, err := postgres.CountTasks(sql) counts, err := postgres.CountTasks(sql)
if err != nil { if err != nil {
server.respond(models.BusinessFailed, err.Error()) server.respond(models.BusinessFailed, err.Error())
...@@ -831,10 +921,10 @@ func (server *TaskController) UserFeePerDay() { ...@@ -831,10 +921,10 @@ func (server *TaskController) UserFeePerDay() {
appRequest := models.AppRequest{} appRequest := models.AppRequest{}
err = json.Unmarshal(body, &appRequest) //解析body中数据 err = json.Unmarshal(body, &appRequest) //解析body中数据
logs.Debug("appRequest", appRequest) logs.Debug("appRequest", appRequest)
if err != nil { //if err != nil {
server.respond(models.NoRequestBody, err.Error()) // server.respond(models.NoRequestBody, err.Error())
return // return
} //}
if appRequest.StartTime == "" && appRequest.EndTime != "" { if appRequest.StartTime == "" && appRequest.EndTime != "" {
server.respond(models.MissingParameter, "缺少开始时间") server.respond(models.MissingParameter, "缺少开始时间")
return return
...@@ -869,11 +959,23 @@ func (server *TaskController) UserFeePerDay() { ...@@ -869,11 +959,23 @@ func (server *TaskController) UserFeePerDay() {
startTime := fmt.Sprintf(startTimeIn.Format(format)) startTime := fmt.Sprintf(startTimeIn.Format(format))
endTime := fmt.Sprintf(endTimeIn.Format(format)) endTime := fmt.Sprintf(endTimeIn.Format(format))
countQB, _ := orm.NewQueryBuilder("mysql")
countQB.Select("time", "sum(fee) AS fee").
From("bills").Where(fmt.Sprintf("time >= '%s'", startTime)).And(fmt.Sprintf("time <= '%s'", endTime))
if info.Role != 1 && info.Role != 2 {
countQB.And(fmt.Sprintf("uid = %d", info.UserID))
}
sql := fmt.Sprintf("%s SAMPLE BY 1d ALIGN TO CALENDAR;", countQB.String())
endDateIn := time.Date(endTimeIn.Year(), endTimeIn.Month(), endTimeIn.Day(), 0, 0, 0, 0, endTimeIn.Location()) endDateIn := time.Date(endTimeIn.Year(), endTimeIn.Month(), endTimeIn.Day(), 0, 0, 0, 0, endTimeIn.Location())
endDate := fmt.Sprintf(endDateIn.Format(format)) endDate := fmt.Sprintf(endDateIn.Format(format))
dates := utils.SplitDate(startTime, endDate, format) dates := utils.SplitDate(startTime, endDate, format)
sql := fmt.Sprintf("SELECT time,sum(fee) AS fee FROM bills WHERE uid='%d' and time >= '%s' and time <= '%s' SAMPLE BY 1d ALIGN TO CALENDAR;", info.UserID, startTime, endTime) //sql := fmt.Sprintf("SELECT time,sum(fee) AS fee FROM bills WHERE uid='%d' and time >= '%s' and time <= '%s' SAMPLE BY 1d ALIGN TO CALENDAR;", info.UserID, startTime, endTime)
//if info.Role == 1 || info.Role == 2 {
// sql = fmt.Sprintf("SELECT time,sum(fee) AS fee FROM bills WHERE time >= '%s' and time <= '%s' SAMPLE BY 1d ALIGN TO CALENDAR;", startTime, endTime)
//}
counts, err := postgres.CountTasks(sql) counts, err := postgres.CountTasks(sql)
if err != nil { if err != nil {
server.respond(models.BusinessFailed, err.Error()) server.respond(models.BusinessFailed, err.Error())
...@@ -907,10 +1009,10 @@ func (server *TaskController) UserTaskTypeFeePerDay() { ...@@ -907,10 +1009,10 @@ func (server *TaskController) UserTaskTypeFeePerDay() {
appRequest := models.AppRequest{} appRequest := models.AppRequest{}
err = json.Unmarshal(body, &appRequest) //解析body中数据 err = json.Unmarshal(body, &appRequest) //解析body中数据
logs.Debug("appRequest", appRequest) logs.Debug("appRequest", appRequest)
if err != nil { //if err != nil {
server.respond(models.NoRequestBody, err.Error()) // server.respond(models.NoRequestBody, err.Error())
return // return
} //}
if appRequest.StartTime == "" && appRequest.EndTime != "" { if appRequest.StartTime == "" && appRequest.EndTime != "" {
server.respond(models.MissingParameter, "缺少开始时间") server.respond(models.MissingParameter, "缺少开始时间")
return return
...@@ -945,11 +1047,23 @@ func (server *TaskController) UserTaskTypeFeePerDay() { ...@@ -945,11 +1047,23 @@ func (server *TaskController) UserTaskTypeFeePerDay() {
startTime := fmt.Sprintf(startTimeIn.Format(format)) startTime := fmt.Sprintf(startTimeIn.Format(format))
endTime := fmt.Sprintf(endTimeIn.Format(format)) endTime := fmt.Sprintf(endTimeIn.Format(format))
countQB, _ := orm.NewQueryBuilder("mysql")
countQB.Select("time", "sum(fee) AS fee", "type").
From("bills").Where(fmt.Sprintf("time >= '%s'", startTime)).And(fmt.Sprintf("time <= '%s'", endTime))
if info.Role != 1 && info.Role != 2 {
countQB.And(fmt.Sprintf("uid = %d", info.UserID))
}
sql := fmt.Sprintf("%s SAMPLE BY 1d ALIGN TO CALENDAR;", countQB.String())
endDateIn := time.Date(endTimeIn.Year(), endTimeIn.Month(), endTimeIn.Day(), 0, 0, 0, 0, endTimeIn.Location()) endDateIn := time.Date(endTimeIn.Year(), endTimeIn.Month(), endTimeIn.Day(), 0, 0, 0, 0, endTimeIn.Location())
endDate := fmt.Sprintf(endDateIn.Format(format)) endDate := fmt.Sprintf(endDateIn.Format(format))
dates := utils.SplitDate(startTime, endDate, format) dates := utils.SplitDate(startTime, endDate, format)
sql := fmt.Sprintf("SELECT type, time,sum(fee) AS fee FROM bills WHERE uid='%d' and time >= '%s' and time <= '%s' SAMPLE BY 1d ALIGN TO CALENDAR;", info.UserID, startTime, endTime) //sql := fmt.Sprintf("SELECT type, time,sum(fee) AS fee FROM bills WHERE uid='%d' and time >= '%s' and time <= '%s' SAMPLE BY 1d ALIGN TO CALENDAR;", info.UserID, startTime, endTime)
//if info.Role == 1 || info.Role == 2 {
// sql = fmt.Sprintf("SELECT type, time,sum(fee) AS fee FROM bills WHERE time >= '%s' and time <= '%s' SAMPLE BY 1d ALIGN TO CALENDAR;", startTime, endTime)
//}
counts, err := postgres.CountTasks(sql) counts, err := postgres.CountTasks(sql)
if err != nil { if err != nil {
server.respond(models.BusinessFailed, err.Error()) server.respond(models.BusinessFailed, err.Error())
...@@ -1002,10 +1116,10 @@ func (server *TaskController) UserTaskTypeFeePercentage() { ...@@ -1002,10 +1116,10 @@ func (server *TaskController) UserTaskTypeFeePercentage() {
appRequest := models.AppRequest{} appRequest := models.AppRequest{}
err = json.Unmarshal(body, &appRequest) //解析body中数据 err = json.Unmarshal(body, &appRequest) //解析body中数据
logs.Debug("appRequest", appRequest) logs.Debug("appRequest", appRequest)
if err != nil { //if err != nil {
server.respond(models.NoRequestBody, err.Error()) // server.respond(models.NoRequestBody, err.Error())
return // return
} //}
if appRequest.StartTime == "" && appRequest.EndTime != "" { if appRequest.StartTime == "" && appRequest.EndTime != "" {
server.respond(models.MissingParameter, "缺少开始时间") server.respond(models.MissingParameter, "缺少开始时间")
return return
...@@ -1040,7 +1154,20 @@ func (server *TaskController) UserTaskTypeFeePercentage() { ...@@ -1040,7 +1154,20 @@ func (server *TaskController) UserTaskTypeFeePercentage() {
startTime := fmt.Sprintf(startTimeIn.Format(format)) startTime := fmt.Sprintf(startTimeIn.Format(format))
endTime := fmt.Sprintf(endTimeIn.Format(format)) endTime := fmt.Sprintf(endTimeIn.Format(format))
sql := fmt.Sprintf("SELECT type, sum(fee) AS fee FROM bills WHERE uid='%d' and time >= '%s' and time <= '%s' GROUP BY type;", info.UserID, startTime, endTime)
countQB, _ := orm.NewQueryBuilder("mysql")
countQB.Select("sum(fee) AS fee", "type").
From("bills").Where(fmt.Sprintf("time >= '%s'", startTime)).And(fmt.Sprintf("time <= '%s'", endTime))
if info.Role != 1 && info.Role != 2 {
countQB.And(fmt.Sprintf("uid = %d", info.UserID))
}
countQB.GroupBy("type")
sql := countQB.String()
//sql := fmt.Sprintf("SELECT type, sum(fee) AS fee FROM bills WHERE uid='%d' and time >= '%s' and time <= '%s' GROUP BY type;", info.UserID, startTime, endTime)
//if info.Role == 1 || info.Role == 2 {
// sql = fmt.Sprintf("SELECT type, sum(fee) AS fee FROM bills WHERE time >= '%s' and time <= '%s' GROUP BY type;", startTime, endTime)
//}
counts, err := postgres.CountTasks(sql) counts, err := postgres.CountTasks(sql)
if err != nil { if err != nil {
server.respond(models.BusinessFailed, err.Error()) server.respond(models.BusinessFailed, err.Error())
...@@ -1068,6 +1195,53 @@ func (server *TaskController) UserTaskTypeFeePercentage() { ...@@ -1068,6 +1195,53 @@ func (server *TaskController) UserTaskTypeFeePercentage() {
server.respond(http.StatusOK, "", responseTasks) server.respond(http.StatusOK, "", responseTasks)
} }
func (server *TaskController) Computility() {
_, err := server.Check()
if err != nil {
server.respond(http.StatusUnauthorized, err.Error())
return
}
body := server.Ctx.Input.RequestBody
appRequest := models.AppRequest{}
err = json.Unmarshal(body, &appRequest) //解析body中数据
logs.Debug("appRequest", appRequest, string(body))
if appRequest.Page == 0 {
appRequest.Page = 1
}
if appRequest.Size == 0 {
appRequest.Size = 10
}
offset := (appRequest.Page - 1) * appRequest.Size
qs := mysql.GetMysqlInstace().Ormer.QueryTable("computility").Filter("deleted", 0)
if appRequest.Type != 0 {
qs.Filter("type", appRequest.Type)
}
if appRequest.Keyword != "" {
cond := orm.NewCondition()
cond1 := cond.Or("model__contains", appRequest.Keyword).Or("series__contains", appRequest.Keyword).Or("brand__contains", appRequest.Keyword)
cond2 := cond.AndNotCond(cond1)
qs = qs.SetCond(cond2)
}
infoQs := qs.Offset(offset).Limit(appRequest.Size)
count, err := infoQs.Count()
logs.Debug("lists = ", count)
var lists []*models.Computility
if count > 0 {
infoQs.All(&lists)
}
total, err := qs.Count()
responseData := struct {
Total int64 `json:"total"`
Data interface{} `json:"data,omitempty"`
}{
Total: total,
Data: lists,
}
server.respond(http.StatusOK, "", responseData)
}
func (server *TaskController) AddTasktype() { func (server *TaskController) AddTasktype() {
_, err := server.Check() _, err := server.Check()
if err != nil { if err != nil {
...@@ -1131,7 +1305,7 @@ func (server *TaskController) AddTasktype() { ...@@ -1131,7 +1305,7 @@ func (server *TaskController) AddTasktype() {
hardwareRequire, err := json.Marshal(appRequest.TaskTypeIn.HardwareRequire) hardwareRequire, err := json.Marshal(appRequest.TaskTypeIn.HardwareRequire)
cmd, err := json.Marshal(appRequest.TaskTypeIn.Cmd) cmd, err := json.Marshal(appRequest.TaskTypeIn.Cmd)
//examples, err := json.Marshal(appRequest.Type.Examples) //examples, err := json.Marshal(appRequest.Type.Examples)
apiPath := fmt.Sprintf("/%s/%s/%s", appRequest.TaskTypeIn.Type.String(), appRequest.TaskTypeIn.BaseModel, appRequest.TaskTypeIn.Model) //apiPath := fmt.Sprintf("/%s/%s/%s", appRequest.TaskTypeIn.Type.String(), appRequest.TaskTypeIn.BaseModel, appRequest.TaskTypeIn.Model)
//if appRequest.Type.BaseModel != "" { //if appRequest.Type.BaseModel != "" {
// apiPath = fmt.Sprintf("/%s/%s", apiPath, appRequest.Type.BaseModel) // apiPath = fmt.Sprintf("/%s/%s", apiPath, appRequest.Type.BaseModel)
//} //}
...@@ -1155,11 +1329,12 @@ func (server *TaskController) AddTasktype() { ...@@ -1155,11 +1329,12 @@ func (server *TaskController) AddTasktype() {
ImageUrl: appRequest.TaskTypeIn.ImageUrl, ImageUrl: appRequest.TaskTypeIn.ImageUrl,
Cmd: string(cmd), Cmd: string(cmd),
Workload: appRequest.TaskTypeIn.Workload, Workload: appRequest.TaskTypeIn.Workload,
ApiPath: apiPath, ApiPath: appRequest.TaskTypeIn.ApiPath,
ImageName: appRequest.TaskTypeIn.ImageName, ImageName: appRequest.TaskTypeIn.ImageName,
SignUrl: appRequest.TaskTypeIn.SignUrl, SignUrl: appRequest.TaskTypeIn.SignUrl,
Username: appRequest.TaskTypeIn.Username, Username: appRequest.TaskTypeIn.Username,
Password: appRequest.TaskTypeIn.Password, Password: appRequest.TaskTypeIn.Password,
Category: appRequest.TaskTypeIn.Category,
CreatedTime: timestamp, CreatedTime: timestamp,
UpdatedTime: timestamp, UpdatedTime: timestamp,
} }
...@@ -1285,7 +1460,7 @@ func (server *TaskController) UpdateTaskType() { ...@@ -1285,7 +1460,7 @@ func (server *TaskController) UpdateTaskType() {
hardwareRequire, err := json.Marshal(appRequest.TaskTypeIn.HardwareRequire) hardwareRequire, err := json.Marshal(appRequest.TaskTypeIn.HardwareRequire)
cmd, err := json.Marshal(appRequest.TaskTypeIn.Cmd) cmd, err := json.Marshal(appRequest.TaskTypeIn.Cmd)
apiPath := fmt.Sprintf("/%s/%s/%s", appRequest.TaskTypeIn.Type.String(), appRequest.TaskTypeIn.BaseModel, appRequest.TaskTypeIn.Model) //apiPath := fmt.Sprintf("/%s/%s/%s", appRequest.TaskTypeIn.Type.String(), appRequest.TaskTypeIn.BaseModel, appRequest.TaskTypeIn.Model)
//apiPath := fmt.Sprintf("/%s/%s", appRequest.Type.Type.String(), appRequest.Type.Name) //apiPath := fmt.Sprintf("/%s/%s", appRequest.Type.Type.String(), appRequest.Type.Name)
//if appRequest.Type.BaseModel != "" { //if appRequest.Type.BaseModel != "" {
// apiPath = fmt.Sprintf("/%s/%s", apiPath, appRequest.Type.BaseModel) // apiPath = fmt.Sprintf("/%s/%s", apiPath, appRequest.Type.BaseModel)
...@@ -1311,11 +1486,12 @@ func (server *TaskController) UpdateTaskType() { ...@@ -1311,11 +1486,12 @@ func (server *TaskController) UpdateTaskType() {
Kind: appRequest.TaskTypeIn.Kind, Kind: appRequest.TaskTypeIn.Kind,
Cmd: string(cmd), Cmd: string(cmd),
Workload: appRequest.TaskTypeIn.Workload, Workload: appRequest.TaskTypeIn.Workload,
ApiPath: apiPath, ApiPath: appRequest.TaskTypeIn.ApiPath,
ImageName: appRequest.TaskTypeIn.ImageName, ImageName: appRequest.TaskTypeIn.ImageName,
SignUrl: appRequest.TaskTypeIn.SignUrl, SignUrl: appRequest.TaskTypeIn.SignUrl,
Username: appRequest.TaskTypeIn.Username, Username: appRequest.TaskTypeIn.Username,
Password: appRequest.TaskTypeIn.Password, Password: appRequest.TaskTypeIn.Password,
Category: appRequest.TaskTypeIn.Category,
CreatedTime: timestamp, CreatedTime: timestamp,
UpdatedTime: timestamp, UpdatedTime: timestamp,
} }
...@@ -1384,10 +1560,10 @@ func (server *TaskController) GetTaskTypes() { ...@@ -1384,10 +1560,10 @@ func (server *TaskController) GetTaskTypes() {
appRequest := models.AppRequest{} appRequest := models.AppRequest{}
err = json.Unmarshal(body, &appRequest) //解析body中数据 err = json.Unmarshal(body, &appRequest) //解析body中数据
logs.Debug("appRequest", appRequest, string(body)) logs.Debug("appRequest", appRequest, string(body))
if err != nil { //if err != nil {
server.respond(models.NoRequestBody, err.Error()) // server.respond(models.NoRequestBody, err.Error())
return // return
} //}
if appRequest.Page == 0 { if appRequest.Page == 0 {
appRequest.Page = 1 appRequest.Page = 1
...@@ -1396,28 +1572,17 @@ func (server *TaskController) GetTaskTypes() { ...@@ -1396,28 +1572,17 @@ func (server *TaskController) GetTaskTypes() {
if appRequest.Size == 0 { if appRequest.Size == 0 {
appRequest.Size = 10 appRequest.Size = 10
} }
offset := (appRequest.Page - 1) * appRequest.Size offset := (appRequest.Page - 1) * appRequest.Size
size := appRequest.Page * appRequest.Size //size := appRequest.Page * appRequest.Size
qs := mysql.GetMysqlInstace().Ormer.QueryTable("task_type").Filter("deleted", 0)
infoQs := qs.Offset(offset).Limit(appRequest.Size)
count, err := infoQs.Count()
logs.Debug("Levels = ", count)
var types []*models.TaskType var types []*models.TaskType
sql := "SELECT count(*) FROM task_type WHERE deleted = 0;" if count > 0 {
var total int64 infoQs.All(&types)
mysql.GetMysqlInstace().Ormer.Raw(sql).QueryRow(&total)
logs.Debug("total = %d", total)
if total == 0 {
responseData := struct {
Total int64 `json:"total"`
Data interface{} `json:"data,omitempty"`
}{
Total: total,
Data: types,
}
server.respond(http.StatusOK, "", responseData)
return
} }
sql = fmt.Sprintf("SELECT * FROM task_type WHERE deleted = 0 LIMIT %d,%d;", offset, size)
mysql.GetMysqlInstace().Ormer.Raw(sql).QueryRows(&types)
var remodels []*models.NewTaskType var remodels []*models.NewTaskType
for _, data := range types { for _, data := range types {
var hardwareRequire interface{} var hardwareRequire interface{}
...@@ -1429,6 +1594,21 @@ func (server *TaskController) GetTaskTypes() { ...@@ -1429,6 +1594,21 @@ func (server *TaskController) GetTaskTypes() {
eer = json.Unmarshal([]byte(data.Cmd), &cmd) eer = json.Unmarshal([]byte(data.Cmd), &cmd)
if eer != nil { if eer != nil {
}
var examples []models.ExampleType
eer = json.Unmarshal([]byte(data.Examples), &examples)
if eer != nil {
}
var codes interface{}
eer = json.Unmarshal([]byte(data.Codes), &codes)
if eer != nil {
}
var tags []string
eer = json.Unmarshal([]byte(data.Tags), &tags)
if eer != nil {
} }
remodel := models.NewTaskType{ remodel := models.NewTaskType{
Id: data.Id, Id: data.Id,
...@@ -1444,6 +1624,7 @@ func (server *TaskController) GetTaskTypes() { ...@@ -1444,6 +1624,7 @@ func (server *TaskController) GetTaskTypes() {
TypeDesc: models.ModelType(data.Type).String(), TypeDesc: models.ModelType(data.Type).String(),
Kind: data.Kind, Kind: data.Kind,
KindDesc: models.TaskKind(data.Kind).String(), KindDesc: models.TaskKind(data.Kind).String(),
Category: data.Category,
HardwareRequire: hardwareRequire, HardwareRequire: hardwareRequire,
ImageId: data.ImageId, ImageId: data.ImageId,
ImageUrl: data.ImageUrl, ImageUrl: data.ImageUrl,
...@@ -1454,9 +1635,13 @@ func (server *TaskController) GetTaskTypes() { ...@@ -1454,9 +1635,13 @@ func (server *TaskController) GetTaskTypes() {
SignUrl: data.SignUrl, SignUrl: data.SignUrl,
Username: data.Username, Username: data.Username,
Password: data.Password, Password: data.Password,
Examples: examples,
Codes: codes,
Tags: tags,
} }
remodels = append(remodels, &remodel) remodels = append(remodels, &remodel)
} }
total, err := qs.Count()
responseData := struct { responseData := struct {
Total int64 `json:"total"` Total int64 `json:"total"`
Data interface{} `json:"data,omitempty"` Data interface{} `json:"data,omitempty"`
...@@ -1464,6 +1649,71 @@ func (server *TaskController) GetTaskTypes() { ...@@ -1464,6 +1649,71 @@ func (server *TaskController) GetTaskTypes() {
Total: total, Total: total,
Data: remodels, Data: remodels,
} }
//sql := "SELECT count(*) FROM task_type WHERE deleted = 0;"
//var total int64
//mysql.GetMysqlInstace().Ormer.Raw(sql).QueryRow(&total)
//logs.Debug("total = %d", total)
//if total == 0 {
// responseData := struct {
// Total int64 `json:"total"`
// Data interface{} `json:"data,omitempty"`
// }{
// Total: total,
// Data: types,
// }
// server.respond(http.StatusOK, "", responseData)
// return
//}
//sql = fmt.Sprintf("SELECT * FROM task_type WHERE deleted = 0 LIMIT %d,%d;", offset, size)
//mysql.GetMysqlInstace().Ormer.Raw(sql).QueryRows(&types)
//var remodels []*models.NewTaskType
//for _, data := range types {
// var hardwareRequire interface{}
// eer := json.Unmarshal([]byte(data.HardwareRequire), &hardwareRequire)
// if eer != nil {
//
// }
// var cmd interface{}
// eer = json.Unmarshal([]byte(data.Cmd), &cmd)
// if eer != nil {
//
// }
// remodel := models.NewTaskType{
// Id: data.Id,
// Name: data.Name,
// BaseModel: data.BaseModel,
// Model: data.Model,
// Version: data.Version,
// Desc: data.Desc,
// Price: float64(data.Price / 1000000),
// PublicKey: data.PublicKey,
// Complexity: data.Complexity,
// Type: models.ModelType(data.Type),
// TypeDesc: models.ModelType(data.Type).String(),
// Kind: data.Kind,
// KindDesc: models.TaskKind(data.Kind).String(),
// Category: data.Category,
// HardwareRequire: hardwareRequire,
// ImageId: data.ImageId,
// ImageUrl: data.ImageUrl,
// Cmd: cmd,
// Workload: data.Workload,
// ApiPath: data.ApiPath,
// ImageName: data.ImageName,
// SignUrl: data.SignUrl,
// Username: data.Username,
// Password: data.Password,
// }
// remodels = append(remodels, &remodel)
//}
//responseData := struct {
// Total int64 `json:"total"`
// Data interface{} `json:"data,omitempty"`
//}{
// Total: total,
// Data: remodels,
//}
server.respond(http.StatusOK, "", responseData) server.respond(http.StatusOK, "", responseData)
//qb, _ := orm.NewQueryBuilder("mysql") //qb, _ := orm.NewQueryBuilder("mysql")
...@@ -1605,17 +1855,41 @@ func (server *TaskController) Examples() { ...@@ -1605,17 +1855,41 @@ func (server *TaskController) Examples() {
if appRequest.Size == 0 { if appRequest.Size == 0 {
appRequest.Size = 10 appRequest.Size = 10
} }
offset := (appRequest.Page - 1) * appRequest.Size offset := (appRequest.Page - 1) * appRequest.Size
size := appRequest.Page * appRequest.Size size := appRequest.Page * appRequest.Size
where := "" where := ""
if appRequest.Id != 0 { if appRequest.Id != 0 {
where = fmt.Sprintf("and id = %d", appRequest.Id) where = fmt.Sprintf("and id = %d", appRequest.Id)
} else {
if appRequest.Keyword != "" {
keyword := "%" + appRequest.Keyword + "%"
where = fmt.Sprintf("and (`name` LIKE '%s' OR `desc` LIKE '%s' OR tags LIKE '%s')", keyword, keyword, keyword)
}
if appRequest.Category != 0 {
where = fmt.Sprintf("and category = %d", appRequest.Category)
}
} }
var types []*models.Model var types []*models.Model
sql := fmt.Sprintf("SELECT id, `name` AS tit,type,`desc` AS content, tags ,examples,codes,base_model,model,api_path,version FROM task_type WHERE deleted = 0 %s LIMIT %d,%d;", where, offset, size)
sql := fmt.Sprintf("SELECT count(*) FROM task_type WHERE deleted = 0 %s;", where)
var total int64
mysql.GetMysqlInstace().Ormer.Raw(sql).QueryRow(&total)
logs.Debug("total = %d", total)
if total == 0 {
responseData := struct {
Total int64 `json:"total"`
Data interface{} `json:"data,omitempty"`
}{
Total: total,
Data: types,
}
server.respond(http.StatusOK, "", responseData)
return
}
sql = fmt.Sprintf("SELECT id, `name` AS tit,type,`desc` AS content, tags ,examples,codes,base_model,model,api_path,version,category FROM task_type WHERE deleted = 0 %s LIMIT %d,%d;", where, offset, size)
mysql.GetMysqlInstace().Ormer.Raw(sql).QueryRows(&types) mysql.GetMysqlInstace().Ormer.Raw(sql).QueryRows(&types)
var remodels []*models.ResonseModel var remodels []*models.ResonseModel
for _, data := range types { for _, data := range types {
...@@ -1648,10 +1922,18 @@ func (server *TaskController) Examples() { ...@@ -1648,10 +1922,18 @@ func (server *TaskController) Examples() {
ApiDocContent: data.ApiDocContent, ApiDocContent: data.ApiDocContent,
Codes: codes, Codes: codes,
Tags: tags, Tags: tags,
Category: data.Category,
} }
remodels = append(remodels, &remodel) remodels = append(remodels, &remodel)
} }
server.respond(http.StatusOK, "", remodels) responseData := struct {
Total int64 `json:"total"`
Data interface{} `json:"data,omitempty"`
}{
Total: total,
Data: remodels,
}
server.respond(http.StatusOK, "", responseData)
} }
func (server *TaskController) GetLevelsByTypeId() { func (server *TaskController) GetLevelsByTypeId() {
...@@ -1689,6 +1971,70 @@ func (server *TaskController) GetLevelsByTypeId() { ...@@ -1689,6 +1971,70 @@ func (server *TaskController) GetLevelsByTypeId() {
server.respond(http.StatusOK, "", types) server.respond(http.StatusOK, "", types)
} }
func (server *TaskController) Enumeration() {
_, err := server.Check()
if err != nil {
server.respond(http.StatusUnauthorized, err.Error())
return
}
var categorys []*models.Category
qs := mysql.GetMysqlInstace().Ormer.QueryTable("category").Filter("deleted", 0)
//mysql.GetMysqlInstace().Ormer.LoadRelated(types, "UserLevelTaskType")
count, err := qs.Count()
logs.Debug("types = ", count)
//var types []*models.TaskType
if count > 0 {
qs.All(&categorys)
//mysql.GetMysqlInstace().Ormer.LoadRelated(types, "UserLevelTaskType")
//for _, dbType := range types {
// var levels []*models.UserLevelTaskType
// qs := mysql.GetMysqlInstace().Ormer.QueryTable(" user_level_task_type ")
//}
}
var types []*models.EnumType
for _, value := range [...]models.ModelType{models.TXTTOIMG, models.TXTTOTXT, models.TXTTOVIDEO} {
typeData := models.EnumType{
Id: int(value),
Desc: value.String(),
EnDesc: "",
}
types = append(types, &typeData)
}
var kinds []*models.EnumType
for _, value := range [...]models.TaskKind{models.SystemTask, models.ComputeTask, models.CustomTask, models.StandardTask} {
typeData := models.EnumType{
Id: int(value),
Desc: value.String(),
EnDesc: value.EnString(),
}
kinds = append(kinds, &typeData)
}
var feeConditionEnums []*models.EnumType
for _, value := range [...]models.FeeConditionEnum{models.FeeAll, models.FeeFree, models.FeeBased} {
typeData := models.EnumType{
Id: int(value),
Desc: value.String(),
EnDesc: value.EnString(),
}
feeConditionEnums = append(feeConditionEnums, &typeData)
}
responseData := struct {
Categorys []*models.Category `json:"categorys,omitempty"`
Types []*models.EnumType `json:"types,omitempty"`
Kinds []*models.EnumType `json:"kinds,omitempty"`
FeeConditions []*models.EnumType `json:"fee_conditions,omitempty"`
}{
Categorys: categorys,
Types: types,
Kinds: kinds,
FeeConditions: feeConditionEnums,
}
server.respond(http.StatusOK, "", responseData)
}
func initTypeInRedis() []models.TaskHeat { func initTypeInRedis() []models.TaskHeat {
qs := mysql.GetMysqlInstace().Ormer.QueryTable("task_type") qs := mysql.GetMysqlInstace().Ormer.QueryTable("task_type")
count, _ := qs.Count() count, _ := qs.Count()
......
...@@ -4,6 +4,7 @@ import ( ...@@ -4,6 +4,7 @@ import (
"ai_developer_admin/libs/jose" "ai_developer_admin/libs/jose"
"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/redis" "ai_developer_admin/libs/redis"
"ai_developer_admin/libs/utils" "ai_developer_admin/libs/utils"
"ai_developer_admin/models" "ai_developer_admin/models"
...@@ -85,18 +86,18 @@ func (server *UserController) Login() { ...@@ -85,18 +86,18 @@ func (server *UserController) Login() {
} }
user := loginRequest.RequstUser user := loginRequest.RequstUser
if len(user.VerifierId) == 0 { //if len(user.VerifierId) == 0 {
user.VerifierId = claims.VerifierId user.VerifierId = claims.VerifierId
} //}
if len(user.Username) == 0 { if len(user.Username) == 0 {
user.Username = "ai_" + generatorMD5(user.VerifierId)[0:8] user.Username = "ai_" + generatorMD5(user.Mail)[0:8]
} }
if len(user.ProfileImage) == 0 { if len(user.ProfileImage) == 0 {
user.ProfileImage = claims.ProfileImage user.ProfileImage = claims.ProfileImage
} }
checkUser := &models.User{VerifierId: user.VerifierId} checkUser := &models.User{Mail: user.Mail}
err = mysql.GetMysqlInstace().Ormer.Read(checkUser, "verifierId") err = mysql.GetMysqlInstace().Ormer.Read(checkUser, "mail")
if err != nil { if err != nil {
checkUser, err = regisgerUser(user) checkUser, err = regisgerUser(user)
if err != nil { if err != nil {
...@@ -176,6 +177,10 @@ func (server *UserController) UserInfo() { ...@@ -176,6 +177,10 @@ func (server *UserController) UserInfo() {
server.respond(models.BusinessFailed, err.Error()) server.respond(models.BusinessFailed, err.Error())
return return
} }
balance, err := odysseus.GetUserBalance(int64(checkUser.Id))
if err == nil {
checkUser.Balance = balance
}
server.respond(http.StatusOK, "", checkUser) server.respond(http.StatusOK, "", checkUser)
} }
...@@ -199,6 +204,7 @@ func regisgerUser(user models.User) (*models.User, error) { ...@@ -199,6 +204,7 @@ func regisgerUser(user models.User) (*models.User, error) {
user.CreatedTime = time.Now() user.CreatedTime = time.Now()
user.UpdatedTime = user.CreatedTime user.UpdatedTime = user.CreatedTime
user.Level = 0 user.Level = 0
user.Role = 4
_, err = mysql.GetMysqlInstace().Ormer.Insert(&user) _, err = mysql.GetMysqlInstace().Ormer.Insert(&user)
if err != nil { if err != nil {
......
...@@ -23,10 +23,10 @@ func (server *UserLevelController) Levels() { ...@@ -23,10 +23,10 @@ func (server *UserLevelController) Levels() {
appRequest := models.AppRequest{} appRequest := models.AppRequest{}
err = json.Unmarshal(body, &appRequest) //解析body中数据 err = json.Unmarshal(body, &appRequest) //解析body中数据
logs.Debug("appRequest", appRequest, string(body)) logs.Debug("appRequest", appRequest, string(body))
if err != nil { //if err != nil {
server.respond(models.NoRequestBody, err.Error()) // server.respond(models.NoRequestBody, err.Error())
return // return
} //}
if appRequest.Page == 0 { if appRequest.Page == 0 {
appRequest.Page = 1 appRequest.Page = 1
...@@ -79,7 +79,7 @@ func (server *UserLevelController) AddLevel() { ...@@ -79,7 +79,7 @@ func (server *UserLevelController) AddLevel() {
usernameQs := qs.Filter("level", request.Level) usernameQs := qs.Filter("level", request.Level)
count, err := usernameQs.Count() count, err := usernameQs.Count()
logs.Debug("Levels = ", count) logs.Debug("Levels = ", count)
var levels []*models.UserLevel //var levels []*models.UserLevel
if count > 0 { if count > 0 {
server.respond(models.BusinessFailed, "该等级已存在") server.respond(models.BusinessFailed, "该等级已存在")
return return
...@@ -91,9 +91,13 @@ func (server *UserLevelController) AddLevel() { ...@@ -91,9 +91,13 @@ func (server *UserLevelController) AddLevel() {
request.UpdatedTime = timestamp request.UpdatedTime = timestamp
request.Deleted = 0 request.Deleted = 0
mysql.GetMysqlInstace().Ormer.Insert(&request) _, err = mysql.GetMysqlInstace().Ormer.Insert(&request)
if err != nil {
server.respond(models.BusinessFailed, err.Error())
return
}
server.respond(http.StatusOK, "", levels) server.respond(http.StatusOK, "")
} }
func (server *UserLevelController) UpdateLevel() { func (server *UserLevelController) UpdateLevel() {
......
package controllers
import (
"ai_developer_admin/libs/mysql"
"ai_developer_admin/models"
"encoding/json"
"github.com/beego/beego/v2/core/logs"
"net/http"
"time"
)
type WhitelistController struct {
MainController
}
func (server *WhitelistController) Lists() {
info, err := server.Check()
if err != nil {
server.respond(http.StatusUnauthorized, err.Error())
return
}
if !(info.Role == 1 || info.Role == 2) {
server.respond(models.BusinessFailed, "只有系统管理员或超级管理员才能执行此操作")
return
}
body := server.Ctx.Input.RequestBody
appRequest := models.AppRequest{}
err = json.Unmarshal(body, &appRequest) //解析body中数据
logs.Debug("appRequest", appRequest, string(body))
if appRequest.Page == 0 {
appRequest.Page = 1
}
if appRequest.Size == 0 {
appRequest.Size = 10
}
offset := (appRequest.Page - 1) * appRequest.Size
qs := mysql.GetMysqlInstace().Ormer.QueryTable("whitelist").Filter("deleted", 0)
infoQs := qs.Offset(offset).Limit(appRequest.Size)
count, err := infoQs.Count()
logs.Debug("lists = ", count)
var lists []*models.Whitelist
if count > 0 {
infoQs.All(&lists)
}
total, err := qs.Count()
responseData := struct {
Total int64 `json:"total"`
Data interface{} `json:"data,omitempty"`
}{
Total: total,
Data: lists,
}
server.respond(http.StatusOK, "", responseData)
}
func (server *WhitelistController) Add() {
info, err := server.Check()
if err != nil {
server.respond(http.StatusUnauthorized, err.Error())
return
}
if !(info.Role == 1 || info.Role == 2) {
server.respond(models.BusinessFailed, "只有系统管理员或超级管理员才能执行此操作")
return
}
body := server.Ctx.Input.RequestBody
logs.Debug("AddLevel body", string(body))
request := models.Whitelist{}
err = json.Unmarshal(body, &request) //解析body中数据
logs.Debug("request", request)
if err != nil {
server.respond(models.NoRequestBody, err.Error())
return
}
if request.ProfitAddress == "" {
server.respond(models.MissingParameter, "收益地址不能为空")
return
}
if request.NodeNum == 0 {
server.respond(models.MissingParameter, "节点个数最少为1")
return
}
timestamp := time.Now()
request.CreatedTime = timestamp
request.UpdatedTime = timestamp
request.Deleted = 0
_, err = mysql.GetMysqlInstace().Ormer.Insert(&request)
if err != nil {
server.respond(models.BusinessFailed, err.Error())
return
}
server.respond(http.StatusOK, "添加成功")
}
func (server *WhitelistController) Update() {
info, err := server.Check()
if err != nil {
server.respond(http.StatusUnauthorized, err.Error())
return
}
if !(info.Role == 1 || info.Role == 2) {
server.respond(models.BusinessFailed, "只有系统管理员或超级管理员才能执行此操作")
return
}
body := server.Ctx.Input.RequestBody
logs.Debug("AddLevel body", string(body))
request := models.Whitelist{}
err = json.Unmarshal(body, &request) //解析body中数据
logs.Debug("request", request)
if err != nil {
server.respond(models.NoRequestBody, err.Error())
return
}
if request.Id == 0 {
server.respond(models.MissingParameter, "id 不能为空")
return
}
if request.ProfitAddress == "" {
server.respond(models.MissingParameter, "收益地址不能为空")
return
}
if request.NodeNum == 0 {
server.respond(models.MissingParameter, "节点个数最少为1")
return
}
check := models.Whitelist{Id: request.Id}
err = mysql.GetMysqlInstace().Ormer.Read(&check)
if err != nil {
server.respond(models.BusinessFailed, "该白名单数据不存在")
return
}
timestamp := time.Now()
request.CreatedTime = check.CreatedTime
request.UpdatedTime = timestamp
_, err = mysql.GetMysqlInstace().Ormer.Update(&request)
if err != nil {
server.respond(models.BusinessFailed, err.Error())
return
}
server.respond(http.StatusOK, "更新成功")
}
func (server *WhitelistController) Delete() {
info, err := server.Check()
if err != nil {
server.respond(http.StatusUnauthorized, err.Error())
return
}
if !(info.Role == 1 || info.Role == 2) {
server.respond(models.BusinessFailed, "只有系统管理员或超级管理员才能执行此操作")
return
}
body := server.Ctx.Input.RequestBody
logs.Debug("AddLevel body", string(body))
request := models.Whitelist{}
err = json.Unmarshal(body, &request) //解析body中数据
logs.Debug("request", request)
if err != nil {
server.respond(models.NoRequestBody, err.Error())
return
}
if request.Id == 0 {
server.respond(models.MissingParameter, "id 不能为空")
return
}
check := models.Whitelist{Id: request.Id}
err = mysql.GetMysqlInstace().Ormer.Read(&check)
if err != nil {
server.respond(models.BusinessFailed, "该白名单数据不存在")
return
}
timestamp := time.Now()
request.CreatedTime = check.CreatedTime
request.UpdatedTime = timestamp
request.Deleted = 1
_, err = mysql.GetMysqlInstace().Ormer.Update(&request)
if err != nil {
server.respond(models.BusinessFailed, err.Error())
return
}
server.respond(http.StatusOK, "删除成功")
}
...@@ -42,6 +42,7 @@ require ( ...@@ -42,6 +42,7 @@ require (
github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 // indirect github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644 // indirect
github.com/sirupsen/logrus v1.9.3 // indirect github.com/sirupsen/logrus v1.9.3 // indirect
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d // indirect github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d // indirect
github.com/sony/sonyflake v1.2.0 // indirect
golang.org/x/mod v0.13.0 // indirect golang.org/x/mod v0.13.0 // indirect
golang.org/x/net v0.16.0 // indirect golang.org/x/net v0.16.0 // indirect
golang.org/x/sys v0.16.0 // indirect golang.org/x/sys v0.16.0 // indirect
......
...@@ -217,6 +217,8 @@ github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykE ...@@ -217,6 +217,8 @@ github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykE
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
github.com/sony/sonyflake v1.2.0 h1:Pfr3A+ejSg+0SPqpoAmQgEtNDAhc2G1SUYk205qVMLQ=
github.com/sony/sonyflake v1.2.0/go.mod h1:LORtCywH/cq10ZbyfhKrHYgAUGH7mOBa76enV9txy/Y=
github.com/ssdb/gossdb v0.0.0-20180723034631-88f6b59b84ec/go.mod h1:QBvMkMya+gXctz3kmljlUCu/yB3GZ6oee+dUozsezQE= github.com/ssdb/gossdb v0.0.0-20180723034631-88f6b59b84ec/go.mod h1:QBvMkMya+gXctz3kmljlUCu/yB3GZ6oee+dUozsezQE=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
......
{"/Users/brent/Documents/wubanWork/ai_developer_admin/controllers":1709021476821781079} {"/Users/brent/Documents/wubanWork/ai_developer_admin/controllers":1709549304433646107}
\ No newline at end of file \ No newline at end of file
...@@ -4,6 +4,7 @@ import ( ...@@ -4,6 +4,7 @@ import (
"ai_developer_admin/libs/postgres" "ai_developer_admin/libs/postgres"
"ai_developer_admin/libs/redis" "ai_developer_admin/libs/redis"
"ai_developer_admin/libs/registry" "ai_developer_admin/libs/registry"
"ai_developer_admin/libs/snowflake"
"ai_developer_admin/models" "ai_developer_admin/models"
"context" "context"
"encoding/json" "encoding/json"
...@@ -137,23 +138,27 @@ func startDebit() { ...@@ -137,23 +138,27 @@ func startDebit() {
return return
} }
sql = "SELECT Max(id) AS count FROM funds;" //sql = "SELECT Max(id) AS count FROM funds;"
max, err := postgres.QueryTotal(sql) //max, err := postgres.QueryTotal(sql)
if err != nil { //if err != nil {
return // return
} //}
id := max + 1
for _, fund := range data { for _, fund := range data {
//tradeTime, _ := time.Parse(fund.Time, format) //tradeTime, _ := time.Parse(fund.Time, format)
id, _ := snowflake.NextId()
uid, _ := strconv.Atoi(fund.Uid) uid, _ := strconv.Atoi(fund.Uid)
amount, _ := strconv.Atoi(fund.Amount) amount, _ := strconv.Atoi(fund.Amount)
nanoseconds := int64(uint64(dayTime.UnixNano())) nanoseconds := int64(uint64(dayTime.UnixNano()))
seconds := nanoseconds / 1e9 seconds := nanoseconds / 1e9
order, _ := snowflake.NextId()
orderId := strconv.FormatInt(int64(order), 10)
err = sender.Table("funds"). err = sender.Table("funds").
Symbol("order_id", ""). Symbol("order_id", orderId).
Symbol("remark", ""). Symbol("remark", "").
Symbol("channel_serial", ""). Symbol("channel_serial", "").
Int64Column("uid", int64(uid)). Int64Column("uid", int64(uid)).
...@@ -161,7 +166,7 @@ func startDebit() { ...@@ -161,7 +166,7 @@ func startDebit() {
Int64Column("balance", 0). Int64Column("balance", 0).
Int64Column("trade_channel", 0). Int64Column("trade_channel", 0).
Int64Column("status", 5). Int64Column("status", 5).
Int64Column("id", id). Int64Column("id", int64(id)).
TimestampColumn("trade_time", time.Unix(seconds, nanoseconds%1e9)). TimestampColumn("trade_time", time.Unix(seconds, nanoseconds%1e9)).
Int64Column("trade_flow", int64(models.Expenditure)). Int64Column("trade_flow", int64(models.Expenditure)).
Int64Column("trade_type", int64(models.Spending)). Int64Column("trade_type", int64(models.Spending)).
...@@ -170,8 +175,6 @@ func startDebit() { ...@@ -170,8 +175,6 @@ func startDebit() {
if err != nil { if err != nil {
logs.Debug("startDebit sender = %s,id = %d", err.Error(), id) logs.Debug("startDebit sender = %s,id = %d", err.Error(), id)
} }
id = id + 1
//break //break
} }
......
...@@ -42,6 +42,9 @@ func init() { ...@@ -42,6 +42,9 @@ func init() {
orm.RegisterModel(new(models.JwtToken)) orm.RegisterModel(new(models.JwtToken))
orm.RegisterModel(new(models.TaskType)) orm.RegisterModel(new(models.TaskType))
orm.RegisterModel(new(models.UserLevelTaskType)) orm.RegisterModel(new(models.UserLevelTaskType))
orm.RegisterModel(new(models.Category))
orm.RegisterModel(new(models.Whitelist))
orm.RegisterModel(new(models.Computility))
logs.Debug("AppConfig", beego.AppConfig) logs.Debug("AppConfig", beego.AppConfig)
......
package snowflake
import "github.com/sony/sonyflake"
import "github.com/beego/beego/v2/core/logs"
import "errors"
var flake *sonyflake.Sonyflake
func init() {
flake = sonyflake.NewSonyflake(sonyflake.Settings{}) // New(sonyflake.Settings{})
if flake == nil {
logs.Error("failed to create Sonyflake,")
}
}
func NextId() (uint64, error) {
if flake == nil {
logs.Error("failed to create Sonyflake,")
return 0, errors.New("failed to create Sonyflake")
}
return flake.NextID()
}
...@@ -21,6 +21,8 @@ const ( ...@@ -21,6 +21,8 @@ const (
type MyCustomClaims struct { type MyCustomClaims struct {
UserID int `json:"userID"` UserID int `json:"userID"`
Username string `json:"userneme"`
Role int `json:"role"`
jwt.StandardClaims jwt.StandardClaims
} }
...@@ -63,6 +65,8 @@ func GenerateToken(user *models.User, userID int, expiredSeconds int) (tokenStri ...@@ -63,6 +65,8 @@ func GenerateToken(user *models.User, userID int, expiredSeconds int) (tokenStri
claims := MyCustomClaims{ claims := MyCustomClaims{
userID, userID,
user.Username,
user.Role,
jwt.StandardClaims{ jwt.StandardClaims{
Issuer: user.Username, Issuer: user.Username,
IssuedAt: time.Now().Unix(), IssuedAt: time.Now().Unix(),
...@@ -96,6 +100,7 @@ func ValidateToken(tokenString string) (*models.JwtPayload, error) { ...@@ -96,6 +100,7 @@ func ValidateToken(tokenString string) (*models.JwtPayload, error) {
return &models.JwtPayload{ return &models.JwtPayload{
Username: claims.StandardClaims.Issuer, Username: claims.StandardClaims.Issuer,
UserID: claims.UserID, UserID: claims.UserID,
Role: claims.Role,
IssuedAt: claims.StandardClaims.IssuedAt, IssuedAt: claims.StandardClaims.IssuedAt,
ExpiresAt: claims.StandardClaims.ExpiresAt, ExpiresAt: claims.StandardClaims.ExpiresAt,
}, nil }, nil
...@@ -122,6 +127,8 @@ func RefreshToken(tokenString string) (newTokenString string, err error) { ...@@ -122,6 +127,8 @@ func RefreshToken(tokenString string) (newTokenString string, err error) {
expireAt := time.Now().Add(time.Second * time.Duration(DEFAULT_EXPIRE_SECONDS)).Unix() //new expired expireAt := time.Now().Add(time.Second * time.Duration(DEFAULT_EXPIRE_SECONDS)).Unix() //new expired
newClaims := MyCustomClaims{ newClaims := MyCustomClaims{
claims.UserID, claims.UserID,
claims.Username,
claims.Role,
jwt.StandardClaims{ jwt.StandardClaims{
Issuer: claims.StandardClaims.Issuer, //name of token issue Issuer: claims.StandardClaims.Issuer, //name of token issue
IssuedAt: time.Now().Unix(), //time of token issue IssuedAt: time.Now().Unix(), //time of token issue
......
...@@ -62,4 +62,15 @@ func main() { ...@@ -62,4 +62,15 @@ func main() {
mysql.GetMysqlInstace() mysql.GetMysqlInstace()
//postgres.Query("") //postgres.Query("")
beego.Run() beego.Run()
//id, err := snowflake.NextId()
//if err != nil {
// logs.Debug("dates = ", err.Error())
//}
//logs.Debug("id = ", id)
//id, err = snowflake.NextId()
//if err != nil {
// logs.Debug("dates = ", err.Error())
//}
//logs.Debug("id = ", id)
} }
...@@ -41,10 +41,32 @@ type JwtToken struct { ...@@ -41,10 +41,32 @@ type JwtToken struct {
type AppRequest struct { type AppRequest struct {
Id int `json:"id,omitempty"` Id int `json:"id,omitempty"`
Name string `json:"name,omitempty"` Name string `json:"name,omitempty"`
// 通用
Page int64 `json:"page,omitempty"` Page int64 `json:"page,omitempty"`
Size int64 `json:"size,omitempty"` Size int64 `json:"size,omitempty"`
StartTime string `json:"start_time,omitempty"` StartTime string `json:"start_time,omitempty"`
EndTime string `json:"end_time,omitempty"` EndTime string `json:"end_time,omitempty"`
// 消费明细/任务查询
ProfitAcc string `json:"profit_acc,omitempty"` ProfitAcc string `json:"profit_acc,omitempty"`
WorkerAcc string `json:"worker_acc,omitempty"` WorkerAcc string `json:"worker_acc,omitempty"`
FeeCondition int `json:"fee_condition,omitempty"`
Fee int `json:"fee,omitempty"`
// 收支明细
TradeFlow int `json:"trade_flow,omitempty"` // int
TradeType int `json:"trade_type,omitempty"`
TradeChannel int `json:"trade_channel,omitempty"`
// 模型模糊查询
Keyword string `json:"keyword,omitempty"`
Category int `json:"category,omitempty"`
//显卡列表
Type int `json:"type,omitempty"`
}
type EnumType struct {
Id int `json:"id"`
Desc string `json:"desc"`
EnDesc string `json:"en_desc"`
} }
...@@ -32,6 +32,25 @@ func (m PayMethodType) String() string { ...@@ -32,6 +32,25 @@ func (m PayMethodType) String() string {
} }
} }
func (m PayMethodType) EnString() string {
switch m {
case WeixinPay:
return "WeChatPay"
case AliPay:
return "AliPay"
case UnionPay:
return "UnionPay"
case PayPal:
return "PayPal"
case ApplePay:
return "ApplePay"
case ManualPay:
return "Manual"
default:
return "_"
}
}
type TradeFlowType int type TradeFlowType int
const ( const (
...@@ -50,6 +69,17 @@ func (m TradeFlowType) String() string { ...@@ -50,6 +69,17 @@ func (m TradeFlowType) String() string {
} }
} }
func (m TradeFlowType) EnString() string {
switch m {
case Income:
return "Income"
case Expenditure:
return "Expenditure"
default:
return "unknown"
}
}
type TradeKind int type TradeKind int
const ( const (
...@@ -71,6 +101,19 @@ func (m TradeKind) String() string { ...@@ -71,6 +101,19 @@ func (m TradeKind) String() string {
} }
} }
func (m TradeKind) EnString() string {
switch m {
case Charge:
return "ReCharge"
case Spending:
return "Spending"
case Withdrawal:
return "Withdrawal"
default:
return "unknown"
}
}
type PayStatus int type PayStatus int
const ( const (
...@@ -79,6 +122,15 @@ const ( ...@@ -79,6 +122,15 @@ const (
SuccessPay SuccessPay
FinishCharge FinishCharge
Billed Billed
InitiateWithdrawal
PendingAudit
ApprovedAudit
RejectedAudit
PendingTransfer
SuccessTransfer
SuccessWithdrawal
FailurePay
FailureTransfer
) )
func (m PayStatus) String() string { func (m PayStatus) String() string {
...@@ -93,11 +145,64 @@ func (m PayStatus) String() string { ...@@ -93,11 +145,64 @@ func (m PayStatus) String() string {
return "充值完成" return "充值完成"
case Billed: case Billed:
return "已出账" return "已出账"
case InitiateWithdrawal:
return "申请提现"
case PendingAudit:
return "待审核"
case ApprovedAudit:
return "提现申请通过"
case RejectedAudit:
return "提现申请被拒绝"
case PendingTransfer:
return "待转账"
case SuccessTransfer:
return "转账成功"
case SuccessWithdrawal:
return "转账成功"
case FailurePay:
return "支付失败"
case FailureTransfer:
return "提现失败"
default: default:
return "未知" return "未知"
} }
} }
func (m PayStatus) EnString() string {
switch m {
case InitiatePay:
return "Initiate ReCharge"
case PendingPay:
return "Pending Pay"
case SuccessPay:
return "Success Pay"
case FinishCharge:
return "Success ReCharge"
case Billed:
return "Billed"
case InitiateWithdrawal:
return "Initiate Withdrawal"
case PendingAudit:
return "Pending Audit"
case ApprovedAudit:
return "Approved Audit"
case RejectedAudit:
return "Rejected Audit"
case PendingTransfer:
return "Pending Transfer"
case SuccessTransfer:
return "Success Transfer"
case SuccessWithdrawal:
return "Success Withdrawal"
case FailurePay:
return "Failure Pay"
case FailureTransfer:
return "Failure Withdrawal"
default:
return "unknown"
}
}
type ChargeRequest struct { type ChargeRequest struct {
Amount float64 `json:"amount"` Amount float64 `json:"amount"`
PaymentMethod PayMethodType `json:"pay_method"` PaymentMethod PayMethodType `json:"pay_method"`
...@@ -145,6 +250,7 @@ type ResponseFunds struct { ...@@ -145,6 +250,7 @@ type ResponseFunds struct {
Balance float64 `json:"balance";orm:"column(balance)"` // int64 Balance float64 `json:"balance";orm:"column(balance)"` // int64
Remark string `json:"remark";orm:"column(remark)"` // string Remark string `json:"remark";orm:"column(remark)"` // string
OrderId string `json:"order_id";orm:"column(order_id)"` // string OrderId string `json:"order_id";orm:"column(order_id)"` // string
UserName string `json:"username,omitempty"`
} }
type IncomeAndExpenseRsponse struct { type IncomeAndExpenseRsponse struct {
......
...@@ -3,6 +3,7 @@ package models ...@@ -3,6 +3,7 @@ package models
type JwtPayload struct { type JwtPayload struct {
Username string `json:"username"` Username string `json:"username"`
UserID int `json:"userID"` UserID int `json:"userID"`
Role int `json:"role"`
IssuedAt int64 `json:"iat"` IssuedAt int64 `json:"iat"`
ExpiresAt int64 `json:"exp"` ExpiresAt int64 `json:"exp"`
} }
...@@ -30,6 +30,30 @@ type ExampleType struct { ...@@ -30,6 +30,30 @@ type ExampleType struct {
} `json:"output"` } `json:"output"`
} }
type Category struct {
Id int `orm:"column(id);auto"`
Desc string `json:"desc";orm:"column(desc);size(20)"`
EnDesc string `json:"en_desc";orm:"column(en_desc);size(20)"`
CreatedTime time.Time `json:"created_time";orm:"column(created_time);type(datetime)"`
UpdatedTime time.Time `json:"updated_time";orm:"column(updated_time);type(datetime)"`
Deleted int `json:"deleted";orm:"column(deleted);size(1)"`
}
type Computility struct {
Id int `orm:"column(id);auto"`
Model string `json:"model";orm:"column(model)"`
Series string `json:"series";orm:"column(series)"`
Cuda string `json:"cuda";orm:"column(cuda)"`
VideoMemory int `json:"video_memory";orm:"column(video_memory)"`
Factor int `json:"factor";orm:"column(factor)"`
Computility int `json:"computility";orm:"column(computility)"`
Type int `json:"type";orm:"column(type)"`
Brand string `json:"brand";orm:"column(brand);"`
CreatedTime string `json:"created_time";orm:"column(created_time)"`
UpdatedTime string `json:"updated_time";orm:"column(updated_time)"`
Deleted int `json:"deleted";orm:"column(deleted)"`
}
type TaskType struct { type TaskType struct {
Id int `orm:"column(id);auto"` Id int `orm:"column(id);auto"`
Name string `json:"name";orm:"column(name);size(20)"` Name string `json:"name";orm:"column(name);size(20)"`
...@@ -57,6 +81,7 @@ type TaskType struct { ...@@ -57,6 +81,7 @@ type TaskType struct {
ApiDocContent string `json:"api_doc_content";orm:"column(api_doc_content)"` ApiDocContent string `json:"api_doc_content";orm:"column(api_doc_content)"`
Codes string `json:"codes";orm:"column(codes)"` Codes string `json:"codes";orm:"column(codes)"`
Tags string `json:"tags";orm:"column(tags)"` Tags string `json:"tags";orm:"column(tags)"`
Category int `json:"category";orm:"column(category)"`
CreatedTime time.Time `json:"created_time";orm:"column(created_time);type(datetime)"` CreatedTime time.Time `json:"created_time";orm:"column(created_time);type(datetime)"`
UpdatedTime time.Time `json:"updated_time";orm:"column(updated_time);type(datetime)"` UpdatedTime time.Time `json:"updated_time";orm:"column(updated_time);type(datetime)"`
Deleted int `json:"deleted";orm:"column(deleted);size(1)"` Deleted int `json:"deleted";orm:"column(deleted);size(1)"`
...@@ -91,6 +116,7 @@ type NewTaskType struct { ...@@ -91,6 +116,7 @@ type NewTaskType struct {
ApiDocContent string `json:"api_doc_content,omitempty";orm:"column(api_doc_content)"` ApiDocContent string `json:"api_doc_content,omitempty";orm:"column(api_doc_content)"`
Codes interface{} `json:"codes,omitempty";orm:"column(codes)"` Codes interface{} `json:"codes,omitempty";orm:"column(codes)"`
Tags []string `json:"tags,omitempty";orm:"column(tags)"` Tags []string `json:"tags,omitempty";orm:"column(tags)"`
Category int `json:"category";orm:"column(category)"`
CreatedTime time.Time `json:"created_time";orm:"column(created_time);type(datetime)"` CreatedTime time.Time `json:"created_time";orm:"column(created_time);type(datetime)"`
UpdatedTime time.Time `json:"updated_time";orm:"column(updated_time);type(datetime)"` UpdatedTime time.Time `json:"updated_time";orm:"column(updated_time);type(datetime)"`
Deleted int `json:"deleted";orm:"column(deleted);size(1)"` Deleted int `json:"deleted";orm:"column(deleted);size(1)"`
...@@ -110,6 +136,7 @@ type Model struct { ...@@ -110,6 +136,7 @@ type Model struct {
ApiDocContent string `json:"api_doc_content";orm:"column(api_doc_content)"` ApiDocContent string `json:"api_doc_content";orm:"column(api_doc_content)"`
Codes string `json:"codes";orm:"column(codes)"` Codes string `json:"codes";orm:"column(codes)"`
Tags string `json:"tags";orm:"column(tags)"` Tags string `json:"tags";orm:"column(tags)"`
Category int `json:"category";orm:"column(category)"`
} }
type ResonseModel struct { type ResonseModel struct {
...@@ -126,6 +153,7 @@ type ResonseModel struct { ...@@ -126,6 +153,7 @@ type ResonseModel struct {
ApiDocContent string `json:"api_doc_content,omitempty";orm:"column(api_doc_content)"` ApiDocContent string `json:"api_doc_content,omitempty";orm:"column(api_doc_content)"`
Codes interface{} `json:"codes";orm:"column(codes)"` Codes interface{} `json:"codes";orm:"column(codes)"`
Tags interface{} `json:"tags";orm:"column(tags)"` Tags interface{} `json:"tags";orm:"column(tags)"`
Category int `json:"category";orm:"column(category)"`
} }
type Bills struct { type Bills struct {
...@@ -187,17 +215,6 @@ type TaskHeat struct { ...@@ -187,17 +215,6 @@ type TaskHeat struct {
Kind int `json:"kind";orm:"column(kind)"` Kind int `json:"kind";orm:"column(kind)"`
} }
//type Tasks struct {
// //Key int `orm:"column(key);auto"`
// Id string `json:"id";orm:"column(id)"`
// Type string `json:"type";orm:"column(type)"`
// Uid string `json:"uid";orm:"column(uid)"`
// Fee int `json:"fee";orm:"column(fee)"`
// //ApiPath string `json:"api_path";orm:"column(api_path)"`
// Time time.Time `json:"time";orm:"column(time);type(datetime)"`
// InLen int `json:"in_len";orm:"column(in_len)"`
//}
type AddTaskType struct { type AddTaskType struct {
TaskTypeIn NewTaskType `json:"task_type"` TaskTypeIn NewTaskType `json:"task_type"`
Levels []UserLevelTaskType `json:"levels"` Levels []UserLevelTaskType `json:"levels"`
...@@ -247,3 +264,52 @@ func (m TaskKind) String() string { ...@@ -247,3 +264,52 @@ func (m TaskKind) String() string {
return "未知类型" return "未知类型"
} }
} }
func (m TaskKind) EnString() string {
switch m {
case SystemTask:
return "System Task"
case ComputeTask:
return "Compute Task"
case CustomTask:
return "Custom Task"
case StandardTask:
return "Standard Task"
default:
return "unknown Task Type"
}
}
type FeeConditionEnum int
const (
FeeAll FeeConditionEnum = iota + 1
FeeFree
FeeBased
)
func (m FeeConditionEnum) String() string {
switch m {
case FeeAll:
return "全部"
case FeeFree:
return "免费"
case FeeBased:
return "收费"
default:
return "未知类型"
}
}
func (m FeeConditionEnum) EnString() string {
switch m {
case FeeAll:
return "All"
case FeeFree:
return "Free"
case FeeBased:
return "Fee Based"
default:
return "unknown"
}
}
...@@ -54,6 +54,8 @@ type UserLevel struct { ...@@ -54,6 +54,8 @@ type UserLevel struct {
RateLimitMonth int `json:"rate_limit_month";orm:"column(rate_limit_month)"` RateLimitMonth int `json:"rate_limit_month";orm:"column(rate_limit_month)"`
RateLimitYear int64 `json:"rate_limit_year";orm:"column(rate_limit_year)"` RateLimitYear int64 `json:"rate_limit_year";orm:"column(rate_limit_year)"`
Level int `json:"level";orm:"column(level);size(1)"` Level int `json:"level";orm:"column(level);size(1)"`
Price int64 `json:"price";orm:"column(price)"`
DiscountedPrice int64 `json:"discounted_price";orm:"column(discounted_price)"`
CreatedTime time.Time `json:"created_time";orm:"column(created_time);type(datetime)"` CreatedTime time.Time `json:"created_time";orm:"column(created_time);type(datetime)"`
UpdatedTime time.Time `json:"updated_time";orm:"column(updated_time);type(datetime)"` UpdatedTime time.Time `json:"updated_time";orm:"column(updated_time);type(datetime)"`
Deleted int `json:"deleted";orm:"column(deleted);size(1)"` Deleted int `json:"deleted";orm:"column(deleted);size(1)"`
......
package models
import "time"
type Whitelist struct {
Id int `orm:"column(id);auto"`
ProfitAddress string `json:"profit_address";orm:"column(profit_address)"`
NodeNum int `json:"node_num";orm:"column(node_num)"`
CreatedTime time.Time `json:"created_time";orm:"column(created_time);type(datetime)"`
UpdatedTime time.Time `json:"updated_time";orm:"column(updated_time);type(datetime)"`
Deleted int `json:"deleted";orm:"column(deleted);size(1)"`
}
...@@ -13,4 +13,5 @@ func init() { ...@@ -13,4 +13,5 @@ func init() {
beego.AutoPrefix("api", &controllers.UserLevelController{}) beego.AutoPrefix("api", &controllers.UserLevelController{})
beego.AutoPrefix("api", &controllers.TaskController{}) beego.AutoPrefix("api", &controllers.TaskController{})
beego.AutoPrefix("api", &controllers.MonitorController{}) beego.AutoPrefix("api", &controllers.MonitorController{})
beego.AutoPrefix("api", &controllers.WhitelistController{})
} }
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