func PostPurchaseList(a *decorator.ApiBase, data *adminStruct.PurchaseList) error {
logger.AccessLogger.Info("PostPurchaseList....")
res := adminStruct.PurchaseListResp{}
//res.ResponseCommon = a.NewSuccessResponseCommon()
query := a.Ts.Table("purchase_order_info a").
Select("a.poid,a.cuid,a.arrival_num,a.sum_num,a.goods_sum_amt,a.pur_amt,a.other_amt,a.sum_amt,whi.addr,whi.phone,whi.contacts").
Joins(`left join warehouse_info whi on a.wid = whi.wid`)
if len(data.OrderNo) > 0 {
query = query.Where("a.order_no like ?", fmt.Sprintf("%%%s%%", data.OrderNo))
}
if len(data.Sku) > 0 {
query = query.Where("gs.sku like ?", fmt.Sprintf("%%%s%%", data.Sku))
}
if len(data.Gname) > 0 {
query = query.Where("g.gname like ?", data.Gname)
}
if data.Wid > 0 {
query = query.Where("a.wid like ?", data.Wid)
}
if data.Sid > 0 {
query = query.Where("a.sid like ?", data.Sid)
}
if len(data.LogisticsId) > 0 {
query = query.Where("a.logistics_id like ?", data.LogisticsId)
}
if len(data.Remark) > 0 {
query = query.Where("a.remark like ?", data.Remark)
}
if len(data.ApplyPayStatus) > 0 {
query = query.Where("a.arrival_status like ?", data.ApplyPayStatus)
}
if len(data.PayStatus) > 0 {
query = query.Where("a.pay_status like ?", data.PayStatus)
}
if len(data.ArrivalStatus) > 0 {
query = query.Where("a.arrival_status like ?", data.ArrivalStatus)
}
if data.ArrivalTime > 0 {
query = query.Where(" a.arrival_time=?", data.ExpectCime-time.Now().Unix())
}
if data.Ctime > 0 {
query = query.Where(" a.ctime>=?", data.BeginDate)
}
if data.Ctime > 0 {
query = query.Where(" a.ctime<=?", data.EndDate)
}
utils.Error(query.Limit(a.Size).
Offset(a.Offset).
Find(&res.Data).Error)
var poids []int64
for _, i := range res.Data {
poids = append(poids, i.Poid)
}
g := []adminStruct.GoodsInfo2{}
utils.Error(a.Ts.Table("purchase_order_list b").
Select("b.poid,gs.sku,b.price,b.num,g.gname,g.image,b.polid,b.goods").
Joins(`left join goods_base g on g.gid=b.gid`).
Joins(`left join goods_sku gs on gs.gsid = b.skuid`).
Where("b.poid in ?", poids).Find(&g).Error)
for i, _ := range res.Data {
p := &res.Data[i]
for _, i2 := range g {
if i2.Poid == p.Poid {
p.Detail = append(p.Detail, i2)
}
}
}
return a.ReturnSuccessCustomResponse(res)
}