aa
This commit is contained in:
@@ -852,3 +852,74 @@ func OrderNotifyReport(ctx *jxcontext.Context, storeIDs, brandIDs []int, vendorI
|
||||
}
|
||||
return page, err
|
||||
}
|
||||
|
||||
type OrderDeliveryReportResult struct {
|
||||
model.GoodsOrder
|
||||
DesiredFee int `json:"desiredFee"`
|
||||
}
|
||||
|
||||
func OrderDeliveryReport(ctx *jxcontext.Context, storeIDs, brandIDs []int, vendorID, deliveryVendorID int, keyword string, isFinished bool, fromTime, toTime string, offset, pageSize int) (page *model.PagedInfo, err error) {
|
||||
var (
|
||||
db = dao.GetDB()
|
||||
results []*OrderDeliveryReportResult
|
||||
)
|
||||
sql := `
|
||||
SELECT SQL_CALC_FOUND_ROWS a.*, b.desired_fee
|
||||
FROM goods_order a
|
||||
LEFT JOIN waybill b ON a.vendor_order_id = b.vendor_order_id AND a.waybill_vendor_id = b.waybill_vendor_id
|
||||
LEFT JOIN store c ON c.id = IF(a.jx_store_id = 0, a.store_id, a.jx_store_id)
|
||||
WHERE b.status <> ? AND a.vendor_id <> a.waybill_vendor_id
|
||||
`
|
||||
sqlParams := []interface{}{model.WaybillStatusCanceled}
|
||||
if len(storeIDs) > 0 {
|
||||
sql += ` AND IF(a.jx_store_id != 0, a.jx_store_id, a.store_id) IN(` + dao.GenQuestionMarks(len(storeIDs)) + `)`
|
||||
sqlParams = append(sqlParams, storeIDs)
|
||||
}
|
||||
if len(brandIDs) > 0 {
|
||||
sql += ` AND c.brand_id IN(` + dao.GenQuestionMarks(len(brandIDs)) + `)`
|
||||
sqlParams = append(sqlParams, brandIDs)
|
||||
}
|
||||
if vendorID != -1 {
|
||||
sql += " AND a.vendor_id = ?"
|
||||
sqlParams = append(sqlParams, vendorID)
|
||||
}
|
||||
if deliveryVendorID != -1 {
|
||||
sql += " AND a.waybill_vendor_id = ?"
|
||||
sqlParams = append(sqlParams, deliveryVendorID)
|
||||
}
|
||||
if keyword != "" {
|
||||
sql += " AND (c.name LIKE ? OR c.id = ? OR a.vendor_order_id = ?)"
|
||||
sqlParams = append(sqlParams, "%"+keyword+"%", keyword, keyword)
|
||||
}
|
||||
if !utils.IsTimeZero(utils.Str2Time(fromTime)) {
|
||||
if isFinished {
|
||||
sql += " AND a.order_finished_at > ?"
|
||||
} else {
|
||||
sql += " AND a.order_created_at > ?"
|
||||
}
|
||||
sqlParams = append(sqlParams, fromTime)
|
||||
}
|
||||
if !utils.IsTimeZero(utils.Str2Time(toTime)) {
|
||||
if isFinished {
|
||||
sql += " AND a.order_finished_at < ?"
|
||||
} else {
|
||||
sql += " AND a.order_created_at < ?"
|
||||
}
|
||||
sqlParams = append(sqlParams, toTime)
|
||||
}
|
||||
sql += `
|
||||
ORDER BY a.order_create_at DESC
|
||||
LIMIT ? OFFSET ?
|
||||
`
|
||||
pageSize = jxutils.FormalizePageSize(pageSize)
|
||||
sqlParams = append(sqlParams, pageSize, offset)
|
||||
txDB, _ := dao.Begin(db)
|
||||
defer dao.Commit(db, txDB)
|
||||
if err = dao.GetRowsTx(txDB, &results, sql, sqlParams...); err == nil {
|
||||
page = &model.PagedInfo{
|
||||
TotalCount: dao.GetLastTotalRowCount2(db, txDB),
|
||||
Data: results,
|
||||
}
|
||||
}
|
||||
return page, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user