diff --git a/api/controller/adminUser.go b/api/controller/adminUser.go index fe6f02f..b6d60e7 100644 --- a/api/controller/adminUser.go +++ b/api/controller/adminUser.go @@ -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) diff --git a/api/controller/base.go b/api/controller/base.go index 8dc0d94..369b172 100644 --- a/api/controller/base.go +++ b/api/controller/base.go @@ -13,12 +13,12 @@ type Api struct { // SysSetting 系统设置 type sysSetting struct { - Role // 角色数据 - Menu // 菜单数据 - User // 用户数据 - AdminApi // 接口数据 - Dept // 部门数据 - Post // 岗位数据 + Role // 角色数据 + Menu // 菜单数据 + AdminUser // 用户数据 + AdminApi // 接口数据 + Dept // 部门数据 + Post // 岗位数据 } // 医生管理 diff --git a/api/controller/patientFamily.go b/api/controller/patientFamily.go index 432865c..aca1f21 100644 --- a/api/controller/patientFamily.go +++ b/api/controller/patientFamily.go @@ -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) } diff --git a/api/dao/patientFamily.go b/api/dao/patientFamily.go index 37d8063..012ffbd 100644 --- a/api/dao/patientFamily.go +++ b/api/dao/patientFamily.go @@ -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) diff --git a/api/responses/patientFamilyResponse/patientFamily.go b/api/responses/patientFamilyResponse/patientFamily.go index c25f1a0..84b8581 100644 --- a/api/responses/patientFamilyResponse/patientFamily.go +++ b/api/responses/patientFamilyResponse/patientFamily.go @@ -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, diff --git a/api/router/router.go b/api/router/router.go index ea93fee..03eefa5 100644 --- a/api/router/router.go +++ b/api/router/router.go @@ -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) } } diff --git a/api/service/User.go b/api/service/User.go new file mode 100644 index 0000000..8dba18a --- /dev/null +++ b/api/service/User.go @@ -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 +} diff --git a/api/service/user.go b/api/service/adminUser.go similarity index 84% rename from api/service/user.go rename to api/service/adminUser.go index dca7f35..d91aa9f 100644 --- a/api/service/user.go +++ b/api/service/adminUser.go @@ -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 -} diff --git a/api/service/patientFamily.go b/api/service/patientFamily.go index c994e1f..4245533 100644 --- a/api/service/patientFamily.go +++ b/api/service/patientFamily.go @@ -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 +}