This commit is contained in:
2023-07-06 11:01:47 +08:00
parent 2944d42281
commit 1c108f8a1f
27 changed files with 1034 additions and 222 deletions
+100
View File
@@ -0,0 +1,100 @@
package service
import (
"crypto/md5"
"encoding/hex"
"errors"
"hospital-admin-api/api/dao"
"hospital-admin-api/api/requests"
"hospital-admin-api/api/responses/adminResponse"
"hospital-admin-api/extend/aliyun"
"hospital-admin-api/utils"
"strconv"
)
type AdminService struct {
}
// Login 登陆
func (b *AdminService) Login(LoginRequest requests.Login) (*adminResponse.Login, error) {
// 获取用户信息
AdminUserDao := dao.AdminUserDao{}
adminUser, err := AdminUserDao.GetAdminUserFirstByAccess(LoginRequest.Access)
if err != nil || adminUser == nil {
return nil, errors.New("用户名或密码错误")
}
// 检测用户密码
password := md5.Sum([]byte(LoginRequest.Password + adminUser.Salt))
// 将哈希值转换为16进制字符串
passwordString := hex.EncodeToString(password[:])
if passwordString != adminUser.Password {
return nil, errors.New("用户名或密码错误")
}
// 检测用户状态
if adminUser.IsDeleted == 1 {
return nil, errors.New("非法用户")
}
if adminUser.IsDisabled == 1 {
return nil, errors.New("您的账号已被禁用,请联系管理员处理")
}
token := &utils.Token{
UserId: strconv.FormatInt(adminUser.UserID, 10),
RoleId: strconv.FormatInt(adminUser.RoleID, 10),
DeptId: strconv.FormatInt(adminUser.DeptID, 10),
PostId: strconv.FormatInt(adminUser.PostID, 10),
}
// 生成jwt
jwt, err := token.NewJWT()
if err != nil {
return nil, errors.New("登陆失败")
}
result := &adminResponse.Login{
UserId: strconv.FormatInt(adminUser.UserID, 10),
NickName: adminUser.NickName,
Avatar: adminUser.Avatar,
Token: jwt,
}
result.GetFullAvatar()
return result, nil
}
// GetOssSign 获取oss签名
func (a *AdminService) GetOssSign(getOssSignRequest requests.GetOssSign) (*aliyun.GetOssSignResponse, error) {
var dir string
if getOssSignRequest.UserType == 1 {
dir = "applet/patient/"
} else if getOssSignRequest.UserType == 2 {
dir = "applet/doctor/"
} else if getOssSignRequest.UserType == 3 {
dir = "applet/pharmacist/"
} else if getOssSignRequest.UserType == 4 {
dir = "applet/admin/"
}
if dir != "" {
if getOssSignRequest.Scene == 1 {
dir = dir + "avatar/"
} else if getOssSignRequest.Scene == 2 {
dir = dir + "cert/"
} else if getOssSignRequest.Scene == 3 {
dir = dir + "card/"
}
}
if dir == "" {
return nil, errors.New("获取签名失败")
}
// 生成签名
ossSign, _ := aliyun.GetOssSign(dir)
return ossSign, nil
}
-63
View File
@@ -1,66 +1,3 @@
package service
import (
"crypto/md5"
"encoding/hex"
"errors"
"hospital-admin-api/api/dao"
"hospital-admin-api/api/requests"
"hospital-admin-api/api/responses/basicResponse"
"hospital-admin-api/utils"
"strconv"
)
type BasicService struct{}
// Login 登陆
func (b *BasicService) Login(LoginRequest requests.Login) (basicResponse.Login, error) {
// 获取用户信息
AdminUserDao := dao.AdminUserDao{}
adminUser, err := AdminUserDao.GetAdminUserFirstByAccess(LoginRequest.Access)
if err != nil || adminUser == nil {
return basicResponse.Login{}, errors.New("用户名或密码错误")
}
// 检测用户密码
password := md5.Sum([]byte(LoginRequest.Password + adminUser.Salt))
// 将哈希值转换为16进制字符串
passwordString := hex.EncodeToString(password[:])
if passwordString != adminUser.Password {
return basicResponse.Login{}, errors.New("用户名或密码错误")
}
// 检测用户状态
if adminUser.IsDeleted == 1 {
return basicResponse.Login{}, errors.New("非法用户")
}
if adminUser.IsDisabled == 1 {
return basicResponse.Login{}, errors.New("您的账号已被禁用,请联系管理员处理")
}
token := &utils.Token{
UserId: strconv.FormatInt(adminUser.UserID, 10),
RoleId: strconv.FormatInt(adminUser.RoleID, 10),
DeptId: strconv.FormatInt(adminUser.DeptID, 10),
PostId: strconv.FormatInt(adminUser.PostID, 10),
}
// 生成jwt
jwt, err := token.NewJWT()
if err != nil {
return basicResponse.Login{}, errors.New("登陆失败")
}
result := basicResponse.Login{
UserId: strconv.FormatInt(adminUser.UserID, 10),
NickName: adminUser.NickName,
Avatar: adminUser.Avatar,
Token: jwt,
}
result.GetFullAvatar()
return result, nil
}
+243
View File
@@ -1,4 +1,247 @@
package service
import (
"errors"
"hospital-admin-api/api/dao"
"hospital-admin-api/api/requests"
"hospital-admin-api/config"
"hospital-admin-api/global"
"strconv"
"strings"
)
type UserDoctorService struct {
}
// PutPostUserDoctor 修改医生
func (r *UserDoctorService) PutPostUserDoctor(doctorId int64, userDoctorRequest requests.PutPostUserDoctor) (bool, error) {
// 获取医生数据
userDoctorDao := dao.UserDoctorDao{}
userDoctor, err := userDoctorDao.GetUserDoctorById(doctorId)
if err != nil || userDoctor == nil {
return false, errors.New("医生数据错误")
}
// 获取医生详情数据
userDoctorInfoDao := dao.UserDoctorInfoDao{}
userDoctorInfo, err := userDoctorInfoDao.GetUserDoctorInfoByDoctorId(doctorId)
if err != nil {
return false, errors.New("医生详情数据错误")
}
// 医生数据
var userDoctorData map[string]interface{}
// 医生详情数据
var userDoctorInfoData map[string]interface{}
// 处理头像
userDoctorRequest.Avatar = strings.Replace(userDoctorRequest.Avatar, config.C.Oss.OssCustomDomainName, "", 1)
if userDoctor.Avatar != userDoctorRequest.Avatar {
userDoctorData["avatar"] = userDoctorRequest.Avatar
userDoctorInfoData["avatar"] = userDoctorRequest.Avatar
}
// 处理职称
if userDoctor.DoctorTitle != userDoctorRequest.DoctorTitle {
userDoctorData["doctor_title"] = userDoctorRequest.DoctorTitle
}
// 处理科室
departmentCustomId, err := strconv.ParseInt(userDoctorRequest.DepartmentCustomId, 10, 64)
if err != nil {
return false, errors.New("科室错误")
}
if userDoctor.DepartmentCustomId != departmentCustomId || userDoctor.DepartmentCustomName != userDoctorRequest.DepartmentCustomName {
// 获取科室数据
hospitalDepartmentCustomDao := dao.HospitalDepartmentCustom{}
hospitalDepartmentCustom, err := hospitalDepartmentCustomDao.GetHospitalDepartmentCustomById(departmentCustomId)
if err != nil || hospitalDepartmentCustom == nil {
return false, errors.New("科室错误")
}
userDoctorData["department_custom_id"] = userDoctorRequest.DepartmentCustomId
userDoctorData["department_custom_name"] = hospitalDepartmentCustom.DepartmentCustomName
if userDoctorRequest.DepartmentCustomName != "" {
userDoctorData["department_custom_name"] = userDoctorRequest.DepartmentCustomName
}
}
// 处理科室电话
if userDoctor.DepartmentCustomMobile != userDoctorRequest.DepartmentCustomMobile {
userDoctorData["department_custom_id"] = userDoctorRequest.DepartmentCustomMobile
}
// 处理医院
hospitalId, err := strconv.ParseInt(userDoctorRequest.HospitalId, 10, 64)
if err != nil {
return false, errors.New("科室错误")
}
if userDoctor.HospitalID != hospitalId {
// 获取医院数据
hospitalDao := dao.Hospital{}
hospital, err := hospitalDao.GetHospitalById(hospitalId)
if err != nil || hospital == nil {
return false, errors.New("医院错误")
}
userDoctorData["department_custom_id"] = userDoctorRequest.HospitalId
}
// 处理擅长
if userDoctor.BeGoodAt != userDoctorRequest.BeGoodAt {
userDoctorData["be_good_at"] = userDoctorRequest.BeGoodAt
}
// 医生简介
if userDoctor.BriefIntroduction != userDoctorRequest.BriefIntroduction {
userDoctorData["brief_introduction"] = userDoctorRequest.BriefIntroduction
}
// 处理医师执业证
var licenseCert string
if len(userDoctorRequest.LicenseCert) > 0 {
result := make([]string, len(userDoctorRequest.LicenseCert))
for i, url := range userDoctorRequest.LicenseCert {
result[i] = strings.TrimPrefix(url, config.C.Oss.OssCustomDomainName)
}
licenseCert = strings.Join(result, ",")
}
if userDoctorInfo != nil {
if userDoctorInfo.LicenseCert != licenseCert {
userDoctorInfoData["license_cert"] = licenseCert
}
} else {
userDoctorInfoData["license_cert"] = licenseCert
}
// 处理医师资格证
var qualificationCert string
if len(userDoctorRequest.QualificationCert) > 0 {
result := make([]string, len(userDoctorRequest.QualificationCert))
for i, url := range userDoctorRequest.QualificationCert {
result[i] = strings.TrimPrefix(url, config.C.Oss.OssCustomDomainName)
}
qualificationCert = strings.Join(result, ",")
}
if userDoctorInfo != nil {
if userDoctorInfo.QualificationCert != qualificationCert {
userDoctorInfoData["qualification_cert"] = qualificationCert
}
} else {
userDoctorInfoData["qualification_cert"] = qualificationCert
}
// 处理医师资格证号
if userDoctorInfo != nil {
if userDoctorInfo.QualificationCertNum != userDoctorRequest.QualificationCertNum {
userDoctorInfoData["qualification_cert_num"] = userDoctorRequest.QualificationCertNum
}
} else {
userDoctorInfoData["qualification_cert_num"] = userDoctorRequest.QualificationCertNum
}
// 处理医师工作证
var workCert string
if len(userDoctorRequest.WorkCert) > 0 {
result := make([]string, len(userDoctorRequest.WorkCert))
for i, url := range userDoctorRequest.WorkCert {
result[i] = strings.TrimPrefix(url, config.C.Oss.OssCustomDomainName)
}
workCert = strings.Join(result, ",")
}
if userDoctorInfo != nil {
if userDoctorInfo.WorkCert != workCert {
userDoctorInfoData["work_cert"] = workCert
}
} else {
userDoctorInfoData["work_cert"] = workCert
}
// 处理身份证正面图片
if userDoctorRequest.IdCardFront != "" {
idCardFront := strings.Replace(userDoctorRequest.IdCardFront, "https://img.applets.igandanyiyuan.com", "", 1)
if idCardFront != userDoctorInfo.IdCardFront {
userDoctorInfoData["id_card_front"] = idCardFront
}
}
// 身份证背面图片
if userDoctorRequest.IdCardBack != "" {
idCardBack := strings.Replace(userDoctorRequest.IdCardBack, "https://img.applets.igandanyiyuan.com", "", 1)
if idCardBack != userDoctorInfo.IdCardBack {
userDoctorInfoData["id_card_back"] = idCardBack
}
}
// 签名图片
if userDoctorRequest.SignImage != "" {
signImage := strings.Replace(userDoctorRequest.SignImage, "https://img.applets.igandanyiyuan.com", "", 1)
if signImage != userDoctorInfo.SignImage {
userDoctorInfoData["sign_image"] = signImage
}
}
// 开始事务
tx := global.Db.Begin()
defer func() {
if r := recover(); r != nil {
tx.Rollback()
}
}()
// 修改医生数据
if len(userDoctorData) != 0 {
err = userDoctorDao.EditUserDoctorById(tx, doctorId, userDoctorData)
if err != nil {
tx.Rollback()
return false, errors.New("修改失败")
}
}
// 修改医生详情数据
if userDoctorInfo == nil {
// 新增医生详情表
if len(userDoctorInfoData) != 0 {
userDoctorInfo, err := userDoctorInfoDao.AddUserDoctorInfoByMap(tx, userDoctorInfoData)
if userDoctorInfo == nil || err != nil {
tx.Rollback()
return false, errors.New("修改失败")
}
}
} else {
if len(userDoctorInfoData) != 0 {
err = userDoctorInfoDao.EditUserDoctorInfoById(tx, userDoctorInfo.DoctorInfoId, userDoctorInfoData)
if err != nil {
tx.Rollback()
return false, errors.New("修改失败")
}
}
}
// _, ok := userDoctorData["department_custom_id"]
// if ok {
// // 变更科室
//
// }
//
// paramMap := map[string]string{
// "userName": "zj",
// "age": "19",
// }
//
// sign := ca.GenerateSignature(paramMap)
// fmt.Println(sign)
tx.Commit()
return true, nil
//
}