1
This commit is contained in:
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
//
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user