bindbox-game/internal/service/user/coupons_list.go
邹方成 45815bfb7d chore: 清理无用文件与优化代码结构
refactor(utils): 修复密码哈希比较逻辑错误
feat(user): 新增按状态筛选优惠券接口
docs: 添加虚拟发货与任务中心相关文档
fix(wechat): 修正Code2Session上下文传递问题
test: 补充订单折扣与积分转换测试用例
build: 更新配置文件与构建脚本
style: 清理多余的空行与注释
2025-12-18 17:35:55 +08:00

38 lines
1011 B
Go

package user
import (
"context"
"bindbox-game/internal/repository/mysql/model"
)
func (s *service) ListCoupons(ctx context.Context, userID int64, page, pageSize int) (items []*model.UserCoupons, total int64, err error) {
return s.ListCouponsByStatus(ctx, userID, 1, page, pageSize)
}
// ListCouponsByStatus 按状态获取用户优惠券列表
func (s *service) ListCouponsByStatus(ctx context.Context, userID int64, status int32, page, pageSize int) (items []*model.UserCoupons, total int64, err error) {
q := s.readDB.UserCoupons.WithContext(ctx).ReadDB().Where(
s.readDB.UserCoupons.UserID.Eq(userID),
s.readDB.UserCoupons.Status.Eq(status),
)
total, err = q.Count()
if err != nil {
return nil, 0, err
}
if page <= 0 {
page = 1
}
if pageSize <= 0 {
pageSize = 20
}
if pageSize > 100 {
pageSize = 100
}
items, err = q.Order(s.readDB.UserCoupons.ID.Desc()).Offset((page - 1) * pageSize).Limit(pageSize).Find()
if err != nil {
return nil, 0, err
}
return items, total, nil
}