2025-03-07 17:23:50 +08:00

158 lines
3.9 KiB
Go

package controller
import (
"case-admin-api/api/dao"
"case-admin-api/api/dto"
"case-admin-api/api/requests"
"case-admin-api/api/responses"
"case-admin-api/api/service"
"case-admin-api/global"
"case-admin-api/utils"
"fmt"
"github.com/gin-gonic/gin"
)
type StatsCase struct{}
// GetStatsCasePlatformPage 获取列表-分页-病例-平台
func (b *StatsCase) GetStatsCasePlatformPage(c *gin.Context) {
statsCasePlatformRequest := requests.StatsCaseRequest{}
req := statsCasePlatformRequest.GetStatsCasePlatformPage
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
}
if req.Page == 0 {
req.Page = 1
}
if req.PageSize == 0 {
req.PageSize = 20
}
// 获取数据
casePlatformDao := dao.CasePlatformDao{}
statsCasePlatforms, total, err := casePlatformDao.GetCasePlatformPageSearch(req, req.Page, req.PageSize)
if err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
// 处理返回值
g := dto.GetCasePlatformListDto(statsCasePlatforms)
// 项目平台数据
projectPlatformDao := dao.ProjectPlatformDao{}
maps := make(map[string]interface{})
maps["project_id"] = req.ProjectId
projectPlatforms, err := projectPlatformDao.GetProjectPlatformList(maps)
if err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
for _, platformDto := range g {
for _, platform := range projectPlatforms {
platformId := fmt.Sprintf("%d", platform.PlatformId)
if platformId == platformDto.PlatformId {
// 加载数据-单个病例总积分
platformDto.LoadSingleCaseScore(platform)
// 加载数据-剩余积分
remainingScore := platform.SingleCaseScore - platformDto.IssuedScore
platformDto.LoadRemainingScore(remainingScore)
}
}
}
result := make(map[string]interface{})
result["page"] = req.Page
result["page_size"] = req.PageSize
result["total"] = total
result["data"] = g
responses.OkWithData(result, c)
}
// GetStatsCaseUserPage 获取列表-分页-病例-用户
func (b *StatsCase) GetStatsCaseUserPage(c *gin.Context) {
statsCasePlatformRequest := requests.StatsCaseRequest{}
req := statsCasePlatformRequest.GetStatsCaseUserPage
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
}
if req.Page == 0 {
req.Page = 1
}
if req.PageSize == 0 {
req.PageSize = 20
}
// 获取数据
statsCaseUserDao := dao.CaseUserDao{}
statsCaseUsers, total, err := statsCaseUserDao.GetCaseUserPageSearch(req, req.Page, req.PageSize)
if err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
// 处理返回值
g := dto.GetCaseUserListDto(statsCaseUsers)
result := make(map[string]interface{})
result["page"] = req.Page
result["page_size"] = req.PageSize
result["total"] = total
result["data"] = g
responses.OkWithData(result, c)
}
// ExportStatsCaseUser 导出
func (b *StatsCase) ExportStatsCaseUser(c *gin.Context) {
statsCasePlatformRequest := requests.StatsCaseRequest{}
req := statsCasePlatformRequest.ExportStatsCaseUser
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
}
// 获取数据
statsCaseUserDao := dao.CaseUserDao{}
statsCaseUsers, err := statsCaseUserDao.GetExportStatsCaseUserExportListSearch(req)
if err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
// 业务处理
exportService := service.ExportService{}
ossAddress, err := exportService.StatsCaseUser(statsCaseUsers)
if err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
responses.OkWithData(ossAddress, c)
}