130 lines
3.4 KiB
Go
130 lines
3.4 KiB
Go
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"`
|
|
}
|