Commit 606fb2eb authored by vicotor's avatar vicotor

add db model

parent 523b7123
......@@ -3,7 +3,9 @@ module github.com/odysseus/payment
go 1.18
require (
github.com/gomodule/redigo v1.8.9
github.com/astaxie/beego v1.12.3
github.com/go-sql-driver/mysql v1.7.1
github.com/gomodule/redigo v2.0.0+incompatible
github.com/google/uuid v1.5.0
github.com/redis/go-redis/v9 v9.4.0
github.com/stretchr/testify v1.7.0
......@@ -11,8 +13,10 @@ require (
require (
github.com/cespare/xxhash/v2 v2.2.0 // indirect
github.com/davecgh/go-spew v1.1.0 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
github.com/hashicorp/golang-lru v0.5.4 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c // indirect
)
This diff is collapsed.
package model
import (
"github.com/astaxie/beego/orm"
"time"
)
type TaskType struct {
ID int64 `gorm:"column:id" db:"id" json:"id" form:"id"` // 任务类型id
Desc string `gorm:"column:desc" db:"desc" json:"desc" form:"desc"` // 任务类型描述
Price int64 `gorm:"column:price" db:"price" json:"price" form:"price"` // 该任务类型的费用
Complexity int64 `gorm:"column:complexity" db:"complexity" json:"complexity" form:"complexity"`
HardwareRequire string `gorm:"column:hardware_require" db:"hardware_require" json:"hardware_require" form:"hardware_require"`
ImageId string `gorm:"column:image_id" db:"image_id" json:"image_id" form:"image_id"`
ImageUrl string `gorm:"column:image_url" db:"image_url" json:"image_url" form:"image_url"`
Cmd string `gorm:"column:cmd" db:"cmd" json:"cmd" form:"cmd"`
Workload int64 `gorm:"column:workload" db:"workload" json:"workload" form:"workload"`
ApiPath string `gorm:"column:api_path" db:"api_path" json:"api_path" form:"api_path"`
CreatedTime time.Time `gorm:"column:created_time" db:"created_time" json:"created_time" form:"created_time"` // 创建时间
UpdatedTime time.Time `gorm:"column:updated_time" db:"updated_time" json:"updated_time" form:"updated_time"` // 更新时间
Deleted int64 `gorm:"column:deleted" db:"deleted" json:"deleted" form:"deleted"` // 逻辑删除
}
func (TaskType) TableName() string {
return "task_type"
}
type TaskTypeRepository interface {
Create(taskType *TaskType) error
GetById(id int64) (*TaskType, error)
GetListByFilter(filters ...interface{}) []*TaskType
Update(taskType *TaskType) error
Delete(taskType *TaskType) error
}
type taskTypeRepositoryImpl struct {
o orm.Ormer
}
func NewTaskTypeRepository() TaskTypeRepository {
o := orm.NewOrm()
return &taskTypeRepositoryImpl{o}
}
func (repo *taskTypeRepositoryImpl) Create(taskType *TaskType) error {
_, err := repo.o.Insert(taskType)
return err
}
func (repo *taskTypeRepositoryImpl) GetListByFilter(filters ...interface{}) []*TaskType {
list := make([]*TaskType, 0)
query := orm.NewOrm().QueryTable(new(TaskType).TableName())
if len(filters) > 0 {
l := len(filters)
for k := 0; k < l; k += 2 {
query = query.Filter(filters[k].(string), filters[k+1])
}
}
query.OrderBy("-id").All(&list)
return list
}
func (repo *taskTypeRepositoryImpl) GetById(id int64) (*TaskType, error) {
taskType := TaskType{ID: id}
err := repo.o.Read(&taskType)
if err != nil {
return nil, err
}
return &taskType, nil
}
func (repo *taskTypeRepositoryImpl) Update(taskType *TaskType) error {
_, err := repo.o.Update(taskType)
return err
}
func (repo *taskTypeRepositoryImpl) Delete(taskType *TaskType) error {
_, err := repo.o.Delete(taskType)
return err
}
package model
import (
"github.com/astaxie/beego/orm"
"time"
)
type User struct {
ID int64 `gorm:"column:id" db:"id" json:"id" form:"id"` // 用户id
Name string `gorm:"column:name" db:"name" json:"name" form:"name"` // 开发者名称
Phone string `gorm:"column:phone" db:"phone" json:"phone" form:"phone"` // 电话
Mail string `gorm:"column:mail" db:"mail" json:"mail" form:"mail"` // 邮箱
ChainAccount string `gorm:"column:chain_account" db:"chain_account" json:"chain_account" form:"chain_account"` // 区块链账号
Type int64 `gorm:"column:type" db:"type" json:"type" form:"type"` // 用户类型:\n1=自然人\n2=企业
IsAuthed int64 `gorm:"column:is_authed" db:"is_authed" json:"is_authed" form:"is_authed"` // 是否实名
RegisterFrom int64 `gorm:"column:register_from" db:"register_from" json:"register_from" form:"register_from"` // 注册来源,三方账号
RegisterFromDesc string `gorm:"column:register_from_desc" db:"register_from_desc" json:"register_from_desc" form:"register_from_desc"` // 三方账户描述
Username string `gorm:"column:username" db:"username" json:"username" form:"username"` // 开发者平台用户名
Balance int64 `gorm:"column:balance" db:"balance" json:"balance" form:"balance"` // 用户账户余额
LevelId int64 `gorm:"column:level_id" db:"level_id" json:"level_id" form:"level_id"` // 信用等级,决定免费调用额度
CustomId string `gorm:"column:custom_id" db:"custom_id" json:"custom_id" form:"custom_id"` // 自定义kong的id
VerifierId string `gorm:"column:verifier_id" db:"verifier_id" json:"verifier_id" form:"verifier_id"`
ProfileImage string `gorm:"column:profile_image" db:"profile_image" json:"profile_image" form:"profile_image"`
CreatedTime time.Time `gorm:"column:created_time" db:"created_time" json:"created_time" form:"created_time"` // 创建时间
UpdatedTime time.Time `gorm:"column:updated_time" db:"updated_time" json:"updated_time" form:"updated_time"` // 更新时间
Deleted int64 `gorm:"column:deleted" db:"deleted" json:"deleted" form:"deleted"` // 逻辑删除
}
func (User) TableName() string {
return "user"
}
type UserRepository interface {
Create(user *User) error
GetById(uid int64) (*User, error)
GetListByFilter(filters ...interface{}) []*User
Update(user *User) error
Delete(user *User) error
}
type userRepositoryImpl struct {
o orm.Ormer
}
func NewUserRepository() UserRepository {
o := orm.NewOrm()
return &userRepositoryImpl{o}
}
func (repo *userRepositoryImpl) Create(user *User) error {
_, err := repo.o.Insert(user)
return err
}
func (repo *userRepositoryImpl) GetListByFilter(filters ...interface{}) []*User {
list := make([]*User, 0)
query := orm.NewOrm().QueryTable(new(User).TableName())
if len(filters) > 0 {
l := len(filters)
for k := 0; k < l; k += 2 {
query = query.Filter(filters[k].(string), filters[k+1])
}
}
query.OrderBy("-id").All(&list)
return list
}
//// return balance, charge, credits and error.
//func (repo *userRepositoryImpl) GetPayInfoById(uid int64) (int64, int64, int64, error) {
//
//}
func (repo *userRepositoryImpl) GetById(uid int64) (*User, error) {
user := User{ID: uid}
err := repo.o.Read(&user)
if err != nil {
return nil, err
}
return &user, nil
}
func (repo *userRepositoryImpl) Update(user *User) error {
_, err := repo.o.Update(user)
return err
}
func (repo *userRepositoryImpl) Delete(user *User) error {
_, err := repo.o.Delete(user)
return err
}
package model
import (
"github.com/astaxie/beego/orm"
"time"
)
type UserLevel struct {
ID int64 `gorm:"column:id" db:"id" json:"id" form:"id"` // 信用等级id
Level int64 `gorm:"column:level" db:"level" json:"level" form:"level"` // 等级
Desc string `gorm:"column:desc" db:"desc" json:"desc" form:"desc"` // 描述
FreeQuota int64 `gorm:"column:free_quota" db:"free_quota" json:"free_quota" form:"free_quota"` // 该等级免费额度
FreeCallCountDay int64 `gorm:"column:free_call_count_day" db:"free_call_count_day" json:"free_call_count_day" form:"free_call_count_day"` // 免费调用次数
FreeCallCountMonth int64 `gorm:"column:free_call_count_month" db:"free_call_count_month" json:"free_call_count_month" form:"free_call_count_month"`
FreeCallCountYear int64 `gorm:"column:free_call_count_year" db:"free_call_count_year" json:"free_call_count_year" form:"free_call_count_year"`
FreeCallCountTotal int64 `gorm:"column:free_call_count_total" db:"free_call_count_total" json:"free_call_count_total" form:"free_call_count_total"`
RateLimitSecond int64 `gorm:"column:rate_limit_second" db:"rate_limit_second" json:"rate_limit_second" form:"rate_limit_second"` // 该等级调用频率
RateLimitMinute int64 `gorm:"column:rate_limit_minute" db:"rate_limit_minute" json:"rate_limit_minute" form:"rate_limit_minute"`
RateLimitHour int64 `gorm:"column:rate_limit_hour" db:"rate_limit_hour" json:"rate_limit_hour" form:"rate_limit_hour"`
RateLimitDay int64 `gorm:"column:rate_limit_day" db:"rate_limit_day" json:"rate_limit_day" form:"rate_limit_day"`
RateLimitMonth int64 `gorm:"column:rate_limit_month" db:"rate_limit_month" json:"rate_limit_month" form:"rate_limit_month"`
RateLimitYear int64 `gorm:"column:rate_limit_year" db:"rate_limit_year" json:"rate_limit_year" form:"rate_limit_year"`
CreatedTime time.Time `gorm:"column:created_time" db:"created_time" json:"created_time" form:"created_time"` // 创建时间
UpdatedTime time.Time `gorm:"column:updated_time" db:"updated_time" json:"updated_time" form:"updated_time"` // 更新时间
Deleted int64 `gorm:"column:deleted" db:"deleted" json:"deleted" form:"deleted"` // 逻辑删除
}
func (UserLevel) TableName() string {
return "user_level"
}
type UserLevelRepository interface {
Create(user *UserLevel) error
GetById(uid int64) (*UserLevel, error)
GetListByFilter(filters ...interface{}) []*UserLevel
Update(user *UserLevel) error
Delete(user *UserLevel) error
}
type userLevelRepositoryImpl struct {
o orm.Ormer
}
func NewUserLevelRepository() UserLevelRepository {
o := orm.NewOrm()
return &userLevelRepositoryImpl{o}
}
func (repo *userLevelRepositoryImpl) Create(user *UserLevel) error {
_, err := repo.o.Insert(user)
return err
}
func (repo *userLevelRepositoryImpl) GetListByFilter(filters ...interface{}) []*UserLevel {
list := make([]*UserLevel, 0)
query := orm.NewOrm().QueryTable(new(UserLevel).TableName())
if len(filters) > 0 {
l := len(filters)
for k := 0; k < l; k += 2 {
query = query.Filter(filters[k].(string), filters[k+1])
}
}
query.OrderBy("-id").All(&list)
return list
}
func (repo *userLevelRepositoryImpl) GetById(uid int64) (*UserLevel, error) {
user := UserLevel{ID: uid}
err := repo.o.Read(&user)
if err != nil {
return nil, err
}
return &user, nil
}
func (repo *userLevelRepositoryImpl) Update(user *UserLevel) error {
_, err := repo.o.Update(user)
return err
}
func (repo *userLevelRepositoryImpl) Delete(user *UserLevel) error {
_, err := repo.o.Delete(user)
return err
}
package model
import (
"github.com/astaxie/beego/orm"
_ "github.com/go-sql-driver/mysql"
"time"
)
type UserLevelTaskType struct {
ID int64 `gorm:"column:id" db:"id" json:"id" form:"id"`
FreeCallCount int64 `gorm:"column:free_call_count" db:"free_call_count" json:"free_call_count" form:"free_call_count"`
UserLevelId int64 `gorm:"column:user_level_id" db:"user_level_id" json:"user_level_id" form:"user_level_id"`
TaskTypeId int64 `gorm:"column:task_type_id" db:"task_type_id" json:"task_type_id" form:"task_type_id"`
FreeCallCountPeriod int64 `gorm:"column:free_call_count_period" db:"free_call_count_period" json:"free_call_count_period" form:"free_call_count_period"`
CreatedTime time.Time `gorm:"column:created_time" db:"created_time" json:"created_time" form:"created_time"`
UpdatedTime time.Time `gorm:"column:updated_time" db:"updated_time" json:"updated_time" form:"updated_time"`
Deleted int64 `gorm:"column:deleted" db:"deleted" json:"deleted" form:"deleted"`
}
func (UserLevelTaskType) TableName() string {
return "user_level_task_type"
}
type UserLevelTaskTypeRepository interface {
Create(user *UserLevelTaskType) error
GetById(uid int64) (*UserLevelTaskType, error)
GetListByFilter(filters ...interface{}) []*UserLevelTaskType
GetByTaskTypeAndUserLevel(taskType int64, userLevel int64) (*UserLevelTaskType, error)
Update(user *UserLevelTaskType) error
Delete(user *UserLevelTaskType) error
}
type userLevelTaskTypeRepositoryImpl struct {
o orm.Ormer
}
func NewUserLevelTaskTypeRepository() UserLevelTaskTypeRepository {
o := orm.NewOrm()
return &userLevelTaskTypeRepositoryImpl{o}
}
func (repo *userLevelTaskTypeRepositoryImpl) Create(user *UserLevelTaskType) error {
_, err := repo.o.Insert(user)
return err
}
func (repo *userLevelTaskTypeRepositoryImpl) GetListByFilter(filters ...interface{}) []*UserLevelTaskType {
list := make([]*UserLevelTaskType, 0)
query := orm.NewOrm().QueryTable(new(UserLevelTaskType).TableName())
if len(filters) > 0 {
l := len(filters)
for k := 0; k < l; k += 2 {
query = query.Filter(filters[k].(string), filters[k+1])
}
}
query.OrderBy("-id").All(&list)
//total, _ := query.Count()
return list
}
func (repo *userLevelTaskTypeRepositoryImpl) GetByTaskTypeAndUserLevel(taskType int64, userLevel int64) (*UserLevelTaskType, error) {
user := UserLevelTaskType{TaskTypeId: taskType, UserLevelId: userLevel}
err := repo.o.Read(&user)
if err != nil {
return nil, err
}
return &user, nil
}
func (repo *userLevelTaskTypeRepositoryImpl) GetById(uid int64) (*UserLevelTaskType, error) {
user := UserLevelTaskType{ID: uid}
err := repo.o.Read(&user)
if err != nil {
return nil, err
}
return &user, nil
}
func (repo *userLevelTaskTypeRepositoryImpl) Update(user *UserLevelTaskType) error {
_, err := repo.o.Update(user)
return err
}
// normally update user.deleted = 1 to soft-delete the record.
func (repo *userLevelTaskTypeRepositoryImpl) Delete(user *UserLevelTaskType) error {
_, err := repo.o.Delete(user)
return err
}
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