修改了基础数据-获取地区列表的路由,新增了新增地区、修改地区
This commit is contained in:
@@ -1,3 +1,113 @@
|
||||
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 BasicService struct{}
|
||||
|
||||
// AddArea 新增地区
|
||||
func (r *BasicService) 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 *BasicService) 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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user