mirror of
https://github.com/songquanpeng/message-pusher.git
synced 2024-05-03 08:45:04 +08:00
224 lines
4.6 KiB
Go
224 lines
4.6 KiB
Go
package controller
|
|
|
|
import (
|
|
"message-pusher/channel"
|
|
"message-pusher/common"
|
|
"message-pusher/model"
|
|
"net/http"
|
|
"strconv"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func GetAllChannels(c *gin.Context) {
|
|
if c.Query("brief") != "" {
|
|
GetBriefChannels(c)
|
|
return
|
|
}
|
|
userId := c.GetInt("id")
|
|
p, _ := strconv.Atoi(c.Query("p"))
|
|
if p < 0 {
|
|
p = 0
|
|
}
|
|
channels, err := model.GetChannelsByUserId(userId, p*common.ItemsPerPage, common.ItemsPerPage)
|
|
if err != nil {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"success": false,
|
|
"message": err.Error(),
|
|
})
|
|
return
|
|
}
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"success": true,
|
|
"message": "",
|
|
"data": channels,
|
|
})
|
|
return
|
|
}
|
|
|
|
func GetBriefChannels(c *gin.Context) {
|
|
userId := c.GetInt("id")
|
|
channels, err := model.GetBriefChannelsByUserId(userId)
|
|
if err != nil {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"success": false,
|
|
"message": err.Error(),
|
|
})
|
|
return
|
|
}
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"success": true,
|
|
"message": "",
|
|
"data": channels,
|
|
})
|
|
return
|
|
}
|
|
|
|
func SearchChannels(c *gin.Context) {
|
|
userId := c.GetInt("id")
|
|
keyword := c.Query("keyword")
|
|
channels, err := model.SearchChannels(userId, keyword)
|
|
if err != nil {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"success": false,
|
|
"message": err.Error(),
|
|
})
|
|
return
|
|
}
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"success": true,
|
|
"message": "",
|
|
"data": channels,
|
|
})
|
|
return
|
|
}
|
|
|
|
func GetChannel(c *gin.Context) {
|
|
id, err := strconv.Atoi(c.Param("id"))
|
|
userId := c.GetInt("id")
|
|
if err != nil {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"success": false,
|
|
"message": err.Error(),
|
|
})
|
|
return
|
|
}
|
|
channel_, err := model.GetChannelById(id, userId, false)
|
|
if err != nil {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"success": false,
|
|
"message": err.Error(),
|
|
})
|
|
return
|
|
}
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"success": true,
|
|
"message": "",
|
|
"data": channel_,
|
|
})
|
|
return
|
|
}
|
|
|
|
func AddChannel(c *gin.Context) {
|
|
channel_ := model.Channel{}
|
|
err := c.ShouldBindJSON(&channel_)
|
|
if err != nil {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"success": false,
|
|
"message": err.Error(),
|
|
})
|
|
return
|
|
}
|
|
if len(channel_.Name) == 0 || len(channel_.Name) > 20 {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"success": false,
|
|
"message": "通道名称长度必须在1-20之间",
|
|
})
|
|
return
|
|
}
|
|
if channel_.Name == "email" {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"success": false,
|
|
"message": "不能使用系统保留名称",
|
|
})
|
|
return
|
|
}
|
|
cleanChannel := model.Channel{
|
|
Type: channel_.Type,
|
|
UserId: c.GetInt("id"),
|
|
Name: channel_.Name,
|
|
Description: channel_.Description,
|
|
Status: common.ChannelStatusEnabled,
|
|
Secret: channel_.Secret,
|
|
AppId: channel_.AppId,
|
|
AccountId: channel_.AccountId,
|
|
URL: channel_.URL,
|
|
Other: channel_.Other,
|
|
CreatedTime: common.GetTimestamp(),
|
|
}
|
|
err = cleanChannel.Insert()
|
|
if err != nil {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"success": false,
|
|
"message": err.Error(),
|
|
})
|
|
return
|
|
}
|
|
channel.TokenStoreAddChannel(&cleanChannel)
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"success": true,
|
|
"message": "",
|
|
})
|
|
return
|
|
}
|
|
|
|
func DeleteChannel(c *gin.Context) {
|
|
id, _ := strconv.Atoi(c.Param("id"))
|
|
userId := c.GetInt("id")
|
|
channel_, err := model.DeleteChannelById(id, userId)
|
|
if err != nil {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"success": false,
|
|
"message": err.Error(),
|
|
})
|
|
return
|
|
}
|
|
channel.TokenStoreRemoveChannel(channel_)
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"success": true,
|
|
"message": "",
|
|
})
|
|
return
|
|
}
|
|
|
|
func UpdateChannel(c *gin.Context) {
|
|
userId := c.GetInt("id")
|
|
statusOnly := c.Query("status_only")
|
|
channel_ := model.Channel{}
|
|
err := c.ShouldBindJSON(&channel_)
|
|
if err != nil {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"success": false,
|
|
"message": err.Error(),
|
|
})
|
|
return
|
|
}
|
|
oldChannel, err := model.GetChannelById(channel_.Id, userId, true)
|
|
if err != nil {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"success": false,
|
|
"message": err.Error(),
|
|
})
|
|
return
|
|
}
|
|
cleanChannel := *oldChannel
|
|
if statusOnly != "" {
|
|
cleanChannel.Status = channel_.Status
|
|
} else {
|
|
// If you add more fields, please also update channel_.Update()
|
|
cleanChannel.Type = channel_.Type
|
|
cleanChannel.Name = channel_.Name
|
|
cleanChannel.Description = channel_.Description
|
|
cleanChannel.Secret = channel_.Secret
|
|
cleanChannel.AppId = channel_.AppId
|
|
cleanChannel.AccountId = channel_.AccountId
|
|
cleanChannel.URL = channel_.URL
|
|
cleanChannel.Other = channel_.Other
|
|
}
|
|
err = cleanChannel.Update()
|
|
if err != nil {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"success": false,
|
|
"message": err.Error(),
|
|
})
|
|
return
|
|
}
|
|
channel.TokenStoreUpdateChannel(&cleanChannel, oldChannel)
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"success": true,
|
|
"message": "",
|
|
"data": cleanChannel,
|
|
})
|
|
return
|
|
}
|