|
- package controller
-
- import (
- "strconv"
-
- "github.com/QuantumNous/new-api/common"
- "github.com/QuantumNous/new-api/model"
-
- "github.com/gin-gonic/gin"
- )
-
- func GetAllEmailQuotaRules(c *gin.Context) {
- list, err := model.GetAllEmailQuotaRules()
- if err != nil {
- common.ApiError(c, err)
- return
- }
- common.ApiSuccess(c, list)
- }
-
- type CreateEmailQuotaRuleRequest struct {
- EmailSuffix string `json:"email_suffix" binding:"required"`
- Quota int64 `json:"quota" binding:"required"`
- Enabled *bool `json:"enabled"`
- Description string `json:"description"`
- }
-
- func CreateEmailQuotaRule(c *gin.Context) {
- var req CreateEmailQuotaRuleRequest
- if err := c.ShouldBindJSON(&req); err != nil {
- common.ApiError(c, err)
- return
- }
-
- existing, _ := model.GetEmailQuotaRuleBySuffix(req.EmailSuffix)
- if existing != nil {
- common.ApiErrorMsg(c, "该邮箱后缀已存在")
- return
- }
-
- enabled := true
- if req.Enabled != nil {
- enabled = *req.Enabled
- }
-
- rule := &model.EmailQuotaRule{
- EmailSuffix: req.EmailSuffix,
- Quota: req.Quota,
- Enabled: enabled,
- Description: req.Description,
- }
- if err := rule.Insert(); err != nil {
- common.ApiError(c, err)
- return
- }
-
- common.ApiSuccess(c, rule)
- }
-
- type UpdateEmailQuotaRuleRequest struct {
- EmailSuffix string `json:"email_suffix"`
- Quota *int64 `json:"quota"`
- Enabled *bool `json:"enabled"`
- Description *string `json:"description"`
- }
-
- func UpdateEmailQuotaRule(c *gin.Context) {
- idStr := c.Param("id")
- id, err := strconv.Atoi(idStr)
- if err != nil {
- common.ApiError(c, err)
- return
- }
-
- var req UpdateEmailQuotaRuleRequest
- if err := c.ShouldBindJSON(&req); err != nil {
- common.ApiError(c, err)
- return
- }
-
- rule, err := model.GetEmailQuotaRuleById(id)
- if err != nil {
- common.ApiError(c, err)
- return
- }
-
- if req.EmailSuffix != "" && req.EmailSuffix != rule.EmailSuffix {
- existing, _ := model.GetEmailQuotaRuleBySuffix(req.EmailSuffix)
- if existing != nil && existing.Id != id {
- common.ApiErrorMsg(c, "该邮箱后缀已存在")
- return
- }
- rule.EmailSuffix = req.EmailSuffix
- }
- if req.Quota != nil {
- rule.Quota = *req.Quota
- }
- if req.Enabled != nil {
- rule.Enabled = *req.Enabled
- }
- if req.Description != nil {
- rule.Description = *req.Description
- }
-
- if err := rule.Update(); err != nil {
- common.ApiError(c, err)
- return
- }
-
- common.ApiSuccess(c, rule)
- }
-
- func DeleteEmailQuotaRule(c *gin.Context) {
- idStr := c.Param("id")
- id, err := strconv.Atoi(idStr)
- if err != nil {
- common.ApiError(c, err)
- return
- }
-
- rule := &model.EmailQuotaRule{Id: id}
- if err := rule.Delete(); err != nil {
- common.ApiError(c, err)
- return
- }
-
- common.ApiSuccess(c, nil)
- }
|