114 lines
2.1 KiB
Go
114 lines
2.1 KiB
Go
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
|
|
}
|