新增科普文章来源管理
This commit is contained in:
parent
aab466b4ea
commit
653694d98d
228
api/controller/ArticleScienceSource.go
Normal file
228
api/controller/ArticleScienceSource.go
Normal file
@ -0,0 +1,228 @@
|
|||||||
|
package controller
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
"hospital-admin-api/api/dao"
|
||||||
|
"hospital-admin-api/api/dto"
|
||||||
|
"hospital-admin-api/api/model"
|
||||||
|
"hospital-admin-api/api/requests"
|
||||||
|
"hospital-admin-api/api/responses"
|
||||||
|
"hospital-admin-api/global"
|
||||||
|
"hospital-admin-api/utils"
|
||||||
|
"strconv"
|
||||||
|
)
|
||||||
|
|
||||||
|
type ArticleScienceSource struct{}
|
||||||
|
|
||||||
|
// GetArticleScienceSourcePage 获取科普文章来源列表-分页
|
||||||
|
func (b *ArticleScienceSource) GetArticleScienceSourcePage(c *gin.Context) {
|
||||||
|
ArticleScienceSourceRequest := requests.ArticleScienceSourceRequest{}
|
||||||
|
req := ArticleScienceSourceRequest.GetArticleScienceSourcePage
|
||||||
|
if err := c.ShouldBindJSON(&req); err != nil {
|
||||||
|
responses.FailWithMessage(err.Error(), c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 参数验证
|
||||||
|
if err := global.Validate.Struct(req); err != nil {
|
||||||
|
responses.FailWithMessage(utils.Translate(err), c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if req.Page == 0 {
|
||||||
|
req.Page = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
if req.PageSize == 0 {
|
||||||
|
req.PageSize = 20
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取分类数据
|
||||||
|
articleScienceSourceDao := dao.ArticleScienceSourceDao{}
|
||||||
|
articleScienceSource, total, err := articleScienceSourceDao.GetArticleScienceSourcePageSearch(req, req.Page, req.PageSize)
|
||||||
|
if err != nil {
|
||||||
|
responses.FailWithMessage(err.Error(), c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 处理返回值
|
||||||
|
g := dto.GetArticleScienceSourceListDto(articleScienceSource)
|
||||||
|
|
||||||
|
result := make(map[string]interface{})
|
||||||
|
result["page"] = req.Page
|
||||||
|
result["page_size"] = req.PageSize
|
||||||
|
result["total"] = total
|
||||||
|
result["data"] = g
|
||||||
|
responses.OkWithData(result, c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetArticleScienceSourceList 获取科普文章来源列表
|
||||||
|
func (b *ArticleScienceSource) GetArticleScienceSourceList(c *gin.Context) {
|
||||||
|
ArticleScienceSourceRequest := requests.ArticleScienceSourceRequest{}
|
||||||
|
req := ArticleScienceSourceRequest.GetArticleScienceSourceList
|
||||||
|
if err := c.ShouldBind(&req); err != nil {
|
||||||
|
responses.FailWithMessage(err.Error(), c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 参数验证
|
||||||
|
if err := global.Validate.Struct(req); err != nil {
|
||||||
|
responses.FailWithMessage(utils.Translate(err), c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取分类数据
|
||||||
|
articleScienceSourceDao := dao.ArticleScienceSourceDao{}
|
||||||
|
articleScienceSource, err := articleScienceSourceDao.GetArticleScienceSourceListSearch(req)
|
||||||
|
if err != nil {
|
||||||
|
responses.FailWithMessage(err.Error(), c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 处理返回值
|
||||||
|
g := dto.GetArticleScienceSourceListDto(articleScienceSource)
|
||||||
|
|
||||||
|
responses.OkWithData(g, c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetArticleScienceSource 获取科普文章来源详情
|
||||||
|
func (b *ArticleScienceSource) GetArticleScienceSource(c *gin.Context) {
|
||||||
|
id := c.Param("source_id")
|
||||||
|
if id == "" {
|
||||||
|
responses.FailWithMessage("缺少参数", c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 将 id 转换为 int64 类型
|
||||||
|
sourceId, err := strconv.ParseInt(id, 10, 64)
|
||||||
|
if err != nil {
|
||||||
|
responses.Fail(c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取科普文章来源数据
|
||||||
|
articleScienceSourceDao := dao.ArticleScienceSourceDao{}
|
||||||
|
articleScienceSource, err := articleScienceSourceDao.GetArticleScienceSourceById(sourceId)
|
||||||
|
if err != nil {
|
||||||
|
responses.FailWithMessage("异常", c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 处理返回值
|
||||||
|
g := dto.GetArticleScienceSourceDto(articleScienceSource)
|
||||||
|
|
||||||
|
responses.OkWithData(g, c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddArticleScienceSource 新增科普文章来源
|
||||||
|
func (b *ArticleScienceSource) AddArticleScienceSource(c *gin.Context) {
|
||||||
|
ArticleScienceSourceRequest := requests.ArticleScienceSourceRequest{}
|
||||||
|
req := ArticleScienceSourceRequest.AddArticleScienceSource
|
||||||
|
if err := c.ShouldBind(&req); err != nil {
|
||||||
|
responses.FailWithMessage(err.Error(), c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 参数验证
|
||||||
|
if err := global.Validate.Struct(req); err != nil {
|
||||||
|
responses.FailWithMessage(utils.Translate(err), c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 开始事务
|
||||||
|
tx := global.Db.Begin()
|
||||||
|
defer func() {
|
||||||
|
if r := recover(); r != nil {
|
||||||
|
tx.Rollback()
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
articleScienceSource := &model.ArticleScienceSource{
|
||||||
|
SourceName: req.SourceName,
|
||||||
|
SourceImage: utils.RemoveOssDomain(req.SourceImage),
|
||||||
|
}
|
||||||
|
|
||||||
|
ArticleScienceSourceDao := dao.ArticleScienceSourceDao{}
|
||||||
|
articleScienceSource, err := ArticleScienceSourceDao.AddArticleScienceSource(tx, articleScienceSource)
|
||||||
|
if err != nil {
|
||||||
|
tx.Rollback()
|
||||||
|
responses.FailWithMessage(err.Error(), c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
tx.Commit()
|
||||||
|
responses.Ok(c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// PutArticleScienceSource 修改科普文章来源
|
||||||
|
func (b *ArticleScienceSource) PutArticleScienceSource(c *gin.Context) {
|
||||||
|
ArticleScienceSourceRequest := requests.ArticleScienceSourceRequest{}
|
||||||
|
req := ArticleScienceSourceRequest.PutArticleScienceSource
|
||||||
|
if err := c.ShouldBind(&req); err != nil {
|
||||||
|
responses.FailWithMessage(err.Error(), c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 参数验证
|
||||||
|
if err := global.Validate.Struct(req); err != nil {
|
||||||
|
responses.FailWithMessage(utils.Translate(err), c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
id := c.Param("source_id")
|
||||||
|
if id == "" {
|
||||||
|
responses.FailWithMessage("缺少参数", c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 将 id 转换为 int64 类型
|
||||||
|
sourceId, err := strconv.ParseInt(id, 10, 64)
|
||||||
|
if err != nil {
|
||||||
|
responses.Fail(c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取科普分类数据
|
||||||
|
articleScienceSourceDao := dao.ArticleScienceSourceDao{}
|
||||||
|
articleScienceSource, err := articleScienceSourceDao.GetArticleScienceSourceById(sourceId)
|
||||||
|
if err != nil {
|
||||||
|
responses.FailWithMessage("分类异常", c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改值
|
||||||
|
articleScienceSourceData := make(map[string]interface{})
|
||||||
|
|
||||||
|
// 来源名称
|
||||||
|
if req.SourceName != articleScienceSource.SourceName {
|
||||||
|
articleScienceSourceData["source_name"] = req.SourceName
|
||||||
|
}
|
||||||
|
|
||||||
|
// 来源图片
|
||||||
|
sourceImage := utils.RemoveOssDomain(req.SourceImage)
|
||||||
|
if sourceImage != articleScienceSource.SourceImage {
|
||||||
|
articleScienceSourceData["source_image"] = sourceImage
|
||||||
|
}
|
||||||
|
|
||||||
|
// 开始事务
|
||||||
|
tx := global.Db.Begin()
|
||||||
|
defer func() {
|
||||||
|
if r := recover(); r != nil {
|
||||||
|
tx.Rollback()
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
if len(articleScienceSourceData) > 0 {
|
||||||
|
err = articleScienceSourceDao.EditArticleScienceSourceById(tx, sourceId, articleScienceSourceData)
|
||||||
|
if err != nil {
|
||||||
|
tx.Rollback()
|
||||||
|
responses.FailWithMessage("操作失败", c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
tx.Commit()
|
||||||
|
}
|
||||||
|
|
||||||
|
tx.Commit()
|
||||||
|
responses.Ok(c)
|
||||||
|
}
|
||||||
@ -110,4 +110,5 @@ type basicManage struct {
|
|||||||
// 文章管理
|
// 文章管理
|
||||||
type articleManage struct {
|
type articleManage struct {
|
||||||
ArticleScience
|
ArticleScience
|
||||||
|
ArticleScienceSource
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import (
|
|||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
"gorm.io/gorm/clause"
|
"gorm.io/gorm/clause"
|
||||||
"hospital-admin-api/api/model"
|
"hospital-admin-api/api/model"
|
||||||
|
"hospital-admin-api/api/requests"
|
||||||
"hospital-admin-api/global"
|
"hospital-admin-api/global"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -156,3 +157,57 @@ func (r *ArticleScienceSourceDao) GetArticleScienceSourceListByTime(maps interfa
|
|||||||
}
|
}
|
||||||
return m, nil
|
return m, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetArticleScienceSourcePageSearch 获取列表-分页
|
||||||
|
func (r *ArticleScienceSourceDao) GetArticleScienceSourcePageSearch(req requests.GetArticleScienceSourcePage, page, pageSize int) (m []*model.ArticleScienceSource, total int64, err error) {
|
||||||
|
var totalRecords int64
|
||||||
|
|
||||||
|
// 构建查询条件
|
||||||
|
query := global.Db.Model(&model.ArticleScienceSource{})
|
||||||
|
|
||||||
|
// 来源名称
|
||||||
|
if req.SourceName != "" {
|
||||||
|
query = query.Where("source_name LIKE ?", "%"+req.SourceName+"%")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 排序
|
||||||
|
if req.Order != nil {
|
||||||
|
if req.Order.UpdatedAt != "" {
|
||||||
|
query = query.Order("updated_at " + req.Order.UpdatedAt)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 排序
|
||||||
|
query = query.Order("created_at desc")
|
||||||
|
|
||||||
|
// 查询总数量
|
||||||
|
if err := query.Count(&totalRecords).Error; err != nil {
|
||||||
|
return nil, 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = query.Scopes(model.Paginate(page, pageSize)).Find(&m).Error
|
||||||
|
if err != nil {
|
||||||
|
return nil, 0, err
|
||||||
|
}
|
||||||
|
return m, totalRecords, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetArticleScienceSourceListSearch 获取列表
|
||||||
|
func (r *ArticleScienceSourceDao) GetArticleScienceSourceListSearch(req requests.GetArticleScienceSourceList) (m []*model.ArticleScienceSource, err error) {
|
||||||
|
// 构建查询条件
|
||||||
|
query := global.Db.Model(&model.ArticleScienceSource{})
|
||||||
|
|
||||||
|
// 来源名称
|
||||||
|
if req.SourceName != "" {
|
||||||
|
query = query.Where("source_name LIKE ?", "%"+req.SourceName+"%")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 排序
|
||||||
|
query = query.Order("created_at desc")
|
||||||
|
|
||||||
|
err = query.Scopes(model.Paginate(1, 10)).Find(&m).Error
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return m, nil
|
||||||
|
}
|
||||||
|
|||||||
38
api/requests/ArticleScienceSource.go
Normal file
38
api/requests/ArticleScienceSource.go
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
package requests
|
||||||
|
|
||||||
|
type ArticleScienceSourceRequest struct {
|
||||||
|
GetArticleScienceSourcePage // 获取科普文章来源列表-分页
|
||||||
|
GetArticleScienceSourceList // 获取科普文章来源列表
|
||||||
|
PutArticleScienceSource // 修改科普文章来源
|
||||||
|
AddArticleScienceSource // 新增科普文章来源
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetArticleScienceSourcePage 获取科普文章来源列表-分页
|
||||||
|
type GetArticleScienceSourcePage struct {
|
||||||
|
Page int `json:"page" form:"page" label:"页码"`
|
||||||
|
PageSize int `json:"page_size" form:"page_size" label:"每页个数"`
|
||||||
|
SourceName string `json:"source_name" form:"source_name" label:"来源名称"` // 来源名称
|
||||||
|
Order *GetArticleScienceSourcePageOrder `json:"order" form:"order" label:"排序"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetArticleScienceSourcePageOrder 获取科普文章来源列表-分页-排序条件
|
||||||
|
type GetArticleScienceSourcePageOrder struct {
|
||||||
|
UpdatedAt string `json:"updated_at" form:"updated_at" label:"排序"` // 修改时间
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetArticleScienceSourceList 获取科普文章来源列表
|
||||||
|
type GetArticleScienceSourceList struct {
|
||||||
|
SourceName string `json:"source_name" form:"source_name" label:"来源名称"` // 来源名称
|
||||||
|
}
|
||||||
|
|
||||||
|
// PutArticleScienceSource 修改科普文章来源
|
||||||
|
type PutArticleScienceSource struct {
|
||||||
|
SourceName string `json:"source_name" form:"source_name" label:"来源名称" validate:"required"` // 来源名称
|
||||||
|
SourceImage string `json:"source_image" form:"source_image" label:"来源图片" validate:"required"` // 来源图片
|
||||||
|
}
|
||||||
|
|
||||||
|
// AddArticleScienceSource 新增科普文章来源
|
||||||
|
type AddArticleScienceSource struct {
|
||||||
|
SourceName string `json:"source_name" form:"source_name" label:"来源名称" validate:"required"` // 来源名称
|
||||||
|
SourceImage string `json:"source_image" form:"source_image" label:"来源名称" validate:"required"` // 来源图片
|
||||||
|
}
|
||||||
@ -904,16 +904,20 @@ func privateRouter(r *gin.Engine, api controller.Api) {
|
|||||||
// 科普文章来源
|
// 科普文章来源
|
||||||
sourceGroup := scienceGroup.Group("source")
|
sourceGroup := scienceGroup.Group("source")
|
||||||
{
|
{
|
||||||
// 获取来源列表-分页
|
// 获取科普文章来源列表-分页
|
||||||
sourceGroup.POST("/page", api.ArticleScience.GetArticleSciencePage)
|
sourceGroup.POST("/page", api.ArticleScienceSource.GetArticleScienceSourcePage)
|
||||||
|
|
||||||
// 获取来源列表
|
// 获取科普文章来源列表
|
||||||
|
sourceGroup.GET("/list", api.ArticleScienceSource.GetArticleScienceSourceList)
|
||||||
|
|
||||||
// 获取来源详情
|
// 获取科普文章来源详情
|
||||||
|
sourceGroup.GET("/:source_id", api.ArticleScienceSource.GetArticleScienceSource)
|
||||||
|
|
||||||
// 修改来源文章
|
// 修改科普文章来源
|
||||||
|
sourceGroup.PUT("/:source_id", api.ArticleScienceSource.PutArticleScienceSource)
|
||||||
|
|
||||||
// 新增来源文章
|
// 新增科普文章来源
|
||||||
|
sourceGroup.POST("", api.ArticleScienceSource.AddArticleScienceSource)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user