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) }