package service import ( "errors" "fmt" "hospital-admin-api/api/dao" "hospital-admin-api/api/model" "hospital-admin-api/api/requests" "hospital-admin-api/global" "strconv" ) type AreaService struct{} // AddArea 新增地区 func (r *AreaService) AddArea(req requests.AddArea) (bool, error) { if *req.AreaType == 1 { return false, errors.New("不可添加国家") } // 检测上级是否存在 maps := make(map[string]interface{}) maps["parent_id"] = req.ParentId if *req.AreaType == 4 { maps["area_type"] = 3 } if *req.AreaType == 3 { maps["area_type"] = 2 } if *req.AreaType == 2 { maps["area_type"] = 1 } areaDao := dao.AreaDao{} _, err := areaDao.GetAreaList(maps) if err != nil { return false, errors.New("上级地区错误") } // 开始事务 tx := global.Db.Begin() defer func() { if r := recover(); r != nil { tx.Rollback() fmt.Println(r) } }() parentId, err := strconv.ParseInt(req.ParentId, 10, 64) if err != nil { tx.Rollback() return false, errors.New("新增失败") } // 新增优惠卷表 area := &model.Area{ AreaName: req.AreaName, ParentId: parentId, Zip: req.Zip, AreaType: *req.AreaType, } area, err = areaDao.AddArea(tx, area) if err != nil || area == nil { tx.Rollback() return false, errors.New(err.Error()) } tx.Commit() return true, nil } // PutArea 修改地区 func (r *AreaService) PutArea(areaId int, req requests.PutArea) (bool, error) { areaDao := dao.AreaDao{} area, err := areaDao.GetAreaById(areaId) if err != nil { return false, err } // 开始事务 tx := global.Db.Begin() defer func() { if r := recover(); r != nil { tx.Rollback() fmt.Println(r) } }() areaData := make(map[string]interface{}) if req.AreaName != area.AreaName { areaData["area_name"] = req.AreaName } if req.Zip != "" { if req.Zip != area.Zip { areaData["zip"] = req.Zip } } if len(areaData) > 0 { err = areaDao.EditAreaById(tx, areaId, areaData) if err != nil || area == nil { tx.Rollback() return false, errors.New(err.Error()) } } tx.Commit() return true, nil }