pet-ai/server/plugin/wechat-integration/api/mp_draft_api.go

227 lines
6.3 KiB
Go

package api
import (
"strconv"
"github.com/flipped-aurora/gin-vue-admin/server/global"
"github.com/flipped-aurora/gin-vue-admin/server/model/common/response"
wechatResponse "github.com/flipped-aurora/gin-vue-admin/server/plugin/wechat-integration/model/response"
"github.com/flipped-aurora/gin-vue-admin/server/plugin/wechat-integration/service"
"github.com/gin-gonic/gin"
"go.uber.org/zap"
)
type MpDraftApi struct{}
var mpDraftService = service.ServiceGroupApp.MpDraftService
// GetDraftList 获取草稿列表
// @Tags MpDraft
// @Summary 获取草稿列表
// @Description 获取公众号草稿列表
// @Accept json
// @Produce json
// @Param page query int false "页码"
// @Param pageSize query int false "每页数量"
// @Param title query string false "标题"
// @Param author query string false "作者"
// @Success 200 {object} response.Response{data=response.PageResult} "获取成功"
// @Router /wechat/mp/draft [get]
func (m *MpDraftApi) GetDraftList(c *gin.Context) {
page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))
pageSize, _ := strconv.Atoi(c.DefaultQuery("pageSize", "10"))
title := c.Query("title")
author := c.Query("author")
if page <= 0 {
page = 1
}
if pageSize <= 0 || pageSize > 100 {
pageSize = 10
}
draftResponse, err := mpDraftService.GetDraftList(page, pageSize, title, author)
if err != nil {
global.GVA_LOG.Error("获取草稿列表失败!", zap.Error(err))
response.FailWithMessage("获取失败: "+err.Error(), c)
return
}
response.OkWithDetailed(wechatResponse.PageResult{
List: draftResponse.Items,
Total: int64(draftResponse.TotalCount),
Page: page,
PageSize: pageSize,
}, "获取成功", c)
}
// GetDraftInfo 获取草稿详情
// @Tags MpDraft
// @Summary 获取草稿详情
// @Description 获取公众号草稿详情
// @Accept json
// @Produce json
// @Param id path string true "草稿MediaID"
// @Success 200 {object} response.Response{data=service.DraftItem} "获取成功"
// @Router /wechat/mp/draft/{id} [get]
func (m *MpDraftApi) GetDraftInfo(c *gin.Context) {
mediaID := c.Param("id")
if mediaID == "" {
response.FailWithMessage("草稿MediaID不能为空", c)
return
}
draft, err := mpDraftService.GetDraftInfo(mediaID)
if err != nil {
global.GVA_LOG.Error("获取草稿详情失败!", zap.Error(err))
response.FailWithMessage("获取失败: "+err.Error(), c)
return
}
response.OkWithData(draft, c)
}
// CreateDraft 创建草稿
// @Tags MpDraft
// @Summary 创建草稿
// @Description 创建公众号草稿
// @Accept json
// @Produce json
// @Param data body service.CreateDraftRequest true "草稿信息"
// @Success 200 {object} response.Response "创建成功"
// @Router /wechat/mp/draft [post]
func (m *MpDraftApi) CreateDraft(c *gin.Context) {
var req service.CreateDraftRequest
err := c.ShouldBindJSON(&req)
if err != nil {
response.FailWithMessage(err.Error(), c)
return
}
mediaID, err := mpDraftService.CreateDraft(&req)
if err != nil {
global.GVA_LOG.Error("创建草稿失败!", zap.Error(err))
response.FailWithMessage("创建失败: "+err.Error(), c)
return
}
response.OkWithData(map[string]string{"mediaId": mediaID}, c)
}
// UpdateDraft 更新草稿
// @Tags MpDraft
// @Summary 更新草稿
// @Description 更新公众号草稿
// @Accept json
// @Produce json
// @Param data body service.UpdateDraftRequest true "草稿信息"
// @Success 200 {object} response.Response "更新成功"
// @Router /wechat/mp/draft [put]
func (m *MpDraftApi) UpdateDraft(c *gin.Context) {
var req service.UpdateDraftRequest
err := c.ShouldBindJSON(&req)
if err != nil {
response.FailWithMessage(err.Error(), c)
return
}
err = mpDraftService.UpdateDraft(&req)
if err != nil {
global.GVA_LOG.Error("更新草稿失败!", zap.Error(err))
response.FailWithMessage("更新失败: "+err.Error(), c)
return
}
response.OkWithMessage("更新成功", c)
}
// DeleteDraft 删除草稿
// @Tags MpDraft
// @Summary 删除草稿
// @Description 删除公众号草稿
// @Accept json
// @Produce json
// @Param id path string true "草稿MediaID"
// @Success 200 {object} response.Response "删除成功"
// @Router /wechat/mp/draft/{id} [delete]
func (m *MpDraftApi) DeleteDraft(c *gin.Context) {
mediaID := c.Param("id")
if mediaID == "" {
response.FailWithMessage("草稿MediaID不能为空", c)
return
}
err := mpDraftService.DeleteDraft(mediaID)
if err != nil {
global.GVA_LOG.Error("删除草稿失败!", zap.Error(err))
response.FailWithMessage("删除失败: "+err.Error(), c)
return
}
response.OkWithMessage("删除成功", c)
}
// PublishDraft 发布草稿
// @Tags MpDraft
// @Summary 发布草稿
// @Description 发布公众号草稿
// @Accept json
// @Produce json
// @Param id path string true "草稿MediaID"
// @Success 200 {object} response.Response "发布成功"
// @Router /wechat/mp/draft/{id}/publish [post]
func (m *MpDraftApi) PublishDraft(c *gin.Context) {
mediaID := c.Param("id")
if mediaID == "" {
response.FailWithMessage("草稿MediaID不能为空", c)
return
}
err := mpDraftService.PublishDraft(mediaID)
if err != nil {
global.GVA_LOG.Error("发布草稿失败!", zap.Error(err))
response.FailWithMessage("发布失败: "+err.Error(), c)
return
}
response.OkWithMessage("发布成功", c)
}
// SyncDrafts 同步草稿
// @Tags MpDraft
// @Summary 同步草稿
// @Description 同步公众号草稿
// @Accept json
// @Produce json
// @Success 200 {object} response.Response "同步成功"
// @Router /wechat/mp/draft/sync [post]
func (m *MpDraftApi) SyncDrafts(c *gin.Context) {
err := mpDraftService.SyncDrafts()
if err != nil {
global.GVA_LOG.Error("同步草稿失败!", zap.Error(err))
response.FailWithMessage("同步失败: "+err.Error(), c)
return
}
response.OkWithMessage("同步成功", c)
}
// GetDraftCount 获取草稿数量统计
// @Tags MpDraft
// @Summary 获取草稿数量统计
// @Description 获取草稿数量统计信息
// @Accept json
// @Produce json
// @Success 200 {object} response.Response{data=map[string]int64} "获取成功"
// @Router /wechat/mp/draft/count [get]
func (m *MpDraftApi) GetDraftCount(c *gin.Context) {
count, err := mpDraftService.GetDraftCount()
if err != nil {
global.GVA_LOG.Error("获取草稿数量统计失败!", zap.Error(err))
response.FailWithMessage("获取失败: "+err.Error(), c)
return
}
response.OkWithData(count, c)
}