412 lines
10 KiB
Go
412 lines
10 KiB
Go
package controller
|
|
|
|
import (
|
|
"case-admin-api/api/dao"
|
|
"case-admin-api/api/dto"
|
|
"case-admin-api/api/model"
|
|
"case-admin-api/api/requests"
|
|
"case-admin-api/api/responses"
|
|
"case-admin-api/api/service"
|
|
"case-admin-api/extend/app"
|
|
"case-admin-api/global"
|
|
"case-admin-api/utils"
|
|
"github.com/gin-gonic/gin"
|
|
"strconv"
|
|
)
|
|
|
|
type ProjectPlatformDoctor struct{}
|
|
|
|
// GetProjectPlatformDoctorPage 获取列表-分页
|
|
func (b *ProjectPlatformDoctor) GetProjectPlatformDoctorPage(c *gin.Context) {
|
|
ProjectPlatformDoctorRequest := requests.ProjectPlatformDoctorRequest{}
|
|
req := ProjectPlatformDoctorRequest.GetProjectPlatformDoctorPage
|
|
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
|
|
}
|
|
|
|
// 获取数据
|
|
ProjectPlatformDoctorDao := dao.ProjectPlatformDoctorDao{}
|
|
projectPlatformDoctors, total, err := ProjectPlatformDoctorDao.GetProjectPlatformDoctorPageSearch(req, req.Page, req.PageSize)
|
|
if err != nil {
|
|
responses.FailWithMessage(err.Error(), c)
|
|
return
|
|
}
|
|
|
|
// 处理返回值
|
|
g := dto.GetProjectPlatformDoctorListDto(projectPlatformDoctors)
|
|
|
|
result := make(map[string]interface{})
|
|
result["page"] = req.Page
|
|
result["page_size"] = req.PageSize
|
|
result["total"] = total
|
|
result["data"] = g
|
|
responses.OkWithData(result, c)
|
|
}
|
|
|
|
// PutProjectPlatformDoctorStatus 操作状态
|
|
func (b *ProjectPlatformDoctor) PutProjectPlatformDoctorStatus(c *gin.Context) {
|
|
ProjectPlatformDoctorRequest := requests.ProjectPlatformDoctorRequest{}
|
|
req := ProjectPlatformDoctorRequest.PutProjectPlatformDoctorStatus
|
|
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("white_doctor_id")
|
|
if id == "" {
|
|
responses.FailWithMessage("缺少参数", c)
|
|
return
|
|
}
|
|
|
|
// 将 id 转换为 int64 类型
|
|
whiteDoctorId, err := strconv.ParseInt(id, 10, 64)
|
|
if err != nil {
|
|
responses.Fail(c)
|
|
return
|
|
}
|
|
|
|
ProjectPlatformDoctorDao := dao.ProjectPlatformDoctorDao{}
|
|
projectPlatformDoctor, err := ProjectPlatformDoctorDao.GetProjectPlatformDoctorById(whiteDoctorId)
|
|
if err != nil {
|
|
responses.FailWithMessage("数据异常", c)
|
|
return
|
|
}
|
|
|
|
// 检测状态
|
|
if projectPlatformDoctor.Status == req.Status {
|
|
responses.Ok(c)
|
|
return
|
|
}
|
|
|
|
// 开始事务
|
|
tx := global.Db.Begin()
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
tx.Rollback()
|
|
}
|
|
}()
|
|
|
|
projectPlatformDoctorData := make(map[string]interface{})
|
|
projectPlatformDoctorData["status"] = req.Status
|
|
err = ProjectPlatformDoctorDao.EditProjectPlatformDoctorById(tx, whiteDoctorId, projectPlatformDoctorData)
|
|
if err != nil {
|
|
tx.Rollback()
|
|
responses.FailWithMessage("操作失败", c)
|
|
return
|
|
}
|
|
|
|
tx.Commit()
|
|
responses.Ok(c)
|
|
}
|
|
|
|
// AddProjectPlatformDoctor 新增
|
|
func (b *ProjectPlatformDoctor) AddProjectPlatformDoctor(c *gin.Context) {
|
|
ProjectPlatformDoctorRequest := requests.ProjectPlatformDoctorRequest{}
|
|
req := ProjectPlatformDoctorRequest.AddProjectPlatformDoctor
|
|
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 转换为 int64 类型
|
|
projectPlatformId, err := strconv.ParseInt(req.ProjectPlatformId, 10, 64)
|
|
if err != nil {
|
|
responses.Fail(c)
|
|
return
|
|
}
|
|
|
|
projectPlatformDao := dao.ProjectPlatformDao{}
|
|
_, err = projectPlatformDao.GetProjectPlatformById(projectPlatformId)
|
|
if err != nil {
|
|
responses.FailWithMessage("项目未绑定该平台", c)
|
|
return
|
|
}
|
|
|
|
// 检测关联医院
|
|
// 将 id 转换为 int64 类型
|
|
userId, err := strconv.ParseInt(req.UserId, 10, 64)
|
|
if err != nil {
|
|
responses.Fail(c)
|
|
return
|
|
}
|
|
|
|
userDao := dao.UserDao{}
|
|
_, err = userDao.GetUserById(userId)
|
|
if err != nil {
|
|
responses.FailWithMessage("用户数据异常", c)
|
|
return
|
|
}
|
|
|
|
// 检测是否重复
|
|
projectPlatformDoctorDao := dao.ProjectPlatformDoctorDao{}
|
|
|
|
maps := make(map[string]interface{})
|
|
maps["project_platform_id"] = projectPlatformId
|
|
maps["user_id"] = userId
|
|
projectPlatformDoctors, _ := projectPlatformDoctorDao.GetProjectPlatformDoctorList(maps)
|
|
if len(projectPlatformDoctors) > 0 {
|
|
responses.FailWithMessage("重复添加", c)
|
|
return
|
|
}
|
|
|
|
// 开始事务
|
|
tx := global.Db.Begin()
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
tx.Rollback()
|
|
}
|
|
}()
|
|
|
|
projectPlatformDoctor := &model.ProjectPlatformDoctor{
|
|
ProjectPlatformId: projectPlatformId,
|
|
UserId: userId,
|
|
Status: *req.Status,
|
|
}
|
|
|
|
projectPlatformDoctor, err = projectPlatformDoctorDao.AddProjectPlatformDoctor(tx, projectPlatformDoctor)
|
|
if err != nil {
|
|
tx.Rollback()
|
|
responses.FailWithMessage(err.Error(), c)
|
|
return
|
|
}
|
|
|
|
tx.Commit()
|
|
responses.Ok(c)
|
|
}
|
|
|
|
// DeleteProjectPlatformDoctor 删除
|
|
func (b *ProjectPlatformDoctor) DeleteProjectPlatformDoctor(c *gin.Context) {
|
|
id := c.Param("white_doctor_id")
|
|
if id == "" {
|
|
responses.FailWithMessage("缺少参数", c)
|
|
return
|
|
}
|
|
|
|
// 将 id 转换为 int64 类型
|
|
whiteDoctorId, err := strconv.ParseInt(id, 10, 64)
|
|
if err != nil {
|
|
responses.Fail(c)
|
|
return
|
|
}
|
|
|
|
projectPlatformDoctorDao := dao.ProjectPlatformDoctorDao{}
|
|
_, err = projectPlatformDoctorDao.GetProjectPlatformDoctorById(whiteDoctorId)
|
|
if err != nil {
|
|
responses.FailWithMessage("数据异常", c)
|
|
return
|
|
}
|
|
|
|
// 开始事务
|
|
tx := global.Db.Begin()
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
tx.Rollback()
|
|
}
|
|
}()
|
|
|
|
err = projectPlatformDoctorDao.DeleteProjectPlatformDoctorById(tx, whiteDoctorId)
|
|
if err != nil {
|
|
tx.Rollback()
|
|
responses.FailWithMessage("操作失败", c)
|
|
return
|
|
}
|
|
|
|
tx.Commit()
|
|
responses.Ok(c)
|
|
}
|
|
|
|
// GetProjectPlatformDoctorList 查询app医生-列表
|
|
func (b *ProjectPlatformDoctor) GetProjectPlatformDoctorList(c *gin.Context) {
|
|
ProjectPlatformDoctorRequest := requests.ProjectPlatformDoctorRequest{}
|
|
req := ProjectPlatformDoctorRequest.GetProjectPlatformDoctorList
|
|
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
|
|
}
|
|
|
|
var g []*dto.UserDto
|
|
|
|
// 获取医院信息-Name
|
|
doctors, err := app.GetDoctorInfoByName(req.UserName)
|
|
if err != nil {
|
|
responses.FailWithMessage(err.Error(), c)
|
|
return
|
|
}
|
|
|
|
if len(doctors.Data) <= 0 {
|
|
responses.OkWithData(g, c)
|
|
return
|
|
}
|
|
|
|
// 开始事务
|
|
tx := global.Db.Begin()
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
tx.Rollback()
|
|
}
|
|
}()
|
|
|
|
var users []*model.User
|
|
|
|
userDao := dao.UserDao{}
|
|
for _, v := range doctors.Data {
|
|
maps := make(map[string]interface{})
|
|
maps["user_iden"] = v.Uuid
|
|
maps["register_source"] = 2
|
|
user, _ := userDao.GetUser(maps)
|
|
if user != nil {
|
|
users = append(users, user)
|
|
|
|
continue
|
|
}
|
|
|
|
user = &model.User{
|
|
UserIden: v.Uuid,
|
|
UserName: v.RealName,
|
|
UserMobile: v.Mobile,
|
|
MobileEncryption: utils.GenerateMD5(v.Mobile),
|
|
Status: 1,
|
|
RegisterSource: 2,
|
|
OpenId: "",
|
|
UnionId: "",
|
|
Sex: 0,
|
|
Avatar: "",
|
|
Title: utils.DoctorTitleToInt(v.PositionName),
|
|
DepartmentName: v.OfficeName,
|
|
Address: v.ProvName,
|
|
}
|
|
user, err = userDao.AddUser(tx, user)
|
|
if err != nil {
|
|
tx.Rollback()
|
|
responses.OkWithData(g, c)
|
|
return
|
|
}
|
|
|
|
users = append(users, user)
|
|
|
|
// 检测医院是否存在
|
|
basicHospitalDao := dao.BasicHospitalDao{}
|
|
maps = make(map[string]interface{})
|
|
maps["source"] = 2
|
|
maps["hospital_iden"] = v.HospitalUuid
|
|
basicHospital, _ := basicHospitalDao.GetBasicHospital(maps)
|
|
if basicHospital == nil {
|
|
// 获取医院数据
|
|
hospitalData, err := app.GetHospitalByUuid(v.HospitalUuid)
|
|
if err != nil {
|
|
tx.Rollback()
|
|
responses.OkWithData(g, c)
|
|
return
|
|
}
|
|
|
|
// 添加医院
|
|
hospital := &model.BasicHospital{
|
|
HospitalIden: v.HospitalUuid,
|
|
HospitalName: hospitalData.Data.Name,
|
|
Source: 2,
|
|
HospitalLevel: hospitalData.Data.Level,
|
|
DoctorNumber: hospitalData.Data.ExpertNum,
|
|
Province: hospitalData.Data.ProvName,
|
|
City: "",
|
|
County: "",
|
|
Address: "",
|
|
}
|
|
|
|
basicHospital, err = basicHospitalDao.AddBasicHospital(tx, hospital)
|
|
if err != nil {
|
|
tx.Rollback()
|
|
responses.OkWithData(g, c)
|
|
return
|
|
}
|
|
|
|
// 修改用户所属医院
|
|
dataMaps := make(map[string]interface{})
|
|
dataMaps["hospital_id"] = basicHospital.HospitalId
|
|
err = userDao.EditUserById(tx, user.UserId, dataMaps)
|
|
if err != nil {
|
|
tx.Rollback()
|
|
responses.OkWithData(g, c)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
|
|
g = dto.GetUserListDto(users)
|
|
|
|
tx.Commit()
|
|
responses.OkWithData(g, c)
|
|
}
|
|
|
|
// ExportProjectPlatformDoctor 导出
|
|
func (r *ProjectPlatformDoctor) ExportProjectPlatformDoctor(c *gin.Context) {
|
|
ProjectPlatformDoctorRequest := requests.ProjectPlatformDoctorRequest{}
|
|
req := ProjectPlatformDoctorRequest.ExportProjectPlatformDoctor
|
|
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
|
|
}
|
|
|
|
// 获取数据
|
|
projectPlatformDoctorDao := dao.ProjectPlatformDoctorDao{}
|
|
projectPlatformDoctors, err := projectPlatformDoctorDao.GetProjectPlatformDoctorExportListSearch(req)
|
|
if err != nil {
|
|
responses.FailWithMessage(err.Error(), c)
|
|
return
|
|
}
|
|
|
|
if len(projectPlatformDoctors) <= 0 {
|
|
responses.FailWithMessage("无数据,不可导出", c)
|
|
return
|
|
}
|
|
|
|
// 业务处理
|
|
exportService := service.ExportService{}
|
|
ossAddress, err := exportService.ProjectPlatformDoctor(projectPlatformDoctors)
|
|
if err != nil {
|
|
responses.FailWithMessage(err.Error(), c)
|
|
return
|
|
}
|
|
|
|
responses.OkWithData(ossAddress, c)
|
|
}
|