123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- package budget2
- import (
- "errors"
- "reflect"
- "zhiyuan/pkg/db"
- )
- type Order struct {
- ID int64
- PkgId int64
- SiteId int64
- Statistics []string
- Form Pkg
- }
- func (order Order) GetAreaId() int64 {
- pkgInfo, err := order.GetPkgInfo()
- if err != nil {
- return 0
- }
- return pkgInfo.AreaId
- }
- func (order Order) GetPkgInfo() (PkgInfo, error) {
- if _, ok := Pkgs[order.PkgId]; !ok {
- return PkgInfo{}, errors.New("找不到套餐")
- }
- return Pkgs[order.PkgId], nil
- }
- func (order Order) NewForm() (Pkg, error) {
- pkgInfo, err := order.GetPkgInfo()
- if err != nil {
- return nil, err
- }
- return reflect.New(db.Type(pkgInfo.Pkg)).Interface().(Pkg), nil
- }
- func (order Order) ReturnResult() interface{} {
- return order.Form.ReturnResult(order.Statistics)
- }
- func LoadOrder(id int64, pkgId int64, siteId int64, content []byte, statistics []string) (*Order, error) {
- order := new(Order)
- order.ID = id
- order.PkgId = pkgId
- order.SiteId = siteId
- order.Statistics = statistics
- var err error
- order.Form, err = order.NewForm()
- if err != nil {
- return nil, err
- }
- order.Form.Load(pkgId, content)
- /*if len(model.Content) != 0 {
- gzJson := bytes.NewBuffer(model.Content)
- gz, err := gzip.NewReader(gzJson)
- if err != nil {
- return nil, err
- }
- defer gz.Close()
- jsonData, err := ioutil.ReadAll(gz)
- if err != nil {
- return nil, err
- }
- decoder := json.NewDecoder(strings.NewReader(string(jsonData)))
- decoder.UseNumber()
- err = decoder.Decode(&order.Form)
- if err != nil {
- return nil, err
- }
- }*/
- return order, nil
- }
- func CreateOrder(pkgId int64, siteId int64, area float64, layout []int, statistics []string) (*Order, error) {
- order := new(Order)
- order.ID = 0
- order.PkgId = pkgId
- order.SiteId = siteId
- order.Statistics = statistics
- var err error
- order.Form, err = order.NewForm()
- if err != nil {
- return nil, err
- }
- order.Form.Init(pkgId, area, layout)
- return order, nil
- }
|