234 lines
5.1 KiB
Go
234 lines
5.1 KiB
Go
package service
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"hospital-admin-api/api/dao"
|
|
"hospital-admin-api/api/dto"
|
|
"hospital-admin-api/api/model"
|
|
"hospital-admin-api/api/requests"
|
|
"hospital-admin-api/global"
|
|
)
|
|
|
|
type HospitalService struct {
|
|
}
|
|
|
|
// AddHospital 新增医院
|
|
func (r *HospitalService) AddHospital(req requests.AddHospital) (bool, error) {
|
|
hospitalDao := dao.HospitalDao{}
|
|
|
|
// 检测医院是否重复
|
|
maps := make(map[string]interface{})
|
|
maps["hospital_name"] = req.HospitalName
|
|
maps["province_id"] = req.ProvinceId
|
|
maps["city_id"] = req.CityId
|
|
hospitals, err := hospitalDao.GetHospitalList(maps)
|
|
if err != nil {
|
|
return false, errors.New("医院重复添加")
|
|
}
|
|
|
|
if len(hospitals) != 0 {
|
|
return false, errors.New("医院重复添加")
|
|
}
|
|
|
|
var province string
|
|
var city string
|
|
var county string
|
|
|
|
areaDao := dao.AreaDao{}
|
|
if req.ProvinceId != 0 {
|
|
area, err := areaDao.GetAreaById(req.ProvinceId)
|
|
if err != nil || area == nil {
|
|
return false, errors.New("省份数据错误")
|
|
}
|
|
province = area.AreaName
|
|
}
|
|
|
|
if req.CityId != 0 {
|
|
area, err := areaDao.GetAreaById(req.CityId)
|
|
if err != nil || area == nil {
|
|
return false, errors.New("城市数据错误")
|
|
}
|
|
city = area.AreaName
|
|
}
|
|
|
|
if req.CountyId != 0 {
|
|
area, err := areaDao.GetAreaById(req.CountyId)
|
|
if err != nil || area == nil {
|
|
return false, errors.New("城市数据错误")
|
|
}
|
|
county = area.AreaName
|
|
}
|
|
|
|
// 开始事务
|
|
tx := global.Db.Begin()
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
tx.Rollback()
|
|
}
|
|
}()
|
|
|
|
// 新增商品表
|
|
hospital := &model.Hospital{
|
|
HospitalName: req.HospitalName,
|
|
HospitalStatus: *req.HospitalStatus,
|
|
HospitalLevelName: req.HospitalLevelName,
|
|
PostCode: req.PostCode,
|
|
TelePhone: req.TelePhone,
|
|
ProvinceId: req.ProvinceId,
|
|
Province: province,
|
|
CityId: req.CityId,
|
|
City: city,
|
|
CountyId: req.CountyId,
|
|
County: county,
|
|
Address: req.Address,
|
|
Lat: req.Lat,
|
|
Lng: req.Lng,
|
|
Desc: req.Desc,
|
|
}
|
|
|
|
hospital, err = hospitalDao.AddHospital(tx, hospital)
|
|
if err != nil || hospital == nil {
|
|
tx.Rollback()
|
|
return false, errors.New(err.Error())
|
|
}
|
|
|
|
tx.Commit()
|
|
return true, nil
|
|
}
|
|
|
|
// PutHospital 修改医院
|
|
func (r *HospitalService) PutHospital(hospitalId int64, req requests.PutHospital) (bool, error) {
|
|
hospitalDao := dao.HospitalDao{}
|
|
area, err := hospitalDao.GetHospitalById(hospitalId)
|
|
if err != nil || area == nil {
|
|
return false, errors.New("省份数据错误")
|
|
}
|
|
|
|
// 开始事务
|
|
tx := global.Db.Begin()
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
tx.Rollback()
|
|
fmt.Println(r)
|
|
}
|
|
}()
|
|
|
|
hospitalData := make(map[string]interface{})
|
|
|
|
if req.HospitalName != area.HospitalName {
|
|
hospitalData["hospital_name"] = req.HospitalName
|
|
}
|
|
|
|
if *req.HospitalStatus != area.HospitalStatus {
|
|
hospitalData["hospital_status"] = req.HospitalStatus
|
|
}
|
|
|
|
if req.HospitalLevelName != area.HospitalLevelName {
|
|
hospitalData["hospital_level_name"] = req.HospitalLevelName
|
|
}
|
|
|
|
if req.PostCode != "" {
|
|
if req.PostCode != area.PostCode {
|
|
hospitalData["post_code"] = req.PostCode
|
|
}
|
|
}
|
|
|
|
if req.TelePhone != "" {
|
|
if req.TelePhone != area.TelePhone {
|
|
hospitalData["tele_phone"] = req.TelePhone
|
|
}
|
|
}
|
|
|
|
if req.ProvinceId != 0 {
|
|
if req.ProvinceId != area.ProvinceId {
|
|
areaDao := dao.AreaDao{}
|
|
area, err := areaDao.GetAreaById(req.ProvinceId)
|
|
if err != nil || area == nil {
|
|
return false, errors.New("省份数据错误")
|
|
}
|
|
|
|
hospitalData["province_id"] = req.ProvinceId
|
|
hospitalData["province"] = area.AreaName
|
|
|
|
}
|
|
}
|
|
|
|
if req.CityId != 0 {
|
|
if req.CityId != area.CityId {
|
|
areaDao := dao.AreaDao{}
|
|
area, err := areaDao.GetAreaById(req.CityId)
|
|
if err != nil || area == nil {
|
|
return false, errors.New("省份数据错误")
|
|
}
|
|
|
|
hospitalData["city_id"] = req.CityId
|
|
hospitalData["city"] = area.AreaName
|
|
|
|
}
|
|
}
|
|
|
|
if req.CountyId != 0 {
|
|
if req.CountyId != area.CountyId {
|
|
areaDao := dao.AreaDao{}
|
|
area, err := areaDao.GetAreaById(req.CountyId)
|
|
if err != nil || area == nil {
|
|
return false, errors.New("省份数据错误")
|
|
}
|
|
|
|
hospitalData["county_id"] = req.CountyId
|
|
hospitalData["county"] = area.AreaName
|
|
|
|
}
|
|
}
|
|
|
|
if req.Address != "" {
|
|
if req.Address != area.Address {
|
|
hospitalData["address"] = req.Address
|
|
}
|
|
}
|
|
|
|
if req.Lat != "" {
|
|
if req.Lat != area.Lat {
|
|
hospitalData["lat"] = req.Lat
|
|
}
|
|
}
|
|
|
|
if req.Lng != "" {
|
|
if req.Lng != area.Lng {
|
|
hospitalData["lng"] = req.Lng
|
|
}
|
|
}
|
|
|
|
if req.Desc != "" {
|
|
if req.Desc != area.Desc {
|
|
hospitalData["desc"] = req.Desc
|
|
}
|
|
}
|
|
|
|
if len(hospitalData) > 0 {
|
|
err = hospitalDao.EditHospitalById(tx, hospitalId, hospitalData)
|
|
if err != nil || area == nil {
|
|
tx.Rollback()
|
|
return false, errors.New(err.Error())
|
|
}
|
|
}
|
|
|
|
tx.Commit()
|
|
return true, nil
|
|
}
|
|
|
|
// GetHospital 系统优惠卷详情
|
|
func (r *HospitalService) GetHospital(hospitalId int64) (g *dto.HospitalDto, err error) {
|
|
hospitalDao := dao.HospitalDao{}
|
|
hospital, err := hospitalDao.GetHospitalById(hospitalId)
|
|
if err != nil || hospital == nil {
|
|
return nil, errors.New(err.Error())
|
|
}
|
|
|
|
// 处理返回值
|
|
g = dto.GetHospitalDto(hospital)
|
|
|
|
return g, nil
|
|
}
|