Commit 7c694525 authored by brent's avatar brent

modify client api

parent 583ff673
......@@ -395,7 +395,7 @@ func (server *AppController) UpdateJWT() {
return
}
jwttoken := models.JwtToken{Id: appRequest.Id}
err = mysql.GetMysqlInstace().Ormer.Read(&token)
err = mysql.GetMysqlInstace().Ormer.Read(&jwttoken)
if err != nil {
server.respond(models.BusinessFailed, "JWT-token 不存在")
return
......@@ -406,7 +406,7 @@ func (server *AppController) UpdateJWT() {
}
jwttoken.Name = appRequest.Name
_, err = mysql.GetMysqlInstace().Ormer.Update(&token)
_, err = mysql.GetMysqlInstace().Ormer.Update(&jwttoken)
if err != nil {
server.respond(models.BusinessFailed, err.Error())
return
......
This diff is collapsed.
......@@ -156,8 +156,8 @@ func (server *FavoriteController) Lists() {
queryQB, _ := orm.NewQueryBuilder("mysql")
countQB.Select("count(*) AS total").
From("favorite").
InnerJoin("task_type").On("favorite.task_type_id = task_type.id")
From("favorite")
//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",
"task_type.name").
......
......@@ -398,8 +398,8 @@ func (server *FundsController) IncomeAndExpense() {
}
var ids []int
for _, fund := range data {
id, _ := strconv.Atoi(fund.Uid)
ids = append(ids, id)
//id, _ := strconv.Atoi(fund.Uid)
ids = append(ids, fund.Uid)
}
var users []models.User
if token.Role == 1 || token.Role == 2 {
......@@ -408,34 +408,30 @@ func (server *FundsController) IncomeAndExpense() {
var responseTypes []models.ResponseFunds
for _, fund := range data {
amountInt, _ := strconv.ParseInt(fund.Amount, 10, 64)
//amountInt, _ := strconv.ParseInt(fund.Amount, 10, 64)
amountInt := fund.Amount
amount := amountInt / 1000000
balanceInt, _ := strconv.ParseInt(fund.Balance, 10, 64)
//balanceInt, _ := strconv.ParseInt(fund.Balance, 10, 64)
balanceInt := fund.Balance
balance := balanceInt / 1000000
tradeChannel, _ := strconv.Atoi(fund.TradeChannel)
status, _ := strconv.Atoi(fund.Status)
tradeFlow, _ := strconv.Atoi(fund.TradeFlow)
tradeType, _ := strconv.Atoi(fund.TradeType)
id, _ := strconv.Atoi(fund.Uid)
username := FindName(users, id)
username := FindName(users, fund.Uid)
responseType := models.ResponseFunds{
Id: fund.Id, // int64
Uid: fund.Uid, // int
Amount: float64(amount), // int64
TradeChannel: models.PayMethodType(tradeChannel).String(), // int
TradeChannelEn: models.PayMethodType(tradeChannel).EnString(),
Id: fund.Id, // int64
Uid: fund.Uid, // int
Amount: float64(amount), // int64
TradeChannel: models.PayMethodType(fund.TradeChannel).String(), // int
TradeChannelEn: models.PayMethodType(fund.TradeChannel).EnString(),
ChannelSerial: fund.ChannelSerial, // string
StatusDesc: models.PayStatus(status).String(),
StatusDescEn: models.PayStatus(status).EnString(), // int
Status: status,
TradeTime: fund.TradeTime, // string
TradeFlow: models.TradeFlowType(tradeFlow).String(), // int
TradeFlowEn: models.TradeFlowType(tradeFlow).EnString(),
TradeType: models.TradeKind(tradeType).String(), // int
TradeTypeEn: models.TradeKind(tradeType).EnString(),
StatusDesc: models.PayStatus(fund.Status).String(),
StatusDescEn: models.PayStatus(fund.Status).EnString(), // int
Status: fund.Status,
TradeTime: fund.TradeTime, // string
TradeFlow: models.TradeFlowType(fund.TradeFlow).String(), // int
TradeFlowEn: models.TradeFlowType(fund.TradeFlow).EnString(),
TradeType: models.TradeKind(fund.TradeType).String(), // int
TradeTypeEn: models.TradeKind(fund.TradeType).EnString(),
Balance: float64(balance), // int64
Remark: fund.Remark, // string
OrderId: fund.OrderId,
......
......@@ -218,7 +218,7 @@ func (server *TaskController) BillDetails() {
}
}
balance, _ := odysseus.GetUserBalance(int64(token.UserID))
//balance, _ := odysseus.GetUserBalance(int64(token.UserID))
reTask := models.Bills{
Id: task.Id,
......@@ -228,7 +228,6 @@ func (server *TaskController) BillDetails() {
Result: task.Result,
ApiPath: apiPath,
Desc: desc,
Balance: balance,
}
responseTasks = append(responseTasks, reTask)
}
......
......@@ -445,45 +445,45 @@ func regisgerUser(user models.User) (*models.User, error) {
user.Level = 0
user.Role = 4
_, err = mysql.GetMysqlInstace().Ormer.Insert(&user)
id, err := mysql.GetMysqlInstace().Ormer.Insert(&user)
if err != nil {
return nil, errors.New("create user failed")
}
checkUser := &models.User{Username: user.Username}
err = mysql.GetMysqlInstace().Ormer.Read(checkUser, "username")
if err != nil {
return nil, errors.New("create user failed")
}
checkUser.CustomId = strconv.Itoa(checkUser.Id)
//checkUser := &models.User{Username: user.Username}
//err = mysql.GetMysqlInstace().Ormer.Read(checkUser, "username")
//if err != nil {
// return nil, errors.New("create user failed")
//}
user.CustomId = strconv.Itoa(int(id))
data, err := kong.CreateUser(checkUser)
data, err := kong.CreateUser(&user)
if err != nil {
mysql.GetMysqlInstace().Ormer.Delete(checkUser)
mysql.GetMysqlInstace().Ormer.Delete(&user)
return nil, err
}
if data.Id == "" {
mysql.GetMysqlInstace().Ormer.Delete(checkUser)
mysql.GetMysqlInstace().Ormer.Delete(&user)
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")
if err != nil {
logs.Debug("Recharge 用户等级查找失败")
} else {
plugin, err := kong.SetRateLimit(checkUser, checkUserLevel, "")
plugin, err := kong.SetRateLimit(&user, checkUserLevel, "")
if err == nil {
checkUser.RateLimitPluginId = plugin.Id
user.RateLimitPluginId = plugin.Id
}
}
mysql.GetMysqlInstace().Ormer.Update(checkUser)
mysql.GetMysqlInstace().Ormer.Update(&user)
createApiKey(checkUser)
createJWTToken(checkUser)
createApiKey(&user)
createJWTToken(&user)
return checkUser, nil
return &user, nil
}
func createApiKey(checkUser *models.User) {
......
......@@ -2,6 +2,7 @@ package cronjob
import (
"ai_developer_admin/libs/mysql"
"ai_developer_admin/libs/odysseus"
"ai_developer_admin/libs/postgres"
"ai_developer_admin/libs/redis"
"ai_developer_admin/libs/registry"
......@@ -22,6 +23,7 @@ import (
var loopCronTask = cron.New(cron.WithSeconds())
var debitTask = cron.New(cron.WithSeconds())
var revenueTask = cron.New(cron.WithSeconds())
var registryTask = cron.New(cron.WithSeconds())
var HeatKey = "task:heat"
......@@ -190,8 +192,8 @@ func startDebit() {
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, dayTime.Location())
startTime := time.Date(dayTime.Year(), dayTime.Month(), dayTime.Day(), 0, 0, 0, 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, time.UTC)
start := fmt.Sprintf(startTime.Format(format))
end := fmt.Sprintf(endTime.Format(format))
......@@ -256,6 +258,94 @@ func startDebit() {
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() {
spec := "@every 1m"
registryTask.AddFunc(spec, func() {
......
......@@ -61,6 +61,7 @@ func init() {
panic(err)
}
createFundTable()
createRevenueTable()
}
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) {
logs.Debug("QueryBills = ", sql)
qs := ormpost.Raw(sql, args)
......@@ -168,6 +178,13 @@ func CountFunds(sql string) ([]models.IncomeAndExpenseRsponse, error) {
//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) {
logs.Debug("QueryBills = ", sql)
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 {
}
type Funds struct {
Id string `json:"id";orm:"column(id)"` // int64
Uid string `json:"uid";orm:"column(uid)"` // int
Amount string `json:"amount";orm:"column(amount)"` // int64
TradeChannel string `json:"trade_channel";orm:"column(trade_channel)"` // int
Id int64 `json:"id";orm:"column(id)"` // int64
Uid int `json:"uid";orm:"column(uid)"` // int
Amount int64 `json:"amount";orm:"column(amount)"` // int64
TradeChannel int `json:"trade_channel";orm:"column(trade_channel)"` // int
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
TradeFlow string `json:"trade_flow";orm:"column(trade_flow)"` // int
TradeType string `json:"trade_type";orm:"column(trade_type)"` // int
Balance string `json:"balance";orm:"column(balance)"` // int64
TradeFlow int `json:"trade_flow";orm:"column(trade_flow)"` // int
TradeType int `json:"trade_type";orm:"column(trade_type)"` // int
Balance int64 `json:"balance";orm:"column(balance)"` // int64
Remark string `json:"remark";orm:"column(remark)"` // string
OrderId string `json:"order_id";orm:"column(order_id)"` // string
}
type ResponseFunds struct {
Id string `json:"id";orm:"column(id)"` // int64
Uid string `json:"uid";orm:"column(uid)"` // int
Id int64 `json:"id";orm:"column(id)"` // int64
Uid int `json:"uid";orm:"column(uid)"` // int
Amount float64 `json:"amount";orm:"column(amount)"` // int64
TradeChannel string `json:"trade_channel";orm:"column(trade_channel)"`
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