From 6a4db0422e22642d6a1e429e92949b70d92fd69e Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Mon, 19 Feb 2024 10:28:11 +0800 Subject: [PATCH 01/24] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=AE=80=E4=BB=8B?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8-=E5=8C=BB=E7=94=9F=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E3=80=81=E7=AE=80=E4=BB=8B=E5=AE=A1=E6=A0=B8-=E5=AE=A1?= =?UTF-8?q?=E6=A0=B8=E5=8C=BB=E7=94=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/controller/userDoctor.go | 106 +++++++++++ api/dao/doctorIntroductionRecord.go | 82 +++++++++ api/dao/userDoctor.go | 50 +++++ api/dto/UserDoctor.go | 153 ++++++++++++++++ api/model/doctorIntroductionRecord.go | 37 ++++ api/model/userDoctor.go | 2 + api/requests/userDoctor.go | 20 ++ api/router/router.go | 13 ++ api/service/userDoctor.go | 254 ++++++++++++++++++++++++++ 9 files changed, 717 insertions(+) create mode 100644 api/dao/doctorIntroductionRecord.go create mode 100644 api/model/doctorIntroductionRecord.go diff --git a/api/controller/userDoctor.go b/api/controller/userDoctor.go index 1fc7413..8a28ea3 100644 --- a/api/controller/userDoctor.go +++ b/api/controller/userDoctor.go @@ -440,3 +440,109 @@ func (r *UserDoctor) GetUserDoctorBankCardPage(c *gin.Context) { result["data"] = res responses.OkWithData(result, c) } + +// GetDoctorIntroductionPage 简介审核-获取医生列表-分页 +func (r *UserDoctor) GetDoctorIntroductionPage(c *gin.Context) { + userDoctorRequest := requests.UserDoctorRequest{} + req := userDoctorRequest.GetDoctorIntroductionPage + if err := c.ShouldBind(&req); err != nil { + responses.FailWithMessage(err.Error(), c) + return + } + + // 参数验证 + if err := global.Validate.Struct(req); err != nil { + responses.FailWithMessage(utils.Translate(err), c) + return + } + + if req.Page == 0 { + req.Page = 1 + } + + if req.PageSize == 0 { + req.PageSize = 20 + } + + userDoctorDao := dao.UserDoctorDao{} + userDoctor, total, err := userDoctorDao.GetDoctorIntroductionPageSearch(req, req.Page, req.PageSize) + + if err != nil { + responses.FailWithMessage(err.Error(), c) + return + } + + // 处理返回值 + res := dto.GetUserDoctorIntroductionListDto(userDoctor) + + result := make(map[string]interface{}) + result["page"] = userDoctorRequest.GetUserDoctorPendingPage.Page + result["page_size"] = userDoctorRequest.GetUserDoctorPendingPage.PageSize + result["total"] = total + result["data"] = res + responses.OkWithData(result, c) +} + +// GetUserDoctorIntroduction 简介审核-医生详情 +func (r *UserDoctor) GetUserDoctorIntroduction(c *gin.Context) { + id := c.Param("doctor_id") + if id == "" { + responses.FailWithMessage("缺少参数", c) + return + } + + // 将 id 转换为 int64 类型 + doctorId, err := strconv.ParseInt(id, 10, 64) + if err != nil { + responses.Fail(c) + return + } + + // 业务处理 + userDoctorService := service.UserDoctorService{} + g, err := userDoctorService.GetUserDoctorIntroduction(doctorId) + if err != nil { + responses.FailWithMessage(err.Error(), c) + return + } + + responses.OkWithData(g, c) +} + +// PutDoctorIntroduction 简介审核-审核医生 +func (r *UserDoctor) PutDoctorIntroduction(c *gin.Context) { + userDoctorRequest := requests.UserDoctorRequest{} + if err := c.ShouldBind(&userDoctorRequest.PutDoctorIntroduction); err != nil { + responses.FailWithMessage(err.Error(), c) + return + } + + // 参数验证 + if err := global.Validate.Struct(userDoctorRequest.PutDoctorIntroduction); err != nil { + responses.FailWithMessage(utils.Translate(err), c) + return + } + + id := c.Param("doctor_id") + if id == "" { + responses.FailWithMessage("缺少参数", c) + return + } + + // 将 id 转换为 int64 类型 + doctorId, err := strconv.ParseInt(id, 10, 64) + if err != nil { + responses.Fail(c) + return + } + + // 业务处理 + userDoctorService := service.UserDoctorService{} + _, err = userDoctorService.PutDoctorIntroduction(doctorId, userDoctorRequest.PutDoctorIntroduction) + if err != nil { + responses.FailWithMessage(err.Error(), c) + return + } + + responses.Ok(c) +} diff --git a/api/dao/doctorIntroductionRecord.go b/api/dao/doctorIntroductionRecord.go new file mode 100644 index 0000000..f0b8a05 --- /dev/null +++ b/api/dao/doctorIntroductionRecord.go @@ -0,0 +1,82 @@ +package dao + +import ( + "gorm.io/gorm" + "gorm.io/gorm/clause" + "hospital-admin-api/api/model" + "hospital-admin-api/global" +) + +type DoctorIntroductionRecordDao struct { +} + +// GetDoctorIntroductionRecordByDoctorId 获取医生简介审核数据-医生id +func (r *DoctorIntroductionRecordDao) GetDoctorIntroductionRecordByDoctorId(doctorId int64) (m *model.DoctorIntroductionRecord, err error) { + err = global.Db.Where("doctor_id = ?", doctorId).First(&m).Error + if err != nil { + return nil, err + } + return m, nil +} + +// GetDoctorIntroductionRecordPreloadById 获取医生简介审核数据-加载全部关联-医生id +func (r *DoctorIntroductionRecordDao) GetDoctorIntroductionRecordPreloadById(doctorId int64) (m *model.DoctorIntroductionRecord, err error) { + err = global.Db.Preload(clause.Associations).First(&m, doctorId).Error + if err != nil { + return nil, err + } + return m, nil +} + +// EditDoctorIntroductionRecord 修改医生简介审核 +func (r *DoctorIntroductionRecordDao) EditDoctorIntroductionRecord(tx *gorm.DB, maps interface{}, data interface{}) error { + err := tx.Model(&model.DoctorIntroductionRecord{}).Where(maps).Updates(data).Error + if err != nil { + return err + } + return nil +} + +// EditDoctorIntroductionRecordById 修改医生简介审核-医生id +func (r *DoctorIntroductionRecordDao) EditDoctorIntroductionRecordById(tx *gorm.DB, doctorId int64, data interface{}) error { + err := tx.Model(&model.DoctorIntroductionRecord{}).Where("doctor_id = ?", doctorId).Updates(data).Error + if err != nil { + return err + } + return nil +} + +// GetDoctorIntroductionRecordList 获取医生简介审核列表 +func (r *DoctorIntroductionRecordDao) GetDoctorIntroductionRecordList(maps interface{}) (m []*model.DoctorIntroductionRecord, err error) { + err = global.Db.Where(maps).Find(&m).Error + if err != nil { + return nil, err + } + return m, nil +} + +// AddDoctorIntroductionRecord 新增医生简介审核 +func (r *DoctorIntroductionRecordDao) AddDoctorIntroductionRecord(tx *gorm.DB, model *model.DoctorIntroductionRecord) (*model.DoctorIntroductionRecord, error) { + if err := tx.Create(model).Error; err != nil { + return nil, err + } + return model, nil +} + +// GetDoctorIntroductionRecordLast 获取医生简介审核最后一条数据 +func (r *DoctorIntroductionRecordDao) GetDoctorIntroductionRecordLast(maps interface{}) (m *model.DoctorIntroductionRecord, err error) { + err = global.Db.Where(maps).Last(&m).Error + if err != nil { + return nil, err + } + return m, nil +} + +// DeleteDoctorIntroductionRecord 删除 +func (r *DoctorIntroductionRecordDao) DeleteDoctorIntroductionRecord(tx *gorm.DB, maps interface{}) error { + err := tx.Where(maps).Delete(&model.DoctorIntroductionRecord{}).Error + if err != nil { + return err + } + return nil +} diff --git a/api/dao/userDoctor.go b/api/dao/userDoctor.go index 70940ce..0ea6ca7 100644 --- a/api/dao/userDoctor.go +++ b/api/dao/userDoctor.go @@ -555,3 +555,53 @@ func (r *UserDoctorDao) GetUserDoctorExportListSearch(req requests.UserDoctorExp } return m, nil } + +// GetDoctorIntroductionPageSearch 简介审核-获取医生列表-分页 +func (r *UserDoctorDao) GetDoctorIntroductionPageSearch(req requests.GetDoctorIntroductionPage, page, pageSize int) (m []*model.UserDoctor, total int64, err error) { + var totalRecords int64 + + // 构建查询条件 + query := global.Db.Model(&model.UserDoctor{}).Omit("open_id", "union_id", "wx_session_key") + + // 用户 + query = query.Preload("User", func(db *gorm.DB) *gorm.DB { + return db.Omit("user_password", "salt") + }) + + // 医院 + query = query.Preload("Hospital", func(db *gorm.DB) *gorm.DB { + return db.Select("hospital_id,hospital_name,hospital_level_name") + }) + + // 手机号 + if req.Mobile != "" { + subQuery := global.Db.Model(&model.User{}). + Select("user_id"). + Where("mobile LIKE ?", "%"+req.Mobile+"%") + + query = query.Where(gorm.Expr("user_id IN (?)", subQuery)) + } + + // 用户名称 + if req.UserName != "" { + query = query.Where("user_name LIKE ?", "%"+req.UserName+"%") + } + + // 个人简介审核状态 + if req.IntroductionStatus == nil { + query = query.Where("introduction_status in (?)", []string{"2"}) + } else { + query = query.Where("introduction_status = ?", req.IntroductionStatus) + } + + // 查询总数量 + if err := query.Count(&totalRecords).Error; err != nil { + return nil, 0, err + } + + err = query.Scopes(model.Paginate(page, pageSize)).Find(&m).Error + if err != nil { + return nil, 0, err + } + return m, totalRecords, nil +} diff --git a/api/dto/UserDoctor.go b/api/dto/UserDoctor.go index 79192e2..af95934 100644 --- a/api/dto/UserDoctor.go +++ b/api/dto/UserDoctor.go @@ -87,6 +87,36 @@ type UserDoctorPendingDto struct { UserCaCert *UserCaCertDto `json:"user_ca_cert"` // ca监管证书 } +// UserDoctorIntroductionDto 简介 +type UserDoctorIntroductionDto struct { + DoctorID string `json:"doctor_id"` // 主键id + UserID string `json:"user_id"` // 用户id + UserName string `json:"user_name"` // 用户名称 + Status int `json:"status"` // 状态(0:禁用 1:正常 2:删除) + IntroductionStatus int `json:"introduction_status"` // 个人简介审核状态(0:未审核 1:审核通过 2:审核中 3:审核失败) + IntroductionTime model.LocalTime `json:"introduction_time"` // 审核时间 + Avatar string `json:"avatar"` // 头像 + DoctorTitle int `json:"doctor_title"` // 医生职称(1:主任医师 2:主任中医师 3:副主任医师 4:副主任中医师 5:主治医师 6:住院医师) + DepartmentCustomID string `json:"department_custom_id"` // 科室id-自定义 + DepartmentCustomName string `json:"department_custom_name"` // 科室名称(如未自己输入,填入标准科室名称) + DepartmentCustomMobile string `json:"department_custom_mobile"` // 科室电话 + HospitalID string `json:"hospital_id"` // 所属医院id + HospitalName string `json:"hospital_name"` // 医院名称 + Mobile string `json:"mobile"` // 手机号 + Age uint `json:"age"` // 年龄 + Sex int `json:"sex"` // 性别(0:未知 1:男 2:女) + RegisterMethod int `json:"register_method"` // 注册方式(1:微信小程序 2:后台添加 ) + ApplyTime model.LocalTime `json:"apply_time"` // 申请时间 + BeGoodAt string `json:"be_good_at"` // 擅长 + BriefIntroduction string `json:"brief_introduction"` // 医生简介 + CreatedAt model.LocalTime `json:"created_at"` // 创建时间 + UpdatedAt model.LocalTime `json:"updated_at"` // 更新时间 + User *UserDto `json:"user"` // 用户 + Hospital *HospitalDto `json:"hospital"` // 医院 + UserDoctorInfo *UserDoctorInfoDto `json:"user_doctor_info"` // 医生详情 + DoctorExpertise []string `json:"doctor_expertise"` // 医生专长 +} + func GetUserDoctorDto(m *model.UserDoctor) *UserDoctorDto { return &UserDoctorDto{ DoctorID: fmt.Sprintf("%d", m.DoctorId), @@ -259,6 +289,68 @@ func GetUserDoctorPendingListDto(m []*model.UserDoctor) []*UserDoctorDto { return responses } +// GetUserDoctorIntroductionListDto 简介审核列表 +func GetUserDoctorIntroductionListDto(m []*model.UserDoctor) []*UserDoctorIntroductionDto { + // 处理返回值 + responses := make([]*UserDoctorIntroductionDto, len(m)) + + if len(m) > 0 { + for i, v := range m { + response := &UserDoctorIntroductionDto{ + DoctorID: fmt.Sprintf("%d", v.DoctorId), + UserID: fmt.Sprintf("%d", v.UserId), + UserName: v.UserName, + Status: v.Status, + IntroductionStatus: v.IntroductionStatus, + IntroductionTime: v.IntroductionTime, + DoctorTitle: v.DoctorTitle, + DepartmentCustomName: v.DepartmentCustomName, + HospitalID: fmt.Sprintf("%d", v.HospitalID), + } + + // 加载医院名称 + if v.Hospital != nil { + response = response.LoadHospitalName(v.Hospital) + } + + // 加载用户属性 + if v.User != nil { + response = response.LoadUserAttr(v.User) + } + + // 加载简介申请时间 + response = response.LoadDoctorIntroductionApplyTime(v.IntroductionStatus) + + // 将转换后的结构体添加到新切片中 + responses[i] = response + } + } + + return responses +} + +// GetUserDoctorIntroductionDto 简介审核详情 +func GetUserDoctorIntroductionDto(m *model.UserDoctor) *UserDoctorIntroductionDto { + return &UserDoctorIntroductionDto{ + DoctorID: fmt.Sprintf("%d", m.DoctorId), + UserID: fmt.Sprintf("%d", m.UserId), + UserName: m.UserName, + Status: m.Status, + IntroductionStatus: m.IntroductionStatus, + IntroductionTime: m.IntroductionTime, + Avatar: utils.AddOssDomain(m.Avatar), + DoctorTitle: m.DoctorTitle, + DepartmentCustomID: fmt.Sprintf("%d", m.DepartmentCustomId), + DepartmentCustomName: m.DepartmentCustomName, + DepartmentCustomMobile: m.DepartmentCustomMobile, + HospitalID: fmt.Sprintf("%d", m.HospitalID), + BeGoodAt: m.BeGoodAt, + BriefIntroduction: m.BriefIntroduction, + CreatedAt: m.CreatedAt, + UpdatedAt: m.UpdatedAt, + } +} + // LoadUser 加载用户 func (r *UserDoctorDto) LoadUser(m *model.User) *UserDoctorDto { if m != nil { @@ -279,6 +371,16 @@ func (r *UserDoctorPendingDto) LoadUser(m *model.User) *UserDoctorPendingDto { return r } +// LoadUser 加载用户 +func (r *UserDoctorIntroductionDto) LoadUser(m *model.User) *UserDoctorIntroductionDto { + if m != nil { + userDto := GetUserDto(m) + + r.User = userDto + } + return r +} + // LoadUserAttr 加载用户属性 func (r *UserDoctorDto) LoadUserAttr(m *model.User) *UserDoctorDto { if m != nil { @@ -306,6 +408,14 @@ func (r *UserDoctorDto) LoadHospital(m *model.Hospital) *UserDoctorDto { return r } +// LoadHospital 加载医院 +func (r *UserDoctorIntroductionDto) LoadHospital(m *model.Hospital) *UserDoctorIntroductionDto { + if m != nil { + r.Hospital = GetHospitalDto(m) + } + return r +} + // LoadDoctorInquiryType 加载医生服务类型 func (r *UserDoctorDto) LoadDoctorInquiryType(m []*model.DoctorInquiryConfig) *UserDoctorDto { var inquiryTypes []string @@ -364,6 +474,14 @@ func (r *UserDoctorDto) LoadUserDoctorInfo(m *model.UserDoctorInfo) *UserDoctorD return r } +// LoadUserDoctorInfo 加载医生详情 +func (r *UserDoctorIntroductionDto) LoadUserDoctorInfo(m *model.UserDoctorInfo) *UserDoctorIntroductionDto { + if m != nil { + r.UserDoctorInfo = GetUserDoctorInfoDto(m) + } + return r +} + // LoadUserCaCert 加载医生云证书详情 func (r *UserDoctorDto) LoadUserCaCert(m *model.UserCaCert) *UserDoctorDto { if m != nil { @@ -424,3 +542,38 @@ func (r *UserDoctorDto) LoadUserOnline(m *model.User) *UserDoctorDto { } return r } + +// LoadHospitalName 加载医院名称 +func (r *UserDoctorIntroductionDto) LoadHospitalName(m *model.Hospital) *UserDoctorIntroductionDto { + if m != nil { + r.HospitalName = m.HospitalName + } + return r +} + +// LoadUserAttr 加载用户属性 +func (r *UserDoctorIntroductionDto) LoadUserAttr(m *model.User) *UserDoctorIntroductionDto { + if m != nil { + r.Mobile = utils.MaskPhoneStr(m.Mobile) + r.RegisterMethod = m.RegisterMethod + r.Age = m.Age + r.Sex = m.Sex + } + return r +} + +// LoadDoctorIntroductionApplyTime 加载简介申请时间 +func (r *UserDoctorIntroductionDto) LoadDoctorIntroductionApplyTime(IntroductionStatus int) *UserDoctorIntroductionDto { + if IntroductionStatus == 2 || IntroductionStatus == 3 { + doctorIntroductionRecordDao := dao.DoctorIntroductionRecordDao{} + maps := make(map[string]interface{}) + maps["doctor_id"] = r.DoctorID + maps["introduction_status"] = IntroductionStatus + doctorIntroductionRecord, _ := doctorIntroductionRecordDao.GetDoctorIntroductionRecordLast(maps) + if doctorIntroductionRecord != nil { + r.ApplyTime = doctorIntroductionRecord.CreatedAt + } + } + + return r +} diff --git a/api/model/doctorIntroductionRecord.go b/api/model/doctorIntroductionRecord.go new file mode 100644 index 0000000..cfcdda3 --- /dev/null +++ b/api/model/doctorIntroductionRecord.go @@ -0,0 +1,37 @@ +package model + +import ( + "gorm.io/gorm" + "hospital-admin-api/global" + "time" +) + +type DoctorIntroductionRecord struct { + RecordId int64 `gorm:"column:record_id;type:bigint(19);primary_key;comment:主键id" json:"record_id"` + DoctorId int64 `gorm:"column:doctor_id;type:bigint(19);comment:医生id;NOT NULL" json:"doctor_id"` + IntroductionStatus int `gorm:"column:introduction_status;type:tinyint(1);default:1;comment:个人简介审核状态(0:未审核 1:审核通过 2:审核中 3:审核失败);NOT NULL" json:"introduction_status"` + Avatar string `gorm:"column:avatar;type:varchar(255);comment:头像" json:"avatar"` + BeGoodAt string `gorm:"column:be_good_at;type:text;comment:擅长" json:"be_good_at"` + BriefIntroduction string `gorm:"column:brief_introduction;type:text;comment:医生简介" json:"brief_introduction"` + ExpertiseIds string `gorm:"column:expertise_ids;type:varchar(1000);comment:专长id,逗号分隔" json:"expertise_ids"` + Model + UserDoctor *UserDoctor `gorm:"foreignKey:DoctorId;references:doctor_id" json:"user_doctor"` // 医生 +} + +func (m *DoctorIntroductionRecord) TableName() string { + return "gdxz_doctor_introduction_record" +} + +func (m *DoctorIntroductionRecord) BeforeCreate(tx *gorm.DB) error { + if m.RecordId == 0 { + m.RecordId = global.Snowflake.Generate().Int64() + } + + m.CreatedAt = LocalTime(time.Now()) + tx.Statement.SetColumn("CreatedAt", m.CreatedAt) + + m.UpdatedAt = LocalTime(time.Now()) + tx.Statement.SetColumn("UpdatedAt", m.UpdatedAt) + + return nil +} diff --git a/api/model/userDoctor.go b/api/model/userDoctor.go index 4f9316d..fbfe763 100644 --- a/api/model/userDoctor.go +++ b/api/model/userDoctor.go @@ -22,6 +22,8 @@ type UserDoctor struct { MultiPointStatus int `gorm:"column:multi_point_status;type:tinyint(1);default:0;comment:医生多点执业认证状态(0:未认证 1:认证通过 2:审核中 3:认证失败)" json:"multi_point_status"` MultiPointTime LocalTime `gorm:"column:multi_point_time;type:datetime;comment:审核时间" json:"multi_point_time"` MultiPointFailReason string `gorm:"column:multi_point_fail_reason;type:varchar(255);comment:多点执业认证失败原因" json:"multi_point_fail_reason"` + IntroductionStatus int `gorm:"column:introduction_status;type:tinyint(1);default:0;comment:个人简介审核状态(0:未审核 1:审核通过 2:审核中 3:审核失败)" json:"introduction_status"` + IntroductionTime LocalTime `gorm:"column:introduction_time;type:datetime;comment:审核时间" json:"introduction_time"` IsBindBank int `gorm:"column:is_bind_bank;type:tinyint(1);default:0;comment:是否已绑定结算银行卡(0:否 1:是);NOT NULL" json:"is_bind_bank"` IsRecommend int `gorm:"column:is_recommend;type:tinyint(1);default:0;comment:是否首页推荐(0:否 1:是)" json:"is_recommend"` Avatar string `gorm:"column:avatar;type:varchar(255);comment:头像" json:"avatar"` diff --git a/api/requests/userDoctor.go b/api/requests/userDoctor.go index a8374b3..b63305b 100644 --- a/api/requests/userDoctor.go +++ b/api/requests/userDoctor.go @@ -12,6 +12,8 @@ type UserDoctorRequest struct { GetUserDoctorBankCardPage // 获取医生银行卡列表-分页 UserDoctorExportList // 医生列表-导出 UserDoctorBankCardExportList // 医生银行卡列表-导出 + GetDoctorIntroductionPage // 简介审核-获取医生列表-分页 + PutDoctorIntroduction // 简介审核-审核医生 } // GetUserDoctorPage 获取医生列表-分页 @@ -183,3 +185,21 @@ type UserDoctorBankCardExportList struct { BankCardCode string `json:"bank_card_code" form:"bank_card_code" label:"银行卡号"` BankName string `json:"bank_name" form:"bank_name" label:"银行名称"` } + +// GetDoctorIntroductionPage 简介审核-获取医生列表-分页 +type GetDoctorIntroductionPage struct { + Page int `json:"page" form:"page" label:"页码"` + PageSize int `json:"page_size" form:"page_size" label:"每页个数"` + Mobile string `json:"mobile" form:"mobile" label:"手机号"` + UserName string `json:"user_name" form:"user_name" label:"用户名"` + IntroductionStatus *int `json:"introduction_status" form:"introduction_status" label:"个人简介审核状态"` // (0:未审核 1:审核通过 2:审核中 3:审核失败) +} + +// PutDoctorIntroduction 简介审核-审核医生 +type PutDoctorIntroduction struct { + IntroductionStatus int `json:"introduction_status" form:"introduction_status" validate:"required,oneof=1 3" label:"个人简介审核状态"` // (0:未审核 1:审核通过 2:审核中 3:审核失败) + AvatarReason string `json:"avatar_reason" form:"avatar_reason" label:"头像失败原因"` + BriefIntroductionReason string `json:"brief_introduction_reason" form:"brief_introduction_reason" label:"医生简介失败原因"` + BeGoodAtReason string `json:"be_good_at_reason" form:"be_good_at_reason" label:"擅长失败原因"` + DoctorExpertiseReason string `json:"doctor_expertise_reason" form:"doctor_expertise_reason" label:"专长失败原因"` +} diff --git a/api/router/router.go b/api/router/router.go index 59751df..57e7778 100644 --- a/api/router/router.go +++ b/api/router/router.go @@ -382,6 +382,19 @@ func privateRouter(r *gin.Engine, api controller.Api) { // 获取医生账户关联订单列表-分页 accountGroup.GET("/order", api.OrderInquiry.GetOrderInquiryForAccountPage) } + + // 简介审核列表 + doctorIntroductionGroup := doctorGroup.Group("/introduction") + { + // 简介审核-获取医生列表-分页 + doctorIntroductionGroup.GET("", api.UserDoctor.GetDoctorIntroductionPage) + + // 简介审核-医生详情 + doctorIntroductionGroup.GET("/:doctor_id", api.UserDoctor.GetUserDoctorIntroduction) + + // 简介审核-审核医生 + doctorIntroductionGroup.PUT("/:doctor_id", api.UserDoctor.PutDoctorIntroduction) + } } // 订单管理 diff --git a/api/service/userDoctor.go b/api/service/userDoctor.go index 8b7dc89..f1c13b5 100644 --- a/api/service/userDoctor.go +++ b/api/service/userDoctor.go @@ -9,6 +9,7 @@ import ( "hospital-admin-api/api/model" "hospital-admin-api/api/requests" "hospital-admin-api/config" + "hospital-admin-api/extend/aliyun" "hospital-admin-api/extend/ca" "hospital-admin-api/extend/tencentIm" "hospital-admin-api/extend/verifyDun" @@ -1210,6 +1211,8 @@ func (r *UserDoctorService) PutUserDoctorPending(doctorId int64, req requests.Pu userDoctorData["iden_auth_status"] = 1 userDoctorInfoData["qualification_cert_num"] = req.QualificationCertNum + userDoctorData["introduction_status"] = 1 + userDoctorData["introduction_time"] = time.Now().Format("2006-01-02 15:04:05") } // 开始事务 @@ -1600,3 +1603,254 @@ func (r *UserDoctorService) GetDoctorEstimateIncome(doctorId int64) (g float64, result, _ := estimateIncome.Float64() return result, nil } + +// GetUserDoctorIntroduction 简介审核-医生详情 +func (r *UserDoctorService) GetUserDoctorIntroduction(doctorId int64) (g *dto.UserDoctorIntroductionDto, err error) { + // 获取医生数据 + userDoctorDao := dao.UserDoctorDao{} + userDoctor, err := userDoctorDao.GetUserDoctorPreloadById(doctorId) + if err != nil || userDoctor == nil { + return nil, errors.New("用户数据错误") + } + + if userDoctor.IntroductionStatus != 2 { + return nil, errors.New("非审核数据") + } + + // 获取简介审核数据 + doctorIntroductionRecordDao := dao.DoctorIntroductionRecordDao{} + doctorIntroductionRecord, err := doctorIntroductionRecordDao.GetDoctorIntroductionRecordByDoctorId(userDoctor.DoctorId) + if err != nil || doctorIntroductionRecord == nil { + return nil, errors.New("用户数据错误") + } + + // 处理医生专长 + var expertiseIds []string + if doctorIntroductionRecord.ExpertiseIds != "" { + expertiseIds = strings.Split(doctorIntroductionRecord.ExpertiseIds, ",") + } else { + // 获取医生专长 + userDoctorService := UserDoctorService{} + doctorExpertise, err := userDoctorService.GetUserDoctorExpertiseByDoctorId(doctorId) + if err != nil { + return nil, errors.New("用户数据错误") + } + + for _, expertise := range doctorExpertise { + expertiseIds = append(expertiseIds, expertise.ExpertiseId) + } + } + + // 处理返回值 + g = dto.GetUserDoctorIntroductionDto(userDoctor) + + if doctorIntroductionRecord.Avatar != "" { + g.Avatar = utils.AddOssDomain(doctorIntroductionRecord.Avatar) + } + + if doctorIntroductionRecord.BeGoodAt != "" { + g.BeGoodAt = doctorIntroductionRecord.BeGoodAt + } + + if doctorIntroductionRecord.BriefIntroduction != "" { + g.BriefIntroduction = doctorIntroductionRecord.BriefIntroduction + } + + // 加载用户 + g.LoadUser(userDoctor.User) + + // 加载医院 + g.LoadHospital(userDoctor.Hospital) + + // 加载医生专长 + g.DoctorExpertise = expertiseIds + + // 加载医生详情 + g.LoadUserDoctorInfo(userDoctor.UserDoctorInfo) + + return g, nil +} + +// PutDoctorIntroduction 简介审核-审核医生 +func (r *UserDoctorService) PutDoctorIntroduction(doctorId int64, req requests.PutDoctorIntroduction) (bool, error) { + // 获取医生数据 + userDoctorDao := dao.UserDoctorDao{} + userDoctor, err := userDoctorDao.GetUserDoctorById(doctorId) + if err != nil || userDoctor == nil { + return false, errors.New("医生数据错误") + } + + if userDoctor.IntroductionStatus == req.IntroductionStatus { + return false, errors.New("请勿重复操作") + } + + if userDoctor.IntroductionStatus == 1 { + return false, errors.New("已审核成功,无法进行操作") + } + + if userDoctor.IdenAuthStatus != 1 { + return false, errors.New("请先完成身份认证") + } + + // 获取用户数据 + userDao := dao.UserDao{} + user, err := userDao.GetUserById(userDoctor.UserId) + if err != nil || user == nil { + return false, errors.New("医生数据错误") + } + + // 获取简介审核数据 + doctorIntroductionRecordDao := dao.DoctorIntroductionRecordDao{} + doctorIntroductionRecord, err := doctorIntroductionRecordDao.GetDoctorIntroductionRecordByDoctorId(userDoctor.DoctorId) + if err != nil || doctorIntroductionRecord == nil { + return false, errors.New("审核失败") + } + + // 开始事务 + tx := global.Db.Begin() + defer func() { + if r := recover(); r != nil { + tx.Rollback() + } + }() + + // 修改医生数据-审核状态 + userDoctorData := make(map[string]interface{}) // 医生数据 + + doctorIdenFailDao := dao.DoctorIdenFailDao{} + + // 审核不通过 + if req.IntroductionStatus == 3 { + if req.AvatarReason != "" { + doctorIdenFail := &model.DoctorIdenFail{ + DoctorId: doctorId, + FieldName: "avatar", + FailReason: req.AvatarReason, + } + doctorIdenFail, err = doctorIdenFailDao.AddDoctorIdenFail(tx, doctorIdenFail) + if err != nil || doctorIdenFail == nil { + tx.Rollback() + return false, err + } + } + + if req.BriefIntroductionReason != "" { + doctorIdenFail := &model.DoctorIdenFail{ + DoctorId: doctorId, + FieldName: "brief_introduction", + FailReason: req.BriefIntroductionReason, + } + doctorIdenFail, err = doctorIdenFailDao.AddDoctorIdenFail(tx, doctorIdenFail) + if err != nil || doctorIdenFail == nil { + tx.Rollback() + return false, err + } + } + + if req.BeGoodAtReason != "" { + doctorIdenFail := &model.DoctorIdenFail{ + DoctorId: doctorId, + FieldName: "be_good_at", + FailReason: req.BeGoodAtReason, + } + doctorIdenFail, err = doctorIdenFailDao.AddDoctorIdenFail(tx, doctorIdenFail) + if err != nil || doctorIdenFail == nil { + tx.Rollback() + return false, err + } + } + + if req.DoctorExpertiseReason != "" { + doctorIdenFail := &model.DoctorIdenFail{ + DoctorId: doctorId, + FieldName: "doctor_expertise", + FailReason: req.DoctorExpertiseReason, + } + doctorIdenFail, err = doctorIdenFailDao.AddDoctorIdenFail(tx, doctorIdenFail) + if err != nil || doctorIdenFail == nil { + tx.Rollback() + return false, err + } + } + } + + // 审核通过 + if req.IntroductionStatus == 1 { + // 审核通过删除所有不通过原因数据 + maps := make(map[string]interface{}) + maps["doctor_id"] = doctorId + err = doctorIdenFailDao.DeleteDoctorIdenFail(tx, maps) + if err != nil { + tx.Rollback() + return false, errors.New("审核失败") + } + + if doctorIntroductionRecord.BeGoodAt != "" { + userDoctorData["be_good_at"] = doctorIntroductionRecord.BeGoodAt + } + + if doctorIntroductionRecord.BriefIntroduction != "" { + userDoctorData["brief_introduction"] = doctorIntroductionRecord.BriefIntroduction + } + + // 更新医生im资料 + if doctorIntroductionRecord.Avatar != "" { + userDoctorData["avatar"] = doctorIntroductionRecord.Avatar + + profileItem := []tencentIm.ProfileItem{ + { + Tag: "Tag_Profile_IM_Image", + Value: doctorIntroductionRecord.Avatar, + }, + } + + res, err := tencentIm.SetProfile(strconv.FormatInt(userDoctor.UserId, 10), profileItem) + if err != nil || res != true { + tx.Rollback() + return false, errors.New(err.Error()) + } + } + + // 删除审核记录表 + maps = make(map[string]interface{}) + maps["doctor_id"] = doctorId + err = doctorIntroductionRecordDao.DeleteDoctorIntroductionRecord(tx, maps) + if err != nil { + tx.Rollback() + return false, errors.New("审核失败") + } + } + + // 更新医生表数据 + userDoctorData["introduction_status"] = req.IntroductionStatus + userDoctorData["introduction_time"] = time.Now().Format("2006-01-02 15:04:05") + err = userDoctorDao.EditUserDoctorById(tx, doctorId, userDoctorData) + if err != nil { + tx.Rollback() + return false, errors.New("审核失败") + } + + tx.Commit() + + if config.C.Env == "prod" { + // 发送短信-医生修改简介审核通过 + if req.IntroductionStatus == 1 { + templateParam := make(map[string]interface{}) + err := aliyun.SendSms(user.Mobile, "SMS_271990126", "医生修改简介审核通过", templateParam) + if err != nil { + return false, err + } + } + + // 发送短信-医生修改简介审核拒绝 + if req.IntroductionStatus == 3 { + templateParam := make(map[string]interface{}) + err := aliyun.SendSms(user.Mobile, "SMS_271990126", "医生修改简介审核拒绝", templateParam) + if err != nil { + return false, err + } + } + } + + return true, nil +} From 478ac7a5a3c084d42ececfbd2ffb47f6bf98da26 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Mon, 19 Feb 2024 15:29:14 +0800 Subject: [PATCH 02/24] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=8C=BB=E7=94=9F?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E8=AE=BE=E7=BD=AE-=E7=96=91=E9=9A=BE?= =?UTF-8?q?=E4=BC=9A=E8=AF=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/dao/doctorInquiryConfigService.go | 72 +++++++++++++++++++ api/dto/DoctorInquiryConfigService.go | 61 ++++++++++++++++ api/dto/DoctotInquiryConfig.go | 43 ++++++----- api/model/doctorInquiryConfigService.go | 37 ++++++++++ api/requests/inquiryConfig.go | 38 ++++++---- api/service/InquiryConfig.go | 94 ++++++++++++++++++++++++- 6 files changed, 311 insertions(+), 34 deletions(-) create mode 100644 api/dao/doctorInquiryConfigService.go create mode 100644 api/dto/DoctorInquiryConfigService.go create mode 100644 api/model/doctorInquiryConfigService.go diff --git a/api/dao/doctorInquiryConfigService.go b/api/dao/doctorInquiryConfigService.go new file mode 100644 index 0000000..3e456c1 --- /dev/null +++ b/api/dao/doctorInquiryConfigService.go @@ -0,0 +1,72 @@ +package dao + +import ( + "gorm.io/gorm" + "hospital-admin-api/api/model" + "hospital-admin-api/global" +) + +type DoctorInquiryConfigServiceDao struct { +} + +// GetDoctorInquiryConfigServiceByDoctorId 获取医生问诊配置数据-医生id +func (r *DoctorInquiryConfigServiceDao) GetDoctorInquiryConfigServiceByDoctorId(doctorId int64) (m *model.DoctorInquiryConfigService, err error) { + err = global.Db.Where("doctor_id = ?", doctorId).First(&m).Error + if err != nil { + return nil, err + } + return m, nil +} + +// GetDoctorInquiryConfigServiceById 获取医生问诊配置数据-问诊配置id +func (r *DoctorInquiryConfigServiceDao) GetDoctorInquiryConfigServiceById(ConfigServiceId int64) (m *model.DoctorInquiryConfigService, err error) { + err = global.Db.First(&m, ConfigServiceId).Error + if err != nil { + return nil, err + } + return m, nil +} + +// DeleteDoctorInquiryConfigService 删除医生问诊配置 +func (r *DoctorInquiryConfigServiceDao) DeleteDoctorInquiryConfigService(tx *gorm.DB, maps interface{}) error { + err := tx.Where(maps).Delete(&model.DoctorInquiryConfigService{}).Error + if err != nil { + return err + } + return nil +} + +// EditDoctorInquiryConfigServiceById 修改医生问诊配置-问诊配置id +func (r *DoctorInquiryConfigServiceDao) EditDoctorInquiryConfigServiceById(tx *gorm.DB, ConfigServiceId int64, data interface{}) error { + err := tx.Model(&model.DoctorInquiryConfigService{}).Where("config_service_id = ?", ConfigServiceId).Updates(data).Error + if err != nil { + return err + } + return nil +} + +// GetDoctorInquiryConfigServiceList 获取医生问诊配置列表 +func (r *DoctorInquiryConfigServiceDao) GetDoctorInquiryConfigServiceList(maps interface{}) (m []*model.DoctorInquiryConfigService, err error) { + err = global.Db.Where(maps).Find(&m).Error + if err != nil { + return nil, err + } + return m, nil +} + +// AddDoctorInquiryConfigService 新增医生问诊配置 +func (r *DoctorInquiryConfigServiceDao) AddDoctorInquiryConfigService(tx *gorm.DB, model *model.DoctorInquiryConfigService) (*model.DoctorInquiryConfigService, error) { + if err := tx.Create(model).Error; err != nil { + return nil, err + } + return model, nil +} + +// GetDoctorInquiryConfigServiceFirst 获取医生问诊配置-map-第一条 +func (r *DoctorInquiryConfigServiceDao) GetDoctorInquiryConfigServiceFirst(maps interface{}) (m *model.DoctorInquiryConfigService, err error) { + err = global.Db.Where(maps).First(&m).Error + if err != nil { + return nil, err + } + return m, nil +} diff --git a/api/dto/DoctorInquiryConfigService.go b/api/dto/DoctorInquiryConfigService.go new file mode 100644 index 0000000..2bbdab4 --- /dev/null +++ b/api/dto/DoctorInquiryConfigService.go @@ -0,0 +1,61 @@ +package dto + +import ( + "fmt" + "hospital-admin-api/api/model" +) + +type DoctorInquiryConfigServiceDto struct { + ConfigServiceId string `json:"config_service_id"` // 主键id + DoctorId string `json:"doctor_id"` // 医生id + InquiryType int `json:"inquiry_type"` // 接诊类型(1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药) + InquiryMode int `json:"inquiry_mode"` // 接诊方式(1:图文 2:视频 3:语音 4:电话 5:会员 6:疑难会诊 7:附赠) + ServiceContent string `json:"service_content"` // 服务内容 + ServiceProcess string `json:"service_process"` // 服务流程 + ServicePeriod uint `json:"service_period"` // 服务周期 + ServiceRounds uint `json:"service_rounds"` // 服务回合数(0表示不限次) + CreatedAt model.LocalTime `json:"created_at"` // 创建时间 + UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间 +} + +func GetDoctorInquiryConfigServiceDto(m *model.DoctorInquiryConfigService) *DoctorInquiryConfigServiceDto { + return &DoctorInquiryConfigServiceDto{ + ConfigServiceId: fmt.Sprintf("%d", m.ConfigServiceId), + DoctorId: fmt.Sprintf("%d", m.DoctorId), + InquiryType: m.InquiryType, + InquiryMode: m.InquiryMode, + ServiceContent: m.ServiceContent, + ServiceProcess: m.ServiceProcess, + ServicePeriod: m.ServicePeriod, + ServiceRounds: m.ServiceRounds, + CreatedAt: m.CreatedAt, + UpdatedAt: m.UpdatedAt, + } +} + +func GetDoctorInquiryConfigServiceListDto(m []*model.DoctorInquiryConfigService) []*DoctorInquiryConfigServiceDto { + // 处理返回值 + responses := make([]*DoctorInquiryConfigServiceDto, len(m)) + + if len(m) > 0 { + for i, v := range m { + response := &DoctorInquiryConfigServiceDto{ + ConfigServiceId: fmt.Sprintf("%d", v.ConfigServiceId), + DoctorId: fmt.Sprintf("%d", v.DoctorId), + InquiryType: v.InquiryType, + InquiryMode: v.InquiryMode, + ServiceContent: v.ServiceContent, + ServiceProcess: v.ServiceProcess, + ServicePeriod: v.ServicePeriod, + ServiceRounds: v.ServiceRounds, + CreatedAt: v.CreatedAt, + UpdatedAt: v.UpdatedAt, + } + + // 将转换后的结构体添加到新切片中 + responses[i] = response + } + } + + return responses +} diff --git a/api/dto/DoctotInquiryConfig.go b/api/dto/DoctotInquiryConfig.go index 86ed996..813834e 100644 --- a/api/dto/DoctotInquiryConfig.go +++ b/api/dto/DoctotInquiryConfig.go @@ -7,23 +7,24 @@ import ( ) type DoctorInquiryConfigDto struct { - InquiryConfigId string `json:"inquiry_config_id"` // 主键id - DoctorId string `json:"doctor_id"` // 医生id - InquiryType int `json:"inquiry_type"` // 接诊类型(1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药);NOT NULL - InquiryMode int `json:"inquiry_mode"` // 接诊方式(1:图文 2:视频 3:语音 4:电话 5:会员);NOT NULL - IsEnable int `json:"is_enable"` // 是否启用(0:否 1:是) - LastEnableMethod int `json:"last_enable_method"` // 最后开启方式(1:自己 2:后台) - WorkNumDay int `json:"work_num_day"` // 每日接诊数量 - InquiryPrice float64 `json:"inquiry_price"` // 接诊价格(专家问诊-公益问诊) - CreatedAt model.LocalTime `json:"created_at"` // 创建时间 - UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间 - DoctorName string `json:"doctor_name"` // 医生姓名 - MobileMask string `json:"mobile_mask"` // 医生电话(掩码) - DepartmentCustomName string `json:"department_custom_name"` // 科室名称 - DoctorTitle *int `json:"doctor_title"` // 医生职称(1:主任医师 2:主任中医师 3:副主任医师 4:副主任中医师 5:主治医师 6:住院医师) - MultiPointStatus int `json:"multi_point_status"` // 医生多点执业认证状态(0:未认证 1:认证通过 2:审核中 3:认证失败) - UserDoctor *UserDoctorDto `json:"user_doctor"` // 医生数据 - DoctorInquiryTime []*DoctorInquiryTimeDto `json:"doctor_inquiry_time"` // 医生问诊时间配置 + InquiryConfigId string `json:"inquiry_config_id"` // 主键id + DoctorId string `json:"doctor_id"` // 医生id + InquiryType int `json:"inquiry_type"` // 接诊类型(1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药);NOT NULL + InquiryMode int `json:"inquiry_mode"` // 接诊方式(1:图文 2:视频 3:语音 4:电话 5:会员);NOT NULL + IsEnable int `json:"is_enable"` // 是否启用(0:否 1:是) + LastEnableMethod int `json:"last_enable_method"` // 最后开启方式(1:自己 2:后台) + WorkNumDay int `json:"work_num_day"` // 每日接诊数量 + InquiryPrice float64 `json:"inquiry_price"` // 接诊价格(专家问诊-公益问诊) + CreatedAt model.LocalTime `json:"created_at"` // 创建时间 + UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间 + DoctorName string `json:"doctor_name"` // 医生姓名 + MobileMask string `json:"mobile_mask"` // 医生电话(掩码) + DepartmentCustomName string `json:"department_custom_name"` // 科室名称 + DoctorTitle *int `json:"doctor_title"` // 医生职称(1:主任医师 2:主任中医师 3:副主任医师 4:副主任中医师 5:主治医师 6:住院医师) + MultiPointStatus int `json:"multi_point_status"` // 医生多点执业认证状态(0:未认证 1:认证通过 2:审核中 3:认证失败) + UserDoctor *UserDoctorDto `json:"user_doctor"` // 医生数据 + DoctorInquiryTime []*DoctorInquiryTimeDto `json:"doctor_inquiry_time"` // 医生问诊时间配置 + DoctorInquiryConfigService *DoctorInquiryConfigServiceDto `json:"doctor_inquiry_config_service"` // 医生问诊配置-疑难会诊 } func GetDoctorInquiryConfigDto(m *model.DoctorInquiryConfig) *DoctorInquiryConfigDto { @@ -156,3 +157,11 @@ func (r *DoctorInquiryConfigDto) LoadDoctorInquiryTime(m []*model.DoctorInquiryT } return r } + +// LoadDoctorInquiryConfigService 加载医生问诊配置-疑难会诊 +func (r *DoctorInquiryConfigDto) LoadDoctorInquiryConfigService(m *model.DoctorInquiryConfigService) *DoctorInquiryConfigDto { + if m != nil { + r.DoctorInquiryConfigService = GetDoctorInquiryConfigServiceDto(m) + } + return r +} diff --git a/api/model/doctorInquiryConfigService.go b/api/model/doctorInquiryConfigService.go new file mode 100644 index 0000000..a44926b --- /dev/null +++ b/api/model/doctorInquiryConfigService.go @@ -0,0 +1,37 @@ +package model + +import ( + "gorm.io/gorm" + "hospital-admin-api/global" + "time" +) + +type DoctorInquiryConfigService struct { + ConfigServiceId int64 `gorm:"column:config_service_id;type:bigint(19);primary_key;comment:主键id" json:"config_service_id"` + DoctorId int64 `gorm:"column:doctor_id;type:bigint(19);comment:医生id;NOT NULL" json:"doctor_id"` + InquiryType int `gorm:"column:inquiry_type;type:tinyint(1);comment:接诊类型(1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药);NOT NULL" json:"inquiry_type"` + InquiryMode int `gorm:"column:inquiry_mode;type:tinyint(1);comment:接诊方式(1:图文 2:视频 3:语音 4:电话 5:会员 6:疑难会诊 7:附赠);NOT NULL" json:"inquiry_mode"` + ServiceContent string `gorm:"column:service_content;type:text;comment:服务内容" json:"service_content"` + ServiceProcess string `gorm:"column:service_process;type:text;comment:服务流程" json:"service_process"` + ServicePeriod uint `gorm:"column:service_period;type:int(10) unsigned;comment:服务周期;NOT NULL" json:"service_period"` + ServiceRounds uint `gorm:"column:service_rounds;type:int(1) unsigned;default:0;comment:服务回合数(0表示不限次)" json:"service_rounds"` + Model +} + +func (m *DoctorInquiryConfigService) TableName() string { + return "gdxz_doctor_inquiry_config_service" +} + +func (m *DoctorInquiryConfigService) BeforeCreate(tx *gorm.DB) error { + if m.ConfigServiceId == 0 { + m.ConfigServiceId = global.Snowflake.Generate().Int64() + } + + m.CreatedAt = LocalTime(time.Now()) + tx.Statement.SetColumn("CreatedAt", m.CreatedAt) + + m.UpdatedAt = LocalTime(time.Now()) + tx.Statement.SetColumn("UpdatedAt", m.UpdatedAt) + + return nil +} diff --git a/api/requests/inquiryConfig.go b/api/requests/inquiryConfig.go index 43a3a11..ba6e096 100644 --- a/api/requests/inquiryConfig.go +++ b/api/requests/inquiryConfig.go @@ -22,13 +22,14 @@ type GetDoctorInquiryConfigPage struct { // PutDoctorInquiryConfig 修改医生问诊配置 type PutDoctorInquiryConfig struct { - DoctorId string `json:"doctor_id" form:"doctor_id" validate:"required"` // 医生id - InquiryType int `json:"inquiry_type" form:"inquiry_type" validate:"required,oneof=1 2 3 4 5" label:"问诊类型"` // 1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药 5:检测 - InquiryMode int `json:"inquiry_mode" form:"inquiry_mode" validate:"required,oneof=1 2 3 4 5" label:"问诊方式"` // 1:图文 2:视频 3:语音 4:电话 5:会员 - WorkNumDay int `json:"work_num_day" label:"每日接诊数量"` - InquiryPrice float64 `json:"inquiry_price" label:"接诊价格"` - IsEnable int `json:"is_enable" form:"is_enable" validate:"oneof=0 1" label:"是否启用"` // 0:否 1:是 - DoctorInquiryTime []*doctorInquiryTime `json:"doctor_inquiry_time" form:"doctor_inquiry_time" label:"医生问诊配置-时间配置"` + DoctorId string `json:"doctor_id" form:"doctor_id" validate:"required"` // 医生id + InquiryType int `json:"inquiry_type" form:"inquiry_type" validate:"required,oneof=1 2 3 4 5" label:"问诊类型"` // 1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药 5:检测 + InquiryMode int `json:"inquiry_mode" form:"inquiry_mode" validate:"required,oneof=1 2 3 4 5 6" label:"问诊方式"` // 1:图文 2:视频 3:语音 4:电话 5:会员 + WorkNumDay int `json:"work_num_day" form:"work_num_day" label:"每日接诊数量"` + InquiryPrice float64 `json:"inquiry_price" form:"inquiry_price" label:"接诊价格"` + IsEnable int `json:"is_enable" form:"is_enable" validate:"oneof=0 1" label:"是否启用"` // 0:否 1:是 + DoctorInquiryTime []*doctorInquiryTime `json:"doctor_inquiry_time" form:"doctor_inquiry_time" label:"医生问诊配置-时间配置"` + DoctorInquiryConfigService *DoctorInquiryConfigService `json:"doctor_inquiry_config_service" form:"doctor_inquiry_config_service" label:"医生问诊服务配置-疑难会诊"` } // doctorInquiryTime 医生问诊配置-时间配置 @@ -38,15 +39,24 @@ type doctorInquiryTime struct { EndTime string `json:"end_time" form:"end_time" label:"结束时间"` } +// DoctorInquiryConfigService 医生问诊服务配置-疑难会诊 +type DoctorInquiryConfigService struct { + ServiceContent string `json:"service_content" form:"service_content" label:"服务内容"` + ServiceProcess string `json:"service_process" form:"service_process" label:"服务流程"` + ServicePeriod uint `json:"service_period" form:"service_period" label:"服务周期"` + ServiceRounds uint `json:"service_rounds" form:"service_rounds" label:"服务回合数"` // (0表示不限次) +} + // AddDoctorInquiryConfig 新增医生问诊配置 type AddDoctorInquiryConfig struct { - DoctorId string `json:"doctor_id" form:"doctor_id" validate:"required"` // 医生id - InquiryType int `json:"inquiry_type" form:"inquiry_type" validate:"required,oneof=1 2 3 4 5" label:"问诊类型"` // 1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药 5:检测 - InquiryMode int `json:"inquiry_mode" form:"inquiry_mode" validate:"required,oneof=1 2 3 4 5" label:"问诊方式"` // 1:图文 2:视频 3:语音 4:电话 5:会员 - WorkNumDay int `json:"work_num_day" label:"每日接诊数量"` - InquiryPrice float64 `json:"inquiry_price" label:"接诊价格"` - IsEnable int `json:"is_enable" form:"is_enable" validate:"oneof=0 1" label:"是否启用"` // 0:否 1:是 - DoctorInquiryTime []*doctorInquiryTime `json:"doctor_inquiry_time" form:"doctor_inquiry_time" label:"医生问诊配置-时间配置"` + DoctorId string `json:"doctor_id" form:"doctor_id" validate:"required"` // 医生id + InquiryType int `json:"inquiry_type" form:"inquiry_type" validate:"required,oneof=1 2 3 4 5" label:"问诊类型"` // 1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药 5:检测 + InquiryMode int `json:"inquiry_mode" form:"inquiry_mode" validate:"required,oneof=1 2 3 4 5" label:"问诊方式"` // 1:图文 2:视频 3:语音 4:电话 5:会员 + WorkNumDay int `json:"work_num_day" label:"每日接诊数量"` + InquiryPrice float64 `json:"inquiry_price" label:"接诊价格"` + IsEnable int `json:"is_enable" form:"is_enable" validate:"oneof=0 1" label:"是否启用"` // 0:否 1:是 + DoctorInquiryTime []*doctorInquiryTime `json:"doctor_inquiry_time" form:"doctor_inquiry_time" label:"医生问诊配置-时间配置"` + DoctorInquiryConfigService *DoctorInquiryConfigService `json:"doctor_inquiry_config_service" form:"doctor_inquiry_config_service" label:"医生问诊服务配置-疑难会诊"` } // GetSystemInquiryConfigPage 获取系统问诊配置列表-分页 diff --git a/api/service/InquiryConfig.go b/api/service/InquiryConfig.go index aad023e..56e3625 100644 --- a/api/service/InquiryConfig.go +++ b/api/service/InquiryConfig.go @@ -115,14 +115,14 @@ func (r *DoctorInquiryConfigService) GetDoctorInquiryConfig(inquiryConfigId int6 // 获取医生问诊配置 doctorInquiryConfig, err := doctorInquiryConfigDao.GetDoctorInquiryConfigById(inquiryConfigId) if err != nil || doctorInquiryConfig == nil { - return nil, errors.New(err.Error()) + return nil, errors.New("获取失败") } // 获取医生数据 userDoctorDao := dao.UserDoctorDao{} userDoctor, err := userDoctorDao.GetUserDoctorById(doctorInquiryConfig.DoctorId) if err != nil || userDoctor == nil { - return nil, errors.New(err.Error()) + return nil, errors.New("获取失败") } // 获取医生医院数据 @@ -137,7 +137,7 @@ func (r *DoctorInquiryConfigService) GetDoctorInquiryConfig(inquiryConfigId int6 maps["inquiry_mode"] = doctorInquiryConfig.InquiryMode systemInquiryConfig, err := systemInquiryConfigDao.GetSystemInquiryConfig(maps) if err != nil || systemInquiryConfig == nil { - return nil, errors.New(err.Error()) + return nil, errors.New("获取失败") } // 获取医生问诊时间 @@ -165,6 +165,20 @@ func (r *DoctorInquiryConfigService) GetDoctorInquiryConfig(inquiryConfigId int6 res.LoadDoctorInquiryTime(doctorInquiryTimes) } + // 获取医生问诊配置-疑难问诊-服务设置 + if doctorInquiryConfig.InquiryType == 1 && doctorInquiryConfig.InquiryMode == 6 { + doctorInquiryConfigServiceDao := dao.DoctorInquiryConfigServiceDao{} + + maps = make(map[string]interface{}) + maps["doctor_id"] = doctorInquiryConfig.DoctorId + maps["inquiry_type"] = doctorInquiryConfig.InquiryType + maps["inquiry_mode"] = doctorInquiryConfig.InquiryMode + doctorInquiryConfigService, err := doctorInquiryConfigServiceDao.GetDoctorInquiryConfigServiceFirst(maps) + if doctorInquiryConfigService != nil && err == nil { + res.LoadDoctorInquiryConfigService(doctorInquiryConfigService) + } + } + return res, nil } @@ -244,6 +258,13 @@ func (r *DoctorInquiryConfigService) PutDoctorInquiryConfig(inquiryConfigId int6 } } + // 验证医生服务设置-疑难会诊 + if doctorInquiryConfig.InquiryType == 1 || doctorInquiryConfig.InquiryType == 6 { + if req.DoctorInquiryConfigService == nil { + return false, errors.New("请填写疑难会诊服务设置") + } + } + // 开始事务 tx := global.Db.Begin() defer func() { @@ -330,6 +351,44 @@ func (r *DoctorInquiryConfigService) PutDoctorInquiryConfig(inquiryConfigId int6 } } + // 修改医生服务设置-疑难会诊 + if doctorInquiryConfig.InquiryType == 1 || doctorInquiryConfig.InquiryType == 6 { + // 获取医生服务设置-疑难会诊 + doctorInquiryConfigServiceDao := dao.DoctorInquiryConfigServiceDao{} + + maps = make(map[string]interface{}) + maps["doctor_id"] = doctorInquiryConfig.DoctorId + maps["inquiry_type"] = doctorInquiryConfig.InquiryType + maps["inquiry_mode"] = doctorInquiryConfig.InquiryMode + doctorInquiryConfigService, err := doctorInquiryConfigServiceDao.GetDoctorInquiryConfigServiceFirst(maps) + if doctorInquiryConfigService != nil && err != nil { + doctorInquiryConfigServiceData := make(map[string]interface{}) + + if req.DoctorInquiryConfigService.ServiceContent != doctorInquiryConfigService.ServiceContent { + doctorInquiryConfigServiceData["service_content"] = req.DoctorInquiryConfigService.ServiceContent + } + + if req.DoctorInquiryConfigService.ServiceProcess != doctorInquiryConfigService.ServiceProcess { + doctorInquiryConfigServiceData["service_process"] = req.DoctorInquiryConfigService.ServiceProcess + } + + if req.DoctorInquiryConfigService.ServicePeriod != doctorInquiryConfigService.ServicePeriod { + doctorInquiryConfigServiceData["service_period"] = req.DoctorInquiryConfigService.ServicePeriod + } + + if req.DoctorInquiryConfigService.ServiceRounds != doctorInquiryConfigService.ServiceRounds { + doctorInquiryConfigServiceData["service_rounds"] = req.DoctorInquiryConfigService.ServiceRounds + } + + err := doctorInquiryConfigServiceDao.EditDoctorInquiryConfigServiceById(tx, doctorInquiryConfigService.ConfigServiceId, doctorInquiryConfigServiceData) + if err != nil { + tx.Rollback() + return false, errors.New("修改失败") + } + } + + } + tx.Commit() return true, nil } @@ -503,6 +562,27 @@ func (r *DoctorInquiryConfigService) AddDoctorInquiryConfig(req requests.AddDoct } } + // 新增医生服务设置-疑难会诊 + if req.InquiryType == 1 || req.InquiryMode == 6 { + doctorInquiryConfigServiceDao := dao.DoctorInquiryConfigServiceDao{} + + doctorInquiryConfigService := &model.DoctorInquiryConfigService{ + DoctorId: doctorId, + InquiryType: req.InquiryType, + InquiryMode: req.InquiryMode, + ServiceContent: req.DoctorInquiryConfigService.ServiceContent, + ServiceProcess: req.DoctorInquiryConfigService.ServiceProcess, + ServicePeriod: req.DoctorInquiryConfigService.ServicePeriod, + ServiceRounds: req.DoctorInquiryConfigService.ServiceRounds, + } + + doctorInquiryConfigService, err = doctorInquiryConfigServiceDao.AddDoctorInquiryConfigService(tx, doctorInquiryConfigService) + if err != nil || doctorInquiryConfigService == nil { + tx.Rollback() + return false, errors.New(err.Error()) + } + } + tx.Commit() return true, nil } @@ -541,6 +621,14 @@ func (r *SystemInquiryConfigService) PutSystemInquiryConfig(systemInquiryConfigI if req.InquiryPrice == "" { return false, errors.New("请设置问诊价格") } + } else if systemInquiryConfig.InquiryType == 1 && systemInquiryConfig.InquiryMode == 2 { + if req.MaxInquiryPrice == 0 { + return false, errors.New("最高接诊价格应大于0") + } + } else if systemInquiryConfig.InquiryType == 1 && systemInquiryConfig.InquiryMode == 6 { + if req.MaxInquiryPrice == 0 { + return false, errors.New("最高接诊价格应大于0") + } } // 开始事务 From 35d63981ed5d46a7896c5273aca8b65681f5dcd5 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Mon, 19 Feb 2024 17:13:19 +0800 Subject: [PATCH 03/24] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=88=86=E6=AF=94?= =?UTF-8?q?=E9=80=80=E6=AC=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/requests/orderInquiry.go | 3 ++- api/service/OrderInquiry.go | 8 +++++++- api/service/orderProduct.go | 1 + extend/weChat/weChatPay.go | 5 +++-- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/api/requests/orderInquiry.go b/api/requests/orderInquiry.go index 8fc50dc..8419ded 100644 --- a/api/requests/orderInquiry.go +++ b/api/requests/orderInquiry.go @@ -36,7 +36,8 @@ type GetOrderInquiryPage struct { // CancelOrderInquiry 取消问诊订单 type CancelOrderInquiry struct { - CancelRemarks string `json:"cancel_remarks" form:"cancel_remarks" validate:"required" label:"取消订单备注"` + RefundAmount float64 `json:"refund_amount" form:"refund_amount" validate:"required" label:"退款金额"` + CancelRemarks string `json:"cancel_remarks" form:"cancel_remarks" validate:"required" label:"取消订单备注"` } // GetOrderInquiryRecordPage 获取问诊记录列表-分页 diff --git a/api/service/OrderInquiry.go b/api/service/OrderInquiry.go index d6a8a25..5adf853 100644 --- a/api/service/OrderInquiry.go +++ b/api/service/OrderInquiry.go @@ -70,6 +70,11 @@ func (r *OrderInquiryService) CancelOrderInquiry(req requests.CancelOrderInquiry return false, errors.New("订单未支付,无需取消") } + // 检测退款金额 + if req.RefundAmount > orderInquiry.PaymentAmountTotal { + return false, errors.New("退款金额不可超过实付金额") + } + // 订单完成时间预留5分钟进行操作 if !orderInquiry.CompleteTime.IsEmpty() { // 计算三天后的时间 @@ -113,6 +118,7 @@ func (r *OrderInquiryService) CancelOrderInquiry(req requests.CancelOrderInquiry OutTradeNo: orderInquiry.InquiryNo, OutRefundNo: inquiryRefundNo, Reason: "客服取消", + RefundAmount: int64(req.RefundAmount * 100), PaymentAmountTotal: int64(orderInquiry.PaymentAmountTotal * 100), NotifyUrl: config.C.Wechat.RefundNotifyDomain + config.C.Wechat.PatientInquiryRefundNotifyUrl, } @@ -196,7 +202,7 @@ func (r *OrderInquiryService) CancelOrderInquiry(req requests.CancelOrderInquiry InquiryRefundNo: inquiryRefundNo, RefundId: refundId, InquiryRefundStatus: inquiryRefundStatus, - RefundTotal: orderInquiry.PaymentAmountTotal, + RefundTotal: req.RefundAmount, RefundReason: req.CancelRemarks, SuccessTime: model.LocalTime(successTime), } diff --git a/api/service/orderProduct.go b/api/service/orderProduct.go index 0105c4a..bc4c160 100644 --- a/api/service/orderProduct.go +++ b/api/service/orderProduct.go @@ -167,6 +167,7 @@ func (r *OrderProductService) CancelOrderProduct(req requests.CancelOrderProduct OutTradeNo: orderProduct.OrderProductNo, OutRefundNo: refundNo, Reason: "客服取消", + RefundAmount: int64(orderProduct.PaymentAmountTotal * 100), PaymentAmountTotal: int64(orderProduct.PaymentAmountTotal * 100), NotifyUrl: config.C.Wechat.RefundNotifyDomain + config.C.Wechat.PatientProductRefundNotifyUrl, } diff --git a/extend/weChat/weChatPay.go b/extend/weChat/weChatPay.go index 0821c9b..85aa982 100644 --- a/extend/weChat/weChatPay.go +++ b/extend/weChat/weChatPay.go @@ -16,7 +16,8 @@ type RefundRequest struct { OutTradeNo string `json:"out_trade_no" comment:"商户订单号"` OutRefundNo string `json:"out_refund_no" comment:"退款订单号"` Reason string `json:"reason" comment:"退款原因"` - PaymentAmountTotal int64 `json:"payment_amount_total" comment:"退款金额"` + RefundAmount int64 `json:"refund_amount" comment:"退款金额"` + PaymentAmountTotal int64 `json:"payment_amount_total" comment:"支付金额"` NotifyUrl string `json:"notify_url" comment:"回调地址"` } @@ -72,7 +73,7 @@ func (r RefundRequest) Refund(orderType int) (*refunddomestic.Refund, error) { NotifyUrl: core.String(r.NotifyUrl), Amount: &refunddomestic.AmountReq{ Currency: core.String("CNY"), - Refund: core.Int64(r.PaymentAmountTotal), + Refund: core.Int64(r.RefundAmount), Total: core.Int64(r.PaymentAmountTotal), }, } From c89b9169f6554cd661ffda0fb25672bf129e5f8e Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Tue, 27 Feb 2024 10:32:16 +0800 Subject: [PATCH 04/24] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=B7=A8=E5=9F=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/middlewares/cors.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/middlewares/cors.go b/api/middlewares/cors.go index 9ee0ab4..6ff7895 100644 --- a/api/middlewares/cors.go +++ b/api/middlewares/cors.go @@ -15,7 +15,7 @@ func Cors() gin.HandlerFunc { if origin != "" { c.Header("Access-Control-Allow-Origin", origin) c.Header("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE, UPDATE") - c.Header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization") + c.Header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization,appId,sign") c.Header("Access-Control-Expose-Headers", "Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Cache-Control, Content-Language, Content-Type") c.Header("Access-Control-Allow-Credentials", "false") c.Set("content-type", "application/json") From a5114ab0aa524c243ee3ba916c7d41dc11809bde Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Tue, 27 Feb 2024 17:16:11 +0800 Subject: [PATCH 05/24] =?UTF-8?q?=E8=B7=A8=E5=9F=9F=E5=9B=9E=E6=BB=9A?= =?UTF-8?q?=EF=BC=8C=E8=8D=AF=E5=93=81=E8=AE=A2=E5=8D=95=E5=9B=9E=E6=BB=9A?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=8D=AF=E5=93=81=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/middlewares/cors.go | 2 +- api/service/export.go | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/api/middlewares/cors.go b/api/middlewares/cors.go index 6ff7895..9ee0ab4 100644 --- a/api/middlewares/cors.go +++ b/api/middlewares/cors.go @@ -15,7 +15,7 @@ func Cors() gin.HandlerFunc { if origin != "" { c.Header("Access-Control-Allow-Origin", origin) c.Header("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE, UPDATE") - c.Header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization,appId,sign") + c.Header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization") c.Header("Access-Control-Expose-Headers", "Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Cache-Control, Content-Language, Content-Type") c.Header("Access-Control-Allow-Credentials", "false") c.Set("content-type", "application/json") diff --git a/api/service/export.go b/api/service/export.go index 2534894..0844c99 100644 --- a/api/service/export.go +++ b/api/service/export.go @@ -263,6 +263,7 @@ type OrderProductData struct { LogisticsFee float64 // 运费金额 LogisticsNo string // 物流编号 LogisticsCompanyCode string // 快递公司编码 + ProductNames string // 药品列表 DeliveryTime time.Time // 发货时间 PayTime time.Time // 支付时间 Remarks string // 订单备注 @@ -1479,6 +1480,7 @@ func (r *ExportService) OrderProduct(d []*model.OrderProduct) (string, error) { {Value: "运费金额", CellType: "float64", NumberFmt: "0.0000", ColWidth: 18}, {Value: "物流编号", CellType: "string", NumberFmt: "", ColWidth: 18}, {Value: "快递公司编码", CellType: "string", NumberFmt: "", ColWidth: 18}, + {Value: "药品", CellType: "string", NumberFmt: "", ColWidth: 35}, {Value: "发货时间", CellType: "date", NumberFmt: "yyyy-mm-dd hh:mm:ss", ColWidth: 30}, {Value: "支付时间", CellType: "date", NumberFmt: "yyyy-mm-dd hh:mm:ss", ColWidth: 30}, {Value: "订单备注", CellType: "string", NumberFmt: "", ColWidth: 18}, @@ -1575,6 +1577,20 @@ func (r *ExportService) OrderProduct(d []*model.OrderProduct) (string, error) { data.CreatedAt = t } + // 处理药品列表 + orderProductItemDao := dao.OrderProductItemDao{} + orderProductItems, err := orderProductItemDao.GetOrderProductItemByOrderProductId(v.OrderProductId) + if err == nil || len(orderProductItems) > 0 { + var products []string + for _, v := range orderProductItems { + amount := fmt.Sprintf("%d", v.Amount) + product := v.ProductName + "(" + amount + ")" + products = append(products, product) + } + + data.ProductNames = strings.Join(products, ";") + } + dataSlice = append(dataSlice, data) } From 2769e1d28e360c182730789f242459e377ed53d1 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Tue, 27 Feb 2024 17:17:50 +0800 Subject: [PATCH 06/24] =?UTF-8?q?=E5=88=B0=E5=A4=84=E8=8D=AF=E5=93=81?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=A2=9E=E5=8A=A0=E8=8D=AF=E5=93=81=E5=90=8D?= =?UTF-8?q?=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/service/export.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/service/export.go b/api/service/export.go index 0844c99..60a4dad 100644 --- a/api/service/export.go +++ b/api/service/export.go @@ -1584,7 +1584,7 @@ func (r *ExportService) OrderProduct(d []*model.OrderProduct) (string, error) { var products []string for _, v := range orderProductItems { amount := fmt.Sprintf("%d", v.Amount) - product := v.ProductName + "(" + amount + ")" + product := v.ProductName + "(数量:" + amount + ")" products = append(products, product) } From 33ef6733cacc3f62ac1f1fee911d67ea69cbd15f Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Tue, 27 Feb 2024 17:27:10 +0800 Subject: [PATCH 07/24] =?UTF-8?q?=E5=A4=84=E6=96=B9=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/service/export.go | 64 +++++++++++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 24 deletions(-) diff --git a/api/service/export.go b/api/service/export.go index 60a4dad..101992a 100644 --- a/api/service/export.go +++ b/api/service/export.go @@ -298,6 +298,7 @@ type OrderPrescriptionData struct { ExpiredTime time.Time // 处方过期时间 IsDelete string // 是否删除(0:否 1:是) PrescriptionCode string // 处方编号 + ProductNames string // 药品列表 PatientName string // 患者姓名-就诊人 PatientSex string // 患者性别-就诊人(1:男 2:女) PatientAge string // 患者年龄-就诊人 @@ -437,8 +438,8 @@ func (r *ExportService) DoctorWithdrawal(doctorWithdrawals []*model.DoctorWithdr // 设置文件名字 now := time.Now() - dateTimeString := now.Format("20060102150405") // 当前时间字符串 - rand.Seed(time.Now().UnixNano()) // 设置随机数 + dateTimeString := now.Format("20060102150405") // 当前时间字符串 + rand.New(rand.NewSource(time.Now().UnixNano())) // 设置随机数 ossPath := "admin/export/提现记录" + dateTimeString + fmt.Sprintf("%d", rand.Intn(9000)+1000) + ".xlsx" // 上传oss @@ -557,8 +558,8 @@ func (r *ExportService) DoctorWithdrawalOrder(doctorWithdrawalOrders []*model.Do // 设置文件名字 now := time.Now() - dateTimeString := now.Format("20060102150405") // 当前时间字符串 - rand.Seed(time.Now().UnixNano()) // 设置随机数 + dateTimeString := now.Format("20060102150405") // 当前时间字符串 + rand.New(rand.NewSource(time.Now().UnixNano())) // 设置随机数 ossPath := "admin/export/提现记录-关联订单" + dateTimeString + fmt.Sprintf("%d", rand.Intn(9000)+1000) + ".xlsx" // 上传oss @@ -877,8 +878,8 @@ func (r *ExportService) UserDoctor(userDoctors []*model.UserDoctor) (string, err // 设置文件名字 now := time.Now() - dateTimeString := now.Format("20060102150405") // 当前时间字符串 - rand.Seed(time.Now().UnixNano()) // 设置随机数 + dateTimeString := now.Format("20060102150405") // 当前时间字符串 + rand.New(rand.NewSource(time.Now().UnixNano())) // 设置随机数 ossPath := "admin/export/医生列表" + dateTimeString + fmt.Sprintf("%d", rand.Intn(9000)+1000) + ".xlsx" // 上传oss @@ -943,8 +944,8 @@ func (r *ExportService) UserDoctorBankCard(d []*model.DoctorBankCard) (string, e // 设置文件名字 now := time.Now() - dateTimeString := now.Format("20060102150405") // 当前时间字符串 - rand.Seed(time.Now().UnixNano()) // 设置随机数 + dateTimeString := now.Format("20060102150405") // 当前时间字符串 + rand.New(rand.NewSource(time.Now().UnixNano())) // 设置随机数 ossPath := "admin/export/医生银行卡列表" + dateTimeString + fmt.Sprintf("%d", rand.Intn(9000)+1000) + ".xlsx" // 上传oss @@ -1009,8 +1010,8 @@ func (r *ExportService) DoctorAccount(d []*model.DoctorAccount) (string, error) // 设置文件名字 now := time.Now() - dateTimeString := now.Format("20060102150405") // 当前时间字符串 - rand.Seed(time.Now().UnixNano()) // 设置随机数 + dateTimeString := now.Format("20060102150405") // 当前时间字符串 + rand.New(rand.NewSource(time.Now().UnixNano())) // 设置随机数 ossPath := "admin/export/医生账户" + dateTimeString + fmt.Sprintf("%d", rand.Intn(9000)+1000) + ".xlsx" // 上传oss @@ -1157,8 +1158,8 @@ func (r *ExportService) OrderInquiryForAccount(d []*model.OrderInquiry) (string, // 设置文件名字 now := time.Now() - dateTimeString := now.Format("20060102150405") // 当前时间字符串 - rand.Seed(time.Now().UnixNano()) // 设置随机数 + dateTimeString := now.Format("20060102150405") // 当前时间字符串 + rand.New(rand.NewSource(time.Now().UnixNano())) // 设置随机数 ossPath := "admin/export/医生账户-关联订单" + dateTimeString + fmt.Sprintf("%d", rand.Intn(9000)+1000) + ".xlsx" // 上传oss @@ -1214,8 +1215,8 @@ func (r *ExportService) UserPatient(d []*model.UserPatient) (string, error) { // 设置文件名字 now := time.Now() - dateTimeString := now.Format("20060102150405") // 当前时间字符串 - rand.Seed(time.Now().UnixNano()) // 设置随机数 + dateTimeString := now.Format("20060102150405") // 当前时间字符串 + rand.New(rand.NewSource(time.Now().UnixNano())) // 设置随机数 ossPath := "admin/export/患者列表" + dateTimeString + fmt.Sprintf("%d", rand.Intn(9000)+1000) + ".xlsx" // 上传oss @@ -1298,8 +1299,8 @@ func (r *ExportService) PatientFamily(d []*model.PatientFamily) (string, error) // 设置文件名字 now := time.Now() - dateTimeString := now.Format("20060102150405") // 当前时间字符串 - rand.Seed(time.Now().UnixNano()) // 设置随机数 + dateTimeString := now.Format("20060102150405") // 当前时间字符串 + rand.New(rand.NewSource(time.Now().UnixNano())) // 设置随机数 ossPath := "admin/export/就诊人列表" + dateTimeString + fmt.Sprintf("%d", rand.Intn(9000)+1000) + ".xlsx" // 上传oss @@ -1446,8 +1447,8 @@ func (r *ExportService) OrderInquiry(d []*model.OrderInquiry) (string, error) { // 设置文件名字 now := time.Now() - dateTimeString := now.Format("20060102150405") // 当前时间字符串 - rand.Seed(time.Now().UnixNano()) // 设置随机数 + dateTimeString := now.Format("20060102150405") // 当前时间字符串 + rand.New(rand.NewSource(time.Now().UnixNano())) // 设置随机数 ossPath := "admin/export/问诊订单" + dateTimeString + fmt.Sprintf("%d", rand.Intn(9000)+1000) + ".xlsx" // 上传oss @@ -1584,11 +1585,11 @@ func (r *ExportService) OrderProduct(d []*model.OrderProduct) (string, error) { var products []string for _, v := range orderProductItems { amount := fmt.Sprintf("%d", v.Amount) - product := v.ProductName + "(数量:" + amount + ")" + product := v.ProductName + "(N:" + amount + ")" products = append(products, product) } - data.ProductNames = strings.Join(products, ";") + data.ProductNames = strings.Join(products, "; ") } dataSlice = append(dataSlice, data) @@ -1601,8 +1602,8 @@ func (r *ExportService) OrderProduct(d []*model.OrderProduct) (string, error) { // 设置文件名字 now := time.Now() - dateTimeString := now.Format("20060102150405") // 当前时间字符串 - rand.Seed(time.Now().UnixNano()) // 设置随机数 + dateTimeString := now.Format("20060102150405") // 当前时间字符串 + rand.New(rand.NewSource(time.Now().UnixNano())) // 设置随机数 ossPath := "admin/export/药品订单" + dateTimeString + fmt.Sprintf("%d", rand.Intn(9000)+1000) + ".xlsx" // 上传oss @@ -1632,6 +1633,7 @@ func (r *ExportService) OrderPrescription(d []*model.OrderPrescription) (string, {Value: "处方过期时间", CellType: "date", NumberFmt: "yyyy-mm-dd hh:mm:ss", ColWidth: 30}, {Value: "是否删除", CellType: "string", NumberFmt: "", ColWidth: 18}, {Value: "处方编号", CellType: "string", NumberFmt: "", ColWidth: 28}, + {Value: "药品", CellType: "string", NumberFmt: "", ColWidth: 35}, {Value: "患者姓名-就诊人", CellType: "string", NumberFmt: "", ColWidth: 18}, {Value: "患者性别-就诊人", CellType: "string", NumberFmt: "", ColWidth: 18}, {Value: "患者年龄-就诊人", CellType: "string", NumberFmt: "", ColWidth: 18}, @@ -1709,6 +1711,20 @@ func (r *ExportService) OrderPrescription(d []*model.OrderPrescription) (string, data.CreatedAt = t } + // 处理厨房药品列表 + orderPrescriptionProductDao := dao.OrderPrescriptionProductDao{} + orderPrescriptionProducts, err := orderPrescriptionProductDao.GetOrderPrescriptionProductListByOrderPrescriptionId(v.OrderPrescriptionId) + if err == nil && len(orderPrescriptionProducts) > 0 { + var products []string + for _, v := range orderPrescriptionProducts { + prescriptionProductNum := fmt.Sprintf("%d", v.PrescriptionProductNum) + product := v.ProductName + "(N:" + prescriptionProductNum + ")" + products = append(products, product) + } + + data.ProductNames = strings.Join(products, "; ") + } + dataSlice = append(dataSlice, data) } @@ -1719,8 +1735,8 @@ func (r *ExportService) OrderPrescription(d []*model.OrderPrescription) (string, // 设置文件名字 now := time.Now() - dateTimeString := now.Format("20060102150405") // 当前时间字符串 - rand.Seed(time.Now().UnixNano()) // 设置随机数 + dateTimeString := now.Format("20060102150405") // 当前时间字符串 + rand.New(rand.NewSource(time.Now().UnixNano())) // 设置随机数 ossPath := "admin/export/处方" + dateTimeString + fmt.Sprintf("%d", rand.Intn(9000)+1000) + ".xlsx" // 上传oss From 9b6bae415a3766989199e84e77315588748f8a26 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Mon, 4 Mar 2024 11:15:27 +0800 Subject: [PATCH 08/24] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=BF=BD=E7=95=A5?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index db3733c..09c66d6 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,5 @@ # Dependency directories (remove the comment below to include it) # vendor/ .idea/ -.git/ \ No newline at end of file +.git/ +.DS_Store/ \ No newline at end of file From 1b0ffd399a1de36c00eee2b5bc117f0c0a609994 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Mon, 4 Mar 2024 11:19:24 +0800 Subject: [PATCH 09/24] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=8D=AF=E5=93=81?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=90=9C=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 0 -> 8196 bytes api/dao/orderProduct.go | 2 +- extend/.DS_Store | Bin 0 -> 6148 bytes extend/weChat/.DS_Store | Bin 0 -> 6148 bytes 4 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 .DS_Store create mode 100644 extend/.DS_Store create mode 100644 extend/weChat/.DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..9b4ad7bf134f345e6c432977d93705ce6834448a GIT binary patch literal 8196 zcmeHMJ#P~+7=GQP&4mb*p-5ejPGXHpN}&}(LLp5D29^fF0I1yMLVDtIj&c_Qs)}xg zAHagxnP6mP;4dKYGmu!A;PFSJ^Ce~IfGS~2_Up5s*M9ui7x%pq5o=F^4Wcz7a*&0s z*HA1-qF>~>w4_^vGlM_fiFnVCxR2-h9NIQm1*`&A0jq#jz$$PS6u_M=l5@hnuX=51 z6|f5YmkNmA2Nzk`mbRI)@}~oZ3;|%vXqE|e`KLduD;i*1+Gfh41&JwFSmnxeh{1H^ zz?3`sTNA-`z5>Bk8tSzkqR)Kj1MC@LsbsA7eX(4|9h`#mT zGD*i7E*flfdwe*Ot+#%D&yO+WosRwnfLAhm`{B#i+h%|8*Z$E#ZtNeQ#1!X_`GMnr zV&XKWzR8tc0xr*W89pHe)F;nGl3S8bWr&z@h93zZ_dSM)~OYd{z95YRTO-!s*DUU77Ip@_BtIy+B zz~F`C5mQhYQ>^|(tUpag`ZRp@M^Tuh&E_|@R4Om8RGf-aa~^jO__UjP=_F};tu z9_NvNT=)F@VSl<`U)|wx>V9*Lc@aQIPC_uBpDRXC72ti3g-22 zeq%5IkHVPPM+04@J=(?F(xJPsf^%W##hb)lNY z1`-od2CZTBHre}M%3%wuz^N4|DbKYU?C#0m|4%)>b+igt1{Zb3pJS=ZfrY(FbK!Jz2)-o;e)>1KNzg~a{1`qpfB$q9IjSjaP#)v$Ir$e z@-w9`F@Bi9J7w&;!!@uLwfSGfGnH%g9`QA2o$Jvn;1%!+Y*WB}D}vo^oj&Fj@Cy9b z3h?(q!Wkonl|}REKw*vmz&66hQ0HGl=17N;!^$FhV8T*?mMYv4Ls&ZE(&a@CD~py+ z!W}+@yR&d76k+a;>r0bPBC_a9uYgyeuE36M_IUq)`s?$5o#b0y0k6P6rGRLU;?WRO za(ioIa=h0{_**y|=T#PeP*5>jF>-k;-h&%MTyg~%Ijk%q0`ortMh0Ja1^%c4-vP9H Bidp~w literal 0 HcmV?d00001 diff --git a/extend/weChat/.DS_Store b/extend/weChat/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..ae0ff38de4bf4764c8e218bdc0e23f765746c8c3 GIT binary patch literal 6148 zcmeHK%}N6?5T4YkTU6*lp~ryNqV*r~vbK8gCa&l~rS96Ii|a1|k`WwkXq^^QU z1tY#}7*7Uh?Iz(0y3m6Zit9&PVi$GkU5g%m!86E`d%M!F!F?1aX`}HbN)zSDscC20 znQ<<>8GW+6jXT5tnCGINOKBP_u+sKOp6j$TlU9AT4%8DIvOfiY*m zo{P@Rn2(c(#|$t7f6oA&4-%EowU`^!M+X-A34ln~NG({WOA*CLi>}4oAoidL6N+d; zg?(ZO6OMLi{alN=K@$$bK0bu~v#>7|q5qEGm)aeKYmiH3fEoDCz=Ua5DgW>P{{H_S z#4Tok8TeNWi1MDd*TgB=+&VHj%C!>p5|xDfa)VzXSkb8%eJK^!P_>|4QU%eqm>Wb3 P3SR^?4O}n-f6BlI(NJYI literal 0 HcmV?d00001 From 934120bb92d46491cadfa1cc5380536a595396c7 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Mon, 4 Mar 2024 13:59:08 +0800 Subject: [PATCH 10/24] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AF=86=E7=A0=81?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=94=B9=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/controller/adminUser.go | 6 +++--- api/requests/user.go | 1 + api/service/adminUser.go | 32 +++++++++++++++++++++++++++++--- 3 files changed, 33 insertions(+), 6 deletions(-) diff --git a/api/controller/adminUser.go b/api/controller/adminUser.go index 25929ed..de5e5fc 100644 --- a/api/controller/adminUser.go +++ b/api/controller/adminUser.go @@ -213,15 +213,15 @@ func (r *AdminUser) PutUserPassword(c *gin.Context) { return } - userId := c.GetInt64("UserId") - if userId == 0 { + adminUserId := c.GetInt64("UserId") + if adminUserId == 0 { responses.FailWithMessage("用户错误", c) return } // 业务处理 userService := service.AdminUserService{} - _, err := userService.PutUserPassword(userId, UserRequest.PutUserPassword) + _, err := userService.PutUserPassword(adminUserId, UserRequest.PutUserPassword) if err != nil { responses.FailWithMessage(err.Error(), c) return diff --git a/api/requests/user.go b/api/requests/user.go index 531bfcd..10071a7 100644 --- a/api/requests/user.go +++ b/api/requests/user.go @@ -62,4 +62,5 @@ type PutUser struct { type PutUserPassword struct { Password string `json:"password" form:"password" validate:"required" label:"原密码"` NewPassword string `json:"new_password" form:"new_password" validate:"required" label:"新密码"` + UserId string `json:"user_id" form:"user_id" validate:"required" label:"用户id"` } diff --git a/api/service/adminUser.go b/api/service/adminUser.go index d91aa9f..a8121ab 100644 --- a/api/service/adminUser.go +++ b/api/service/adminUser.go @@ -325,11 +325,37 @@ func (r *AdminUserService) PutUser(c *gin.Context, requestUserId int64, putUserR } // PutUserPassword 修改用户密码 -func (r *AdminUserService) PutUserPassword(requestUserId int64, putUserPasswordRequest requests.PutUserPassword) (bool, error) { +func (r *AdminUserService) PutUserPassword(adminUserId int64, putUserPasswordRequest requests.PutUserPassword) (bool, error) { adminUserDao := dao.AdminUserDao{} + // 将 id 转换为 int64 类型 + userId, err := strconv.ParseInt(putUserPasswordRequest.UserId, 10, 64) + if err != nil { + return false, errors.New("错误") + } + + // 获取当前登录用户数据 + adminUser, err := adminUserDao.GetAdminUserFirstById(adminUserId) + if err != nil || adminUser == nil { + return false, errors.New("用户数据错误") + } + + // 获取登录用户角色数据 + adminRoleDao := dao.AdminRoleDao{} + adminRole, err := adminRoleDao.GetAdminRoleFirstById(adminUser.RoleID) + if err != nil || adminRole == nil { + return false, errors.New("角色错误") + } + + // 非超级管理员无法修改其他用户数据 + if adminRole.IsAdmin != 1 { + if adminUserId != userId { + return false, errors.New("无法修改他人密码") + } + } + // 获取需修改用户数据 - adminUser, err := adminUserDao.GetAdminUserFirstById(requestUserId) + adminUser, err = adminUserDao.GetAdminUserFirstById(userId) if err != nil || adminUser == nil { return false, errors.New("用户数据错误") } @@ -387,7 +413,7 @@ func (r *AdminUserService) PutUserPassword(requestUserId int64, putUserPasswordR // 修改角色 data := make(map[string]interface{}) data["password"] = newPasswordString - err = adminUserDao.EditAdminUserById(tx, requestUserId, data) + err = adminUserDao.EditAdminUserById(tx, userId, data) if err != nil { tx.Rollback() return false, errors.New("修改失败") From e9687cc593f74ca5049b61b56eb0c41951b41685 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Thu, 21 Mar 2024 14:35:05 +0800 Subject: [PATCH 11/24] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=8A=A0=E8=BD=BD?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/dto/User.go | 4 ++++ api/dto/UserDoctor.go | 2 ++ api/model/user.go | 1 + 3 files changed, 7 insertions(+) diff --git a/api/dto/User.go b/api/dto/User.go index f0058b5..8f5eae6 100644 --- a/api/dto/User.go +++ b/api/dto/User.go @@ -17,6 +17,7 @@ type UserDto struct { RegisterMethod int `json:"register_method"` // 注册方式(1:微信小程序) Age uint `json:"age"` // 年龄 Sex int `json:"sex"` // 性别(0:未知 1:男 2:女) + Email string `json:"email"` // 邮箱 Avatar string `json:"avatar"` // 头像 IsOnline int `json:"is_online"` // 是否在线(0:不在线 1:在线) LoginAt model.LocalTime `json:"login_at"` // 小程序登陆时间 @@ -39,6 +40,7 @@ func GetUserDto(m *model.User) *UserDto { RegisterMethod: m.RegisterMethod, Age: m.Age, Sex: m.Sex, + Email: m.Email, Avatar: utils.AddOssDomain(m.Avatar), IsOnline: m.IsOnline, LoginAt: m.LoginAt, @@ -62,6 +64,7 @@ func GetMaskUserDto(m *model.User) *UserDto { RegisterMethod: m.RegisterMethod, Age: m.Age, Sex: m.Sex, + Email: m.Email, Avatar: utils.AddOssDomain(m.Avatar), IsOnline: m.IsOnline, LoginAt: m.LoginAt, @@ -90,6 +93,7 @@ func GetUserListDto(m []*model.User) []UserDto { RegisterMethod: v.RegisterMethod, Age: v.Age, Sex: v.Sex, + Email: v.Email, Avatar: utils.AddOssDomain(v.Avatar), IsOnline: v.IsOnline, LoginAt: v.LoginAt, diff --git a/api/dto/UserDoctor.go b/api/dto/UserDoctor.go index af95934..73540bf 100644 --- a/api/dto/UserDoctor.go +++ b/api/dto/UserDoctor.go @@ -105,6 +105,7 @@ type UserDoctorIntroductionDto struct { Mobile string `json:"mobile"` // 手机号 Age uint `json:"age"` // 年龄 Sex int `json:"sex"` // 性别(0:未知 1:男 2:女) + Email string `json:"email"` // 邮箱 RegisterMethod int `json:"register_method"` // 注册方式(1:微信小程序 2:后台添加 ) ApplyTime model.LocalTime `json:"apply_time"` // 申请时间 BeGoodAt string `json:"be_good_at"` // 擅长 @@ -558,6 +559,7 @@ func (r *UserDoctorIntroductionDto) LoadUserAttr(m *model.User) *UserDoctorIntro r.RegisterMethod = m.RegisterMethod r.Age = m.Age r.Sex = m.Sex + r.Email = m.Email } return r } diff --git a/api/model/user.go b/api/model/user.go index fa56939..3c30473 100644 --- a/api/model/user.go +++ b/api/model/user.go @@ -20,6 +20,7 @@ type User struct { RegisterMethod int `gorm:"column:register_method;type:tinyint(1);comment:注册方式(1:微信小程序 )" json:"register_method"` Age uint `gorm:"column:age;type:int(10) unsigned;comment:年龄" json:"age"` Sex int `gorm:"column:sex;type:tinyint(1);default:0;comment:性别(0:未知 1:男 2:女)" json:"sex"` + Email string `gorm:"column:email;type:varchar(100);comment:邮箱" json:"email"` Avatar string `gorm:"column:avatar;type:varchar(255);comment:头像" json:"avatar"` IsOnline int `gorm:"column:is_online;type:tinyint(1);default:0;comment:是否在线(0:不在线 1:在线)" json:"is_online"` LoginAt LocalTime `gorm:"column:login_at;type:datetime;comment:小程序登陆时间" json:"login_at"` From b24370c0636bec1f4d5b2e0a27a8cffafcb1846a Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Thu, 21 Mar 2024 14:50:43 +0800 Subject: [PATCH 12/24] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E6=AF=8F=E6=97=A5=E6=8E=A5=E8=AF=8A=E6=95=B0=E9=87=8F=E5=AD=97?= =?UTF-8?q?=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/dto/SystemInquiryConfig.go | 3 +++ api/model/systemInquiryConfig.go | 1 + api/requests/inquiryConfig.go | 1 + api/service/InquiryConfig.go | 8 ++++++++ 4 files changed, 13 insertions(+) diff --git a/api/dto/SystemInquiryConfig.go b/api/dto/SystemInquiryConfig.go index 839fe30..7797a2e 100644 --- a/api/dto/SystemInquiryConfig.go +++ b/api/dto/SystemInquiryConfig.go @@ -9,6 +9,7 @@ type SystemInquiryConfigDto struct { SystemInquiryConfigId string `json:"system_inquiry_config_id"` // 主键id InquiryType int `json:"inquiry_type"` // 接诊类型(1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药 5:检测) InquiryMode int `json:"inquiry_mode"` // 接诊方式(1:图文 2:视频 3:语音 4:电话 5:会员) + DefaultWorkNumDay int `json:"default_work_num_day"` // 默认每日接诊数量 MaxWorkNumDay int `json:"max_work_num_day"` // 每日最大接诊数量 InquiryPrice string `json:"inquiry_price"` // 接诊价格 MinInquiryPrice *float64 `json:"min_inquiry_price"` // 最低接诊价格(专家问诊) @@ -32,6 +33,7 @@ func GetSystemInquiryConfigDto(m *model.SystemInquiryConfig) *SystemInquiryConfi SystemInquiryConfigId: fmt.Sprintf("%d", m.SystemInquiryConfigId), InquiryType: m.InquiryType, InquiryMode: m.InquiryMode, + DefaultWorkNumDay: m.DefaultWorkNumDay, MaxWorkNumDay: m.MaxWorkNumDay, InquiryPrice: m.InquiryPrice, MinInquiryPrice: MinInquiryPrice, @@ -60,6 +62,7 @@ func GetSystemInquiryConfigListDto(m []*model.SystemInquiryConfig) []*SystemInqu SystemInquiryConfigId: fmt.Sprintf("%d", v.SystemInquiryConfigId), InquiryType: v.InquiryType, InquiryMode: v.InquiryMode, + DefaultWorkNumDay: v.DefaultWorkNumDay, MaxWorkNumDay: v.MaxWorkNumDay, InquiryPrice: v.InquiryPrice, MinInquiryPrice: MinInquiryPrice, diff --git a/api/model/systemInquiryConfig.go b/api/model/systemInquiryConfig.go index a2846cd..091a26a 100644 --- a/api/model/systemInquiryConfig.go +++ b/api/model/systemInquiryConfig.go @@ -11,6 +11,7 @@ type SystemInquiryConfig struct { SystemInquiryConfigId int64 `gorm:"column:system_inquiry_config_id;type:bigint(19);primary_key;comment:主键id" json:"system_inquiry_config_id"` InquiryType int `gorm:"column:inquiry_type;type:tinyint(1);comment:接诊类型(1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药 5:检测)" json:"inquiry_type"` InquiryMode int `gorm:"column:inquiry_mode;type:tinyint(1);default:1;comment:接诊方式(1:图文 2:视频 3:语音 4:电话 5:会员)" json:"inquiry_mode"` + DefaultWorkNumDay int `gorm:"column:default_work_num_day;type:int(10);default:0;comment:默认每日接诊数量" json:"default_work_num_day"` MaxWorkNumDay int `gorm:"column:max_work_num_day;type:int(11);default:0;comment:每日最大接诊数量" json:"max_work_num_day"` InquiryPrice string `gorm:"column:inquiry_price;type:varchar(255);comment:接诊价格" json:"inquiry_price"` MinInquiryPrice float64 `gorm:"column:min_inquiry_price;type:decimal(10,2);comment:最低接诊价格(专家问诊)" json:"min_inquiry_price"` diff --git a/api/requests/inquiryConfig.go b/api/requests/inquiryConfig.go index ba6e096..b4e7420 100644 --- a/api/requests/inquiryConfig.go +++ b/api/requests/inquiryConfig.go @@ -69,6 +69,7 @@ type GetSystemInquiryConfigPage struct { // PutSystemInquiryConfig 修改系统问诊配置 type PutSystemInquiryConfig struct { + DefaultWorkNumDay int `json:"default_work_num_day" label:"默认每日接诊数量"` MaxWorkNumDay int `json:"max_work_num_day" label:"每日最大接诊数量"` InquiryPrice string `json:"inquiry_price" label:"接诊价格"` MinInquiryPrice float64 `json:"min_inquiry_price" label:"最低接诊价格"` diff --git a/api/service/InquiryConfig.go b/api/service/InquiryConfig.go index 56e3625..cdbc2ba 100644 --- a/api/service/InquiryConfig.go +++ b/api/service/InquiryConfig.go @@ -601,6 +601,10 @@ func (r *SystemInquiryConfigService) PutSystemInquiryConfig(systemInquiryConfigI return false, errors.New("每日最大接诊数量应大于0") } + if req.DefaultWorkNumDay < 0 { + return false, errors.New("默认每日接诊数量应大于等于0") + } + if req.Duration == 0 { return false, errors.New("沟通时长应大于0") } @@ -645,6 +649,10 @@ func (r *SystemInquiryConfigService) PutSystemInquiryConfig(systemInquiryConfigI systemInquiryConfigData["max_work_num_day"] = req.MaxWorkNumDay } + if req.DefaultWorkNumDay != systemInquiryConfig.DefaultWorkNumDay { + systemInquiryConfigData["default_work_num_day"] = req.DefaultWorkNumDay + } + if req.TimesNumber != systemInquiryConfig.TimesNumber { systemInquiryConfigData["times_number"] = req.TimesNumber } From 38e32e425131713fd16d250625f55951fd23245e Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Mon, 25 Mar 2024 10:17:31 +0800 Subject: [PATCH 13/24] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E6=AF=8F=E6=97=A5=E6=8E=A5=E8=AF=8A=E6=95=B0=E9=87=8F=E5=AD=97?= =?UTF-8?q?=E6=AE=B51?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/service/InquiryConfig.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/service/InquiryConfig.go b/api/service/InquiryConfig.go index cdbc2ba..3587cf7 100644 --- a/api/service/InquiryConfig.go +++ b/api/service/InquiryConfig.go @@ -605,7 +605,7 @@ func (r *SystemInquiryConfigService) PutSystemInquiryConfig(systemInquiryConfigI return false, errors.New("默认每日接诊数量应大于等于0") } - if req.Duration == 0 { + if req.Duration == 0 && systemInquiryConfig.InquiryType != 1 && systemInquiryConfig.InquiryMode != 6 { return false, errors.New("沟通时长应大于0") } From f6f67d4acdf51cc0ce5224ff31f4c149fce5a108 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Mon, 25 Mar 2024 17:31:46 +0800 Subject: [PATCH 14/24] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E6=90=9C=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/dao/orderProduct.go | 40 ++++++++++------------------------------ 1 file changed, 10 insertions(+), 30 deletions(-) diff --git a/api/dao/orderProduct.go b/api/dao/orderProduct.go index bd11906..a79f693 100644 --- a/api/dao/orderProduct.go +++ b/api/dao/orderProduct.go @@ -192,9 +192,7 @@ func (r *OrderProductDao) GetOrderProductPageSearch(req requests.GetOrderProduct startTime, _ := time.Parse("2006-01-02", deliveryTime[0]) endTime, _ := time.Parse("2006-01-02", deliveryTime[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("delivery_time BETWEEN ? AND ?", startTime, endTime) } @@ -207,9 +205,7 @@ func (r *OrderProductDao) GetOrderProductPageSearch(req requests.GetOrderProduct startTime, _ := time.Parse("2006-01-02", cancelTime[0]) endTime, _ := time.Parse("2006-01-02", cancelTime[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("cancel_time BETWEEN ? AND ?", startTime, endTime) } @@ -222,9 +218,7 @@ func (r *OrderProductDao) GetOrderProductPageSearch(req requests.GetOrderProduct startTime, _ := time.Parse("2006-01-02", payTime[0]) endTime, _ := time.Parse("2006-01-02", payTime[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("pay_time BETWEEN ? AND ?", startTime, endTime) } @@ -237,9 +231,7 @@ func (r *OrderProductDao) GetOrderProductPageSearch(req requests.GetOrderProduct startTime, _ := time.Parse("2006-01-02", reportPreTime[0]) endTime, _ := time.Parse("2006-01-02", reportPreTime[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("report_pre_time BETWEEN ? AND ?", startTime, endTime) } @@ -252,9 +244,7 @@ func (r *OrderProductDao) GetOrderProductPageSearch(req requests.GetOrderProduct startTime, _ := time.Parse("2006-01-02", createdAt[0]) endTime, _ := time.Parse("2006-01-02", createdAt[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("created_at BETWEEN ? AND ?", startTime, endTime) } @@ -415,9 +405,7 @@ func (r *OrderProductDao) GetOrderProductExportListSearch(req requests.OrderProd startTime, _ := time.Parse("2006-01-02", deliveryTime[0]) endTime, _ := time.Parse("2006-01-02", deliveryTime[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("delivery_time BETWEEN ? AND ?", startTime, endTime) } @@ -430,9 +418,7 @@ func (r *OrderProductDao) GetOrderProductExportListSearch(req requests.OrderProd startTime, _ := time.Parse("2006-01-02", cancelTime[0]) endTime, _ := time.Parse("2006-01-02", cancelTime[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("cancel_time BETWEEN ? AND ?", startTime, endTime) } @@ -445,9 +431,7 @@ func (r *OrderProductDao) GetOrderProductExportListSearch(req requests.OrderProd startTime, _ := time.Parse("2006-01-02", payTime[0]) endTime, _ := time.Parse("2006-01-02", payTime[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("pay_time BETWEEN ? AND ?", startTime, endTime) } @@ -460,9 +444,7 @@ func (r *OrderProductDao) GetOrderProductExportListSearch(req requests.OrderProd startTime, _ := time.Parse("2006-01-02", reportPreTime[0]) endTime, _ := time.Parse("2006-01-02", reportPreTime[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("report_pre_time BETWEEN ? AND ?", startTime, endTime) } @@ -475,9 +457,7 @@ func (r *OrderProductDao) GetOrderProductExportListSearch(req requests.OrderProd startTime, _ := time.Parse("2006-01-02", createdAt[0]) endTime, _ := time.Parse("2006-01-02", createdAt[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("created_at BETWEEN ? AND ?", startTime, endTime) } From 5db9d1880c98b88b880bbe8d18da01e2d7c7f8ef Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Tue, 26 Mar 2024 17:29:48 +0800 Subject: [PATCH 15/24] shijian --- api/dao/orderInquiry.go | 120 ++++++++++------------------------------ 1 file changed, 30 insertions(+), 90 deletions(-) diff --git a/api/dao/orderInquiry.go b/api/dao/orderInquiry.go index 13293ff..1508606 100644 --- a/api/dao/orderInquiry.go +++ b/api/dao/orderInquiry.go @@ -149,9 +149,7 @@ func (r *OrderInquiryDao) GetOrderInquiryPageSearch(req requests.GetOrderInquiry startTime, _ := time.Parse("2006-01-02", payTime[0]) endTime, _ := time.Parse("2006-01-02", payTime[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("pay_time BETWEEN ? AND ?", startTime, endTime) } @@ -164,9 +162,7 @@ func (r *OrderInquiryDao) GetOrderInquiryPageSearch(req requests.GetOrderInquiry startTime, _ := time.Parse("2006-01-02", receptionTime[0]) endTime, _ := time.Parse("2006-01-02", receptionTime[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("reception_time BETWEEN ? AND ?", startTime, endTime) } @@ -179,9 +175,7 @@ func (r *OrderInquiryDao) GetOrderInquiryPageSearch(req requests.GetOrderInquiry startTime, _ := time.Parse("2006-01-02", completeTime[0]) endTime, _ := time.Parse("2006-01-02", completeTime[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("complete_time BETWEEN ? AND ?", startTime, endTime) } @@ -194,9 +188,7 @@ func (r *OrderInquiryDao) GetOrderInquiryPageSearch(req requests.GetOrderInquiry startTime, _ := time.Parse("2006-01-02", finishTime[0]) endTime, _ := time.Parse("2006-01-02", finishTime[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("finish_time BETWEEN ? AND ?", startTime, endTime) } @@ -214,9 +206,7 @@ func (r *OrderInquiryDao) GetOrderInquiryPageSearch(req requests.GetOrderInquiry startTime, _ := time.Parse("2006-01-02", cancelTime[0]) endTime, _ := time.Parse("2006-01-02", cancelTime[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("cancel_time BETWEEN ? AND ?", startTime, endTime) } @@ -229,9 +219,7 @@ func (r *OrderInquiryDao) GetOrderInquiryPageSearch(req requests.GetOrderInquiry startTime, _ := time.Parse("2006-01-02", createdAt[0]) endTime, _ := time.Parse("2006-01-02", createdAt[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("created_at BETWEEN ? AND ?", startTime, endTime) } @@ -349,9 +337,7 @@ func (r *OrderInquiryDao) GetOrderInquiryRecordPageSearch(req requests.GetOrderI startTime, _ := time.Parse("2006-01-02", payTime[0]) endTime, _ := time.Parse("2006-01-02", payTime[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("pay_time BETWEEN ? AND ?", startTime, endTime) } @@ -364,9 +350,7 @@ func (r *OrderInquiryDao) GetOrderInquiryRecordPageSearch(req requests.GetOrderI startTime, _ := time.Parse("2006-01-02", receptionTime[0]) endTime, _ := time.Parse("2006-01-02", receptionTime[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("reception_time BETWEEN ? AND ?", startTime, endTime) } @@ -379,9 +363,7 @@ func (r *OrderInquiryDao) GetOrderInquiryRecordPageSearch(req requests.GetOrderI startTime, _ := time.Parse("2006-01-02", completeTime[0]) endTime, _ := time.Parse("2006-01-02", completeTime[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("complete_time BETWEEN ? AND ?", startTime, endTime) } @@ -394,9 +376,7 @@ func (r *OrderInquiryDao) GetOrderInquiryRecordPageSearch(req requests.GetOrderI startTime, _ := time.Parse("2006-01-02", finishTime[0]) endTime, _ := time.Parse("2006-01-02", finishTime[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("finish_time BETWEEN ? AND ?", startTime, endTime) } @@ -414,9 +394,7 @@ func (r *OrderInquiryDao) GetOrderInquiryRecordPageSearch(req requests.GetOrderI startTime, _ := time.Parse("2006-01-02", cancelTime[0]) endTime, _ := time.Parse("2006-01-02", cancelTime[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("cancel_time BETWEEN ? AND ?", startTime, endTime) } @@ -429,9 +407,7 @@ func (r *OrderInquiryDao) GetOrderInquiryRecordPageSearch(req requests.GetOrderI startTime, _ := time.Parse("2006-01-02", createdAt[0]) endTime, _ := time.Parse("2006-01-02", createdAt[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("created_at BETWEEN ? AND ?", startTime, endTime) } @@ -524,9 +500,7 @@ func (r *OrderInquiryDao) GetOrderInquiryForAccountPageSearch(req requests.GetOr startTime, _ := time.Parse("2006-01-02", payTime[0]) endTime, _ := time.Parse("2006-01-02", payTime[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("pay_time BETWEEN ? AND ?", startTime, endTime) } @@ -539,9 +513,7 @@ func (r *OrderInquiryDao) GetOrderInquiryForAccountPageSearch(req requests.GetOr startTime, _ := time.Parse("2006-01-02", receptionTime[0]) endTime, _ := time.Parse("2006-01-02", receptionTime[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("reception_time BETWEEN ? AND ?", startTime, endTime) } @@ -554,9 +526,7 @@ func (r *OrderInquiryDao) GetOrderInquiryForAccountPageSearch(req requests.GetOr startTime, _ := time.Parse("2006-01-02", completeTime[0]) endTime, _ := time.Parse("2006-01-02", completeTime[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("complete_time BETWEEN ? AND ?", startTime, endTime) } @@ -569,9 +539,7 @@ func (r *OrderInquiryDao) GetOrderInquiryForAccountPageSearch(req requests.GetOr startTime, _ := time.Parse("2006-01-02", finishTime[0]) endTime, _ := time.Parse("2006-01-02", finishTime[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("finish_time BETWEEN ? AND ?", startTime, endTime) } @@ -589,9 +557,7 @@ func (r *OrderInquiryDao) GetOrderInquiryForAccountPageSearch(req requests.GetOr startTime, _ := time.Parse("2006-01-02", cancelTime[0]) endTime, _ := time.Parse("2006-01-02", cancelTime[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("cancel_time BETWEEN ? AND ?", startTime, endTime) } @@ -604,9 +570,7 @@ func (r *OrderInquiryDao) GetOrderInquiryForAccountPageSearch(req requests.GetOr startTime, _ := time.Parse("2006-01-02", createdAt[0]) endTime, _ := time.Parse("2006-01-02", createdAt[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("created_at BETWEEN ? AND ?", startTime, endTime) } @@ -684,9 +648,7 @@ func (r *OrderInquiryDao) GetOrderInquiryForAccountExportListSearch(req requests startTime, _ := time.Parse("2006-01-02", payTime[0]) endTime, _ := time.Parse("2006-01-02", payTime[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("pay_time BETWEEN ? AND ?", startTime, endTime) } @@ -699,9 +661,7 @@ func (r *OrderInquiryDao) GetOrderInquiryForAccountExportListSearch(req requests startTime, _ := time.Parse("2006-01-02", receptionTime[0]) endTime, _ := time.Parse("2006-01-02", receptionTime[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("reception_time BETWEEN ? AND ?", startTime, endTime) } @@ -714,9 +674,7 @@ func (r *OrderInquiryDao) GetOrderInquiryForAccountExportListSearch(req requests startTime, _ := time.Parse("2006-01-02", completeTime[0]) endTime, _ := time.Parse("2006-01-02", completeTime[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("complete_time BETWEEN ? AND ?", startTime, endTime) } @@ -729,9 +687,7 @@ func (r *OrderInquiryDao) GetOrderInquiryForAccountExportListSearch(req requests startTime, _ := time.Parse("2006-01-02", finishTime[0]) endTime, _ := time.Parse("2006-01-02", finishTime[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("finish_time BETWEEN ? AND ?", startTime, endTime) } @@ -749,9 +705,7 @@ func (r *OrderInquiryDao) GetOrderInquiryForAccountExportListSearch(req requests startTime, _ := time.Parse("2006-01-02", cancelTime[0]) endTime, _ := time.Parse("2006-01-02", cancelTime[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("cancel_time BETWEEN ? AND ?", startTime, endTime) } @@ -764,9 +718,7 @@ func (r *OrderInquiryDao) GetOrderInquiryForAccountExportListSearch(req requests startTime, _ := time.Parse("2006-01-02", createdAt[0]) endTime, _ := time.Parse("2006-01-02", createdAt[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("created_at BETWEEN ? AND ?", startTime, endTime) } @@ -881,9 +833,7 @@ func (r *OrderInquiryDao) GetOrderInquiryExportListSearch(req requests.OrderInqu startTime, _ := time.Parse("2006-01-02", payTime[0]) endTime, _ := time.Parse("2006-01-02", payTime[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("pay_time BETWEEN ? AND ?", startTime, endTime) } @@ -896,9 +846,7 @@ func (r *OrderInquiryDao) GetOrderInquiryExportListSearch(req requests.OrderInqu startTime, _ := time.Parse("2006-01-02", receptionTime[0]) endTime, _ := time.Parse("2006-01-02", receptionTime[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("reception_time BETWEEN ? AND ?", startTime, endTime) } @@ -911,9 +859,7 @@ func (r *OrderInquiryDao) GetOrderInquiryExportListSearch(req requests.OrderInqu startTime, _ := time.Parse("2006-01-02", completeTime[0]) endTime, _ := time.Parse("2006-01-02", completeTime[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("complete_time BETWEEN ? AND ?", startTime, endTime) } @@ -926,9 +872,7 @@ func (r *OrderInquiryDao) GetOrderInquiryExportListSearch(req requests.OrderInqu startTime, _ := time.Parse("2006-01-02", finishTime[0]) endTime, _ := time.Parse("2006-01-02", finishTime[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("finish_time BETWEEN ? AND ?", startTime, endTime) } @@ -946,9 +890,7 @@ func (r *OrderInquiryDao) GetOrderInquiryExportListSearch(req requests.OrderInqu startTime, _ := time.Parse("2006-01-02", cancelTime[0]) endTime, _ := time.Parse("2006-01-02", cancelTime[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("cancel_time BETWEEN ? AND ?", startTime, endTime) } @@ -961,9 +903,7 @@ func (r *OrderInquiryDao) GetOrderInquiryExportListSearch(req requests.OrderInqu startTime, _ := time.Parse("2006-01-02", createdAt[0]) endTime, _ := time.Parse("2006-01-02", createdAt[1]) - if startTime == endTime { - endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) - } + endTime = endTime.Add(23*time.Hour + 59*time.Minute + 59*time.Second) query = query.Where("created_at BETWEEN ? AND ?", startTime, endTime) } From 1eeaa3eeb2a4aaba86e101e94cae078550157511 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Wed, 27 Mar 2024 15:21:59 +0800 Subject: [PATCH 16/24] 1 --- api/requests/inquiryConfig.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/api/requests/inquiryConfig.go b/api/requests/inquiryConfig.go index b4e7420..5ec1910 100644 --- a/api/requests/inquiryConfig.go +++ b/api/requests/inquiryConfig.go @@ -51,7 +51,7 @@ type DoctorInquiryConfigService struct { type AddDoctorInquiryConfig struct { DoctorId string `json:"doctor_id" form:"doctor_id" validate:"required"` // 医生id InquiryType int `json:"inquiry_type" form:"inquiry_type" validate:"required,oneof=1 2 3 4 5" label:"问诊类型"` // 1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药 5:检测 - InquiryMode int `json:"inquiry_mode" form:"inquiry_mode" validate:"required,oneof=1 2 3 4 5" label:"问诊方式"` // 1:图文 2:视频 3:语音 4:电话 5:会员 + InquiryMode int `json:"inquiry_mode" form:"inquiry_mode" validate:"required,oneof=1 2 3 4 5 6" label:"问诊方式"` WorkNumDay int `json:"work_num_day" label:"每日接诊数量"` InquiryPrice float64 `json:"inquiry_price" label:"接诊价格"` IsEnable int `json:"is_enable" form:"is_enable" validate:"oneof=0 1" label:"是否启用"` // 0:否 1:是 @@ -88,5 +88,5 @@ type SystemInquiryTime struct { // GetSystemInquiryConfigDetail 系统问诊配置详情-条件 type GetSystemInquiryConfigDetail struct { InquiryType *int `json:"inquiry_type" form:"inquiry_type" validate:"required,oneof=1 2 3 4 5" label:"问诊类型"` // 1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药 5:检测 - InquiryMode *int `json:"inquiry_mode" form:"inquiry_mode" validate:"required,oneof=1 2 3 4 5" label:"问诊方式"` // 1:图文 2:视频 3:语音 4:电话 5:会员 + InquiryMode *int `json:"inquiry_mode" form:"inquiry_mode" validate:"required,oneof=1 2 3 4 5 6" label:"问诊方式"` } From f6c7dc9c1834e2261c2e72507c2cbf2d07df935c Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Wed, 27 Mar 2024 15:55:46 +0800 Subject: [PATCH 17/24] =?UTF-8?q?=E7=AE=80=E4=BB=8B=E5=A4=84=E7=90=86?= =?UTF-8?q?=E5=8C=BB=E7=94=9F=E4=B8=93=E5=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/service/userDoctor.go | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/api/service/userDoctor.go b/api/service/userDoctor.go index f1c13b5..544bde9 100644 --- a/api/service/userDoctor.go +++ b/api/service/userDoctor.go @@ -1718,6 +1718,7 @@ func (r *UserDoctorService) PutDoctorIntroduction(doctorId int64, req requests.P userDoctorData := make(map[string]interface{}) // 医生数据 doctorIdenFailDao := dao.DoctorIdenFailDao{} + doctorExpertiseDao := dao.DoctorExpertiseDao{} // 审核不通过 if req.IntroductionStatus == 3 { @@ -1793,6 +1794,40 @@ func (r *UserDoctorService) PutDoctorIntroduction(doctorId int64, req requests.P userDoctorData["brief_introduction"] = doctorIntroductionRecord.BriefIntroduction } + // 医生专长 + if doctorIntroductionRecord.ExpertiseIds != "" { + // 删除医生专长 + maps = make(map[string]interface{}) + maps["doctor_id"] = doctorId + err = doctorExpertiseDao.DeleteDoctorExpertise(tx, maps) + if err != nil { + tx.Rollback() + return false, errors.New("审核失败") + } + + // 新增医生专长 + expertiseIds := strings.Split(doctorIntroductionRecord.ExpertiseIds, ",") + for _, id := range expertiseIds { + // 将 id 转换为 int64 类型 + expertiseId, err := strconv.ParseInt(id, 10, 64) + if err != nil { + tx.Rollback() + return false, errors.New("审核失败") + } + + doctorExpertise := &model.DoctorExpertise{ + DoctorId: doctorId, + ExpertiseId: expertiseId, + } + + doctorExpertise, err = doctorExpertiseDao.AddDoctorExpertise(tx, doctorExpertise) + if err != nil || doctorExpertise == nil { + tx.Rollback() + return false, errors.New("审核失败") + } + } + } + // 更新医生im资料 if doctorIntroductionRecord.Avatar != "" { userDoctorData["avatar"] = doctorIntroductionRecord.Avatar From ebc6d9b21fb41df3e2c88dd8db0b00556443e7d9 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Wed, 27 Mar 2024 16:11:40 +0800 Subject: [PATCH 18/24] =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.yaml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/config.yaml b/config.yaml index 8bb5c9c..ef8b5a2 100644 --- a/config.yaml +++ b/config.yaml @@ -46,11 +46,16 @@ ca-online: ca-online-api-url: http://testmicrosrv.scca.com.cn:9527 # [腾讯im] +#im: +# im-app-id: 1400798221 +# im-secret: fc45ab469ca632a700166973d87b3a6f56a855cb92d7cffb54e4d37135c097da +# im-base-url: https://console.tim.qq.com/ +# im-token: NDc5MzExMDMxMDY2NDMxNDg5L im: - im-app-id: 1400798221 - im-secret: fc45ab469ca632a700166973d87b3a6f56a855cb92d7cffb54e4d37135c097da + im-app-id: 1600027911 + im-secret: 8ebf5bc8557a18019f94ed1cae4fd1d78e77aedcfdf804e56c5478057b9cb93c im-base-url: https://console.tim.qq.com/ - im-token: NDc5MzExMDMxMDY2NDMxNDg5L + im-token: NDc5MzExMDIYdusl2NDMxNDg5L # [阿里大鱼短信] dysms: From 593ecb7db260bcf74389a568ca8173abbd455891 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Wed, 27 Mar 2024 16:17:58 +0800 Subject: [PATCH 19/24] =?UTF-8?q?=E7=AE=80=E4=BB=8B=E5=A4=B4=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/service/userDoctor.go | 2 +- utils/replace.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/api/service/userDoctor.go b/api/service/userDoctor.go index 544bde9..7fac5fe 100644 --- a/api/service/userDoctor.go +++ b/api/service/userDoctor.go @@ -1835,7 +1835,7 @@ func (r *UserDoctorService) PutDoctorIntroduction(doctorId int64, req requests.P profileItem := []tencentIm.ProfileItem{ { Tag: "Tag_Profile_IM_Image", - Value: doctorIntroductionRecord.Avatar, + Value: utils.AddOssDomain(doctorIntroductionRecord.Avatar), }, } diff --git a/utils/replace.go b/utils/replace.go index dc344c2..eb184e5 100644 --- a/utils/replace.go +++ b/utils/replace.go @@ -13,7 +13,7 @@ func RemoveOssDomain(url string) string { return url } -// AddOssDomain 去除oss地址中的前缀 +// AddOssDomain 增加oss地址中的前缀 func AddOssDomain(url string) string { if url == "" { return "" From 5a7b7e08125d7b4a8f41724ddd88ee74bcf9e21b Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Wed, 27 Mar 2024 16:46:52 +0800 Subject: [PATCH 20/24] =?UTF-8?q?=E5=8A=A0=E8=BD=BD=E5=8C=BB=E7=94=9F?= =?UTF-8?q?=E4=B8=93=E9=95=BF1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/dto/UserDoctor.go | 54 +++++++++++++++++++-------------------- api/service/userDoctor.go | 42 +++++++++++++++++++++++++----- 2 files changed, 63 insertions(+), 33 deletions(-) diff --git a/api/dto/UserDoctor.go b/api/dto/UserDoctor.go index 73540bf..e647aa0 100644 --- a/api/dto/UserDoctor.go +++ b/api/dto/UserDoctor.go @@ -89,33 +89,33 @@ type UserDoctorPendingDto struct { // UserDoctorIntroductionDto 简介 type UserDoctorIntroductionDto struct { - DoctorID string `json:"doctor_id"` // 主键id - UserID string `json:"user_id"` // 用户id - UserName string `json:"user_name"` // 用户名称 - Status int `json:"status"` // 状态(0:禁用 1:正常 2:删除) - IntroductionStatus int `json:"introduction_status"` // 个人简介审核状态(0:未审核 1:审核通过 2:审核中 3:审核失败) - IntroductionTime model.LocalTime `json:"introduction_time"` // 审核时间 - Avatar string `json:"avatar"` // 头像 - DoctorTitle int `json:"doctor_title"` // 医生职称(1:主任医师 2:主任中医师 3:副主任医师 4:副主任中医师 5:主治医师 6:住院医师) - DepartmentCustomID string `json:"department_custom_id"` // 科室id-自定义 - DepartmentCustomName string `json:"department_custom_name"` // 科室名称(如未自己输入,填入标准科室名称) - DepartmentCustomMobile string `json:"department_custom_mobile"` // 科室电话 - HospitalID string `json:"hospital_id"` // 所属医院id - HospitalName string `json:"hospital_name"` // 医院名称 - Mobile string `json:"mobile"` // 手机号 - Age uint `json:"age"` // 年龄 - Sex int `json:"sex"` // 性别(0:未知 1:男 2:女) - Email string `json:"email"` // 邮箱 - RegisterMethod int `json:"register_method"` // 注册方式(1:微信小程序 2:后台添加 ) - ApplyTime model.LocalTime `json:"apply_time"` // 申请时间 - BeGoodAt string `json:"be_good_at"` // 擅长 - BriefIntroduction string `json:"brief_introduction"` // 医生简介 - CreatedAt model.LocalTime `json:"created_at"` // 创建时间 - UpdatedAt model.LocalTime `json:"updated_at"` // 更新时间 - User *UserDto `json:"user"` // 用户 - Hospital *HospitalDto `json:"hospital"` // 医院 - UserDoctorInfo *UserDoctorInfoDto `json:"user_doctor_info"` // 医生详情 - DoctorExpertise []string `json:"doctor_expertise"` // 医生专长 + DoctorID string `json:"doctor_id"` // 主键id + UserID string `json:"user_id"` // 用户id + UserName string `json:"user_name"` // 用户名称 + Status int `json:"status"` // 状态(0:禁用 1:正常 2:删除) + IntroductionStatus int `json:"introduction_status"` // 个人简介审核状态(0:未审核 1:审核通过 2:审核中 3:审核失败) + IntroductionTime model.LocalTime `json:"introduction_time"` // 审核时间 + Avatar string `json:"avatar"` // 头像 + DoctorTitle int `json:"doctor_title"` // 医生职称(1:主任医师 2:主任中医师 3:副主任医师 4:副主任中医师 5:主治医师 6:住院医师) + DepartmentCustomID string `json:"department_custom_id"` // 科室id-自定义 + DepartmentCustomName string `json:"department_custom_name"` // 科室名称(如未自己输入,填入标准科室名称) + DepartmentCustomMobile string `json:"department_custom_mobile"` // 科室电话 + HospitalID string `json:"hospital_id"` // 所属医院id + HospitalName string `json:"hospital_name"` // 医院名称 + Mobile string `json:"mobile"` // 手机号 + Age uint `json:"age"` // 年龄 + Sex int `json:"sex"` // 性别(0:未知 1:男 2:女) + Email string `json:"email"` // 邮箱 + RegisterMethod int `json:"register_method"` // 注册方式(1:微信小程序 2:后台添加 ) + ApplyTime model.LocalTime `json:"apply_time"` // 申请时间 + BeGoodAt string `json:"be_good_at"` // 擅长 + BriefIntroduction string `json:"brief_introduction"` // 医生简介 + CreatedAt model.LocalTime `json:"created_at"` // 创建时间 + UpdatedAt model.LocalTime `json:"updated_at"` // 更新时间 + User *UserDto `json:"user"` // 用户 + Hospital *HospitalDto `json:"hospital"` // 医院 + UserDoctorInfo *UserDoctorInfoDto `json:"user_doctor_info"` // 医生详情 + DoctorExpertise []*DiseaseClassExpertiseDto `json:"doctor_expertise"` // 医生专长 } func GetUserDoctorDto(m *model.UserDoctor) *UserDoctorDto { diff --git a/api/service/userDoctor.go b/api/service/userDoctor.go index 7fac5fe..0378ef6 100644 --- a/api/service/userDoctor.go +++ b/api/service/userDoctor.go @@ -1641,6 +1641,28 @@ func (r *UserDoctorService) GetUserDoctorIntroduction(doctorId int64) (g *dto.Us } } + var diseaseClassExpertiseDto []*dto.DiseaseClassExpertiseDto + diseaseClassExpertiseDao := dao.DiseaseClassExpertiseDao{} + + if len(expertiseIds) > 0 { + for _, id := range expertiseIds { + // 将 id 转换为 int64 类型 + expertiseId, err := strconv.ParseInt(id, 10, 64) + if err != nil { + return nil, errors.New("专长数据错误") + } + + diseaseClassExpertise, err := diseaseClassExpertiseDao.GetDiseaseClassExpertiseById(expertiseId) + if err != nil || diseaseClassExpertise == nil { + return nil, errors.New("专长数据错误") + } + + res := dto.GetDiseaseClassExpertiseDto(diseaseClassExpertise) + + diseaseClassExpertiseDto = append(diseaseClassExpertiseDto, res) + } + } + // 处理返回值 g = dto.GetUserDoctorIntroductionDto(userDoctor) @@ -1663,7 +1685,7 @@ func (r *UserDoctorService) GetUserDoctorIntroduction(doctorId int64) (g *dto.Us g.LoadHospital(userDoctor.Hospital) // 加载医生专长 - g.DoctorExpertise = expertiseIds + g.DoctorExpertise = diseaseClassExpertiseDto // 加载医生详情 g.LoadUserDoctorInfo(userDoctor.UserDoctorInfo) @@ -1796,15 +1818,23 @@ func (r *UserDoctorService) PutDoctorIntroduction(doctorId int64, req requests.P // 医生专长 if doctorIntroductionRecord.ExpertiseIds != "" { - // 删除医生专长 - maps = make(map[string]interface{}) - maps["doctor_id"] = doctorId - err = doctorExpertiseDao.DeleteDoctorExpertise(tx, maps) + // 获取医生专长 + doctorExpertises, err := doctorExpertiseDao.GetDoctorExpertiseListByDoctorId(doctorId) if err != nil { - tx.Rollback() return false, errors.New("审核失败") } + if len(doctorExpertises) > 0 { + // 删除医生专长 + maps = make(map[string]interface{}) + maps["doctor_id"] = doctorId + err = doctorExpertiseDao.DeleteDoctorExpertise(tx, maps) + if err != nil { + tx.Rollback() + return false, errors.New("审核失败") + } + } + // 新增医生专长 expertiseIds := strings.Split(doctorIntroductionRecord.ExpertiseIds, ",") for _, id := range expertiseIds { From b5636cde043ffe002454673d197035deeea95e43 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Thu, 28 Mar 2024 14:23:16 +0800 Subject: [PATCH 21/24] 1 --- api/service/InquiryConfig.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/service/InquiryConfig.go b/api/service/InquiryConfig.go index 3587cf7..82ffb81 100644 --- a/api/service/InquiryConfig.go +++ b/api/service/InquiryConfig.go @@ -259,7 +259,7 @@ func (r *DoctorInquiryConfigService) PutDoctorInquiryConfig(inquiryConfigId int6 } // 验证医生服务设置-疑难会诊 - if doctorInquiryConfig.InquiryType == 1 || doctorInquiryConfig.InquiryType == 6 { + if doctorInquiryConfig.InquiryType == 1 && doctorInquiryConfig.InquiryMode == 6 { if req.DoctorInquiryConfigService == nil { return false, errors.New("请填写疑难会诊服务设置") } From 17cd97df86f3824adaeb5542dd9e6bc3ed143afe Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Thu, 28 Mar 2024 14:24:48 +0800 Subject: [PATCH 22/24] 1 --- api/service/InquiryConfig.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/service/InquiryConfig.go b/api/service/InquiryConfig.go index 82ffb81..27aa7e0 100644 --- a/api/service/InquiryConfig.go +++ b/api/service/InquiryConfig.go @@ -352,7 +352,7 @@ func (r *DoctorInquiryConfigService) PutDoctorInquiryConfig(inquiryConfigId int6 } // 修改医生服务设置-疑难会诊 - if doctorInquiryConfig.InquiryType == 1 || doctorInquiryConfig.InquiryType == 6 { + if doctorInquiryConfig.InquiryType == 1 && doctorInquiryConfig.InquiryMode == 6 { // 获取医生服务设置-疑难会诊 doctorInquiryConfigServiceDao := dao.DoctorInquiryConfigServiceDao{} From a25205e9904f99ffe1b69d19187cd5a6342274dc Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Fri, 29 Mar 2024 16:27:41 +0800 Subject: [PATCH 23/24] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=A4=84=E6=96=B9?= =?UTF-8?q?=E5=8F=AF=E5=BC=80=E5=85=B7=E7=9A=84=E6=95=B0=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/requests/product.go | 17 +++++++++-------- api/service/product.go | 5 +++++ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/api/requests/product.go b/api/requests/product.go index 00216c8..a44b926 100644 --- a/api/requests/product.go +++ b/api/requests/product.go @@ -73,14 +73,15 @@ type AddProduct struct { // PutProduct 修改商品 type PutProduct struct { - MnemonicCode string `json:"mnemonic_code" form:"mnemonic_code" label:"商品助记码"` // 商品助记码(首字母简拼) - ProductCoverImg string `json:"product_cover_img" form:"product_cover_img" label:"商品封面图"` // 商品封面图 - SingleUnit string `json:"single_unit" form:"single_unit" label:"单次剂量" validate:"required"` // 单次剂量(例:1次1包) - SingleUse string `json:"single_use" form:"single_use" label:"单次用法" validate:"required"` // 单次用法(例:口服) - PackagingUnit string `json:"packaging_unit" form:"packaging_unit" label:"基本包装单位" validate:"required"` // 基本包装单位(例:盒/瓶) - FrequencyUse string `json:"frequency_use" form:"frequency_use" label:"使用频率" validate:"required"` // 使用频率(例:1天3次) - AvailableDays float64 `json:"available_days" form:"available_days" label:"可用天数" validate:"required"` // 可用天数(3) - ProductRemarks string `json:"product_remarks" form:"product_remarks" label:"商品备注" validate:"required"` // 商品备注 + MnemonicCode string `json:"mnemonic_code" form:"mnemonic_code" label:"商品助记码"` // 商品助记码(首字母简拼) + ProductCoverImg string `json:"product_cover_img" form:"product_cover_img" label:"商品封面图"` // 商品封面图 + SingleUnit string `json:"single_unit" form:"single_unit" label:"单次剂量" validate:"required"` // 单次剂量(例:1次1包) + SingleUse string `json:"single_use" form:"single_use" label:"单次用法" validate:"required"` // 单次用法(例:口服) + PackagingUnit string `json:"packaging_unit" form:"packaging_unit" label:"基本包装单位" validate:"required"` // 基本包装单位(例:盒/瓶) + FrequencyUse string `json:"frequency_use" form:"frequency_use" label:"使用频率" validate:"required"` // 使用频率(例:1天3次) + AvailableDays float64 `json:"available_days" form:"available_days" label:"可用天数" validate:"required"` // 可用天数(3) + ProductRemarks string `json:"product_remarks" form:"product_remarks" label:"商品备注" validate:"required"` // 商品备注 + PrescriptionNum int `json:"prescription_num" form:"prescription_num" label:"处方可开具的数量" validate:"required"` // 处方可开具的数量 } // PutProductStatus 修改商品状态(上/下架) diff --git a/api/service/product.go b/api/service/product.go index 859be79..8b26082 100644 --- a/api/service/product.go +++ b/api/service/product.go @@ -229,6 +229,11 @@ func (r *ProductService) PutProduct(productId int64, req requests.PutProduct) (b productData["product_remarks"] = req.ProductRemarks } + // 处方可开具的数量 + if product.PrescriptionNum != req.PrescriptionNum { + productData["prescription_num"] = req.PrescriptionNum + } + // 商品封面 if req.ProductCoverImg != "" { productCoverImg := utils.RemoveOssDomain(req.ProductCoverImg) From 3242e37351634df05af6b7d07d692eb6c58908a4 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Fri, 29 Mar 2024 16:28:42 +0800 Subject: [PATCH 24/24] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=A4=84=E6=96=B9?= =?UTF-8?q?=E5=8F=AF=E5=BC=80=E5=85=B7=E7=9A=84=E6=95=B0=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/requests/product.go | 1 + api/service/product.go | 1 + 2 files changed, 2 insertions(+) diff --git a/api/requests/product.go b/api/requests/product.go index a44b926..353c905 100644 --- a/api/requests/product.go +++ b/api/requests/product.go @@ -69,6 +69,7 @@ type AddProduct struct { AvailableDays float64 `json:"available_days" form:"available_days" label:"可用天数" validate:"required"` // 可用天数(3) ProductRemarks string `json:"product_remarks" form:"product_remarks" label:"商品备注" validate:"required"` // 商品备注 ProductStatus *int `json:"product_status" form:"product_status" label:"商品状态" validate:"required,oneof=1 2"` // 商品状态(1:正常 2:下架) + PrescriptionNum int `json:"prescription_num" form:"prescription_num" label:"处方可开具的数量" validate:"required"` // 处方可开具的数量 } // PutProduct 修改商品 diff --git a/api/service/product.go b/api/service/product.go index 8b26082..46ac523 100644 --- a/api/service/product.go +++ b/api/service/product.go @@ -138,6 +138,7 @@ func (r *ProductService) AddProduct(userId string, req requests.AddProduct) (boo FrequencyUse: req.FrequencyUse, AvailableDays: req.AvailableDays, ProductRemarks: req.ProductRemarks, + PrescriptionNum: req.PrescriptionNum, } product, err = productDao.AddProduct(tx, product)