diff --git a/scripts/sql/fill.sql b/scripts/sql/fill.sql index eec4f71..b5e3ac1 100644 --- a/scripts/sql/fill.sql +++ b/scripts/sql/fill.sql @@ -31,7 +31,8 @@ insert into permission (name, description, sort) values ('batch', '批次', 10), ('channel', 'IP', 11), ('trade', '交易', 12), - ('bill', '账单', 13); + ('bill', '账单', 13), + ('balance_activity', '余额变动', 14); -- -------------------------- -- 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: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 -- -------------------------- @@ -146,6 +151,10 @@ 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); +-- 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 -- -------------------------- diff --git a/web/core/scopes.go b/web/core/scopes.go index 793c7bd..6fe6d44 100644 --- a/web/core/scopes.go +++ b/web/core/scopes.go @@ -71,4 +71,8 @@ const ( ScopeBillRead = string("bill:read") // 读取账单列表 ScopeBillReadOfUser = string("bill:read:of_user") // 读取指定用户的账单列表 ScopeBillWrite = string("bill:write") // 写入账单 + + ScopeBalanceActivity = string("balance_activity") // 余额变动 + ScopeBalanceActivityRead = string("balance_activity:read") // 读取余额变动列表 + ScopeBalanceActivityReadOfUser = string("balance_activity:read:of_user") // 读取指定用户的余额变动列表 ) diff --git a/web/handlers/balance_activity.go b/web/handlers/balance_activity.go new file mode 100644 index 0000000..af74af5 --- /dev/null +++ b/web/handlers/balance_activity.go @@ -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"` +} diff --git a/web/handlers/batch.go b/web/handlers/batch.go index b24b2fb..4686290 100644 --- a/web/handlers/batch.go +++ b/web/handlers/batch.go @@ -71,10 +71,10 @@ func PageBatchByAdmin(c *fiber.Ctx) error { do := q.LogsUserUsage.Where() 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 { - do = do.Where(q.Resource.ResourceNo.Eq(*req.ResourceNo)) + do = do.Where(q.Resource.As("Resource").ResourceNo.Eq(*req.ResourceNo)) } if req.BatchNo != nil { 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)) 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 { do = do.Where(q.LogsUserUsage.BatchNo.Eq(*req.BatchNo)) diff --git a/web/handlers/bill.go b/web/handlers/bill.go index 033367a..54e5c7c 100644 --- a/web/handlers/bill.go +++ b/web/handlers/bill.go @@ -134,6 +134,14 @@ func PageBillOfUserByAdmin(c *fiber.Ctx) error { time := u.DateHead(*req.CreatedAtEnd) 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. @@ -173,6 +181,8 @@ type PageBillOfUserByAdminReq struct { BillNo *string `json:"bill_no,omitempty"` CreatedAtStart *time.Time `json:"created_at_start,omitempty"` CreatedAtEnd *time.Time `json:"created_at_end,omitempty"` + ProductCode *string `json:"product_code,omitempty"` + SkuCode *string `json:"sku_code,omitempty"` } // ListBill 获取账单列表 diff --git a/web/handlers/user.go b/web/handlers/user.go index bbe41a4..3da0272 100644 --- a/web/handlers/user.go +++ b/web/handlers/user.go @@ -67,7 +67,7 @@ func PageUserByAdmin(c *fiber.Ctx) error { // 查询用户列表 users, total, err := q.User. Preload(q.User.Admin, q.User.Discount). - Omit(q.User.Password). + Omit(q.User.Password, q.Admin.Password). Where(do). Order(q.User.CreatedAt.Desc()). FindByPage(req.GetOffset(), req.GetLimit()) @@ -133,7 +133,7 @@ func GetUserByAdmin(c *fiber.Ctx) error { // 查询用户 user, err := q.User. Preload(q.User.Admin, q.User.Discount). - Omit(q.User.Password). + Omit(q.User.Password, q.Admin.Password). Where(do). Order(q.User.CreatedAt.Desc()). First() diff --git a/web/models/admin.go b/web/models/admin.go index 134b943..2fd7353 100644 --- a/web/models/admin.go +++ b/web/models/admin.go @@ -11,7 +11,7 @@ import ( type Admin struct { core.Model 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"` // 真实姓名 Avatar *string `json:"avatar,omitempty" gorm:"column:avatar"` // 头像URL Phone *string `json:"phone,omitempty" gorm:"column:phone"` // 手机号码 diff --git a/web/models/balance_activity.go b/web/models/balance_activity.go index cde6956..c7bea15 100644 --- a/web/models/balance_activity.go +++ b/web/models/balance_activity.go @@ -16,7 +16,7 @@ type BalanceActivity struct { Remark *string `json:"remark,omitempty" gorm:"column:remark"` // 备注 CreatedAt time.Time `json:"created_at" gorm:"column:created_at"` // 创建时间 - User *User `json:"user,omitempty" gorm:"foreignKey:UserID"` - Bill *Bill `json:"bill,omitempty" gorm:"foreignKey:BillID"` - Admin *User `json:"admin,omitempty" gorm:"foreignKey:AdminID"` + User *User `json:"user,omitempty" gorm:"foreignKey:UserID"` + Bill *Bill `json:"bill,omitempty" gorm:"foreignKey:BillID"` + Admin *Admin `json:"admin,omitempty" gorm:"foreignKey:AdminID"` } diff --git a/web/models/bill.go b/web/models/bill.go index 177ac66..d3f12db 100644 --- a/web/models/bill.go +++ b/web/models/bill.go @@ -9,16 +9,16 @@ import ( // Bill 账单表 type Bill struct { core.Model - UserID int32 `json:"user_id" gorm:"column:user_id"` // 用户ID - TradeID *int32 `json:"trade_id,omitempty" gorm:"column:trade_id"` // 订单ID - ResourceID *int32 `json:"resource_id,omitempty" gorm:"column:resource_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 - BillNo string `json:"bill_no" gorm:"column:bill_no"` // 易读账单号 - Info *string `json:"info,omitempty" gorm:"column:info"` // 产品可读信息 - Type BillType `json:"type" gorm:"column:type"` // 账单类型:1-消费,2-退款,3-充值 - Amount decimal.Decimal `json:"amount" gorm:"column:amount"` // 应付金额 - Actual decimal.Decimal `json:"actual" gorm:"column:actual"` // 实付金额 + UserID int32 `json:"user_id" gorm:"column:user_id"` // 用户ID + TradeID *int32 `json:"trade_id,omitempty" gorm:"column:trade_id"` // 订单ID + ResourceID *int32 `json:"resource_id,omitempty" gorm:"column:resource_id"` // 套餐ID + RefundID *int32 `json:"refund_id,omitempty" gorm:"column:refund_id"` // 退款ID + CouponUserID *int32 `json:"coupon_user_id,omitempty" gorm:"column:coupon_user_id"` // 优惠券发放ID + BillNo string `json:"bill_no" gorm:"column:bill_no"` // 易读账单号 + Info *string `json:"info,omitempty" gorm:"column:info"` // 产品可读信息 + Type BillType `json:"type" gorm:"column:type"` // 账单类型:1-消费,2-退款,3-充值 + Amount decimal.Decimal `json:"amount" gorm:"column:amount"` // 应付金额 + Actual decimal.Decimal `json:"actual" gorm:"column:actual"` // 实付金额 User *User `json:"user,omitempty" gorm:"foreignKey:UserID"` Trade *Trade `json:"trade,omitempty" gorm:"foreignKey:TradeID"` diff --git a/web/models/client.go b/web/models/client.go index 2e7e7fa..df223f2 100644 --- a/web/models/client.go +++ b/web/models/client.go @@ -8,7 +8,7 @@ import ( type Client struct { core.Model 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 Spec ClientSpec `json:"spec" gorm:"column:spec"` // 安全规范:1-native,2-browser,3-web,4-api Name string `json:"name" gorm:"column:name"` // 名称 diff --git a/web/models/user.go b/web/models/user.go index bfba99f..9bcfdd3 100644 --- a/web/models/user.go +++ b/web/models/user.go @@ -16,7 +16,7 @@ type User struct { Phone string `json:"phone" gorm:"column:phone"` // 手机号码 Username *string `json:"username,omitempty" gorm:"column:username"` // 用户名 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-代理商添加 Name *string `json:"name,omitempty" gorm:"column:name"` // 真实姓名 Avatar *string `json:"avatar,omitempty" gorm:"column:avatar"` // 头像URL diff --git a/web/queries/balance_activity.gen.go b/web/queries/balance_activity.gen.go index afe4a88..ed5fa20 100644 --- a/web/queries/balance_activity.gen.go +++ b/web/queries/balance_activity.gen.go @@ -36,10 +36,10 @@ func newBalanceActivity(db *gorm.DB, opts ...gen.DOOption) balanceActivity { _balanceActivity.BalanceCurr = field.NewString(tableName, "balance_curr") _balanceActivity.Remark = field.NewString(tableName, "remark") _balanceActivity.CreatedAt = field.NewTime(tableName, "created_at") - _balanceActivity.Admin = balanceActivityHasOneAdmin{ + _balanceActivity.User = balanceActivityBelongsToUser{ db: db.Session(&gorm.Session{}), - RelationField: field.NewRelation("Admin", "models.User"), + RelationField: field.NewRelation("User", "models.User"), Admin: struct { field.RelationField 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 { field.RelationField 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 { field.RelationField Parent struct { @@ -78,16 +78,16 @@ func newBalanceActivity(db *gorm.DB, opts ...gen.DOOption) balanceActivity { field.RelationField } }{ - RelationField: field.NewRelation("Admin.Admin.Roles.Permissions", "models.Permission"), + RelationField: field.NewRelation("User.Admin.Roles.Permissions", "models.Permission"), Parent: struct { field.RelationField }{ - RelationField: field.NewRelation("Admin.Admin.Roles.Permissions.Parent", "models.Permission"), + RelationField: field.NewRelation("User.Admin.Roles.Permissions.Parent", "models.Permission"), }, Children: struct { 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 { field.RelationField }{ - RelationField: field.NewRelation("Admin.Discount", "models.ProductDiscount"), + RelationField: field.NewRelation("User.Discount", "models.ProductDiscount"), }, Roles: struct { field.RelationField @@ -103,21 +103,15 @@ func newBalanceActivity(db *gorm.DB, opts ...gen.DOOption) balanceActivity { field.RelationField } }{ - RelationField: field.NewRelation("Admin.Roles", "models.UserRole"), + RelationField: field.NewRelation("User.Roles", "models.UserRole"), Permissions: struct { 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{ 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() return _balanceActivity @@ -273,12 +273,12 @@ type balanceActivity struct { BalanceCurr field.String Remark field.String CreatedAt field.Time - Admin balanceActivityHasOneAdmin - - User balanceActivityBelongsToUser + User balanceActivityBelongsToUser Bill balanceActivityBelongsToBill + Admin balanceActivityBelongsToAdmin + fieldMap map[string]field.Expr } @@ -334,24 +334,24 @@ func (b *balanceActivity) fillFieldMap() { func (b balanceActivity) clone(db *gorm.DB) balanceActivity { 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.Statement.ConnPool = db.Statement.ConnPool b.Bill.db = db.Session(&gorm.Session{Initialized: true}) 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 } func (b balanceActivity) replaceDB(db *gorm.DB) balanceActivity { b.balanceActivityDo.ReplaceDB(db) - b.Admin.db = db.Session(&gorm.Session{}) b.User.db = db.Session(&gorm.Session{}) b.Bill.db = db.Session(&gorm.Session{}) + b.Admin.db = db.Session(&gorm.Session{}) return b } -type balanceActivityHasOneAdmin struct { +type balanceActivityBelongsToUser struct { db *gorm.DB 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 { if len(conds) == 0 { return &a @@ -668,6 +587,87 @@ func (a balanceActivityBelongsToBillTx) Unscoped() *balanceActivityBelongsToBill 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 } func (b balanceActivityDo) Debug() *balanceActivityDo { diff --git a/web/queries/bill.gen.go b/web/queries/bill.gen.go index ce0c62e..7302a82 100644 --- a/web/queries/bill.gen.go +++ b/web/queries/bill.gen.go @@ -35,7 +35,7 @@ func newBill(db *gorm.DB, opts ...gen.DOOption) bill { _bill.TradeID = field.NewInt32(tableName, "trade_id") _bill.ResourceID = field.NewInt32(tableName, "resource_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.Info = field.NewString(tableName, "info") _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.ResourceID = field.NewInt32(table, "resource_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.Info = field.NewString(table, "info") b.Type = field.NewInt(table, "type") @@ -301,7 +301,7 @@ func (b *bill) fillFieldMap() { b.fieldMap["trade_id"] = b.TradeID b.fieldMap["resource_id"] = b.ResourceID 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["info"] = b.Info b.fieldMap["type"] = b.Type diff --git a/web/routes.go b/web/routes.go index e287ef3..9bfba7e 100644 --- a/web/routes.go +++ b/web/routes.go @@ -198,6 +198,11 @@ func adminRouter(api fiber.Router) { bill.Post("/page", handlers.PageBillByAdmin) 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 产品 var product = api.Group("/product") product.Post("/all", handlers.AllProductByAdmin)