新增了接口
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
package controller
|
||||
|
||||
// Api api接口
|
||||
type Api struct {
|
||||
Project // 项目
|
||||
ResProject // 项目-佳动例
|
||||
Case // 病例
|
||||
ResCase // 病例-佳动例
|
||||
Res // 佳动例
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"case-open-api/api/dao"
|
||||
"case-open-api/api/dto"
|
||||
"case-open-api/api/requests"
|
||||
"case-open-api/api/responses"
|
||||
"case-open-api/global"
|
||||
"case-open-api/utils"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
type Case struct {
|
||||
}
|
||||
|
||||
// GetCasePage 获取列表-分页
|
||||
func (b *Case) GetCasePage(c *gin.Context) {
|
||||
caseRequest := requests.CaseRequest{}
|
||||
req := caseRequest.GetCasePage
|
||||
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
|
||||
}
|
||||
|
||||
platformId := c.GetInt64("platformId") // 平台id
|
||||
if platformId == 0 {
|
||||
responses.FailWithMessage("非法请求", c)
|
||||
return
|
||||
}
|
||||
|
||||
req.PlatformId = platformId
|
||||
|
||||
// 获取数据
|
||||
caseDao := dao.CaseDao{}
|
||||
cases, total, err := caseDao.GetCasePageSearch(req, req.Page, req.PageSize)
|
||||
if err != nil {
|
||||
responses.FailWithMessage(err.Error(), c)
|
||||
return
|
||||
}
|
||||
|
||||
// 处理返回值
|
||||
g := dto.GetCaseResListDto(cases)
|
||||
|
||||
result := make(map[string]interface{})
|
||||
result["page"] = req.Page
|
||||
result["page_size"] = req.PageSize
|
||||
result["total"] = total
|
||||
result["data"] = g
|
||||
responses.OkWithData(result, c)
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"case-open-api/api/dao"
|
||||
"case-open-api/api/dto"
|
||||
"case-open-api/api/requests"
|
||||
"case-open-api/api/responses"
|
||||
"case-open-api/global"
|
||||
"case-open-api/utils"
|
||||
"github.com/gin-gonic/gin"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Project struct {
|
||||
}
|
||||
|
||||
// GetProjectPage 获取列表-分页
|
||||
func (b *Project) GetProjectPage(c *gin.Context) {
|
||||
ProjectRequest := requests.ProjectRequest{}
|
||||
req := ProjectRequest.GetProjectPage
|
||||
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
|
||||
}
|
||||
|
||||
platformId := c.GetInt64("platformId") // 平台id
|
||||
if platformId == 0 {
|
||||
responses.FailWithMessage("非法请求", c)
|
||||
return
|
||||
}
|
||||
|
||||
req.PlatformId = platformId
|
||||
|
||||
// 获取数据
|
||||
ProjectDao := dao.ProjectDao{}
|
||||
projects, total, err := ProjectDao.GetProjectPageSearch(req, req.Page, req.PageSize)
|
||||
if err != nil {
|
||||
responses.FailWithMessage("获取数据失败", c)
|
||||
return
|
||||
}
|
||||
|
||||
// 处理返回值
|
||||
g := dto.GetProjectListDto(projects)
|
||||
|
||||
projectPlatformDao := dao.ProjectPlatformDao{}
|
||||
caseDao := dao.CaseDao{}
|
||||
for _, projectDto := range g {
|
||||
// 获取项目关联平台
|
||||
maps := make(map[string]interface{})
|
||||
maps["project_id"] = projectDto.ProjectId
|
||||
maps["platform_id"] = platformId
|
||||
projectPlatform, _ := projectPlatformDao.GetProjectPlatform(maps)
|
||||
if projectPlatform != nil {
|
||||
// 加载是否存在福利
|
||||
projectDto.LoadIsWelfare(projectPlatform)
|
||||
}
|
||||
|
||||
// 获取最近7天的病例
|
||||
now := time.Now()
|
||||
t := now.AddDate(0, 0, -7)
|
||||
|
||||
maps = make(map[string]interface{})
|
||||
maps["project_id"] = projectDto.ProjectId
|
||||
result, _ := caseDao.GetCaseFormPastDay(maps, t)
|
||||
if result != nil {
|
||||
// 加载最近更新情况
|
||||
projectDto.LoadIsRecentlyUpdate(result)
|
||||
}
|
||||
}
|
||||
|
||||
result := make(map[string]interface{})
|
||||
result["page"] = req.Page
|
||||
result["page_size"] = req.PageSize
|
||||
result["total"] = total
|
||||
result["data"] = g
|
||||
responses.OkWithData(result, c)
|
||||
}
|
||||
@@ -0,0 +1,308 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"case-open-api/api/dao"
|
||||
"case-open-api/api/dto"
|
||||
"case-open-api/api/requests"
|
||||
"case-open-api/api/responses"
|
||||
"case-open-api/api/service"
|
||||
"case-open-api/global"
|
||||
"case-open-api/utils"
|
||||
"fmt"
|
||||
"github.com/gin-gonic/gin"
|
||||
"math"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Res struct {
|
||||
}
|
||||
|
||||
// GetResProjectList 获取项目列表
|
||||
func (b *Res) GetResProjectList(c *gin.Context) {
|
||||
resRequest := requests.ResRequest{}
|
||||
req := resRequest.GetResProjectList
|
||||
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
|
||||
}
|
||||
|
||||
platformId := c.GetInt64("platformId") // 平台id
|
||||
if platformId == 0 {
|
||||
responses.FailWithMessage("非法请求", c)
|
||||
return
|
||||
}
|
||||
|
||||
req.PlatformId = platformId
|
||||
|
||||
// 获取数据
|
||||
ProjectDao := dao.ProjectDao{}
|
||||
projects, err := ProjectDao.GetResProjectListSearch(req)
|
||||
if err != nil {
|
||||
responses.FailWithMessage("获取数据失败", c)
|
||||
return
|
||||
}
|
||||
|
||||
// 处理返回值
|
||||
g := dto.GetResProjectListDto(projects)
|
||||
|
||||
projectPlatformDao := dao.ProjectPlatformDao{}
|
||||
caseDao := dao.CaseDao{}
|
||||
for _, projectDto := range g {
|
||||
// 获取项目关联平台
|
||||
maps := make(map[string]interface{})
|
||||
maps["project_id"] = projectDto.ProjectId
|
||||
maps["platform_id"] = platformId
|
||||
projectPlatform, _ := projectPlatformDao.GetProjectPlatform(maps)
|
||||
if projectPlatform != nil {
|
||||
// 加载是否存在福利
|
||||
projectDto.LoadIsWelfare(projectPlatform)
|
||||
}
|
||||
|
||||
// 获取最近7天的病例
|
||||
now := time.Now()
|
||||
t := now.AddDate(0, 0, -7)
|
||||
|
||||
maps = make(map[string]interface{})
|
||||
maps["project_id"] = projectDto.ProjectId
|
||||
result, _ := caseDao.GetCaseFormPastDay(maps, t)
|
||||
if result != nil {
|
||||
// 加载最近更新情况
|
||||
projectDto.LoadIsRecentlyUpdate(result)
|
||||
}
|
||||
}
|
||||
|
||||
responses.OkWithData(g, c)
|
||||
}
|
||||
|
||||
// GetResCaseList 获取病例列表
|
||||
func (b *Res) GetResCaseList(c *gin.Context) {
|
||||
resRequest := requests.ResRequest{}
|
||||
req := resRequest.GetResCaseList
|
||||
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
|
||||
}
|
||||
|
||||
platformId := c.GetInt64("platformId") // 平台id
|
||||
if platformId == 0 {
|
||||
responses.FailWithMessage("非法请求", c)
|
||||
return
|
||||
}
|
||||
|
||||
req.PlatformId = platformId
|
||||
|
||||
// 获取数据
|
||||
caseDao := dao.CaseDao{}
|
||||
cases, err := caseDao.GetResCaseList(req)
|
||||
if err != nil {
|
||||
responses.FailWithMessage(err.Error(), c)
|
||||
return
|
||||
}
|
||||
|
||||
// 处理返回值
|
||||
g := dto.GetCaseResListDto(cases)
|
||||
|
||||
responses.OkWithData(g, c)
|
||||
}
|
||||
|
||||
// GetResCaseRecordList 病例领取记录
|
||||
func (b *Res) GetResCaseRecordList(c *gin.Context) {
|
||||
resRequest := requests.ResRequest{}
|
||||
req := resRequest.GetResCaseRecordList
|
||||
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
|
||||
}
|
||||
|
||||
platformId := c.GetInt64("platformId") // 平台id
|
||||
if platformId == 0 {
|
||||
responses.FailWithMessage("非法请求", c)
|
||||
return
|
||||
}
|
||||
|
||||
req.PlatformId = platformId
|
||||
|
||||
if req.StartTime != "" {
|
||||
if req.EndTime == "" {
|
||||
responses.FailWithMessage("参数错误", c)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
page := 1
|
||||
if req.Pindex != 0 {
|
||||
page = req.Pindex
|
||||
}
|
||||
|
||||
pageSize := 100
|
||||
|
||||
// 获取数据
|
||||
caseUserDao := dao.CaseUserDao{}
|
||||
caseUsers, total, err := caseUserDao.GetCaseUserRecordList(req, page, pageSize)
|
||||
if err != nil {
|
||||
responses.FailWithMessage(err.Error(), c)
|
||||
return
|
||||
}
|
||||
|
||||
// 处理返回值
|
||||
g := make([]*dto.ResCaseRecordDto, len(caseUsers))
|
||||
|
||||
if len(caseUsers) > 0 {
|
||||
recordScoreDao := dao.RecordScoreDao{}
|
||||
caseCommentDao := dao.CaseCommentDao{}
|
||||
userAnswerRecordsDao := dao.UserAnswerRecordsDao{}
|
||||
userDao := dao.UserDao{}
|
||||
projectPlatformWhiteService := service.ProjectPlatformWhiteService{}
|
||||
|
||||
for i, v := range caseUsers {
|
||||
// 获取积分发放记录
|
||||
maps := make(map[string]interface{})
|
||||
maps["project_id"] = req.ProjectId
|
||||
maps["case_id"] = v.CaseId
|
||||
maps["platform_id"] = v.PlatformId
|
||||
maps["user_id"] = v.UserId
|
||||
recordScores, _ := recordScoreDao.GetRecordScoreList(maps)
|
||||
|
||||
// 获取用户评论
|
||||
maps = make(map[string]interface{})
|
||||
maps["case_id"] = v.CaseId
|
||||
maps["platform_id"] = v.PlatformId
|
||||
maps["user_id"] = v.UserId
|
||||
maps["status"] = 1
|
||||
caseComments, _ := caseCommentDao.GetCaseCommentList(maps)
|
||||
|
||||
// 获取用户答题记录
|
||||
maps = make(map[string]interface{})
|
||||
maps["case_id"] = v.CaseId
|
||||
maps["platform_id"] = v.PlatformId
|
||||
maps["user_id"] = v.UserId
|
||||
userAnswerRecordss, _ := userAnswerRecordsDao.GetUserAnswerRecordsPreloadList(maps)
|
||||
|
||||
// 用时
|
||||
minutes := v.ReadDuration / 60
|
||||
remainingSeconds := v.ReadDuration % 60
|
||||
residenceTime := fmt.Sprintf("%02d:%02d", minutes, remainingSeconds)
|
||||
response := &dto.ResCaseRecordDto{
|
||||
CaseUserId: fmt.Sprintf("%d", v.CaseUserId),
|
||||
Sid: fmt.Sprintf("%d", v.CaseId),
|
||||
Beizhu: "",
|
||||
OpenId: "",
|
||||
Title: v.Case.CaseName,
|
||||
NickName: v.User.UserName,
|
||||
RealName: v.User.UserName,
|
||||
Mobile: v.User.MobileEncryption,
|
||||
Hos2: v.User.DepartmentName, // 科室
|
||||
Job: utils.DoctorTitleToString(v.User.Title),
|
||||
HospitalName: v.User.Hospital.HospitalName,
|
||||
ResideProvince: v.User.Hospital.Province,
|
||||
ResideCity: v.User.Hospital.City,
|
||||
CreateDate: time.Time(v.CreatedAt).Format("2006-01-02"),
|
||||
CreateTimes: time.Time(v.CreatedAt).Format("15:04:05"),
|
||||
ResidenceTime: residenceTime,
|
||||
QuestionAnswer: nil,
|
||||
TslUid: v.User.UserIden,
|
||||
TslShareUserId: v.ShareUserIden,
|
||||
IsVip: 0,
|
||||
Credit1: 0,
|
||||
Credit2: 0,
|
||||
Credit3: 0,
|
||||
Credit4: 0,
|
||||
CreditTotal: v.TotalScore,
|
||||
HasRemark: 0,
|
||||
Remark: nil,
|
||||
}
|
||||
|
||||
// 积分
|
||||
for _, v3 := range recordScores {
|
||||
if v3.Type == 1 {
|
||||
response.Credit1 = v3.Score
|
||||
}
|
||||
|
||||
if v3.Type == 2 {
|
||||
response.Credit2 = v3.Score
|
||||
}
|
||||
|
||||
if v3.Type == 3 {
|
||||
response.Credit3 = v3.Score
|
||||
}
|
||||
|
||||
if v3.Type == 4 {
|
||||
response.Credit4 = v3.Score
|
||||
}
|
||||
}
|
||||
|
||||
// 评论
|
||||
if len(caseComments) > 0 {
|
||||
response.Remark = make([]*dto.RemarkDto, len(caseComments))
|
||||
|
||||
response.HasRemark = 1
|
||||
for i2, comment := range caseComments {
|
||||
remarkDto := &dto.RemarkDto{
|
||||
Remark: comment.Content,
|
||||
CreateTime: time.Time(comment.CreatedAt).Format("2006-01-02 15:04:05"),
|
||||
}
|
||||
|
||||
response.Remark[i2] = remarkDto
|
||||
}
|
||||
}
|
||||
|
||||
// 题目
|
||||
if len(userAnswerRecordss) > 0 {
|
||||
response.QuestionAnswer = make([]*dto.QuestionAnswerDto, len(userAnswerRecordss))
|
||||
for i2, recordss := range userAnswerRecordss {
|
||||
questionAnswerDto := &dto.QuestionAnswerDto{
|
||||
Question: recordss.CaseItemQuestion.QuestionName,
|
||||
Answer: recordss.Answer,
|
||||
Correct: false,
|
||||
Order: i2 + 1,
|
||||
}
|
||||
|
||||
if recordss.IsTrue == 1 {
|
||||
questionAnswerDto.Correct = true
|
||||
}
|
||||
|
||||
response.QuestionAnswer[i2] = questionAnswerDto
|
||||
}
|
||||
}
|
||||
|
||||
// 获取用户数据
|
||||
user, _ := userDao.GetUserById(v.UserId)
|
||||
if user != nil {
|
||||
// 检测用户是否白名单
|
||||
isWhite, _ := projectPlatformWhiteService.CheckProjectPlatformWhiteByUser(user, v.PlatformId)
|
||||
if isWhite {
|
||||
response.IsVip = 1
|
||||
}
|
||||
}
|
||||
|
||||
// 将转换后的结构体添加到新切片中
|
||||
g[i] = response
|
||||
}
|
||||
}
|
||||
|
||||
result := make(map[string]interface{})
|
||||
result["pindex"] = page
|
||||
result["psize"] = pageSize
|
||||
result["ptotal"] = int(math.Ceil(float64(total) / float64(pageSize)))
|
||||
result["ctotal"] = total
|
||||
result["data"] = g
|
||||
responses.OkWithData(result, c)
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
package controller
|
||||
|
||||
type ResCase struct {
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
package controller
|
||||
|
||||
type ResProject struct {
|
||||
}
|
||||
Reference in New Issue
Block a user