余额变动接口

This commit is contained in:
2026-04-11 09:51:25 +08:00
parent 7d7b979b66
commit 624a5ff2c0
14 changed files with 286 additions and 129 deletions

View File

@@ -31,7 +31,8 @@ insert into permission (name, description, sort) values
('batch', '批次', 10), ('batch', '批次', 10),
('channel', 'IP', 11), ('channel', 'IP', 11),
('trade', '交易', 12), ('trade', '交易', 12),
('bill', '账单', 13); ('bill', '账单', 13),
('balance_activity', '余额变动', 14);
-- -------------------------- -- --------------------------
-- level 2 -- level 2
@@ -104,6 +105,10 @@ insert into permission (parent_id, name, description, sort) values
((select id from permission where name = 'bill' and deleted_at is null), 'bill:read', '读取账单列表', 1), ((select id from permission where name = 'bill' and deleted_at is null), 'bill:read', '读取账单列表', 1),
((select id from permission where name = 'bill' and deleted_at is null), 'bill:write', '写入账单', 2); ((select id from permission where name = 'bill' and deleted_at is null), 'bill:write', '写入账单', 2);
-- balance_activity 子权限
insert into permission (parent_id, name, description, sort) values
((select id from permission where name = 'balance_activity' and deleted_at is null), 'balance_activity:read', '读取余额变动列表', 1);
-- -------------------------- -- --------------------------
-- level 3 -- level 3
-- -------------------------- -- --------------------------
@@ -146,6 +151,10 @@ insert into permission (parent_id, name, description, sort) values
insert into permission (parent_id, name, description, sort) values insert into permission (parent_id, name, description, sort) values
((select id from permission where name = 'bill:read' and deleted_at is null), 'bill:read:of_user', '读取指定用户的账单列表', 1); ((select id from permission where name = 'bill:read' and deleted_at is null), 'bill:read:of_user', '读取指定用户的账单列表', 1);
-- balance_activity:read 子权限
insert into permission (parent_id, name, description, sort) values
((select id from permission where name = 'balance_activity:read' and deleted_at is null), 'balance_activity:read:of_user', '读取指定用户的余额变动列表', 1);
-- -------------------------- -- --------------------------
-- level 4 -- level 4
-- -------------------------- -- --------------------------

View File

@@ -71,4 +71,8 @@ const (
ScopeBillRead = string("bill:read") // 读取账单列表 ScopeBillRead = string("bill:read") // 读取账单列表
ScopeBillReadOfUser = string("bill:read:of_user") // 读取指定用户的账单列表 ScopeBillReadOfUser = string("bill:read:of_user") // 读取指定用户的账单列表
ScopeBillWrite = string("bill:write") // 写入账单 ScopeBillWrite = string("bill:write") // 写入账单
ScopeBalanceActivity = string("balance_activity") // 余额变动
ScopeBalanceActivityRead = string("balance_activity:read") // 读取余额变动列表
ScopeBalanceActivityReadOfUser = string("balance_activity:read:of_user") // 读取指定用户的余额变动列表
) )

View File

@@ -0,0 +1,129 @@
package handlers
import (
"platform/pkg/u"
"platform/web/auth"
"platform/web/core"
g "platform/web/globals"
q "platform/web/queries"
"time"
"github.com/gofiber/fiber/v2"
)
// PageBalanceActivityByAdmin 分页查询所有余额变动记录
func PageBalanceActivityByAdmin(c *fiber.Ctx) error {
// 检查权限
_, err := auth.GetAuthCtx(c).PermitAdmin(core.ScopeBalanceActivityRead)
if err != nil {
return err
}
// 解析请求参数
req := new(PageBalanceActivityByAdminReq)
if err := g.Validator.ParseBody(c, req); err != nil {
return err
}
// 构造查询条件
do := q.BalanceActivity.Where()
if req.UserPhone != nil {
do = do.Where(q.User.As("User").Phone.Eq(*req.UserPhone))
}
if req.CreatedAtStart != nil {
t := u.DateHead(*req.CreatedAtStart)
do = do.Where(q.BalanceActivity.CreatedAt.Gte(t))
}
if req.CreatedAtEnd != nil {
t := u.DateTail(*req.CreatedAtEnd)
do = do.Where(q.BalanceActivity.CreatedAt.Lte(t))
}
// 查询余额变动列表
list, total, err := q.BalanceActivity.Debug().
Joins(q.BalanceActivity.User, q.BalanceActivity.Admin, q.BalanceActivity.Bill).
Select(
q.BalanceActivity.ALL,
q.User.As("User").Phone.As("User__phone"),
q.User.As("User").Name.As("User__name"),
q.Admin.As("Admin").Name.As("Admin__name"),
q.Bill.As("Bill").BillNo.As("Bill__bill_no"),
).
Where(do).
Order(q.BalanceActivity.CreatedAt.Desc()).
FindByPage(req.GetOffset(), req.GetLimit())
if err != nil {
return core.NewBizErr("获取数据失败", err)
}
// 返回结果
return c.JSON(core.PageResp{
List: list,
Total: int(total),
Page: req.GetPage(),
Size: req.GetSize(),
})
}
type PageBalanceActivityByAdminReq struct {
core.PageReq
UserPhone *string `json:"user_phone,omitempty"`
CreatedAtStart *time.Time `json:"created_at_start,omitempty"`
CreatedAtEnd *time.Time `json:"created_at_end,omitempty"`
}
// PageBalanceActivityOfUserByAdmin 分页查询指定用户的余额变动记录
func PageBalanceActivityOfUserByAdmin(c *fiber.Ctx) error {
// 检查权限
_, err := auth.GetAuthCtx(c).PermitAdmin(core.ScopeBalanceActivityReadOfUser)
if err != nil {
return err
}
// 解析请求参数
req := new(PageBalanceActivityOfUserByAdminReq)
if err := g.Validator.ParseBody(c, req); err != nil {
return err
}
// 构造查询条件
do := q.BalanceActivity.Where(q.BalanceActivity.UserID.Eq(req.UserID))
if req.CreatedAtStart != nil {
t := u.DateHead(*req.CreatedAtStart)
do = do.Where(q.BalanceActivity.CreatedAt.Gte(t))
}
if req.CreatedAtEnd != nil {
t := u.DateTail(*req.CreatedAtEnd)
do = do.Where(q.BalanceActivity.CreatedAt.Lte(t))
}
// 查询余额变动列表
list, total, err := q.BalanceActivity.
Joins(q.BalanceActivity.Admin, q.BalanceActivity.Bill).
Select(
q.BalanceActivity.ALL,
q.Admin.As("Admin").Name.As("Admin__name"),
q.Bill.As("Bill").BillNo.As("Bill__bill_no"),
).
Where(do).
Order(q.BalanceActivity.CreatedAt.Desc()).
FindByPage(req.GetOffset(), req.GetLimit())
if err != nil {
return core.NewBizErr("获取数据失败", err)
}
// 返回结果
return c.JSON(core.PageResp{
List: list,
Total: int(total),
Page: req.GetPage(),
Size: req.GetSize(),
})
}
type PageBalanceActivityOfUserByAdminReq struct {
core.PageReq
UserID int32 `json:"user_id" validate:"required"`
CreatedAtStart *time.Time `json:"created_at_start,omitempty"`
CreatedAtEnd *time.Time `json:"created_at_end,omitempty"`
}

View File

@@ -71,10 +71,10 @@ func PageBatchByAdmin(c *fiber.Ctx) error {
do := q.LogsUserUsage.Where() do := q.LogsUserUsage.Where()
if req.UserPhone != nil { if req.UserPhone != nil {
do = do.Where(q.User.Phone.Eq(*req.UserPhone)) do = do.Where(q.User.As("User").Phone.Eq(*req.UserPhone))
} }
if req.ResourceNo != nil { if req.ResourceNo != nil {
do = do.Where(q.Resource.ResourceNo.Eq(*req.ResourceNo)) do = do.Where(q.Resource.As("Resource").ResourceNo.Eq(*req.ResourceNo))
} }
if req.BatchNo != nil { if req.BatchNo != nil {
do = do.Where(q.LogsUserUsage.BatchNo.Eq(*req.BatchNo)) do = do.Where(q.LogsUserUsage.BatchNo.Eq(*req.BatchNo))
@@ -143,7 +143,7 @@ func PageBatchOfUserByAdmin(ctx *fiber.Ctx) error {
do := q.LogsUserUsage.Where(q.LogsUserUsage.UserID.Eq(req.UserID)) do := q.LogsUserUsage.Where(q.LogsUserUsage.UserID.Eq(req.UserID))
if req.ResourceNo != nil { if req.ResourceNo != nil {
do = do.Where(q.Resource.ResourceNo.Eq(*req.ResourceNo)) do = do.Where(q.Resource.As("Resource").ResourceNo.Eq(*req.ResourceNo))
} }
if req.BatchNo != nil { if req.BatchNo != nil {
do = do.Where(q.LogsUserUsage.BatchNo.Eq(*req.BatchNo)) do = do.Where(q.LogsUserUsage.BatchNo.Eq(*req.BatchNo))

View File

@@ -134,6 +134,14 @@ func PageBillOfUserByAdmin(c *fiber.Ctx) error {
time := u.DateHead(*req.CreatedAtEnd) time := u.DateHead(*req.CreatedAtEnd)
do = do.Where(q.Bill.CreatedAt.Lte(time)) do = do.Where(q.Bill.CreatedAt.Lte(time))
} }
if req.ProductCode != nil {
do = do.Where(q.Resource.As("Resource").Code.Eq(*req.ProductCode))
}
if req.SkuCode != nil {
do = do.Where(q.Bill.
Where(q.ResourceShort.As("Resource__Short").Code.Eq(*req.SkuCode)).
Or(q.ResourceLong.As("Resource__Long").Code.Eq(*req.SkuCode)))
}
// 查询账单列表 // 查询账单列表
list, total, err := q.Bill. list, total, err := q.Bill.
@@ -173,6 +181,8 @@ type PageBillOfUserByAdminReq struct {
BillNo *string `json:"bill_no,omitempty"` BillNo *string `json:"bill_no,omitempty"`
CreatedAtStart *time.Time `json:"created_at_start,omitempty"` CreatedAtStart *time.Time `json:"created_at_start,omitempty"`
CreatedAtEnd *time.Time `json:"created_at_end,omitempty"` CreatedAtEnd *time.Time `json:"created_at_end,omitempty"`
ProductCode *string `json:"product_code,omitempty"`
SkuCode *string `json:"sku_code,omitempty"`
} }
// ListBill 获取账单列表 // ListBill 获取账单列表

View File

@@ -67,7 +67,7 @@ func PageUserByAdmin(c *fiber.Ctx) error {
// 查询用户列表 // 查询用户列表
users, total, err := q.User. users, total, err := q.User.
Preload(q.User.Admin, q.User.Discount). Preload(q.User.Admin, q.User.Discount).
Omit(q.User.Password). Omit(q.User.Password, q.Admin.Password).
Where(do). Where(do).
Order(q.User.CreatedAt.Desc()). Order(q.User.CreatedAt.Desc()).
FindByPage(req.GetOffset(), req.GetLimit()) FindByPage(req.GetOffset(), req.GetLimit())
@@ -133,7 +133,7 @@ func GetUserByAdmin(c *fiber.Ctx) error {
// 查询用户 // 查询用户
user, err := q.User. user, err := q.User.
Preload(q.User.Admin, q.User.Discount). Preload(q.User.Admin, q.User.Discount).
Omit(q.User.Password). Omit(q.User.Password, q.Admin.Password).
Where(do). Where(do).
Order(q.User.CreatedAt.Desc()). Order(q.User.CreatedAt.Desc()).
First() First()

View File

@@ -11,7 +11,7 @@ import (
type Admin struct { type Admin struct {
core.Model core.Model
Username string `json:"username" gorm:"column:username"` // 用户名 Username string `json:"username" gorm:"column:username"` // 用户名
Password string `json:"password" gorm:"column:password"` // 密码 Password string `json:"-" gorm:"column:password"` // 密码
Name *string `json:"name,omitempty" gorm:"column:name"` // 真实姓名 Name *string `json:"name,omitempty" gorm:"column:name"` // 真实姓名
Avatar *string `json:"avatar,omitempty" gorm:"column:avatar"` // 头像URL Avatar *string `json:"avatar,omitempty" gorm:"column:avatar"` // 头像URL
Phone *string `json:"phone,omitempty" gorm:"column:phone"` // 手机号码 Phone *string `json:"phone,omitempty" gorm:"column:phone"` // 手机号码

View File

@@ -16,7 +16,7 @@ type BalanceActivity struct {
Remark *string `json:"remark,omitempty" gorm:"column:remark"` // 备注 Remark *string `json:"remark,omitempty" gorm:"column:remark"` // 备注
CreatedAt time.Time `json:"created_at" gorm:"column:created_at"` // 创建时间 CreatedAt time.Time `json:"created_at" gorm:"column:created_at"` // 创建时间
User *User `json:"user,omitempty" gorm:"foreignKey:UserID"` User *User `json:"user,omitempty" gorm:"foreignKey:UserID"`
Bill *Bill `json:"bill,omitempty" gorm:"foreignKey:BillID"` Bill *Bill `json:"bill,omitempty" gorm:"foreignKey:BillID"`
Admin *User `json:"admin,omitempty" gorm:"foreignKey:AdminID"` Admin *Admin `json:"admin,omitempty" gorm:"foreignKey:AdminID"`
} }

View File

@@ -9,16 +9,16 @@ import (
// Bill 账单表 // Bill 账单表
type Bill struct { type Bill struct {
core.Model core.Model
UserID int32 `json:"user_id" gorm:"column:user_id"` // 用户ID UserID int32 `json:"user_id" gorm:"column:user_id"` // 用户ID
TradeID *int32 `json:"trade_id,omitempty" gorm:"column:trade_id"` // 订单ID TradeID *int32 `json:"trade_id,omitempty" gorm:"column:trade_id"` // 订单ID
ResourceID *int32 `json:"resource_id,omitempty" gorm:"column:resource_id"` // 套餐ID ResourceID *int32 `json:"resource_id,omitempty" gorm:"column:resource_id"` // 套餐ID
RefundID *int32 `json:"refund_id,omitempty" gorm:"column:refund_id"` // 退款ID RefundID *int32 `json:"refund_id,omitempty" gorm:"column:refund_id"` // 退款ID
CouponUserID *int32 `json:"coupon_user_id,omitempty" gorm:"column:coupon_id"` // 优惠券发放ID CouponUserID *int32 `json:"coupon_user_id,omitempty" gorm:"column:coupon_user_id"` // 优惠券发放ID
BillNo string `json:"bill_no" gorm:"column:bill_no"` // 易读账单号 BillNo string `json:"bill_no" gorm:"column:bill_no"` // 易读账单号
Info *string `json:"info,omitempty" gorm:"column:info"` // 产品可读信息 Info *string `json:"info,omitempty" gorm:"column:info"` // 产品可读信息
Type BillType `json:"type" gorm:"column:type"` // 账单类型1-消费2-退款3-充值 Type BillType `json:"type" gorm:"column:type"` // 账单类型1-消费2-退款3-充值
Amount decimal.Decimal `json:"amount" gorm:"column:amount"` // 应付金额 Amount decimal.Decimal `json:"amount" gorm:"column:amount"` // 应付金额
Actual decimal.Decimal `json:"actual" gorm:"column:actual"` // 实付金额 Actual decimal.Decimal `json:"actual" gorm:"column:actual"` // 实付金额
User *User `json:"user,omitempty" gorm:"foreignKey:UserID"` User *User `json:"user,omitempty" gorm:"foreignKey:UserID"`
Trade *Trade `json:"trade,omitempty" gorm:"foreignKey:TradeID"` Trade *Trade `json:"trade,omitempty" gorm:"foreignKey:TradeID"`

View File

@@ -8,7 +8,7 @@ import (
type Client struct { type Client struct {
core.Model core.Model
ClientID string `json:"client_id" gorm:"column:client_id"` // OAuth2客户端标识符 ClientID string `json:"client_id" gorm:"column:client_id"` // OAuth2客户端标识符
ClientSecret string `json:"client_secret" gorm:"column:client_secret"` // OAuth2客户端密钥 ClientSecret string `json:"-" gorm:"column:client_secret"` // OAuth2客户端密钥
RedirectURI *string `json:"redirect_uri,omitempty" gorm:"column:redirect_uri"` // OAuth2 重定向URI RedirectURI *string `json:"redirect_uri,omitempty" gorm:"column:redirect_uri"` // OAuth2 重定向URI
Spec ClientSpec `json:"spec" gorm:"column:spec"` // 安全规范1-native2-browser3-web4-api Spec ClientSpec `json:"spec" gorm:"column:spec"` // 安全规范1-native2-browser3-web4-api
Name string `json:"name" gorm:"column:name"` // 名称 Name string `json:"name" gorm:"column:name"` // 名称

View File

@@ -16,7 +16,7 @@ type User struct {
Phone string `json:"phone" gorm:"column:phone"` // 手机号码 Phone string `json:"phone" gorm:"column:phone"` // 手机号码
Username *string `json:"username,omitempty" gorm:"column:username"` // 用户名 Username *string `json:"username,omitempty" gorm:"column:username"` // 用户名
Email *string `json:"email,omitempty" gorm:"column:email"` // 邮箱 Email *string `json:"email,omitempty" gorm:"column:email"` // 邮箱
Password *string `json:"password,omitempty" gorm:"column:password"` // 用户密码 Password *string `json:"-" gorm:"column:password"` // 用户密码
Source *UserSource `json:"source,omitempty" gorm:"column:source"` // 用户来源0-官网注册1-管理员添加2-代理商注册3-代理商添加 Source *UserSource `json:"source,omitempty" gorm:"column:source"` // 用户来源0-官网注册1-管理员添加2-代理商注册3-代理商添加
Name *string `json:"name,omitempty" gorm:"column:name"` // 真实姓名 Name *string `json:"name,omitempty" gorm:"column:name"` // 真实姓名
Avatar *string `json:"avatar,omitempty" gorm:"column:avatar"` // 头像URL Avatar *string `json:"avatar,omitempty" gorm:"column:avatar"` // 头像URL

View File

@@ -36,10 +36,10 @@ func newBalanceActivity(db *gorm.DB, opts ...gen.DOOption) balanceActivity {
_balanceActivity.BalanceCurr = field.NewString(tableName, "balance_curr") _balanceActivity.BalanceCurr = field.NewString(tableName, "balance_curr")
_balanceActivity.Remark = field.NewString(tableName, "remark") _balanceActivity.Remark = field.NewString(tableName, "remark")
_balanceActivity.CreatedAt = field.NewTime(tableName, "created_at") _balanceActivity.CreatedAt = field.NewTime(tableName, "created_at")
_balanceActivity.Admin = balanceActivityHasOneAdmin{ _balanceActivity.User = balanceActivityBelongsToUser{
db: db.Session(&gorm.Session{}), db: db.Session(&gorm.Session{}),
RelationField: field.NewRelation("Admin", "models.User"), RelationField: field.NewRelation("User", "models.User"),
Admin: struct { Admin: struct {
field.RelationField field.RelationField
Roles struct { Roles struct {
@@ -55,7 +55,7 @@ func newBalanceActivity(db *gorm.DB, opts ...gen.DOOption) balanceActivity {
} }
} }
}{ }{
RelationField: field.NewRelation("Admin.Admin", "models.Admin"), RelationField: field.NewRelation("User.Admin", "models.Admin"),
Roles: struct { Roles: struct {
field.RelationField field.RelationField
Permissions struct { Permissions struct {
@@ -68,7 +68,7 @@ func newBalanceActivity(db *gorm.DB, opts ...gen.DOOption) balanceActivity {
} }
} }
}{ }{
RelationField: field.NewRelation("Admin.Admin.Roles", "models.AdminRole"), RelationField: field.NewRelation("User.Admin.Roles", "models.AdminRole"),
Permissions: struct { Permissions: struct {
field.RelationField field.RelationField
Parent struct { Parent struct {
@@ -78,16 +78,16 @@ func newBalanceActivity(db *gorm.DB, opts ...gen.DOOption) balanceActivity {
field.RelationField field.RelationField
} }
}{ }{
RelationField: field.NewRelation("Admin.Admin.Roles.Permissions", "models.Permission"), RelationField: field.NewRelation("User.Admin.Roles.Permissions", "models.Permission"),
Parent: struct { Parent: struct {
field.RelationField field.RelationField
}{ }{
RelationField: field.NewRelation("Admin.Admin.Roles.Permissions.Parent", "models.Permission"), RelationField: field.NewRelation("User.Admin.Roles.Permissions.Parent", "models.Permission"),
}, },
Children: struct { Children: struct {
field.RelationField field.RelationField
}{ }{
RelationField: field.NewRelation("Admin.Admin.Roles.Permissions.Children", "models.Permission"), RelationField: field.NewRelation("User.Admin.Roles.Permissions.Children", "models.Permission"),
}, },
}, },
}, },
@@ -95,7 +95,7 @@ func newBalanceActivity(db *gorm.DB, opts ...gen.DOOption) balanceActivity {
Discount: struct { Discount: struct {
field.RelationField field.RelationField
}{ }{
RelationField: field.NewRelation("Admin.Discount", "models.ProductDiscount"), RelationField: field.NewRelation("User.Discount", "models.ProductDiscount"),
}, },
Roles: struct { Roles: struct {
field.RelationField field.RelationField
@@ -103,21 +103,15 @@ func newBalanceActivity(db *gorm.DB, opts ...gen.DOOption) balanceActivity {
field.RelationField field.RelationField
} }
}{ }{
RelationField: field.NewRelation("Admin.Roles", "models.UserRole"), RelationField: field.NewRelation("User.Roles", "models.UserRole"),
Permissions: struct { Permissions: struct {
field.RelationField field.RelationField
}{ }{
RelationField: field.NewRelation("Admin.Roles.Permissions", "models.Permission"), RelationField: field.NewRelation("User.Roles.Permissions", "models.Permission"),
}, },
}, },
} }
_balanceActivity.User = balanceActivityBelongsToUser{
db: db.Session(&gorm.Session{}),
RelationField: field.NewRelation("User", "models.User"),
}
_balanceActivity.Bill = balanceActivityBelongsToBill{ _balanceActivity.Bill = balanceActivityBelongsToBill{
db: db.Session(&gorm.Session{}), db: db.Session(&gorm.Session{}),
@@ -255,6 +249,12 @@ func newBalanceActivity(db *gorm.DB, opts ...gen.DOOption) balanceActivity {
}, },
} }
_balanceActivity.Admin = balanceActivityBelongsToAdmin{
db: db.Session(&gorm.Session{}),
RelationField: field.NewRelation("Admin", "models.Admin"),
}
_balanceActivity.fillFieldMap() _balanceActivity.fillFieldMap()
return _balanceActivity return _balanceActivity
@@ -273,12 +273,12 @@ type balanceActivity struct {
BalanceCurr field.String BalanceCurr field.String
Remark field.String Remark field.String
CreatedAt field.Time CreatedAt field.Time
Admin balanceActivityHasOneAdmin User balanceActivityBelongsToUser
User balanceActivityBelongsToUser
Bill balanceActivityBelongsToBill Bill balanceActivityBelongsToBill
Admin balanceActivityBelongsToAdmin
fieldMap map[string]field.Expr fieldMap map[string]field.Expr
} }
@@ -334,24 +334,24 @@ func (b *balanceActivity) fillFieldMap() {
func (b balanceActivity) clone(db *gorm.DB) balanceActivity { func (b balanceActivity) clone(db *gorm.DB) balanceActivity {
b.balanceActivityDo.ReplaceConnPool(db.Statement.ConnPool) b.balanceActivityDo.ReplaceConnPool(db.Statement.ConnPool)
b.Admin.db = db.Session(&gorm.Session{Initialized: true})
b.Admin.db.Statement.ConnPool = db.Statement.ConnPool
b.User.db = db.Session(&gorm.Session{Initialized: true}) b.User.db = db.Session(&gorm.Session{Initialized: true})
b.User.db.Statement.ConnPool = db.Statement.ConnPool b.User.db.Statement.ConnPool = db.Statement.ConnPool
b.Bill.db = db.Session(&gorm.Session{Initialized: true}) b.Bill.db = db.Session(&gorm.Session{Initialized: true})
b.Bill.db.Statement.ConnPool = db.Statement.ConnPool b.Bill.db.Statement.ConnPool = db.Statement.ConnPool
b.Admin.db = db.Session(&gorm.Session{Initialized: true})
b.Admin.db.Statement.ConnPool = db.Statement.ConnPool
return b return b
} }
func (b balanceActivity) replaceDB(db *gorm.DB) balanceActivity { func (b balanceActivity) replaceDB(db *gorm.DB) balanceActivity {
b.balanceActivityDo.ReplaceDB(db) b.balanceActivityDo.ReplaceDB(db)
b.Admin.db = db.Session(&gorm.Session{})
b.User.db = db.Session(&gorm.Session{}) b.User.db = db.Session(&gorm.Session{})
b.Bill.db = db.Session(&gorm.Session{}) b.Bill.db = db.Session(&gorm.Session{})
b.Admin.db = db.Session(&gorm.Session{})
return b return b
} }
type balanceActivityHasOneAdmin struct { type balanceActivityBelongsToUser struct {
db *gorm.DB db *gorm.DB
field.RelationField field.RelationField
@@ -382,87 +382,6 @@ type balanceActivityHasOneAdmin struct {
} }
} }
func (a balanceActivityHasOneAdmin) Where(conds ...field.Expr) *balanceActivityHasOneAdmin {
if len(conds) == 0 {
return &a
}
exprs := make([]clause.Expression, 0, len(conds))
for _, cond := range conds {
exprs = append(exprs, cond.BeCond().(clause.Expression))
}
a.db = a.db.Clauses(clause.Where{Exprs: exprs})
return &a
}
func (a balanceActivityHasOneAdmin) WithContext(ctx context.Context) *balanceActivityHasOneAdmin {
a.db = a.db.WithContext(ctx)
return &a
}
func (a balanceActivityHasOneAdmin) Session(session *gorm.Session) *balanceActivityHasOneAdmin {
a.db = a.db.Session(session)
return &a
}
func (a balanceActivityHasOneAdmin) Model(m *models.BalanceActivity) *balanceActivityHasOneAdminTx {
return &balanceActivityHasOneAdminTx{a.db.Model(m).Association(a.Name())}
}
func (a balanceActivityHasOneAdmin) Unscoped() *balanceActivityHasOneAdmin {
a.db = a.db.Unscoped()
return &a
}
type balanceActivityHasOneAdminTx struct{ tx *gorm.Association }
func (a balanceActivityHasOneAdminTx) Find() (result *models.User, err error) {
return result, a.tx.Find(&result)
}
func (a balanceActivityHasOneAdminTx) Append(values ...*models.User) (err error) {
targetValues := make([]interface{}, len(values))
for i, v := range values {
targetValues[i] = v
}
return a.tx.Append(targetValues...)
}
func (a balanceActivityHasOneAdminTx) Replace(values ...*models.User) (err error) {
targetValues := make([]interface{}, len(values))
for i, v := range values {
targetValues[i] = v
}
return a.tx.Replace(targetValues...)
}
func (a balanceActivityHasOneAdminTx) Delete(values ...*models.User) (err error) {
targetValues := make([]interface{}, len(values))
for i, v := range values {
targetValues[i] = v
}
return a.tx.Delete(targetValues...)
}
func (a balanceActivityHasOneAdminTx) Clear() error {
return a.tx.Clear()
}
func (a balanceActivityHasOneAdminTx) Count() int64 {
return a.tx.Count()
}
func (a balanceActivityHasOneAdminTx) Unscoped() *balanceActivityHasOneAdminTx {
a.tx = a.tx.Unscoped()
return &a
}
type balanceActivityBelongsToUser struct {
db *gorm.DB
field.RelationField
}
func (a balanceActivityBelongsToUser) Where(conds ...field.Expr) *balanceActivityBelongsToUser { func (a balanceActivityBelongsToUser) Where(conds ...field.Expr) *balanceActivityBelongsToUser {
if len(conds) == 0 { if len(conds) == 0 {
return &a return &a
@@ -668,6 +587,87 @@ func (a balanceActivityBelongsToBillTx) Unscoped() *balanceActivityBelongsToBill
return &a return &a
} }
type balanceActivityBelongsToAdmin struct {
db *gorm.DB
field.RelationField
}
func (a balanceActivityBelongsToAdmin) Where(conds ...field.Expr) *balanceActivityBelongsToAdmin {
if len(conds) == 0 {
return &a
}
exprs := make([]clause.Expression, 0, len(conds))
for _, cond := range conds {
exprs = append(exprs, cond.BeCond().(clause.Expression))
}
a.db = a.db.Clauses(clause.Where{Exprs: exprs})
return &a
}
func (a balanceActivityBelongsToAdmin) WithContext(ctx context.Context) *balanceActivityBelongsToAdmin {
a.db = a.db.WithContext(ctx)
return &a
}
func (a balanceActivityBelongsToAdmin) Session(session *gorm.Session) *balanceActivityBelongsToAdmin {
a.db = a.db.Session(session)
return &a
}
func (a balanceActivityBelongsToAdmin) Model(m *models.BalanceActivity) *balanceActivityBelongsToAdminTx {
return &balanceActivityBelongsToAdminTx{a.db.Model(m).Association(a.Name())}
}
func (a balanceActivityBelongsToAdmin) Unscoped() *balanceActivityBelongsToAdmin {
a.db = a.db.Unscoped()
return &a
}
type balanceActivityBelongsToAdminTx struct{ tx *gorm.Association }
func (a balanceActivityBelongsToAdminTx) Find() (result *models.Admin, err error) {
return result, a.tx.Find(&result)
}
func (a balanceActivityBelongsToAdminTx) Append(values ...*models.Admin) (err error) {
targetValues := make([]interface{}, len(values))
for i, v := range values {
targetValues[i] = v
}
return a.tx.Append(targetValues...)
}
func (a balanceActivityBelongsToAdminTx) Replace(values ...*models.Admin) (err error) {
targetValues := make([]interface{}, len(values))
for i, v := range values {
targetValues[i] = v
}
return a.tx.Replace(targetValues...)
}
func (a balanceActivityBelongsToAdminTx) Delete(values ...*models.Admin) (err error) {
targetValues := make([]interface{}, len(values))
for i, v := range values {
targetValues[i] = v
}
return a.tx.Delete(targetValues...)
}
func (a balanceActivityBelongsToAdminTx) Clear() error {
return a.tx.Clear()
}
func (a balanceActivityBelongsToAdminTx) Count() int64 {
return a.tx.Count()
}
func (a balanceActivityBelongsToAdminTx) Unscoped() *balanceActivityBelongsToAdminTx {
a.tx = a.tx.Unscoped()
return &a
}
type balanceActivityDo struct{ gen.DO } type balanceActivityDo struct{ gen.DO }
func (b balanceActivityDo) Debug() *balanceActivityDo { func (b balanceActivityDo) Debug() *balanceActivityDo {

View File

@@ -35,7 +35,7 @@ func newBill(db *gorm.DB, opts ...gen.DOOption) bill {
_bill.TradeID = field.NewInt32(tableName, "trade_id") _bill.TradeID = field.NewInt32(tableName, "trade_id")
_bill.ResourceID = field.NewInt32(tableName, "resource_id") _bill.ResourceID = field.NewInt32(tableName, "resource_id")
_bill.RefundID = field.NewInt32(tableName, "refund_id") _bill.RefundID = field.NewInt32(tableName, "refund_id")
_bill.CouponUserID = field.NewInt32(tableName, "coupon_id") _bill.CouponUserID = field.NewInt32(tableName, "coupon_user_id")
_bill.BillNo = field.NewString(tableName, "bill_no") _bill.BillNo = field.NewString(tableName, "bill_no")
_bill.Info = field.NewString(tableName, "info") _bill.Info = field.NewString(tableName, "info")
_bill.Type = field.NewInt(tableName, "type") _bill.Type = field.NewInt(tableName, "type")
@@ -270,7 +270,7 @@ func (b *bill) updateTableName(table string) *bill {
b.TradeID = field.NewInt32(table, "trade_id") b.TradeID = field.NewInt32(table, "trade_id")
b.ResourceID = field.NewInt32(table, "resource_id") b.ResourceID = field.NewInt32(table, "resource_id")
b.RefundID = field.NewInt32(table, "refund_id") b.RefundID = field.NewInt32(table, "refund_id")
b.CouponUserID = field.NewInt32(table, "coupon_id") b.CouponUserID = field.NewInt32(table, "coupon_user_id")
b.BillNo = field.NewString(table, "bill_no") b.BillNo = field.NewString(table, "bill_no")
b.Info = field.NewString(table, "info") b.Info = field.NewString(table, "info")
b.Type = field.NewInt(table, "type") b.Type = field.NewInt(table, "type")
@@ -301,7 +301,7 @@ func (b *bill) fillFieldMap() {
b.fieldMap["trade_id"] = b.TradeID b.fieldMap["trade_id"] = b.TradeID
b.fieldMap["resource_id"] = b.ResourceID b.fieldMap["resource_id"] = b.ResourceID
b.fieldMap["refund_id"] = b.RefundID b.fieldMap["refund_id"] = b.RefundID
b.fieldMap["coupon_id"] = b.CouponUserID b.fieldMap["coupon_user_id"] = b.CouponUserID
b.fieldMap["bill_no"] = b.BillNo b.fieldMap["bill_no"] = b.BillNo
b.fieldMap["info"] = b.Info b.fieldMap["info"] = b.Info
b.fieldMap["type"] = b.Type b.fieldMap["type"] = b.Type

View File

@@ -198,6 +198,11 @@ func adminRouter(api fiber.Router) {
bill.Post("/page", handlers.PageBillByAdmin) bill.Post("/page", handlers.PageBillByAdmin)
bill.Post("/page/of-user", handlers.PageBillOfUserByAdmin) bill.Post("/page/of-user", handlers.PageBillOfUserByAdmin)
// balance-activity 余额变动
var balanceActivity = api.Group("/balance-activity")
balanceActivity.Post("/page", handlers.PageBalanceActivityByAdmin)
balanceActivity.Post("/page/of-user", handlers.PageBalanceActivityOfUserByAdmin)
// product 产品 // product 产品
var product = api.Group("/product") var product = api.Group("/product")
product.Post("/all", handlers.AllProductByAdmin) product.Post("/all", handlers.AllProductByAdmin)