-
Notifications
You must be signed in to change notification settings - Fork 263
/
shipment_repo.go
executable file
·91 lines (79 loc) · 2.22 KB
/
shipment_repo.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
/**
* Copyright 2015 @ 56x.net.
* name : shipment_rep
* author : jarryliu
* date : 2016-07-15 10:28
* description :
* history :
*/
package repos
import (
"github.com/ixre/go2o/core/domain/interface/express"
"github.com/ixre/go2o/core/domain/interface/shipment"
shipImpl "github.com/ixre/go2o/core/domain/shipment"
"github.com/ixre/gof/db"
"github.com/ixre/gof/db/orm"
)
var _ shipment.IShipmentRepo = new(shipmentRepo)
type shipmentRepo struct {
_expRepo express.IExpressRepo
db.Connector
o orm.Orm
}
func NewShipmentRepo(o orm.Orm, expRepo express.IExpressRepo) *shipmentRepo {
return &shipmentRepo{
Connector: o.Connector(),
o: o,
_expRepo: expRepo,
}
}
// 创建发货单
func (s *shipmentRepo) CreateShipmentOrder(o *shipment.ShipmentOrder) shipment.IShipmentOrder {
return shipImpl.NewShipmentOrder(o, s, s._expRepo)
}
func (s *shipmentRepo) getShipOrderById(id int64) *shipment.ShipmentOrder {
e := &shipment.ShipmentOrder{}
if s.o.Get(id, e) == nil {
return e
}
return nil
}
// 获取发货单
func (s *shipmentRepo) GetShipmentOrder(id int64) shipment.IShipmentOrder {
if e := s.getShipOrderById(id); e != nil {
return s.CreateShipmentOrder(e)
}
return nil
}
// 获取订单对应的发货单
func (s *shipmentRepo) GetShipOrders(orderId int64, sub bool) []shipment.IShipmentOrder {
var list []*shipment.ShipmentOrder
if sub {
s.o.Select(&list, "sub_orderid= $1", orderId)
} else {
s.o.Select(&list, "order_id= $1", orderId)
}
orders := make([]shipment.IShipmentOrder, len(list))
for i, v := range list {
v.Items = s.loadItems(v.ID)
orders[i] = s.CreateShipmentOrder(v)
}
return orders
}
// 保存发货单
func (s *shipmentRepo) SaveShipmentOrder(o *shipment.ShipmentOrder) (int, error) {
return orm.Save(s.o, o, int(o.ID))
}
// 保存发货商品项
func (s *shipmentRepo) SaveShipmentItem(v *shipment.ShipmentItem) (int, error) {
return orm.Save(s.o, v, int(v.ID))
}
// 删除发货单
func (s *shipmentRepo) DeleteShipmentOrder(id int64) error {
return s.o.DeleteByPk(&shipment.ShipmentOrder{}, id)
}
func (s *shipmentRepo) loadItems(shipOrderId int64) []*shipment.ShipmentItem {
var list []*shipment.ShipmentItem
_ = s.o.Select(&list, "ship_order = $1", shipOrderId)
return list
}