227 lines
6.3 KiB
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)
|
|
}
|