94 lines
2.2 KiB
Go
94 lines
2.2 KiB
Go
package service
|
|
|
|
import (
|
|
"electricity_bill_calc/exceptions"
|
|
"electricity_bill_calc/global"
|
|
"electricity_bill_calc/model"
|
|
|
|
"xorm.io/builder"
|
|
)
|
|
|
|
type _ParkService struct{}
|
|
|
|
var ParkService _ParkService
|
|
|
|
func (_ParkService) SaveNewPark(park model.Park) error {
|
|
_, err := global.DBConn.Insert(park)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (_ParkService) UpdateParkInfo(park *model.Park) error {
|
|
rows, err := global.DBConn.
|
|
Where(builder.Eq{"id": park.Id, "user_id": park.UserId}).
|
|
Cols("name", "abbr", "region", "address", "contact", "phone", "capacity", "tenement_quantity", "category", "meter_04kv_type").
|
|
Update(park)
|
|
if err != nil {
|
|
if rows == 0 {
|
|
return exceptions.NewNotFoundError("未能找到符合条件的园区。")
|
|
} else {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (_ParkService) ChangeParkState(uid, pid string, state bool) error {
|
|
rows, err := global.DBConn.
|
|
Table(&model.Park{}).
|
|
Where(builder.Eq{"id": pid, "user_id": uid}).
|
|
Update(map[string]interface{}{"enabled": state})
|
|
if err != nil {
|
|
if rows == 0 {
|
|
return exceptions.NewNotFoundError("未能找到符合条件的园区。")
|
|
} else {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (_ParkService) DeletePark(uid, pid string) error {
|
|
rows, err := global.DBConn.
|
|
Where(builder.Eq{"id": pid, "user_id": uid}).
|
|
Delete(&model.Park{})
|
|
if err != nil {
|
|
if rows == 0 {
|
|
return exceptions.NewNotFoundError("未能找到符合条件的园区。")
|
|
} else {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (_ParkService) ListAllParkBelongsTo(uid string) ([]model.Park, error) {
|
|
parks := make([]model.Park, 0)
|
|
err := global.DBConn.
|
|
Where(builder.Eq{"user_id": uid}).
|
|
NoAutoCondition().
|
|
Find(&parks)
|
|
if err != nil {
|
|
return make([]model.Park, 0), err
|
|
}
|
|
return parks, nil
|
|
}
|
|
|
|
func (_ParkService) FetchParkDetail(pid string) (*model.Park, error) {
|
|
var park = &model.Park{}
|
|
has, err := global.DBConn.ID(pid).NoAutoCondition().Get(park)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if !has {
|
|
return nil, exceptions.NewNotFoundError("未找到符合条件的园区记录。")
|
|
}
|
|
return park, nil
|
|
}
|
|
|
|
func (_ParkService) EnsurePark(uid, pid string) (bool, error) {
|
|
return global.DBConn.Table(&model.Park{}).Where(builder.Eq{"user_id": uid, "id": pid}).Exist()
|
|
}
|