Files
Message-Push-Nest/routers/api/v1/send_ways.go
T
2025-01-01 17:30:54 +08:00

226 lines
5.3 KiB
Go

package v1
import (
"fmt"
"net/http"
"github.com/gin-gonic/gin"
"message-nest/pkg/app"
"message-nest/pkg/e"
"message-nest/pkg/util"
"message-nest/service/send_way_service"
)
type DeleteMsgSendWayReq struct {
ID string `json:"id" validate:"required,len=12" label:"渠道id"`
}
// DeleteMsgSendWay 删除消息渠道
func DeleteMsgSendWay(c *gin.Context) {
var (
appG = app.Gin{C: c}
req DeleteMsgSendWayReq
)
errCode, errMsg := app.BindJsonAndPlayValid(c, &req)
if errCode != e.SUCCESS {
appG.CResponse(errCode, errMsg, nil)
return
}
sendWayService := send_way_service.SendWay{
ID: req.ID,
}
err := sendWayService.Delete()
if err != nil {
appG.CResponse(http.StatusBadRequest, fmt.Sprintf("删除发信渠道失败!%s", err), nil)
return
}
appG.CResponse(http.StatusOK, "删除发信渠道成功!", nil)
}
// GetMsgSendWay 获取消息渠道
func GetMsgSendWay(c *gin.Context) {
appG := app.Gin{C: c}
id := c.Query("id")
if id == "" {
appG.CResponse(http.StatusBadRequest, "渠道id为空!", nil)
return
}
sendWayService := send_way_service.SendWay{
ID: id,
}
way, err := sendWayService.GetByID()
if err != nil {
appG.CResponse(http.StatusBadRequest, "获取到的渠道信息为空!", nil)
return
}
appG.CResponse(http.StatusOK, "获取渠道信息成功", way)
}
// GetMsgSendWayList 获取消息渠道列表
func GetMsgSendWayList(c *gin.Context) {
appG := app.Gin{C: c}
name := c.Query("name")
type_ := c.Query("type")
offset, limit := util.GetPageSize(c)
sendWayService := send_way_service.SendWay{
Name: name,
Type: type_,
PageNum: offset,
PageSize: limit,
}
ways, err := sendWayService.GetAll()
if err != nil {
appG.CResponse(http.StatusInternalServerError, "获取渠道信息失败!", nil)
return
}
count, err := sendWayService.Count()
if err != nil {
appG.CResponse(http.StatusInternalServerError, "获取渠道信息总数失败!", nil)
return
}
appG.CResponse(http.StatusOK, "获取渠道信息成功", map[string]interface{}{
"lists": ways,
"total": count,
})
}
type AddMsgSendWayReq struct {
Name string `json:"name" validate:"required,max=100,min=1" label:"渠道名"`
Type string `json:"type" validate:"required,max=100,min=1" label:"渠道类型"`
Auth string `json:"auth" label:"渠道认证方式"`
}
// AddMsgSendWay 添加发送渠道
func AddMsgSendWay(c *gin.Context) {
var (
appG = app.Gin{C: c}
req AddMsgSendWayReq
)
currentUser := app.GetCurrentUserName(c)
errCode, errStr := app.BindJsonAndPlayValid(c, &req)
if errCode != e.SUCCESS {
appG.CResponse(errCode, errStr, nil)
return
}
sendWayService := send_way_service.SendWay{
Name: req.Name,
Type: req.Type,
Auth: req.Auth,
CreatedBy: currentUser,
ModifiedBy: currentUser,
}
diffMsg, _ := sendWayService.ValidateDiffWay()
if diffMsg != "" {
appG.CResponse(http.StatusBadRequest, diffMsg, nil)
return
}
err := sendWayService.Add()
if err != nil {
appG.CResponse(http.StatusBadRequest, fmt.Sprintf("添加渠道失败!原因:%s", err), nil)
return
}
appG.CResponse(http.StatusOK, "添加渠道成功!", nil)
}
type EditSendWayReq struct {
ID string `json:"id" validate:"required,len=12" label:"渠道id"`
Name string `json:"name" validate:"required,max=100,min=1" label:"渠道名"`
Type string `json:"type" validate:"required,max=100,min=1" label:"渠道类型"`
Auth string `json:"auth" validate:"required" label:"渠道认证信息"`
}
// EditSendWay 编辑发送渠道
func EditSendWay(c *gin.Context) {
var (
appG = app.Gin{C: c}
req = EditSendWayReq{}
)
currentUser := app.GetCurrentUserName(c)
errCode, errMsg := app.BindJsonAndPlayValid(c, &req)
if errCode != e.SUCCESS {
appG.CResponse(errCode, errMsg, nil)
return
}
sendWayService := send_way_service.SendWay{
ID: req.ID,
Name: req.Name,
Type: req.Type,
Auth: req.Auth,
ModifiedBy: currentUser,
}
diffMsg, _ := sendWayService.ValidateDiffWay()
if diffMsg != "" {
appG.CResponse(http.StatusBadRequest, diffMsg, nil)
return
}
err := sendWayService.Edit()
if err != nil {
appG.CResponse(http.StatusInternalServerError, fmt.Sprintf("编辑渠道信息失败!原因:%s", err), nil)
return
}
appG.CResponse(http.StatusOK, "编辑渠道信息成功", nil)
}
type TestSendWayReq struct {
Name string `json:"name" validate:"required,max=100,min=1" label:"渠道名"`
Type string `json:"type" validate:"required,max=100,min=1" label:"渠道类型"`
Auth string `json:"auth" validate:"required" label:"渠道认证信息"`
}
// TestSendWay 测试发送渠道
func TestSendWay(c *gin.Context) {
var (
appG = app.Gin{C: c}
req = TestSendWayReq{}
)
errCode, errMsg := app.BindJsonAndPlayValid(c, &req)
if errCode != e.SUCCESS {
appG.CResponse(errCode, errMsg, nil)
return
}
sendWayService := send_way_service.SendWay{
Name: req.Name,
Type: req.Type,
Auth: req.Auth,
}
diffMsg, msgObj := sendWayService.ValidateDiffWay()
if diffMsg != "" {
appG.CResponse(http.StatusBadRequest, diffMsg, nil)
return
}
errTestMsg, resText := sendWayService.TestSendWay(msgObj)
if errTestMsg != "" {
appG.CResponse(http.StatusInternalServerError, errTestMsg, nil)
return
}
msg := "测试渠道信息成功"
if resText != "" {
msg += ", 返回信息:" + resText
}
appG.CResponse(http.StatusOK, msg, nil)
}