414 lines
7.0 KiB
Go
414 lines
7.0 KiB
Go
package controller
|
|
|
|
import (
|
|
"case-api/api/dao"
|
|
"case-api/api/dto"
|
|
"case-api/api/requests"
|
|
"case-api/api/responses"
|
|
"case-api/api/service"
|
|
"case-api/global"
|
|
"case-api/utils"
|
|
"fmt"
|
|
"github.com/gin-gonic/gin"
|
|
"net/http"
|
|
"strconv"
|
|
)
|
|
|
|
type Public struct{}
|
|
|
|
// Login 登陆
|
|
func (b *Public) Login(c *gin.Context) {
|
|
publicRequest := requests.PublicRequest{}
|
|
req := publicRequest.Login
|
|
if err := c.ShouldBind(&req); err != nil {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"message": utils.Translate(err),
|
|
"code": -1,
|
|
"data": gin.H{
|
|
"source": req.Source,
|
|
},
|
|
})
|
|
|
|
return
|
|
}
|
|
|
|
// 参数验证
|
|
if err := global.Validate.Struct(req); err != nil {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"message": utils.Translate(err),
|
|
"code": -1,
|
|
"data": gin.H{
|
|
"source": req.Source,
|
|
},
|
|
})
|
|
|
|
return
|
|
}
|
|
|
|
if req.UserIden == "" && req.UnionId == "" && req.Token == "" {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"message": "缺少参数",
|
|
"code": -1,
|
|
"data": gin.H{
|
|
"source": req.Source,
|
|
},
|
|
})
|
|
|
|
return
|
|
}
|
|
|
|
// 检测平台
|
|
platformDao := dao.PlatformDao{}
|
|
maps := make(map[string]interface{})
|
|
maps["platform_key"] = req.PlatformKey
|
|
platform, err := platformDao.GetPlatform(maps)
|
|
if err != nil {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"message": "非法平台",
|
|
"code": -1,
|
|
"data": gin.H{
|
|
"source": req.Source,
|
|
},
|
|
})
|
|
|
|
return
|
|
}
|
|
|
|
// 检测状态
|
|
if platform.PlatformStatus == 2 {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"message": "非法平台",
|
|
"code": -1,
|
|
"data": gin.H{
|
|
"source": req.Source,
|
|
},
|
|
})
|
|
|
|
return
|
|
}
|
|
|
|
// 验证参数
|
|
if req.Source == 3 {
|
|
if req.ProjectId == "" {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"message": "缺少参数:项目标识",
|
|
"code": -1,
|
|
"data": gin.H{
|
|
"source": req.Source,
|
|
},
|
|
})
|
|
|
|
return
|
|
}
|
|
|
|
if req.MobileEncryption == "" {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"message": "缺少参数:手机号",
|
|
"code": -1,
|
|
"data": gin.H{
|
|
"source": req.Source,
|
|
},
|
|
})
|
|
|
|
return
|
|
}
|
|
|
|
if req.DoctorName == "" {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"message": "缺少参数:医生名称",
|
|
"code": -1,
|
|
"data": gin.H{
|
|
"source": req.Source,
|
|
},
|
|
})
|
|
|
|
return
|
|
}
|
|
|
|
if req.HospitalName == "" {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"message": "缺少参数:医院名称",
|
|
"code": -1,
|
|
"data": gin.H{
|
|
"source": req.Source,
|
|
},
|
|
})
|
|
|
|
return
|
|
}
|
|
|
|
if req.DepartmentName == "" {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"message": "缺少参数:科室名称",
|
|
"code": -1,
|
|
"data": gin.H{
|
|
"source": req.Source,
|
|
},
|
|
})
|
|
|
|
return
|
|
}
|
|
|
|
if req.Address == "" {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"message": "缺少参数:地址",
|
|
"code": -1,
|
|
"data": gin.H{
|
|
"source": req.Source,
|
|
},
|
|
})
|
|
|
|
return
|
|
}
|
|
|
|
if req.UserIden == "" {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"message": "缺少参数:用户唯一标识",
|
|
"code": -1,
|
|
"data": gin.H{
|
|
"source": req.Source,
|
|
},
|
|
})
|
|
|
|
return
|
|
}
|
|
}
|
|
|
|
// 开始事务
|
|
tx := global.Db.Begin()
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
tx.Rollback()
|
|
}
|
|
}()
|
|
|
|
// 获取用户数据-不存在时注册
|
|
userService := service.UserService{}
|
|
user, err := userService.GetUserInfo(tx, req)
|
|
if err != nil {
|
|
tx.Rollback()
|
|
if req.Source == 2 {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"message": "登录失败",
|
|
"code": -2,
|
|
"data": gin.H{
|
|
"source": req.Source,
|
|
},
|
|
})
|
|
|
|
return
|
|
} else {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"message": "登录失败",
|
|
"code": -2,
|
|
"data": gin.H{
|
|
"source": req.Source,
|
|
},
|
|
})
|
|
|
|
return
|
|
}
|
|
}
|
|
|
|
// 下发token
|
|
token := &utils.Token{
|
|
UserId: fmt.Sprintf("%d", user.UserId),
|
|
PlatformId: fmt.Sprintf("%d", platform.PlatformId),
|
|
}
|
|
|
|
// 生成jwt
|
|
jwt, err := token.NewJWT()
|
|
if err != nil || jwt == "" {
|
|
tx.Rollback()
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"message": "登陆失败",
|
|
"code": -1,
|
|
"data": gin.H{
|
|
"source": req.Source,
|
|
},
|
|
})
|
|
|
|
return
|
|
}
|
|
|
|
g := dto.UserLoginDto(user)
|
|
|
|
g.LoadToken(jwt)
|
|
|
|
tx.Commit()
|
|
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": "登录失败1",
|
|
"code": -2,
|
|
"data": gin.H{
|
|
"source": 2,
|
|
},
|
|
})
|
|
|
|
return
|
|
}
|
|
|
|
// 参数验证
|
|
if err := global.Validate.Struct(req); err != nil {
|
|
c.JSON(http.StatusOK, gin.H{
|
|
"message": "登录失败2",
|
|
"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": "登录失败3",
|
|
"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": "登陆失败6",
|
|
"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()
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
tx.Rollback()
|
|
}
|
|
}()
|
|
|
|
//// 获取用户信息
|
|
//userDao := dao.UserDao{}
|
|
//user, err := userDao.GetUserById(1)
|
|
//if err != nil {
|
|
// tx.Rollback()
|
|
// fmt.Println(err)
|
|
// return
|
|
//}
|
|
//
|
|
//userService := service.UserService{}
|
|
//err = userService.ReportUserScore(tx, 1, 1, 2, 1, user)
|
|
//if err != nil {
|
|
// tx.Rollback()
|
|
// fmt.Println(err)
|
|
// return
|
|
//}
|
|
|
|
// 获取用户信息
|
|
userDao := dao.UserDao{}
|
|
user, err := userDao.GetUserById(1)
|
|
if err != nil {
|
|
tx.Rollback()
|
|
fmt.Println(err)
|
|
return
|
|
}
|
|
|
|
caseUserDao := dao.CaseUserDao{}
|
|
caseUser, err := caseUserDao.GetCaseUserById(1877273809162080256)
|
|
if err != nil {
|
|
tx.Rollback()
|
|
fmt.Println(err)
|
|
return
|
|
}
|
|
|
|
userService := service.UserService{}
|
|
// 上报用户答题数据
|
|
err = userService.ReportCaseUserAnswer(1, 2, user, caseUser)
|
|
if err != nil {
|
|
// 失败不返回,只记录日志。
|
|
fmt.Println(err)
|
|
}
|
|
|
|
fmt.Println("结束")
|
|
}
|