Compare commits

..
2 Commits
Author SHA1 Message Date
admin 377e2b7eeb Merge branch 'dev' 2025-03-10 10:03:29 +08:00
admin 70592b99a6 1 2025-03-07 19:11:01 +08:00
11 changed files with 63 additions and 247 deletions
Vendored
BIN
View File
Binary file not shown.
+1 -1
View File
@@ -125,7 +125,7 @@ func (b *CaseComment) GetCaseCommentPage(c *gin.Context) {
isLike, _ = caseCommentLikeDao.GetCaseCommentLikeCount(maps)
// 加载数据-点赞
caseCommentDto.LoadIsLike(isLike)
commentDto.LoadIsLike(isLike)
}
// 处理剩余评论数量字段
-72
View File
@@ -97,75 +97,3 @@ func (b *Project) GetProjectPage(c *gin.Context) {
result["data"] = g
responses.OkWithData(result, c)
}
// GetProject 获取详情
func (b *Project) GetProject(c *gin.Context) {
id := c.Param("project_id")
if id == "" {
responses.FailWithMessage("缺少参数", c)
return
}
// 将 id 转换为 int64 类型
projectId, err := strconv.ParseInt(id, 10, 64)
if err != nil {
responses.Fail(c)
return
}
platformId := c.GetInt64("PlatformId") // 平台id
if platformId == 0 {
responses.FailWithMessage("内部错误", c)
return
}
// 获取病例关联平台
projectPlatformDao := dao.ProjectPlatformDao{}
maps := make(map[string]interface{})
maps["project_id"] = projectId
maps["platform_id"] = platformId
projectPlatform, _ := projectPlatformDao.GetProjectPlatform(maps)
if projectPlatform == nil {
responses.FailWithMessage("非法数据", c)
return
}
// 获取病例详情
projectDao := dao.ProjectDao{}
project, err := projectDao.GetProjectPreloadById(projectId)
if err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
g := dto.GetProjectDto(project)
// 加载关联病例数量
g.LoadCaseCount(project.Case)
// 获取最近7天的病例
now := time.Now()
t := now.AddDate(0, 0, -7)
caseDao := dao.CaseDao{}
maps = make(map[string]interface{})
maps["project_id"] = g.ProjectId
result, _ := caseDao.GetCaseFormPastDay(maps, t)
if result != nil {
if result.CaseStatus == 1 {
// 加载最近更新情况
g.LoadIsRecentlyUpdate(result)
}
}
// 获取项目福利存在情况
projectService := service.ProjectService{}
isHaveWelfare := projectService.GetProjectIsHaveWelfare(projectId, platformId)
// 加载是否开启福利
if isHaveWelfare {
g.IsWelfare = 1
}
responses.OkWithData(g, c)
}
-120
View File
@@ -11,7 +11,6 @@ import (
"fmt"
"github.com/gin-gonic/gin"
"net/http"
"strconv"
)
type Public struct{}
@@ -239,125 +238,6 @@ func (b *Public) Login(c *gin.Context) {
responses.OkWithData(g, c)
}
// LoginProgram Login 登陆-小程序
func (b *Public) LoginProgram(c *gin.Context) {
publicRequest := requests.PublicRequest{}
req := publicRequest.LoginProgram
if err := c.ShouldBind(&req); err != nil {
c.JSON(http.StatusOK, gin.H{
"message": "登录失败",
"code": -2,
"data": gin.H{
"source": 2,
},
})
return
}
// 参数验证
if err := global.Validate.Struct(req); err != nil {
c.JSON(http.StatusOK, gin.H{
"message": "登录失败",
"code": -2,
"data": gin.H{
"source": 2,
},
})
return
}
// 解析token
t, err := utils.ParseJwt(req.Token)
if err != nil {
c.JSON(http.StatusOK, gin.H{
"message": "登录失败",
"code": -2,
"data": gin.H{
"source": 2,
},
})
return
}
// 转换类型
userId, err := strconv.ParseInt(t.UserId, 10, 64)
if err != nil {
c.JSON(http.StatusOK, gin.H{
"message": "登录失败",
"code": -2,
"data": gin.H{
"source": 2,
},
})
return
}
// 获取用户信息
userDao := dao.UserDao{}
maps := make(map[string]interface{})
maps["user_id"] = userId
user, _ := userDao.GetUser(maps)
if user == nil {
c.JSON(http.StatusOK, gin.H{
"message": "登录失败",
"code": -2,
"data": gin.H{
"source": 2,
},
})
return
}
var platformId int
if user.RegisterSource == 2 {
platformId = 1
} else if user.RegisterSource == 3 {
platformId = 2
}
if platformId == 0 {
c.JSON(http.StatusOK, gin.H{
"message": "登录失败",
"code": -2,
"data": gin.H{
"source": 2,
},
})
return
}
// 下发token
token := &utils.Token{
UserId: fmt.Sprintf("%d", user.UserId),
PlatformId: fmt.Sprintf("%d", platformId),
}
// 生成jwt
jwt, err := token.NewJWT()
if err != nil || jwt == "" {
c.JSON(http.StatusOK, gin.H{
"message": "登陆失败",
"code": -1,
"data": gin.H{
"source": 2,
},
})
return
}
g := dto.UserLoginDto(user)
g.LoadToken(jwt)
responses.OkWithData(g, c)
}
func (b *Public) T(c *gin.Context) {
// 开始事务
tx := global.Db.Begin()
-4
View File
@@ -117,10 +117,6 @@ func (b *User) GetUserScore(c *gin.Context) {
// 优质留言
var describe []string
for _, score := range recordScores {
if score.Score == 0 {
continue
}
d := score.NodeName + ":"
if score.Type == 4 {
+4 -14
View File
@@ -155,29 +155,19 @@ func (r *CaseDao) GetCasePageSearch(req requests.GetCasePage, page, pageSize int
// 是否已参与(0:全部 1:已参与 2:未参与)
if req.IsTakePart == 1 {
var userIds []int64
global.Db.Model(&model.User{}).
Select("user_id").
Where("mobile_encryption = (SELECT mobile_encryption FROM user WHERE user_id = ?)", req.UserId).
Find(&userIds)
caseUserSubQuery := global.Db.Model(&model.CaseUser{}).
Where("case_user.case_id = case.case_id").
Where("case_user.user_id IN (?)", userIds)
Where("case_user.platform_id = ?", req.PlatformId).
Where("case_user.user_id = ?", req.UserId)
query = query.Where("EXISTS (?)", caseUserSubQuery)
}
if req.IsTakePart == 2 {
var userIds []int64
global.Db.Model(&model.User{}).
Select("user_id").
Where("mobile_encryption = (SELECT mobile_encryption FROM user WHERE user_id = ?)", req.UserId).
Find(&userIds)
caseUserSubQuery := global.Db.Model(&model.CaseUser{}).
Where("case_user.case_id = case.case_id").
Where("case_user.user_id IN (?)", userIds)
Where("case_user.platform_id = ?", req.PlatformId).
Where("case_user.user_id = ?", req.UserId)
query = query.Where("NOT EXISTS (?)", caseUserSubQuery)
}
+2 -2
View File
@@ -84,8 +84,8 @@ func (r *CaseDto) LoadCaseItem(m []*model.CaseItem) *CaseDto {
func (r *CaseDto) LoadIsNew(t model.LocalTime) *CaseDto {
now := time.Now()
createdAt := time.Time(t)
diffTime := now.Sub(createdAt)
if diffTime <= 7*24*time.Hour && diffTime > 0 {
diffTime := createdAt.Sub(now)
if diffTime <= 7*24*time.Hour {
r.IsNew = 1
}
+1 -7
View File
@@ -1,8 +1,7 @@
package requests
type PublicRequest struct {
Login // 登陆
LoginProgram // 登陆-小程序
Login // 登陆
}
// Login 登陆
@@ -22,8 +21,3 @@ type Login struct {
Address string `json:"address" form:"address" label:"地址"`
Title string `json:"title" form:"title" label:"职称"`
}
// LoginProgram 登陆-小程序
type LoginProgram struct {
Token string `json:"token" form:"token" validate:"required" label:"token"`
}
-5
View File
@@ -73,8 +73,6 @@ func Init() *gin.Engine {
// publicRouter 公开路由-不验证权限
func publicRouter(r *gin.Engine, api controller.Api) {
r.POST("/login", api.Public.Login)
r.POST("/login/program", api.Public.LoginProgram)
//r.POST("/t", api.Public.T)
}
@@ -96,9 +94,6 @@ func privateRouter(r *gin.Engine, api controller.Api) {
// 获取列表-分页
projectGroup.GET("/page", api.Project.GetProjectPage)
// 获取列表-分页
projectGroup.GET("/:project_id", api.Project.GetProject)
// 平台
projectPlatformGroup := projectGroup.Group("/platform")
{
+21 -22
View File
@@ -105,8 +105,8 @@ func (r *UserService) GetUserInfo(tx *gorm.DB, req requests.Login) (user *model.
// 修改用户
userData := make(map[string]interface{})
if user.UserName != req.DoctorName {
userData["user_name"] = req.DoctorName
user.UserName = req.DoctorName
userData["user_name"] = req.HospitalName
user.UserName = req.HospitalName
}
if user.MobileEncryption != req.MobileEncryption {
@@ -341,53 +341,51 @@ func (r *UserService) ReportUserScore(tx *gorm.DB, projectId, caseId, platformId
return nil
}
// 默认为白名单用户
isWhite := true
// 检测白名单
if projectPlatform.IsWhite == 1 {
projectPlatformWhiteService := ProjectPlatformWhiteService{}
isWhite, err = projectPlatformWhiteService.CheckProjectPlatformWhiteByUser(user, projectId, platformId)
isWhite, err := projectPlatformWhiteService.CheckProjectPlatformWhiteByUser(user, projectId, platformId)
if err != nil {
return err
}
// 非白名单用户,无需发放积分
if isWhite == false {
return nil
}
}
// 获取需发放积分
score := 0
reportScore := 0
appScoreTypeStr := "" // 积分发放原因-app
superScoreTypeStr := "" // 积分发放原因-超级袋鼠
nodeName := "" // 获取积分节点名称
if scoreType == 1 {
// 完成阅读
score = projectPlatform.CompleteRead
reportScore = projectPlatform.CompleteRead
appScoreTypeStr = "互动病例-完成阅读"
superScoreTypeStr = "调研奖励(完成阅读)"
nodeName = "学习"
} else if scoreType == 2 {
// 阅读时间满足
score = projectPlatform.CompleteReadTime
reportScore = projectPlatform.CompleteReadTime
appScoreTypeStr = "互动病例-阅读时间满足"
superScoreTypeStr = "调研奖励(阅读质量)"
nodeName = "阅读达标"
} else if scoreType == 3 {
// 优质留言
score = projectPlatform.FirstHighQuality
reportScore = projectPlatform.FirstHighQuality
appScoreTypeStr = "互动病例-优质留言"
superScoreTypeStr = "调研奖励(社区贡献)"
nodeName = "优质留言"
} else if scoreType == 4 {
// 再次优质留言
score = projectPlatform.OnceMoreHighQuality
reportScore = projectPlatform.OnceMoreHighQuality
appScoreTypeStr = "互动病例-优质留言"
superScoreTypeStr = "调研奖励(社区贡献)"
nodeName = "优质留言"
}
// 佳动力需求:非白名单用户也需要请求积分记录
// 当用户为非白名单时,重置积分数
if isWhite == false {
score = 0
}
recordScoreDao := dao.RecordScoreDao{}
// 检测是否有相同手机号用户
@@ -439,8 +437,9 @@ func (r *UserService) ReportUserScore(tx *gorm.DB, projectId, caseId, platformId
UserName: user.UserName,
Type: scoreType,
NodeName: nodeName,
Score: score,
Score: reportScore,
}
recordScore, err = recordScoreDao.AddRecordScore(tx, recordScore)
if err != nil {
return err
@@ -458,20 +457,20 @@ func (r *UserService) ReportUserScore(tx *gorm.DB, projectId, caseId, platformId
}
// 累计用户领取积分数据
err = caseUserDao.Inc(tx, caseUser.CaseUserId, "total_score", score)
err = caseUserDao.Inc(tx, caseUser.CaseUserId, "total_score", reportScore)
if err != nil {
return err
}
// 累计平台发放积分数据
err = casePlatformDao.Inc(tx, casePlatform.CasePlatformId, "issued_score", score)
err = casePlatformDao.Inc(tx, casePlatform.CasePlatformId, "issued_score", reportScore)
if err != nil {
return err
}
// 累计发放积分数据
caseDao := dao.CaseDao{}
err = caseDao.Inc(tx, caseId, "issued_score", score)
err = caseDao.Inc(tx, caseId, "issued_score", reportScore)
if err != nil {
return err
}
@@ -482,8 +481,8 @@ func (r *UserService) ReportUserScore(tx *gorm.DB, projectId, caseId, platformId
}
// 肝胆相照
if platformId == 1 && score > 0 {
_, err = app.ReportUserScore(appScoreTypeStr, user.UserIden, score)
if platformId == 1 {
_, err = app.ReportUserScore(appScoreTypeStr, user.UserIden, reportScore)
if err != nil {
return err
}
+34
View File
@@ -0,0 +1,34 @@
time="2025-02-25 09:09:44" level=info msg=access http_status=200 ip=127.0.0.1 method=POST params="map[platform_key:123456 source:2 token:eyJUeXBlIjoiSnd0IiwidHlwIjoiSldUIiwiYWxnIjoiSFMyNTYifQ.eyJ1c2VyX25hbWUiOiJ1R0hQanJ1dUhIejZJVXFwUk92IiwiZXhwIjoxNzQwODc2OTY0fQ.mC5KJVvi8g0JJMVGxeD0g6KJoOEjOk7S9zLdvdleAbs]" total_time=431.967791ms uri=/login
time="2025-02-25 09:10:31" level=info msg=access http_status=200 ip=127.0.0.1 method=POST params="map[platform_key:123456 source:2 token:eyJUeXBlIjoiSnd0IiwidHlwIjoiSldUIiwiYWxnIjoiSFMyNTYifQ.eyJ1c2VyX25hbWUiOiJ1R0hQanJ1dUhIejZJVXFwUk92IiwiZXhwIjoxNzQwODc2OTY0fQ.mC5KJVvi8g0JJMVGxeD0g6KJoOEjOk7S9zLdvdleAbs]" total_time=474.459125ms uri=/login
time="2025-02-25 09:11:31" level=info msg=access http_status=200 ip=127.0.0.1 method=POST params="map[platform_key:123456 source:2 token:eyJUeXBlIjoiSnd0IiwidHlwIjoiSldUIiwiYWxnIjoiSFMyNTYifQ.eyJ1c2VyX25hbWUiOiJ1R0hQanJ1dUhIejZJVXFwUk92IiwiZXhwIjoxNzQwODc2OTY0fQ.mC5KJVvi8g0JJMVGxeD0g6KJoOEjOk7S9zLdvdleAbs]" total_time=23.951283209s uri=/login
time="2025-02-25 10:40:28" level=info msg="获取app数据返回" data="{\"code\":81000,\"msg\":\"ip限制\",\"data\":null,\"success\":false,\"message\":\"ip限制\"}"
time="2025-02-25 10:40:28" level=info msg=access http_status=200 ip=127.0.0.1 method=POST params="map[platform_key:123456 source:2 token:eyJUeXBlIjoiSnd0IiwidHlwIjoiSldUIiwiYWxnIjoiSFMyNTYifQ.eyJ1c2VyX25hbWUiOiJ1R0hQanJ1dUhIejZJVXFwUk92IiwiZXhwIjoxNzQwODgyOTk4fQ.zpoE12H65ujOAB910QWTyAfdYb63FrCcvTiiNJaXeMQ]" total_time=501.148333ms uri=/login
time="2025-02-25 11:57:21" level=info msg="获取app数据返回" data="{\"code\":80002,\"msg\":\"验证超时\",\"data\":null,\"success\":false,\"message\":\"验证超时\"}"
time="2025-02-25 11:57:21" level=info msg=access http_status=200 ip=127.0.0.1 method=POST params="map[platform_key:123456 source:2 token:eyJUeXBlIjoiSnd0IiwidHlwIjoiSldUIiwiYWxnIjoiSFMyNTYifQ.eyJ1c2VyX25hbWUiOiJ1R0hQanJ1dUhIejZJVXFwUk92IiwiZXhwIjoxNzQwODgyOTk4fQ.zpoE12H65ujOAB910QWTyAfdYb63FrCcvTiiNJaXeMQ]" total_time=59m36.556658917s uri=/login
time="2025-02-27 11:21:19" level=info msg=access http_status=200 ip=127.0.0.1 method=GET params="map[]" total_time=55.264667ms uri=/case/1894948884916998144
time="2025-02-27 11:21:36" level=info msg=access http_status=200 ip=127.0.0.1 method=GET params="map[]" total_time=580.622291ms uri=/case/1894948884916998144
time="2025-03-04 15:42:13" level=info msg=access http_status=200 ip=127.0.0.1 method=GET params="map[]" total_time=1.614487708s uri=/case/1895027498773647360
time="2025-03-04 16:50:58" level=info msg=access http_status=200 ip=127.0.0.1 method=GET params="map[page:1 page_size:1 project_id:1896834671677804544]" total_time=295.566833ms uri="/case/page?page=1&page_size=1&project_id=1896834671677804544"
time="2025-03-04 17:37:17" level=info msg=access http_status=200 ip=127.0.0.1 method=GET params="map[project_id:1896842668814635008]" total_time=815.4625ms uri="/project/platform?project_id=1896842668814635008"
time="2025-03-04 17:50:32" level=info msg=access http_status=200 ip=127.0.0.1 method=GET params="map[case_id:1896843204397895680]" total_time=470.990834ms uri="/user/score?case_id=1896843204397895680"
time="2025-03-04 17:50:52" level=info msg=access http_status=200 ip=127.0.0.1 method=GET params="map[case_id:1896843204397895680]" total_time=482.829417ms uri="/user/score?case_id=1896843204397895680"
time="2025-03-04 17:51:13" level=info msg=access http_status=200 ip=127.0.0.1 method=GET params="map[case_id:1896843204397895680]" total_time=487.223667ms uri="/user/score?case_id=1896843204397895680"
time="2025-03-04 18:10:42" level=info msg=access http_status=200 ip=127.0.0.1 method=GET params="map[case_id:1896843204397895680]" total_time=472.00025ms uri="/user/score?case_id=1896843204397895680"
time="2025-03-05 10:30:14" level=info msg=access http_status=200 ip=127.0.0.1 method=GET params="map[]" total_time=1.772195833s uri=/case/1895027498773647360
time="2025-03-05 10:33:10" level=info msg=access http_status=200 ip=127.0.0.1 method=GET params="map[project_id:1896834263270035456]" total_time=1.309672834s uri="/project/platform?project_id=1896834263270035456"
time="2025-03-05 10:40:41" level=info msg=access http_status=200 ip=127.0.0.1 method=GET params="map[project_id:1896834263270035456]" total_time=2m24.264561917s uri="/project/platform?project_id=1896834263270035456"
time="2025-03-05 11:00:30" level=info msg=access http_status=200 ip=127.0.0.1 method=GET params="map[project_id:1896834263270035456]" total_time=19m32.522574583s uri="/project/platform?project_id=1896834263270035456"
time="2025-03-05 11:05:25" level=info msg=access http_status=200 ip=127.0.0.1 method=GET params="map[project_id:1896834263270035456]" total_time=890.848708ms uri="/project/platform?project_id=1896834263270035456"
time="2025-03-05 11:26:05" level=info msg="获取app数据参数" data="{\"token\":\"eyJUeXBlIjoiSnd0IiwidHlwIjoiSldUIiwiYWxnIjoiSFMyNTYifQ.eyJ1c2VyX25hbWUiOiJ1TjhVMHJVMGNpMVU1V0ZVZFRoIiwiZXhwIjoxNzQxNTc2MzgzfQ.cg93dMO4USrKMRqLunzEulSO8uzptsJPepneGrf3GUA\",\"platform\":\"h_case\",\"timestamp\":\"1741145165\"}"
time="2025-03-05 11:26:06" level=info msg="获取app数据返回" data="{\"code\":0,\"msg\":\"操作失败\",\"data\":null,\"success\":false,\"message\":\"操作失败\"}"
time="2025-03-05 11:26:06" level=info msg=access http_status=200 ip=127.0.0.1 method=POST params="map[platform_key:123456 source:2 token:eyJUeXBlIjoiSnd0IiwidHlwIjoiSldUIiwiYWxnIjoiSFMyNTYifQ.eyJ1c2VyX25hbWUiOiJ1TjhVMHJVMGNpMVU1V0ZVZFRoIiwiZXhwIjoxNzQxNTc2MzgzfQ.cg93dMO4USrKMRqLunzEulSO8uzptsJPepneGrf3GUA]" total_time=1.199444042s uri=/login
time="2025-03-05 11:33:30" level=info msg="获取app数据参数" data="{\"token\":\"eyJUeXBlIjoiSnd0IiwidHlwIjoiSldUIiwiYWxnIjoiSFMyNTYifQ.eyJ1c2VyX25hbWUiOiJ1TjhVMHJVMGNpMVU1V0ZVZFRoIiwiZXhwIjoxNzQxNTc3NTEzfQ.41k4bM3OGxdUAWAfnTjcuFCal9itdzMsHcnUITrw_mg\",\"platform\":\"h_case\",\"timestamp\":\"1741145610\"}"
time="2025-03-05 11:33:30" level=info msg="获取app数据返回" data="{\"code\":0,\"msg\":\"操作失败\",\"data\":null,\"success\":false,\"message\":\"操作失败\"}"
time="2025-03-05 11:33:30" level=info msg=access http_status=200 ip=127.0.0.1 method=POST params="map[platform_key:123456 source:2 token:eyJUeXBlIjoiSnd0IiwidHlwIjoiSldUIiwiYWxnIjoiSFMyNTYifQ.eyJ1c2VyX25hbWUiOiJ1TjhVMHJVMGNpMVU1V0ZVZFRoIiwiZXhwIjoxNzQxNTc3NTEzfQ.41k4bM3OGxdUAWAfnTjcuFCal9itdzMsHcnUITrw_mg]" total_time=677.117916ms uri=/login
time="2025-03-05 11:41:23" level=info msg="获取app数据参数" data="{\"token\":\"eyJUeXBlIjoiSnd0IiwidHlwIjoiSldUIiwiYWxnIjoiSFMyNTYifQ.eyJ1c2VyX25hbWUiOiJ1TjhVMHJVMGNpMVU1V0ZVZFRoIiwiZXhwIjoxNzQxNTc3NTEzfQ.41k4bM3OGxdUAWAfnTjcuFCal9itdzMsHcnUITrw_mg\",\"platform\":\"h_case\",\"timestamp\":\"1741146083\"}"
time="2025-03-05 11:41:24" level=info msg="获取app数据返回" data="{\"code\":200,\"msg\":\"操作成功\",\"data\":{\"uuid\":\"uN8U0rU0ci1U5WFUdTh\",\"office_name\":\"传染科\",\"realname\":\"赵医生\",\"hospital_uuid\":\"14c1bd9890c14695ab024982a94f8181\",\"mobile\":\"13071195611\",\"photo\":\"\",\"weight\":\"\",\"position_name\":\"主任中医师\",\"prov_name\":\"北京市\"},\"success\":true,\"message\":\"操作成功\"}"
time="2025-03-05 11:41:25" level=info msg="获取app数据参数" data="{\"hospital_uuid\":\"14c1bd9890c14695ab024982a94f8181\",\"platform\":\"h_case\",\"timestamp\":\"1741146085\"}"
time="2025-03-05 11:41:25" level=info msg="获取app数据返回" data="{\"code\":200,\"msg\":\"操作成功\",\"data\":{\"uuid\":\"14c1bd9890c14695ab024982a94f8181\",\"name\":\"北京和平里医院\",\"level\":\"三级甲等\",\"prov_name\":\"北京市\",\"expert_num\":2},\"success\":true,\"message\":\"操作成功\"}"
time="2025-03-05 11:41:25" level=info msg=access http_status=200 ip=127.0.0.1 method=POST params="map[platform_key:123456 source:2 token:eyJUeXBlIjoiSnd0IiwidHlwIjoiSldUIiwiYWxnIjoiSFMyNTYifQ.eyJ1c2VyX25hbWUiOiJ1TjhVMHJVMGNpMVU1V0ZVZFRoIiwiZXhwIjoxNzQxNTc3NTEzfQ.41k4bM3OGxdUAWAfnTjcuFCal9itdzMsHcnUITrw_mg]" total_time=1.97384675s uri=/login
time="2025-03-06 11:22:48" level=info msg=access http_status=200 ip=127.0.0.1 method=GET params="map[]" total_time=1.219134833s uri=/case/1897462563885551616
time="2025-03-06 11:45:02" level=info msg=access http_status=200 ip=127.0.0.1 method=GET params="map[]" total_time=1.434719333s uri=/case/1897462563885551616