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 }