余额变动接口
This commit is contained in:
@@ -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
|
||||||
-- --------------------------
|
-- --------------------------
|
||||||
|
|||||||
@@ -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") // 读取指定用户的余额变动列表
|
||||||
)
|
)
|
||||||
|
|||||||
129
web/handlers/balance_activity.go
Normal file
129
web/handlers/balance_activity.go
Normal 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"`
|
||||||
|
}
|
||||||
@@ -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))
|
||||||
|
|||||||
@@ -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 获取账单列表
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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"` // 手机号码
|
||||||
|
|||||||
@@ -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"`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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"`
|
||||||
|
|||||||
@@ -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-native,2-browser,3-web,4-api
|
Spec ClientSpec `json:"spec" gorm:"column:spec"` // 安全规范:1-native,2-browser,3-web,4-api
|
||||||
Name string `json:"name" gorm:"column:name"` // 名称
|
Name string `json:"name" gorm:"column:name"` // 名称
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user