新增获取就诊人详情

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

View File

@ -13,12 +13,12 @@ type Api struct {
// SysSetting 系统设置
type sysSetting struct {
Role // 角色数据
Menu // 菜单数据
User // 用户数据
AdminApi // 接口数据
Dept // 部门数据
Post // 岗位数据
Role // 角色数据
Menu // 菜单数据
AdminUser // 用户数据
AdminApi // 接口数据
Dept // 部门数据
Post // 岗位数据
}
// 医生管理

View File

@ -54,28 +54,28 @@ func (r *PatientFamily) GetPatientFamilyPage(c *gin.Context) {
responses.OkWithData(result, c)
}
// GetUserPatient 患者详情
func (r *PatientFamily) GetUserPatient(c *gin.Context) {
id := c.Param("patient_id")
// GetPatientFamily 就诊人详情
func (r *PatientFamily) GetPatientFamily(c *gin.Context) {
id := c.Param("family_id")
if id == "" {
responses.FailWithMessage("缺少参数", c)
return
}
// 将 id 转换为 int64 类型
patientId, err := strconv.ParseInt(id, 10, 64)
familyId, err := strconv.ParseInt(id, 10, 64)
if err != nil {
responses.Fail(c)
return
}
// 业务处理
userPatientService := service.UserPatientService{}
getUserPatientResponses, err := userPatientService.GetUserPatient(patientId)
patientFamilyService := service.PatientFamilyService{}
getPatientFamilyResponse, err := patientFamilyService.GetPatientFamily(familyId)
if err != nil {
responses.FailWithMessage(err.Error(), c)
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")
})
// 用户表
query = query.Preload("UserPatient.AdminUser", func(db *gorm.DB) *gorm.DB {
return db.Omit("user_password", "salt")
})
// 状态
if req.Status != nil {
query = query.Where("status = ?", req.Status)

View File

@ -3,6 +3,8 @@ package patientFamilyResponse
import (
"fmt"
"hospital-admin-api/api/model"
"hospital-admin-api/api/responses/userResponse"
"hospital-admin-api/utils"
)
type PatientFamily struct {
@ -66,6 +68,38 @@ type getPatientFamilyPage struct {
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 获取患者详情
func GetUserPatientResponse(patientFamilys []*model.PatientFamily) []*GetUserPatient {
// 处理返回值
@ -111,7 +145,7 @@ func GetPatientFamilyPageResponse(patientFamily []*model.PatientFamily) []getPat
Relation: &v.Relation,
Status: &v.Status,
CardName: v.CardName,
MobileMask: v.MobileMask,
MobileMask: utils.MaskPhoneStr(v.UserPatient.User.Mobile),
UserName: v.UserPatient.UserName,
CreatedAt: v.CreatedAt,
UpdatedAt: v.UpdatedAt,

View File

@ -226,31 +226,31 @@ func privateRouter(r *gin.Engine, api controller.Api) {
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("/: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"
)
type UserService struct {
type AdminUserService struct {
}
// 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
loginUserId := c.GetInt64("UserId")
if loginUserId == 0 {
@ -127,7 +127,7 @@ func (r *UserService) AddUser(c *gin.Context, AddUserRequest requests.AddUser) (
}
// 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")
if userId == 0 {
@ -188,7 +188,7 @@ func (r *UserService) DeleteUser(c *gin.Context, DeleteUserRequest requests.Dele
}
// 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")
if loginUserId == 0 {
@ -325,7 +325,7 @@ func (r *UserService) PutUser(c *gin.Context, requestUserId int64, putUserReques
}
// 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{}
// 获取需修改用户数据
@ -397,57 +397,3 @@ func (r *UserService) PutUserPassword(requestUserId int64, putUserPasswordReques
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
import (
"errors"
"fmt"
"hospital-admin-api/api/dao"
"hospital-admin-api/api/model"
"hospital-admin-api/api/responses/patientFamilyResponse"
"hospital-admin-api/api/responses/userResponse"
"hospital-admin-api/utils"
)
type PatientFamilyService struct {
@ -63,3 +67,68 @@ func (r *PatientFamilyService) GetPatientFamilyListByPatientId(patientId int64)
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
}