Commit 7c694525 authored by brent's avatar brent

modify client api

parent 583ff673
...@@ -395,7 +395,7 @@ func (server *AppController) UpdateJWT() { ...@@ -395,7 +395,7 @@ func (server *AppController) UpdateJWT() {
return return
} }
jwttoken := models.JwtToken{Id: appRequest.Id} jwttoken := models.JwtToken{Id: appRequest.Id}
err = mysql.GetMysqlInstace().Ormer.Read(&token) err = mysql.GetMysqlInstace().Ormer.Read(&jwttoken)
if err != nil { if err != nil {
server.respond(models.BusinessFailed, "JWT-token 不存在") server.respond(models.BusinessFailed, "JWT-token 不存在")
return return
...@@ -406,7 +406,7 @@ func (server *AppController) UpdateJWT() { ...@@ -406,7 +406,7 @@ func (server *AppController) UpdateJWT() {
} }
jwttoken.Name = appRequest.Name jwttoken.Name = appRequest.Name
_, err = mysql.GetMysqlInstace().Ormer.Update(&token) _, err = mysql.GetMysqlInstace().Ormer.Update(&jwttoken)
if err != nil { if err != nil {
server.respond(models.BusinessFailed, err.Error()) server.respond(models.BusinessFailed, err.Error())
return return
......
This diff is collapsed.
...@@ -156,8 +156,8 @@ func (server *FavoriteController) Lists() { ...@@ -156,8 +156,8 @@ func (server *FavoriteController) Lists() {
queryQB, _ := orm.NewQueryBuilder("mysql") queryQB, _ := orm.NewQueryBuilder("mysql")
countQB.Select("count(*) AS total"). countQB.Select("count(*) AS total").
From("favorite"). From("favorite")
InnerJoin("task_type").On("favorite.task_type_id = task_type.id") //InnerJoin("task_type").On("favorite.task_type_id = task_type.id")
queryQB.Select("favorite.id", "favorite.task_type_id", "favorite.user_id", "favorite.created_time", queryQB.Select("favorite.id", "favorite.task_type_id", "favorite.user_id", "favorite.created_time",
"task_type.name"). "task_type.name").
......
...@@ -398,8 +398,8 @@ func (server *FundsController) IncomeAndExpense() { ...@@ -398,8 +398,8 @@ func (server *FundsController) IncomeAndExpense() {
} }
var ids []int var ids []int
for _, fund := range data { for _, fund := range data {
id, _ := strconv.Atoi(fund.Uid) //id, _ := strconv.Atoi(fund.Uid)
ids = append(ids, id) ids = append(ids, fund.Uid)
} }
var users []models.User var users []models.User
if token.Role == 1 || token.Role == 2 { if token.Role == 1 || token.Role == 2 {
...@@ -408,34 +408,30 @@ func (server *FundsController) IncomeAndExpense() { ...@@ -408,34 +408,30 @@ func (server *FundsController) IncomeAndExpense() {
var responseTypes []models.ResponseFunds var responseTypes []models.ResponseFunds
for _, fund := range data { for _, fund := range data {
amountInt, _ := strconv.ParseInt(fund.Amount, 10, 64) //amountInt, _ := strconv.ParseInt(fund.Amount, 10, 64)
amountInt := fund.Amount
amount := amountInt / 1000000 amount := amountInt / 1000000
balanceInt, _ := strconv.ParseInt(fund.Balance, 10, 64) //balanceInt, _ := strconv.ParseInt(fund.Balance, 10, 64)
balanceInt := fund.Balance
balance := balanceInt / 1000000 balance := balanceInt / 1000000
tradeChannel, _ := strconv.Atoi(fund.TradeChannel) username := FindName(users, fund.Uid)
status, _ := strconv.Atoi(fund.Status)
tradeFlow, _ := strconv.Atoi(fund.TradeFlow)
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
Amount: float64(amount), // int64 Amount: float64(amount), // int64
TradeChannel: models.PayMethodType(tradeChannel).String(), // int TradeChannel: models.PayMethodType(fund.TradeChannel).String(), // int
TradeChannelEn: models.PayMethodType(tradeChannel).EnString(), TradeChannelEn: models.PayMethodType(fund.TradeChannel).EnString(),
ChannelSerial: fund.ChannelSerial, // string ChannelSerial: fund.ChannelSerial, // string
StatusDesc: models.PayStatus(status).String(), StatusDesc: models.PayStatus(fund.Status).String(),
StatusDescEn: models.PayStatus(status).EnString(), // int StatusDescEn: models.PayStatus(fund.Status).EnString(), // int
Status: status, Status: fund.Status,
TradeTime: fund.TradeTime, // string TradeTime: fund.TradeTime, // string
TradeFlow: models.TradeFlowType(tradeFlow).String(), // int TradeFlow: models.TradeFlowType(fund.TradeFlow).String(), // int
TradeFlowEn: models.TradeFlowType(tradeFlow).EnString(), TradeFlowEn: models.TradeFlowType(fund.TradeFlow).EnString(),
TradeType: models.TradeKind(tradeType).String(), // int TradeType: models.TradeKind(fund.TradeType).String(), // int
TradeTypeEn: models.TradeKind(tradeType).EnString(), TradeTypeEn: models.TradeKind(fund.TradeType).EnString(),
Balance: float64(balance), // int64 Balance: float64(balance), // int64
Remark: fund.Remark, // string Remark: fund.Remark, // string
OrderId: fund.OrderId, OrderId: fund.OrderId,
......
...@@ -218,7 +218,7 @@ func (server *TaskController) BillDetails() { ...@@ -218,7 +218,7 @@ func (server *TaskController) BillDetails() {
} }
} }
balance, _ := odysseus.GetUserBalance(int64(token.UserID)) //balance, _ := odysseus.GetUserBalance(int64(token.UserID))
reTask := models.Bills{ reTask := models.Bills{
Id: task.Id, Id: task.Id,
...@@ -228,7 +228,6 @@ func (server *TaskController) BillDetails() { ...@@ -228,7 +228,6 @@ func (server *TaskController) BillDetails() {
Result: task.Result, Result: task.Result,
ApiPath: apiPath, ApiPath: apiPath,
Desc: desc, Desc: desc,
Balance: balance,
} }
responseTasks = append(responseTasks, reTask) responseTasks = append(responseTasks, reTask)
} }
......
...@@ -445,45 +445,45 @@ func regisgerUser(user models.User) (*models.User, error) { ...@@ -445,45 +445,45 @@ func regisgerUser(user models.User) (*models.User, error) {
user.Level = 0 user.Level = 0
user.Role = 4 user.Role = 4
_, err = mysql.GetMysqlInstace().Ormer.Insert(&user) id, err := mysql.GetMysqlInstace().Ormer.Insert(&user)
if err != nil { if err != nil {
return nil, errors.New("create user failed") return nil, errors.New("create user failed")
} }
checkUser := &models.User{Username: user.Username} //checkUser := &models.User{Username: user.Username}
err = mysql.GetMysqlInstace().Ormer.Read(checkUser, "username") //err = mysql.GetMysqlInstace().Ormer.Read(checkUser, "username")
if err != nil { //if err != nil {
return nil, errors.New("create user failed") // return nil, errors.New("create user failed")
} //}
checkUser.CustomId = strconv.Itoa(checkUser.Id) user.CustomId = strconv.Itoa(int(id))
data, err := kong.CreateUser(checkUser) data, err := kong.CreateUser(&user)
if err != nil { if err != nil {
mysql.GetMysqlInstace().Ormer.Delete(checkUser) mysql.GetMysqlInstace().Ormer.Delete(&user)
return nil, err return nil, err
} }
if data.Id == "" { if data.Id == "" {
mysql.GetMysqlInstace().Ormer.Delete(checkUser) mysql.GetMysqlInstace().Ormer.Delete(&user)
return nil, errors.New(data.Message) return nil, errors.New(data.Message)
} }
checkUserLevel := &models.UserLevel{Level: checkUser.Level} checkUserLevel := &models.UserLevel{Level: user.Level}
err = mysql.GetMysqlInstace().Ormer.Read(checkUserLevel, "level") err = mysql.GetMysqlInstace().Ormer.Read(checkUserLevel, "level")
if err != nil { if err != nil {
logs.Debug("Recharge 用户等级查找失败") logs.Debug("Recharge 用户等级查找失败")
} else { } else {
plugin, err := kong.SetRateLimit(checkUser, checkUserLevel, "") plugin, err := kong.SetRateLimit(&user, checkUserLevel, "")
if err == nil { if err == nil {
checkUser.RateLimitPluginId = plugin.Id user.RateLimitPluginId = plugin.Id
} }
} }
mysql.GetMysqlInstace().Ormer.Update(checkUser) mysql.GetMysqlInstace().Ormer.Update(&user)
createApiKey(checkUser) createApiKey(&user)
createJWTToken(checkUser) createJWTToken(&user)
return checkUser, nil return &user, nil
} }
func createApiKey(checkUser *models.User) { func createApiKey(checkUser *models.User) {
......
...@@ -2,6 +2,7 @@ package cronjob ...@@ -2,6 +2,7 @@ package cronjob
import ( import (
"ai_developer_admin/libs/mysql" "ai_developer_admin/libs/mysql"
"ai_developer_admin/libs/odysseus"
"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"
...@@ -22,6 +23,7 @@ import ( ...@@ -22,6 +23,7 @@ import (
var loopCronTask = cron.New(cron.WithSeconds()) var loopCronTask = cron.New(cron.WithSeconds())
var debitTask = cron.New(cron.WithSeconds()) var debitTask = cron.New(cron.WithSeconds())
var revenueTask = cron.New(cron.WithSeconds())
var registryTask = cron.New(cron.WithSeconds()) var registryTask = cron.New(cron.WithSeconds())
var HeatKey = "task:heat" var HeatKey = "task:heat"
...@@ -190,8 +192,8 @@ func startDebit() { ...@@ -190,8 +192,8 @@ func startDebit() {
temp := fmt.Sprintf("-%dh", 2) temp := fmt.Sprintf("-%dh", 2)
m, _ := time.ParseDuration(temp) m, _ := time.ParseDuration(temp)
dayTime := currentTime.Add(m) dayTime := currentTime.Add(m)
endTime := time.Date(dayTime.Year(), dayTime.Month(), dayTime.Day(), 23, 59, 59, 0, dayTime.Location()) endTime := time.Date(dayTime.Year(), dayTime.Month(), dayTime.Day(), 23, 59, 59, 0, time.UTC)
startTime := time.Date(dayTime.Year(), dayTime.Month(), dayTime.Day(), 0, 0, 0, 0, dayTime.Location()) startTime := time.Date(dayTime.Year(), dayTime.Month(), dayTime.Day(), 0, 0, 0, 0, time.UTC)
start := fmt.Sprintf(startTime.Format(format)) start := fmt.Sprintf(startTime.Format(format))
end := fmt.Sprintf(endTime.Format(format)) end := fmt.Sprintf(endTime.Format(format))
...@@ -256,6 +258,94 @@ func startDebit() { ...@@ -256,6 +258,94 @@ func startDebit() {
debitTask.Start() debitTask.Start()
} }
func startRevenue() {
logs.Debug("startRevenue")
//spec := "*/50 */23 * * * ?" //"@every 1h"
//spec := "01 01 00 * * ?"
spec, _ := beego.AppConfig.String("debitTime")
//spec := "@every 1m"
dbhost, _ := beego.AppConfig.String("postgreshost")
dbport, _ := beego.AppConfig.Int("senderport")
questAddr := fmt.Sprintf("%s:%d", dbhost, dbport)
revenueTask.AddFunc(spec, func() {
logs.Debug("startRevenue revenueTask")
ctx := context.TODO()
addrOpt := qdb.WithAddress(questAddr)
sender, err := qdb.NewLineSender(ctx, addrOpt)
if err != nil {
logs.Debug("startRevenue NewLineSender = %s", err.Error())
return
}
defer sender.Close()
// Make sure to close the sender on exit to release resources.
currentTime := time.Now()
temp := fmt.Sprintf("-%dh", 2)
m, _ := time.ParseDuration(temp)
dayTime := currentTime.Add(m)
endTime := time.Date(dayTime.Year(), dayTime.Month(), dayTime.Day(), 23, 59, 59, 0, time.UTC)
startTime := time.Date(dayTime.Year(), dayTime.Month(), dayTime.Day(), 0, 0, 0, 0, time.UTC)
start := fmt.Sprintf(startTime.Format(format))
end := fmt.Sprintf(endTime.Format(format))
logs.Debug("startRevenue before sql = %s", dayTime)
sql := fmt.Sprintf("SELECT id,time,type,workload,profit_acc,worker_acc FROM bills WHERE uid != '0' and time >= '%s' and time <= '%s';", start, end)
data, err := postgres.QueryBills(sql)
if err != nil {
logs.Debug("startRevenue postgres CountFunds = %s", err.Error())
return
}
if data == nil {
logs.Debug("startRevenue data = nil")
return
}
for _, bill := range data {
workload, _ := strconv.Atoi(bill.Workload)
//nanoseconds := int64(uint64(dayTime.UnixNano()))
//seconds := nanoseconds / 1e9
taskId, err := strconv.Atoi(bill.Type)
typeDesc := ""
baseModel := ""
if err == nil {
taskType, err1 := odysseus.GetTaskType(int64(taskId))
if err1 == nil {
typeDesc = models.ModelType(taskType.Type).String()
baseModel = taskType.BaseModel
}
}
err = sender.Table("revenues").
Symbol("id", bill.Id).
Symbol("type", typeDesc).
Symbol("base_model", baseModel).
Symbol("profit_acc", bill.ProfitAcc).
Symbol("worker_acc", bill.WorkerAcc).
Int64Column("workload", int64(workload)).
Int64Column("income", int64(0)).
TimestampColumn("time", bill.Time).
AtNow(ctx)
if err != nil {
logs.Debug("startRevenue sender = %s,id = %d", err.Error(), bill.Id)
}
//break
}
err = sender.Flush(ctx)
if err != nil {
logs.Debug("startRevenue Flush = %s", err.Error())
}
})
debitTask.Start()
}
func startRegistBackend() { func startRegistBackend() {
spec := "@every 1m" spec := "@every 1m"
registryTask.AddFunc(spec, func() { registryTask.AddFunc(spec, func() {
......
...@@ -61,6 +61,7 @@ func init() { ...@@ -61,6 +61,7 @@ func init() {
panic(err) panic(err)
} }
createFundTable() createFundTable()
createRevenueTable()
} }
func createFundTable() { func createFundTable() {
...@@ -72,6 +73,15 @@ func createFundTable() { ...@@ -72,6 +73,15 @@ func createFundTable() {
} }
} }
func createRevenueTable() {
sql := "CREATE TABLE IF NOT EXISTS 'revenues' (\nid LONG,\ntime TIMESTAMP, \ntype SYMBOL CAPACITY 128 CACHE INDEX CAPACITY 8192,\nbase_model SYMBOL CAPACITY 128 CACHE INDEX CAPACITY 8192,\nprofit_acc SYMBOL CAPACITY 128 CACHE INDEX CAPACITY 8192, \nworker_acc SYMBOL CAPACITY 128 CACHE INDEX CAPACITY 8192, \nworkload int,\nincome LONG) timestamp (time) PARTITION BY DAY WAL;"
qs := ormpost.Raw(sql)
_, err := qs.Exec()
if err != nil {
logs.Debug("createRevenueTable", err.Error())
}
}
func QueryTset(sql string, args ...interface{}) ([]models.Bills, error) { func QueryTset(sql string, args ...interface{}) ([]models.Bills, error) {
logs.Debug("QueryBills = ", sql) logs.Debug("QueryBills = ", sql)
qs := ormpost.Raw(sql, args) qs := ormpost.Raw(sql, args)
...@@ -168,6 +178,13 @@ func CountFunds(sql string) ([]models.IncomeAndExpenseRsponse, error) { ...@@ -168,6 +178,13 @@ func CountFunds(sql string) ([]models.IncomeAndExpenseRsponse, error) {
//return containers, nil //return containers, nil
} }
func QueryRevenues(sql string) ([]models.Revenues, error) {
logs.Debug("QueryFunds = ", sql)
var containers []models.Revenues
_, err := ormpost.Raw(sql).QueryRows(&containers)
return containers, err
}
func QueryTotal(sql string) (int64, error) { func QueryTotal(sql string) (int64, error) {
logs.Debug("QueryBills = ", sql) logs.Debug("QueryBills = ", sql)
var count int64 var count int64
......
package models
import "time"
type Revenues struct {
Id string `json:"id";orm:"column(id)"`
Time time.Time `json:"time";orm:"column(time);type(datetime)"`
Type string `json:"type";orm:"column(type)"`
BaseModel string `json:"base_model";orm:"column(base_model)"`
ProfitAcc string `json:"profit_acc";orm:"column(profit_acc)"`
WorkerAcc string `json:"worker_acc";orm:"column(worker_acc)"`
Workload int `json:"workload";orm:"column(workload)"`
Income int64 `json:"income";orm:"column(income)"`
}
...@@ -223,23 +223,23 @@ type ChargeRecord struct { ...@@ -223,23 +223,23 @@ type ChargeRecord struct {
} }
type Funds struct { type Funds struct {
Id string `json:"id";orm:"column(id)"` // int64 Id int64 `json:"id";orm:"column(id)"` // int64
Uid string `json:"uid";orm:"column(uid)"` // int Uid int `json:"uid";orm:"column(uid)"` // int
Amount string `json:"amount";orm:"column(amount)"` // int64 Amount int64 `json:"amount";orm:"column(amount)"` // int64
TradeChannel string `json:"trade_channel";orm:"column(trade_channel)"` // int TradeChannel int `json:"trade_channel";orm:"column(trade_channel)"` // int
ChannelSerial string `json:"channel_serial";orm:"column(channel_serial)"` // string ChannelSerial string `json:"channel_serial";orm:"column(channel_serial)"` // string
Status string `json:"status";orm:"column(status);size(1)"` // int Status int `json:"status";orm:"column(status);size(1)"` // int
TradeTime string `json:"trade_time";orm:"column(trade_time);type(datetime)"` // string TradeTime string `json:"trade_time";orm:"column(trade_time);type(datetime)"` // string
TradeFlow string `json:"trade_flow";orm:"column(trade_flow)"` // int TradeFlow int `json:"trade_flow";orm:"column(trade_flow)"` // int
TradeType string `json:"trade_type";orm:"column(trade_type)"` // int TradeType int `json:"trade_type";orm:"column(trade_type)"` // int
Balance string `json:"balance";orm:"column(balance)"` // int64 Balance int64 `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
} }
type ResponseFunds struct { type ResponseFunds struct {
Id string `json:"id";orm:"column(id)"` // int64 Id int64 `json:"id";orm:"column(id)"` // int64
Uid string `json:"uid";orm:"column(uid)"` // int Uid int `json:"uid";orm:"column(uid)"` // int
Amount float64 `json:"amount";orm:"column(amount)"` // int64 Amount float64 `json:"amount";orm:"column(amount)"` // int64
TradeChannel string `json:"trade_channel";orm:"column(trade_channel)"` TradeChannel string `json:"trade_channel";orm:"column(trade_channel)"`
TradeChannelEn string `json:"trade_channel_en";orm:"column(trade_channel)"` // int TradeChannelEn string `json:"trade_channel_en";orm:"column(trade_channel)"` // int
......
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