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"` }