coai/channel/controller.go
2024-01-24 18:00:18 +08:00

196 lines
3.9 KiB
Go

package channel
import (
"chat/utils"
"github.com/gin-gonic/gin"
"net/http"
)
type SyncChargeForm struct {
Overwrite bool `json:"overwrite"`
Data ChargeSequence `json:"data"`
}
func GetInfo(c *gin.Context) {
c.JSON(http.StatusOK, SystemInstance.AsInfo())
}
func DeleteChannel(c *gin.Context) {
id := c.Param("id")
state := ConduitInstance.DeleteChannel(utils.ParseInt(id))
c.JSON(http.StatusOK, gin.H{
"status": state == nil,
"error": utils.GetError(state),
})
}
func ActivateChannel(c *gin.Context) {
id := c.Param("id")
state := ConduitInstance.ActivateChannel(utils.ParseInt(id))
c.JSON(http.StatusOK, gin.H{
"status": state == nil,
"error": utils.GetError(state),
})
}
func DeactivateChannel(c *gin.Context) {
id := c.Param("id")
state := ConduitInstance.DeactivateChannel(utils.ParseInt(id))
c.JSON(http.StatusOK, gin.H{
"status": state == nil,
"error": utils.GetError(state),
})
}
func GetChannelList(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"status": true,
"data": ConduitInstance.Sequence,
})
}
func GetChannel(c *gin.Context) {
id := c.Param("id")
channel := ConduitInstance.Sequence.GetChannelById(utils.ParseInt(id))
c.JSON(http.StatusOK, gin.H{
"status": channel != nil,
"data": channel,
})
}
func CreateChannel(c *gin.Context) {
var channel Channel
if err := c.ShouldBindJSON(&channel); err != nil {
c.JSON(http.StatusBadRequest, gin.H{
"status": false,
"error": err.Error(),
})
return
}
state := ConduitInstance.CreateChannel(&channel)
c.JSON(http.StatusOK, gin.H{
"status": state == nil,
"error": utils.GetError(state),
})
}
func UpdateChannel(c *gin.Context) {
var channel Channel
if err := c.ShouldBindJSON(&channel); err != nil {
c.JSON(http.StatusBadRequest, gin.H{
"status": false,
"error": err.Error(),
})
return
}
id := c.Param("id")
channel.Id = utils.ParseInt(id)
state := ConduitInstance.UpdateChannel(channel.Id, &channel)
c.JSON(http.StatusOK, gin.H{
"status": state == nil,
"error": utils.GetError(state),
})
}
func SetCharge(c *gin.Context) {
var charge Charge
if err := c.ShouldBindJSON(&charge); err != nil {
c.JSON(http.StatusBadRequest, gin.H{
"status": false,
"error": err.Error(),
})
return
}
state := ChargeInstance.SetRule(charge)
c.JSON(http.StatusOK, gin.H{
"status": state == nil,
"error": utils.GetError(state),
})
}
func GetChargeList(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"status": true,
"data": ChargeInstance.ListRules(),
})
}
func DeleteCharge(c *gin.Context) {
id := c.Param("id")
state := ChargeInstance.DeleteRule(utils.ParseInt(id))
c.JSON(http.StatusOK, gin.H{
"status": state == nil,
"error": utils.GetError(state),
})
}
func SyncCharge(c *gin.Context) {
var form SyncChargeForm
if err := c.ShouldBindJSON(&form); err != nil {
c.JSON(http.StatusBadRequest, gin.H{
"status": false,
"error": err.Error(),
})
}
state := ChargeInstance.SyncRules(form.Data, form.Overwrite)
c.JSON(http.StatusOK, gin.H{
"status": state == nil,
"error": utils.GetError(state),
})
}
func GetConfig(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"status": true,
"data": SystemInstance,
})
}
func UpdateConfig(c *gin.Context) {
var config SystemConfig
if err := c.ShouldBindJSON(&config); err != nil {
c.JSON(http.StatusBadRequest, gin.H{
"status": false,
"error": err.Error(),
})
return
}
state := SystemInstance.UpdateConfig(&config)
c.JSON(http.StatusOK, gin.H{
"status": state == nil,
"error": utils.GetError(state),
})
}
func GetPlanConfig(c *gin.Context) {
c.JSON(http.StatusOK, PlanInstance)
}
func UpdatePlanConfig(c *gin.Context) {
var config PlanManager
if err := c.ShouldBindJSON(&config); err != nil {
c.JSON(http.StatusBadRequest, gin.H{
"status": false,
"error": err.Error(),
})
return
}
state := PlanInstance.UpdateConfig(&config)
c.JSON(http.StatusOK, gin.H{
"status": state == nil,
"error": utils.GetError(state),
})
}