81 lines
2.0 KiB
Go
81 lines
2.0 KiB
Go
package admin
|
|
|
|
import (
|
|
"quyun/v2/app/http/dto"
|
|
"quyun/v2/app/requests"
|
|
"quyun/v2/app/services"
|
|
"quyun/v2/database"
|
|
"quyun/v2/database/models"
|
|
"time"
|
|
|
|
"github.com/gofiber/fiber/v3"
|
|
)
|
|
|
|
// @provider
|
|
type smsCodeSends struct{}
|
|
|
|
type SmsCodeManualSetBody struct {
|
|
Phone string `json:"phone"`
|
|
Code string `json:"code"`
|
|
}
|
|
|
|
// List
|
|
//
|
|
// @Summary 短信验证码发送记录
|
|
// @Tags Admin SMS
|
|
// @Produce json
|
|
// @Param query query dto.SmsCodeSendListQuery false "筛选条件"
|
|
// @Success 200 {object} requests.Pager{items=models.SmsCodeSend} "成功"
|
|
// @Router /admin/v1/sms-code-sends [get]
|
|
// @Bind query query
|
|
func (ctl *smsCodeSends) List(ctx fiber.Ctx, query *dto.SmsCodeSendListQuery) (*requests.Pager, error) {
|
|
if query.Pagination == nil {
|
|
query.Pagination = &requests.Pagination{}
|
|
}
|
|
query.Pagination.Format()
|
|
|
|
db := services.DB()
|
|
if db == nil {
|
|
return &requests.Pager{Pagination: *query.Pagination, Total: 0, Items: []*models.SmsCodeSend{}}, nil
|
|
}
|
|
|
|
q := db.WithContext(ctx.Context()).Model(&models.SmsCodeSend{})
|
|
if query.Phone != nil && *query.Phone != "" {
|
|
q = q.Where("phone LIKE ?", database.WrapLike(*query.Phone))
|
|
}
|
|
|
|
var total int64
|
|
if err := q.Count(&total).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var items []*models.SmsCodeSend
|
|
if err := q.
|
|
Order("sent_at desc").
|
|
Limit(int(query.Pagination.Limit)).
|
|
Offset(int(query.Pagination.Offset())).
|
|
Find(&items).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &requests.Pager{
|
|
Pagination: *query.Pagination,
|
|
Total: total,
|
|
Items: items,
|
|
}, nil
|
|
}
|
|
|
|
// ManualSet
|
|
//
|
|
// @Summary 手动设置短信验证码(用于短信认证)
|
|
// @Tags Admin SMS
|
|
// @Accept json
|
|
// @Produce json
|
|
// @Param body body SmsCodeManualSetBody true "请求体"
|
|
// @Success 200 {object} models.SmsCodeSend "成功"
|
|
// @Router /admin/v1/sms-code-sends/manual-set [post]
|
|
// @Bind body body
|
|
func (ctl *smsCodeSends) ManualSet(ctx fiber.Ctx, body *SmsCodeManualSetBody) (*models.SmsCodeSend, error) {
|
|
return services.Users.SetPhoneCode(ctx.Context(), body.Phone, body.Code, 5*time.Minute)
|
|
}
|