新增获取就诊人详情

This commit is contained in:
wucongxing 2023-09-19 08:41:21 +08:00
parent 9d21730305
commit 43d5023b80
9 changed files with 214 additions and 97 deletions

View File

@ -14,10 +14,10 @@ import (
"time" "time"
) )
type User struct{} type AdminUser struct{}
// GetUserPage 获取用户列表-分页 // GetUserPage 获取用户列表-分页
func (r *User) GetUserPage(c *gin.Context) { func (r *AdminUser) GetUserPage(c *gin.Context) {
UserRequest := requests.UserRequest{} UserRequest := requests.UserRequest{}
if err := c.ShouldBind(&UserRequest.GetUserPage); err != nil { if err := c.ShouldBind(&UserRequest.GetUserPage); err != nil {
responses.FailWithMessage(err.Error(), c) responses.FailWithMessage(err.Error(), c)
@ -60,7 +60,7 @@ func (r *User) GetUserPage(c *gin.Context) {
} }
// AddUser 新增用户 // AddUser 新增用户
func (r *User) AddUser(c *gin.Context) { func (r *AdminUser) AddUser(c *gin.Context) {
UserRequest := requests.UserRequest{} UserRequest := requests.UserRequest{}
if err := c.ShouldBind(&UserRequest.AddUser); err != nil { if err := c.ShouldBind(&UserRequest.AddUser); err != nil {
responses.FailWithMessage(err.Error(), c) responses.FailWithMessage(err.Error(), c)
@ -87,7 +87,7 @@ func (r *User) AddUser(c *gin.Context) {
} }
// 业务处理 // 业务处理
UserService := service.UserService{} UserService := service.AdminUserService{}
_, err = UserService.AddUser(c, UserRequest.AddUser) _, err = UserService.AddUser(c, UserRequest.AddUser)
if err != nil { if err != nil {
responses.FailWithMessage(err.Error(), c) responses.FailWithMessage(err.Error(), c)
@ -97,7 +97,7 @@ func (r *User) AddUser(c *gin.Context) {
} }
// GetUser 用户详情 // GetUser 用户详情
func (r *User) GetUser(c *gin.Context) { func (r *AdminUser) GetUser(c *gin.Context) {
id := c.Param("user_id") id := c.Param("user_id")
if id == "" { if id == "" {
responses.FailWithMessage("缺少参数", c) responses.FailWithMessage("缺少参数", c)
@ -126,7 +126,7 @@ func (r *User) GetUser(c *gin.Context) {
} }
// DeleteUser 删除用户-批量 // DeleteUser 删除用户-批量
func (r *User) DeleteUser(c *gin.Context) { func (r *AdminUser) DeleteUser(c *gin.Context) {
userRequest := requests.UserRequest{} userRequest := requests.UserRequest{}
if err := c.ShouldBindJSON(&userRequest.DeleteUser); err != nil { if err := c.ShouldBindJSON(&userRequest.DeleteUser); err != nil {
responses.FailWithMessage(err.Error(), c) responses.FailWithMessage(err.Error(), c)
@ -153,7 +153,7 @@ func (r *User) DeleteUser(c *gin.Context) {
} }
// 业务处理 // 业务处理
userService := service.UserService{} userService := service.AdminUserService{}
_, err = userService.DeleteUser(c, userRequest.DeleteUser) _, err = userService.DeleteUser(c, userRequest.DeleteUser)
if err != nil { if err != nil {
responses.FailWithMessage(err.Error(), c) responses.FailWithMessage(err.Error(), c)
@ -163,7 +163,7 @@ func (r *User) DeleteUser(c *gin.Context) {
} }
// PutUser 修改用户 // PutUser 修改用户
func (r *User) PutUser(c *gin.Context) { func (r *AdminUser) PutUser(c *gin.Context) {
UserRequest := requests.UserRequest{} UserRequest := requests.UserRequest{}
if err := c.ShouldBind(&UserRequest.PutUser); err != nil { if err := c.ShouldBind(&UserRequest.PutUser); err != nil {
responses.FailWithMessage(err.Error(), c) responses.FailWithMessage(err.Error(), c)
@ -190,7 +190,7 @@ func (r *User) PutUser(c *gin.Context) {
} }
// 业务处理 // 业务处理
userService := service.UserService{} userService := service.AdminUserService{}
_, err = userService.PutUser(c, userId, UserRequest.PutUser) _, err = userService.PutUser(c, userId, UserRequest.PutUser)
if err != nil { if err != nil {
responses.FailWithMessage(err.Error(), c) responses.FailWithMessage(err.Error(), c)
@ -200,7 +200,7 @@ func (r *User) PutUser(c *gin.Context) {
} }
// PutUserPassword 修改用户密码 // PutUserPassword 修改用户密码
func (r *User) PutUserPassword(c *gin.Context) { func (r *AdminUser) PutUserPassword(c *gin.Context) {
UserRequest := requests.UserRequest{} UserRequest := requests.UserRequest{}
if err := c.ShouldBind(&UserRequest.PutUserPassword); err != nil { if err := c.ShouldBind(&UserRequest.PutUserPassword); err != nil {
responses.FailWithMessage(err.Error(), c) responses.FailWithMessage(err.Error(), c)
@ -220,7 +220,7 @@ func (r *User) PutUserPassword(c *gin.Context) {
} }
// 业务处理 // 业务处理
userService := service.UserService{} userService := service.AdminUserService{}
_, err := userService.PutUserPassword(userId, UserRequest.PutUserPassword) _, err := userService.PutUserPassword(userId, UserRequest.PutUserPassword)
if err != nil { if err != nil {
responses.FailWithMessage(err.Error(), c) responses.FailWithMessage(err.Error(), c)
@ -230,7 +230,7 @@ func (r *User) PutUserPassword(c *gin.Context) {
} }
// LoginOut 退出登陆 // LoginOut 退出登陆
func (b *User) LoginOut(c *gin.Context) { func (b *AdminUser) LoginOut(c *gin.Context) {
userId := c.GetInt64("UserId") userId := c.GetInt64("UserId")
if userId == 0 { if userId == 0 {
responses.FailWithMessage("用户错误", c) responses.FailWithMessage("用户错误", c)
@ -266,7 +266,7 @@ func (b *User) LoginOut(c *gin.Context) {
} }
// GetUserMenuList 获取用户菜单列表 // GetUserMenuList 获取用户菜单列表
func (r *User) GetUserMenuList(c *gin.Context) { func (r *AdminUser) GetUserMenuList(c *gin.Context) {
roleId := c.GetInt64("RoleId") roleId := c.GetInt64("RoleId")
if roleId == 0 { if roleId == 0 {
responses.Fail(c) responses.Fail(c)
@ -298,7 +298,7 @@ func (r *User) GetUserMenuList(c *gin.Context) {
} }
// GetUserButtonList 获取用户按钮列表 // GetUserButtonList 获取用户按钮列表
func (r *User) GetUserButtonList(c *gin.Context) { func (r *AdminUser) GetUserButtonList(c *gin.Context) {
roleId := c.GetInt64("RoleId") roleId := c.GetInt64("RoleId")
if roleId == 0 { if roleId == 0 {
responses.Fail(c) responses.Fail(c)

View File

@ -15,7 +15,7 @@ type Api struct {
type sysSetting struct { type sysSetting struct {
Role // 角色数据 Role // 角色数据
Menu // 菜单数据 Menu // 菜单数据
User // 用户数据 AdminUser // 用户数据
AdminApi // 接口数据 AdminApi // 接口数据
Dept // 部门数据 Dept // 部门数据
Post // 岗位数据 Post // 岗位数据

View File

@ -54,28 +54,28 @@ func (r *PatientFamily) GetPatientFamilyPage(c *gin.Context) {
responses.OkWithData(result, c) responses.OkWithData(result, c)
} }
// GetUserPatient 患者详情 // GetPatientFamily 就诊人详情
func (r *PatientFamily) GetUserPatient(c *gin.Context) { func (r *PatientFamily) GetPatientFamily(c *gin.Context) {
id := c.Param("patient_id") id := c.Param("family_id")
if id == "" { if id == "" {
responses.FailWithMessage("缺少参数", c) responses.FailWithMessage("缺少参数", c)
return return
} }
// 将 id 转换为 int64 类型 // 将 id 转换为 int64 类型
patientId, err := strconv.ParseInt(id, 10, 64) familyId, err := strconv.ParseInt(id, 10, 64)
if err != nil { if err != nil {
responses.Fail(c) responses.Fail(c)
return return
} }
// 业务处理 // 业务处理
userPatientService := service.UserPatientService{} patientFamilyService := service.PatientFamilyService{}
getUserPatientResponses, err := userPatientService.GetUserPatient(patientId) getPatientFamilyResponse, err := patientFamilyService.GetPatientFamily(familyId)
if err != nil { if err != nil {
responses.FailWithMessage(err.Error(), c) responses.FailWithMessage(err.Error(), c)
return return
} }
responses.OkWithData(getUserPatientResponses, c) responses.OkWithData(getPatientFamilyResponse, c)
} }

View File

@ -95,6 +95,11 @@ func (r *PatientFamilyDao) GetPatientFamilyPageSearch(req requests.GetPatientFam
return db.Omit("open_id", "union_id", "wx_session_key") return db.Omit("open_id", "union_id", "wx_session_key")
}) })
// 用户表
query = query.Preload("UserPatient.AdminUser", func(db *gorm.DB) *gorm.DB {
return db.Omit("user_password", "salt")
})
// 状态 // 状态
if req.Status != nil { if req.Status != nil {
query = query.Where("status = ?", req.Status) query = query.Where("status = ?", req.Status)

View File

@ -3,6 +3,8 @@ package patientFamilyResponse
import ( import (
"fmt" "fmt"
"hospital-admin-api/api/model" "hospital-admin-api/api/model"
"hospital-admin-api/api/responses/userResponse"
"hospital-admin-api/utils"
) )
type PatientFamily struct { type PatientFamily struct {
@ -66,6 +68,38 @@ type getPatientFamilyPage struct {
UpdatedAt model.LocalTime `json:"updated_at"` // 更新时间 UpdatedAt model.LocalTime `json:"updated_at"` // 更新时间
} }
// GetPatientFamily 就诊人详情
type GetPatientFamily struct {
FamilyId string `json:"family_id"` // 主键id
PatientId string `json:"patient_id"` // 患者id
Relation *int `json:"relation"` // 与患者关系1:本人 2:父母 3:爱人 4:子女 5:亲戚 6:其他)
Status *int `json:"status"` // 状态1:正常 2:删除)
IsDefault *int `json:"is_default"` // 是否默认0:否 1:是)
CardName string `json:"card_name"` // 姓名
CardNameMask string `json:"card_name_mask"` // 姓名(掩码)
MobileMask string `json:"mobile_mask"` // 电话(掩码)
Type *int `json:"type"` // 身份类型1:身份证 2:护照 3:港澳通行证 4:台胞证)
IdNumberMask string `json:"id_number_mask"` // 证件号码(掩码)
Sex *int `json:"sex"` // 性别0:未知 1:男 2:女)
Age int `json:"age"` // 年龄
ProvinceId string `json:"province_id"` // 省份id
Province string `json:"province"` // 省份
CityId string `json:"city_id"` // 城市id
City string `json:"city"` // 城市
CountyId string `json:"county_id"` // 区县id
County string `json:"county"` // 区县
Height string `json:"height"` // 身高cm
Weight string `json:"weight"` // 体重kg
MaritalStatus *int `json:"marital_status"` // 婚姻状况0:未婚 1:已婚 2:离异)
NationId string `json:"nation_id"` // 民族
NationName string `json:"nation_name"` // 民族名称
JobId string `json:"job_id"` // 职业
JobName string `json:"job_name"` // 职业名称
User *userResponse.User `json:"user"` // 用户
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
UpdatedAt model.LocalTime `json:"updated_at"` // 更新时间
}
// GetUserPatientResponse 获取患者详情 // GetUserPatientResponse 获取患者详情
func GetUserPatientResponse(patientFamilys []*model.PatientFamily) []*GetUserPatient { func GetUserPatientResponse(patientFamilys []*model.PatientFamily) []*GetUserPatient {
// 处理返回值 // 处理返回值
@ -111,7 +145,7 @@ func GetPatientFamilyPageResponse(patientFamily []*model.PatientFamily) []getPat
Relation: &v.Relation, Relation: &v.Relation,
Status: &v.Status, Status: &v.Status,
CardName: v.CardName, CardName: v.CardName,
MobileMask: v.MobileMask, MobileMask: utils.MaskPhoneStr(v.UserPatient.User.Mobile),
UserName: v.UserPatient.UserName, UserName: v.UserPatient.UserName,
CreatedAt: v.CreatedAt, CreatedAt: v.CreatedAt,
UpdatedAt: v.UpdatedAt, UpdatedAt: v.UpdatedAt,

View File

@ -226,31 +226,31 @@ func privateRouter(r *gin.Engine, api controller.Api) {
userGroup := adminGroup.Group("/user") userGroup := adminGroup.Group("/user")
{ {
// 获取用户列表-分页 // 获取用户列表-分页
userGroup.GET("", api.User.GetUserPage) userGroup.GET("", api.AdminUser.GetUserPage)
// 新增用户 // 新增用户
userGroup.POST("", api.User.AddUser) userGroup.POST("", api.AdminUser.AddUser)
// 用户详情 // 用户详情
userGroup.GET("/:user_id", api.User.GetUser) userGroup.GET("/:user_id", api.AdminUser.GetUser)
// 删除用户-批量 // 删除用户-批量
userGroup.DELETE("", api.User.DeleteUser) userGroup.DELETE("", api.AdminUser.DeleteUser)
// 修改用户 // 修改用户
userGroup.PUT("/:user_id", api.User.PutUser) userGroup.PUT("/:user_id", api.AdminUser.PutUser)
// 修改用户密码 // 修改用户密码
userGroup.PUT("/password", api.User.PutUserPassword) userGroup.PUT("/password", api.AdminUser.PutUserPassword)
// 退出登陆 // 退出登陆
userGroup.PUT("loginout", api.User.LoginOut) userGroup.PUT("loginout", api.AdminUser.LoginOut)
// 获取用户菜单列表 // 获取用户菜单列表
userGroup.GET("/menu", api.User.GetUserMenuList) userGroup.GET("/menu", api.AdminUser.GetUserMenuList)
// 获取用户按钮列表 // 获取用户按钮列表
userGroup.GET("/button", api.User.GetUserButtonList) userGroup.GET("/button", api.AdminUser.GetUserButtonList)
} }
// 接口 // 接口
@ -431,7 +431,7 @@ func privateRouter(r *gin.Engine, api controller.Api) {
patientFamilyGroup.GET("", api.PatientFamily.GetPatientFamilyPage) patientFamilyGroup.GET("", api.PatientFamily.GetPatientFamilyPage)
// 就诊人详情 // 就诊人详情
patientFamilyGroup.GET("/:family_id", api.UserDoctor.GetUserDoctorPending) patientFamilyGroup.GET("/:family_id", api.PatientFamily.GetPatientFamily)
} }
} }

63
api/service/User.go Normal file
View File

@ -0,0 +1,63 @@
package service
import (
"errors"
"hospital-admin-api/api/dao"
)
type UserService struct {
}
// GetUserCardNum 获取用户身份证号
func (r *UserService) GetUserCardNum(userId, familyId int64) (string, error) {
var cardNum string
// 获取用户数据
userDao := dao.UserDao{}
user, err := userDao.GetUserById(userId)
if err != nil || user == nil {
return "", errors.New("用户错误")
}
// 判断用户类型
if user.UserType == 1 {
// 患者
if familyId == 0 {
return "", errors.New("获取失败")
}
patientFamilyDao := dao.PatientFamilyDao{}
patientFamily, err := patientFamilyDao.GetPatientFamilyById(familyId)
if err != nil || patientFamily == nil {
return "", errors.New("获取失败")
}
cardNum = patientFamily.IdNumber
} else if user.UserType == 2 {
// 医生
userDoctorInfoDao := dao.UserDoctorInfoDao{}
userDoctorInfo, err := userDoctorInfoDao.GetUserDoctorInfoByUserId(userId)
if err != nil || userDoctorInfo == nil {
return "", errors.New("获取失败")
}
cardNum = userDoctorInfo.CardNum
} else if user.UserType == 3 {
// 药师
cardNum = "暂时未做"
}
return cardNum, nil
}
// GetUserBankNumByDoctorId 获取银行卡号
func (r *UserService) GetUserBankNumByDoctorId(doctorId int64) (string, error) {
// 获取用户数据
doctorBankCardDao := dao.DoctorBankCardDao{}
doctorBankCard, err := doctorBankCardDao.GetDoctorBankCardByDoctorId(doctorId)
if err != nil || doctorBankCard == nil {
return "", errors.New("错误数据")
}
return doctorBankCard.BankCardCode, nil
}

View File

@ -14,11 +14,11 @@ import (
"strconv" "strconv"
) )
type UserService struct { type AdminUserService struct {
} }
// AddUser 新增用户 // AddUser 新增用户
func (r *UserService) AddUser(c *gin.Context, AddUserRequest requests.AddUser) (bool, error) { func (r *AdminUserService) AddUser(c *gin.Context, AddUserRequest requests.AddUser) (bool, error) {
// 当前登陆用户id // 当前登陆用户id
loginUserId := c.GetInt64("UserId") loginUserId := c.GetInt64("UserId")
if loginUserId == 0 { if loginUserId == 0 {
@ -127,7 +127,7 @@ func (r *UserService) AddUser(c *gin.Context, AddUserRequest requests.AddUser) (
} }
// DeleteUser 删除用户-批量 // DeleteUser 删除用户-批量
func (r *UserService) DeleteUser(c *gin.Context, DeleteUserRequest requests.DeleteUser) (bool, error) { func (r *AdminUserService) DeleteUser(c *gin.Context, DeleteUserRequest requests.DeleteUser) (bool, error) {
// 获取当前登陆用户数据 // 获取当前登陆用户数据
userId := c.GetInt64("UserId") userId := c.GetInt64("UserId")
if userId == 0 { if userId == 0 {
@ -188,7 +188,7 @@ func (r *UserService) DeleteUser(c *gin.Context, DeleteUserRequest requests.Dele
} }
// PutUser 修改用户 // PutUser 修改用户
func (r *UserService) PutUser(c *gin.Context, requestUserId int64, putUserRequest requests.PutUser) (bool, error) { func (r *AdminUserService) PutUser(c *gin.Context, requestUserId int64, putUserRequest requests.PutUser) (bool, error) {
// 获取当前登陆用户数据 // 获取当前登陆用户数据
loginUserId := c.GetInt64("UserId") loginUserId := c.GetInt64("UserId")
if loginUserId == 0 { if loginUserId == 0 {
@ -325,7 +325,7 @@ func (r *UserService) PutUser(c *gin.Context, requestUserId int64, putUserReques
} }
// PutUserPassword 修改用户密码 // PutUserPassword 修改用户密码
func (r *UserService) PutUserPassword(requestUserId int64, putUserPasswordRequest requests.PutUserPassword) (bool, error) { func (r *AdminUserService) PutUserPassword(requestUserId int64, putUserPasswordRequest requests.PutUserPassword) (bool, error) {
adminUserDao := dao.AdminUserDao{} adminUserDao := dao.AdminUserDao{}
// 获取需修改用户数据 // 获取需修改用户数据
@ -397,57 +397,3 @@ func (r *UserService) PutUserPassword(requestUserId int64, putUserPasswordReques
return true, nil return true, nil
} }
// GetUserCardNum 获取用户身份证号
func (r *UserService) GetUserCardNum(userId, familyId int64) (string, error) {
var cardNum string
// 获取用户数据
userDao := dao.UserDao{}
user, err := userDao.GetUserById(userId)
if err != nil || user == nil {
return "", errors.New("用户错误")
}
// 判断用户类型
if user.UserType == 1 {
// 患者
if familyId == 0 {
return "", errors.New("获取失败")
}
patientFamilyDao := dao.PatientFamilyDao{}
patientFamily, err := patientFamilyDao.GetPatientFamilyById(familyId)
if err != nil || patientFamily == nil {
return "", errors.New("获取失败")
}
cardNum = patientFamily.IdNumber
} else if user.UserType == 2 {
// 医生
userDoctorInfoDao := dao.UserDoctorInfoDao{}
userDoctorInfo, err := userDoctorInfoDao.GetUserDoctorInfoByUserId(userId)
if err != nil || userDoctorInfo == nil {
return "", errors.New("获取失败")
}
cardNum = userDoctorInfo.CardNum
} else if user.UserType == 3 {
// 药师
cardNum = "暂时未做"
}
return cardNum, nil
}
// GetUserBankNumByDoctorId 获取银行卡号
func (r *UserService) GetUserBankNumByDoctorId(doctorId int64) (string, error) {
// 获取用户数据
doctorBankCardDao := dao.DoctorBankCardDao{}
doctorBankCard, err := doctorBankCardDao.GetDoctorBankCardByDoctorId(doctorId)
if err != nil || doctorBankCard == nil {
return "", errors.New("错误数据")
}
return doctorBankCard.BankCardCode, nil
}

View File

@ -1,9 +1,13 @@
package service package service
import ( import (
"errors"
"fmt" "fmt"
"hospital-admin-api/api/dao" "hospital-admin-api/api/dao"
"hospital-admin-api/api/model"
"hospital-admin-api/api/responses/patientFamilyResponse" "hospital-admin-api/api/responses/patientFamilyResponse"
"hospital-admin-api/api/responses/userResponse"
"hospital-admin-api/utils"
) )
type PatientFamilyService struct { type PatientFamilyService struct {
@ -63,3 +67,68 @@ func (r *PatientFamilyService) GetPatientFamilyListByPatientId(patientId int64)
return items, nil return items, nil
} }
// GetPatientFamily 家庭成员详情
func (r *PatientFamilyService) GetPatientFamily(familyId int64) (getPatientFamilyResponse *patientFamilyResponse.GetPatientFamily, err error) {
patientFamilyDao := dao.PatientFamilyDao{}
patientFamily, err := patientFamilyDao.GetPatientFamilyById(familyId)
if err != nil || patientFamily == nil {
return nil, errors.New("就诊人错误")
}
// 获取患者数据
userPatientDao := dao.UserPatientDao{}
userPatient, err := userPatientDao.GetUserPatientPreloadById(patientFamily.PatientId)
if err != nil || userPatient == nil {
return nil, errors.New("患者错误")
}
// 获取用户数据
userDao := dao.UserDao{}
user, err := userDao.GetUserById(userPatient.UserId)
if err != nil || user == nil {
return nil, errors.New("用户错误")
}
var userData *userResponse.User
if userPatient.User != nil {
userData = userResponse.UserResponse(user)
// 加密患者手机号
userData.Mobile = utils.MaskPhoneStr(userData.Mobile)
userData.WxMobile = utils.MaskPhoneStr(userData.WxMobile)
}
getPatientFamilyResponse = &patientFamilyResponse.GetPatientFamily{
FamilyId: fmt.Sprintf("%d", patientFamily.FamilyId),
PatientId: fmt.Sprintf("%d", patientFamily.PatientId),
Relation: &patientFamily.Relation,
Status: &patientFamily.Status,
IsDefault: &patientFamily.IsDefault,
CardName: patientFamily.CardName,
CardNameMask: patientFamily.CardNameMask,
MobileMask: patientFamily.MobileMask,
Type: &patientFamily.Type,
IdNumberMask: patientFamily.IdNumberMask,
Sex: &patientFamily.Sex,
Age: patientFamily.Age,
ProvinceId: fmt.Sprintf("%d", patientFamily.ProvinceId),
Province: patientFamily.Province,
CityId: fmt.Sprintf("%d", patientFamily.CityId),
City: patientFamily.City,
CountyId: fmt.Sprintf("%d", patientFamily.CountyId),
County: patientFamily.County,
Height: patientFamily.Height,
Weight: patientFamily.Weight,
MaritalStatus: &patientFamily.MaritalStatus,
NationId: fmt.Sprintf("%d", patientFamily.NationId),
NationName: patientFamily.NationName,
JobId: fmt.Sprintf("%d", patientFamily.JobId),
JobName: patientFamily.JobName,
User: userData,
CreatedAt: model.LocalTime{},
UpdatedAt: model.LocalTime{},
}
return getPatientFamilyResponse, nil
}