宇恒一号官网
This commit is contained in:
94
server/handlers/sms_config.go
Normal file
94
server/handlers/sms_config.go
Normal file
@@ -0,0 +1,94 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
"go.mongodb.org/mongo-driver/v2/bson"
|
||||
"go.mongodb.org/mongo-driver/v2/mongo"
|
||||
"go.mongodb.org/mongo-driver/v2/mongo/options"
|
||||
|
||||
"yh_web/server/config"
|
||||
"yh_web/server/models"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
const smsConfigDocID = "sms_platform"
|
||||
|
||||
// GetSMSConfig 获取短信平台配置(仅超级用户 role_id=0, role=admin)
|
||||
func GetSMSConfig(c *gin.Context) {
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
|
||||
defer cancel()
|
||||
|
||||
coll := config.GetDB(config.DBName).Collection("system_config")
|
||||
var cfg models.SMSConfig
|
||||
err := coll.FindOne(ctx, bson.M{"_id": smsConfigDocID}).Decode(&cfg)
|
||||
if err != nil {
|
||||
if err == mongo.ErrNoDocuments {
|
||||
c.JSON(http.StatusOK, models.SMSConfig{})
|
||||
return
|
||||
}
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
c.JSON(http.StatusOK, cfg)
|
||||
}
|
||||
|
||||
// SMSConfigUpdateInput 短信配置更新
|
||||
type SMSConfigUpdateInput struct {
|
||||
Provider string `json:"provider"`
|
||||
AccessKey string `json:"access_key"`
|
||||
SecretKey string `json:"secret_key"`
|
||||
SignName string `json:"sign_name"`
|
||||
TemplateID string `json:"template_id"`
|
||||
Enabled *bool `json:"enabled"`
|
||||
}
|
||||
|
||||
// UpdateSMSConfig 更新短信平台配置(仅超级用户)
|
||||
func UpdateSMSConfig(c *gin.Context) {
|
||||
var input SMSConfigUpdateInput
|
||||
if err := c.ShouldBindJSON(&input); err != nil {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
|
||||
defer cancel()
|
||||
|
||||
coll := config.GetDB(config.DBName).Collection("system_config")
|
||||
update := bson.M{}
|
||||
if input.Provider != "" {
|
||||
update["provider"] = input.Provider
|
||||
}
|
||||
if input.AccessKey != "" {
|
||||
update["access_key"] = input.AccessKey
|
||||
}
|
||||
if input.SecretKey != "" {
|
||||
update["secret_key"] = input.SecretKey
|
||||
}
|
||||
if input.SignName != "" {
|
||||
update["sign_name"] = input.SignName
|
||||
}
|
||||
if input.TemplateID != "" {
|
||||
update["template_id"] = input.TemplateID
|
||||
}
|
||||
if input.Enabled != nil {
|
||||
update["enabled"] = *input.Enabled
|
||||
}
|
||||
|
||||
if len(update) == 0 {
|
||||
c.JSON(http.StatusBadRequest, gin.H{"error": "无有效更新字段"})
|
||||
return
|
||||
}
|
||||
|
||||
opts := options.UpdateOne().SetUpsert(true)
|
||||
_, err := coll.UpdateOne(ctx, bson.M{"_id": smsConfigDocID}, bson.M{"$set": update}, opts)
|
||||
if err != nil {
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
|
||||
return
|
||||
}
|
||||
|
||||
c.JSON(http.StatusOK, gin.H{"message": "配置已保存"})
|
||||
}
|
||||
Reference in New Issue
Block a user