+GetMyOrders
This commit is contained in:
@@ -227,226 +227,9 @@ func (c *OrderManager) ExportMTWaybills(ctx *jxcontext.Context, fromDateStr, toD
|
||||
return nil, err
|
||||
}
|
||||
|
||||
func (c *OrderManager) getOrders(ctx *jxcontext.Context, isIncludeSku, isIncludeFake bool, fromDateStr, toDateStr string, isDateFinish bool, skuIDs []int, isJxFirst bool, params map[string]interface{}, offset, pageSize int) (orders []*model.GoodsOrderExt, totalCount int, err error) {
|
||||
globals.SugarLogger.Debugf("getOrders from:%s to:%s", fromDateStr, toDateStr)
|
||||
isPurchase, _ := params["isPurchase"].(bool)
|
||||
userID := ""
|
||||
if !isPurchase {
|
||||
if user := ctx.GetFullUser(); user != nil {
|
||||
userID = user.GetID()
|
||||
if user.Type&model.UserTypeNonConsumer == 0 {
|
||||
isPurchase = true
|
||||
}
|
||||
}
|
||||
}
|
||||
pageSize = jxutils.FormalizePageSize(pageSize)
|
||||
if offset < 0 {
|
||||
offset = 0
|
||||
}
|
||||
sql := fmt.Sprintf(`
|
||||
SELECT SQL_CALC_FOUND_ROWS t1.*,
|
||||
CAST(IF(t1.earning_price <> 0, t1.earning_price, IF(t1.shop_price <> 0 && t1.shop_price < t1.sale_price, t1.shop_price, t1.sale_price) * IF(t5.pay_percentage > 0, t5.pay_percentage, %d) / 100) AS SIGNED) earning_price,
|
||||
t2.status waybill_status, t2.courier_name, t2.courier_mobile,
|
||||
t2.actual_fee, t2.desired_fee, t2.waybill_created_at, t2.waybill_finished_at,
|
||||
city.name city_name, district.name district_name`, model.DefaultEarningPricePercentage)
|
||||
if isIncludeSku {
|
||||
sql += `,
|
||||
IF(t3.jx_sku_id > 0, t3.jx_sku_id, t3.sku_id) sku_id,
|
||||
t3.count sku_count2,
|
||||
t3.shop_price sku_shop_price,
|
||||
t3.earning_price sku_earning_price,
|
||||
t3.sale_price sku_sale_price`
|
||||
}
|
||||
sql += `
|
||||
FROM goods_order t1
|
||||
LEFT JOIN waybill t2 ON t1.vendor_waybill_id = t2.vendor_waybill_id AND t1.waybill_vendor_id = t2.waybill_vendor_id
|
||||
LEFT JOIN store t5 ON t5.id = IF(t1.jx_store_id <> 0, t1.jx_store_id, t1.store_id)
|
||||
LEFT JOIN place city ON city.code = t5.city_code
|
||||
LEFT JOIN place district ON district.code = t5.district_code`
|
||||
if isIncludeSku {
|
||||
sql += `
|
||||
JOIN order_sku t3 ON t3.vendor_order_id = t1.vendor_order_id AND t3.vendor_id = t1.vendor_id`
|
||||
}
|
||||
var (
|
||||
sqlWhere string
|
||||
sqlParams []interface{}
|
||||
)
|
||||
// 如果搜索关键字可能为订单号,则当成订单号查询
|
||||
if params["keyword"] != nil {
|
||||
if jxutils.GetPossibleVendorIDFromVendorOrderID(params["keyword"].(string)) > model.VendorIDUnknown {
|
||||
params["vendorOrderID"] = params["keyword"]
|
||||
}
|
||||
}
|
||||
if params["orderID"] != nil || params["vendorOrderID"] != nil {
|
||||
sqlWhere = " WHERE (t1.vendor_order_id = ? OR t1.vendor_order_id2 = ?)"
|
||||
vendorOrderID := params["vendorOrderID"]
|
||||
if vendorOrderID == nil {
|
||||
vendorOrderID = params["orderID"]
|
||||
}
|
||||
sqlParams = []interface{}{
|
||||
vendorOrderID,
|
||||
vendorOrderID,
|
||||
}
|
||||
} else {
|
||||
timeList, err2 := jxutils.BatchStr2Time(fromDateStr, toDateStr)
|
||||
if err = err2; err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
if utils.IsTimeZero(timeList[0]) {
|
||||
return nil, 0, fmt.Errorf("在没有指定订单号时,必须指定查询日期范围")
|
||||
}
|
||||
if utils.IsTimeZero(timeList[1]) {
|
||||
timeList[1] = timeList[0]
|
||||
}
|
||||
timeList[1] = timeList[1].Add(24 * time.Hour)
|
||||
if isDateFinish {
|
||||
sqlWhere = `
|
||||
WHERE t1.order_finished_at >= ? AND t1.order_finished_at < ?`
|
||||
} else {
|
||||
sqlWhere = `
|
||||
WHERE t1.order_created_at >= ? AND t1.order_created_at < ?`
|
||||
}
|
||||
sqlParams = []interface{}{
|
||||
timeList[0],
|
||||
timeList[1],
|
||||
}
|
||||
if params["keyword"] != nil {
|
||||
keyword := params["keyword"].(string)
|
||||
keywordLike := "%" + keyword + "%"
|
||||
sqlWhere += `
|
||||
AND (t1.store_name LIKE ? OR t1.vendor_order_id LIKE ? OR t1.vendor_order_id2 LIKE ? OR t1.vendor_store_id LIKE ?
|
||||
OR t1.consignee_name LIKE ? OR t1.consignee_mobile LIKE ? OR t1.consignee_mobile2 LIKE ? OR t1.consignee_address LIKE ?
|
||||
OR t2.vendor_waybill_id LIKE ? OR t2.courier_name LIKE ? OR t2.courier_mobile LIKE ?
|
||||
`
|
||||
sqlParams = append(sqlParams, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike)
|
||||
if keywordInt64, err2 := strconv.ParseInt(keyword, 10, 64); err2 == nil {
|
||||
sqlWhere += " OR t1.store_id = ? OR t1.jx_store_id = ?"
|
||||
sqlParams = append(sqlParams, keywordInt64, keywordInt64)
|
||||
}
|
||||
sqlWhere += ")"
|
||||
}
|
||||
if params["waybillVendorIDs"] != nil {
|
||||
var waybillVendorIDs []int
|
||||
if err = utils.UnmarshalUseNumber([]byte(params["waybillVendorIDs"].(string)), &waybillVendorIDs); err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
if len(waybillVendorIDs) > 0 {
|
||||
sqlWhere += " AND t1.waybill_vendor_id IN (" + dao.GenQuestionMarks(len(waybillVendorIDs)) + ")"
|
||||
sqlParams = append(sqlParams, waybillVendorIDs)
|
||||
}
|
||||
}
|
||||
if params["storeIDs"] != nil {
|
||||
var storeIDs []int
|
||||
if err = utils.UnmarshalUseNumber([]byte(params["storeIDs"].(string)), &storeIDs); err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
if len(storeIDs) > 0 {
|
||||
if storeIDs[0] == 0 { // 容错
|
||||
sqlWhere += " AND 1 = 0"
|
||||
} else {
|
||||
sqlWhere += " AND IF(t1.jx_store_id != 0, t1.jx_store_id, t1.store_id) IN (" + dao.GenQuestionMarks(len(storeIDs)) + ")"
|
||||
sqlParams = append(sqlParams, storeIDs)
|
||||
}
|
||||
}
|
||||
}
|
||||
if params["statuss"] != nil {
|
||||
var statuss []int
|
||||
if err = utils.UnmarshalUseNumber([]byte(params["statuss"].(string)), &statuss); err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
if len(statuss) > 0 {
|
||||
sqlWhere += " AND t1.status IN (" + dao.GenQuestionMarks(len(statuss)) + ")"
|
||||
sqlParams = append(sqlParams, statuss)
|
||||
}
|
||||
}
|
||||
if params["lockStatuss"] != nil {
|
||||
var lockStatuss []int
|
||||
if err = utils.UnmarshalUseNumber([]byte(params["lockStatuss"].(string)), &lockStatuss); err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
if len(lockStatuss) > 0 {
|
||||
sqlWhere += " AND t1.lock_status IN (" + dao.GenQuestionMarks(len(lockStatuss)) + ")"
|
||||
sqlParams = append(sqlParams, lockStatuss)
|
||||
}
|
||||
}
|
||||
if params["cities"] != nil {
|
||||
var cities []int
|
||||
if err = utils.UnmarshalUseNumber([]byte(params["cities"].(string)), &cities); err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
if len(cities) > 0 {
|
||||
sqlWhere += " AND t5.city_code IN (" + dao.GenQuestionMarks(len(cities)) + ") AND t5.id IS NOT NULL"
|
||||
sqlParams = append(sqlParams, cities)
|
||||
}
|
||||
}
|
||||
if !isIncludeFake {
|
||||
sqlWhere += " AND (t1.flag & ?) = 0"
|
||||
sqlParams = append(sqlParams, model.OrderFlagMaskFake)
|
||||
}
|
||||
if len(skuIDs) > 0 {
|
||||
sqlWhere += " AND (SELECT COUNT(*) FROM order_sku t11 WHERE t11.vendor_order_id = t1.vendor_order_id AND t11.vendor_id = t1.vendor_id AND t11.jx_sku_id IN (" + dao.GenQuestionMarks(len(skuIDs)) + ")) > 0"
|
||||
sqlParams = append(sqlParams, skuIDs)
|
||||
}
|
||||
if params["adjustCount"] != nil {
|
||||
sqlWhere += " AND t1.adjust_count >= ?"
|
||||
sqlParams = append(sqlParams, params["adjustCount"])
|
||||
}
|
||||
if mustInvoice, ok := params["mustInvoice"].(bool); ok && mustInvoice {
|
||||
sqlWhere += " AND t1.invoice_taxer_id <> ''"
|
||||
}
|
||||
}
|
||||
if params["vendorIDs"] != nil {
|
||||
var vendorIDs []int
|
||||
if err = utils.UnmarshalUseNumber([]byte(params["vendorIDs"].(string)), &vendorIDs); err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
if len(vendorIDs) > 0 {
|
||||
sqlWhere += " AND t1.vendor_id IN (" + dao.GenQuestionMarks(len(vendorIDs)) + ")"
|
||||
sqlParams = append(sqlParams, vendorIDs)
|
||||
}
|
||||
}
|
||||
if isPurchase {
|
||||
sqlWhere += " AND t1.user_id = ?"
|
||||
sqlParams = append(sqlParams, userID)
|
||||
}
|
||||
db := dao.GetDB()
|
||||
sql += sqlWhere
|
||||
if isIncludeSku {
|
||||
sql += `
|
||||
ORDER BY t1.id`
|
||||
} else {
|
||||
if isJxFirst {
|
||||
sql += `
|
||||
ORDER BY IF(t1.status < ?, IF(t1.vendor_id = ?, 0, 1), 0), t1.order_created_at DESC`
|
||||
sqlParams = append(sqlParams, model.OrderStatusEndBegin, model.VendorIDJX)
|
||||
} else {
|
||||
sql += `
|
||||
ORDER BY t1.order_created_at DESC`
|
||||
}
|
||||
sql += `
|
||||
LIMIT ? OFFSET ?`
|
||||
sqlParams = append(sqlParams, pageSize, offset)
|
||||
|
||||
dao.Begin(db)
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
dao.Rollback(db)
|
||||
panic(r)
|
||||
}
|
||||
}()
|
||||
}
|
||||
if err = dao.GetRows(db, &orders, sql, sqlParams...); err == nil {
|
||||
totalCount = dao.GetLastTotalRowCount(db)
|
||||
}
|
||||
if !isIncludeSku {
|
||||
dao.Commit(db)
|
||||
}
|
||||
return orders, totalCount, err
|
||||
}
|
||||
|
||||
func (c *OrderManager) GetOrders(ctx *jxcontext.Context, isIncludeFake bool, fromDateStr, toDateStr string, isDateFinish bool, skuIDs []int, isJxFirst bool, params map[string]interface{}, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) {
|
||||
globals.SugarLogger.Debugf("GetOrders from:%s to:%s", fromDateStr, toDateStr)
|
||||
orders, totalCount, err := c.getOrders(ctx, false, isIncludeFake, fromDateStr, toDateStr, isDateFinish, skuIDs, isJxFirst, params, offset, pageSize)
|
||||
orders, totalCount, err := dao.GetOrders(dao.GetDB(), nil, false, isIncludeFake, fromDateStr, toDateStr, isDateFinish, skuIDs, isJxFirst, "", params, offset, pageSize)
|
||||
if err == nil {
|
||||
pagedInfo = &model.PagedInfo{
|
||||
TotalCount: totalCount,
|
||||
@@ -468,7 +251,7 @@ func (c *OrderManager) ExportOrders(ctx *jxcontext.Context, fromDateStr, toDateS
|
||||
func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
||||
switch step {
|
||||
case 0:
|
||||
orders, _, err = c.getOrders(ctx, true, true, fromDateStr, toDateStr, true, nil, false, mapParams, 0, -1)
|
||||
orders, _, err = dao.GetOrders(dao.GetDB(), nil, true, true, fromDateStr, toDateStr, true, nil, false, "", mapParams, 0, model.UnlimitedPageSize)
|
||||
case 1:
|
||||
afsSkuMap, err = c.getAfsOrderSkuInfo4ExportOrders(ctx, fromDateStr, toDateStr)
|
||||
case 2:
|
||||
@@ -584,9 +367,7 @@ func (c *OrderManager) GetWaybills(ctx *jxcontext.Context, fromDateStr, toDateSt
|
||||
}
|
||||
toDate = toDate.Add(24 * time.Hour)
|
||||
pageSize = jxutils.FormalizePageSize(pageSize)
|
||||
if offset < 0 {
|
||||
offset = 0
|
||||
}
|
||||
offset = jxutils.FormalizePageOffset(offset)
|
||||
|
||||
sql := `
|
||||
SELECT SQL_CALC_FOUND_ROWS t1.*, t2.store_name, IF(t1.jx_store_id != 0, t1.jx_store_id, t1.store_id) store_id
|
||||
@@ -683,9 +464,7 @@ func (c *OrderManager) GetOrderStatusList(ctx *jxcontext.Context, vendorOrderID
|
||||
func (c *OrderManager) GetOrdersFinancial(ctx *jxcontext.Context, fromDateStr, toDateStr string, params map[string]interface{}, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) {
|
||||
globals.SugarLogger.Debugf("GetOrdersFinancial from:%s to:%s", fromDateStr, toDateStr)
|
||||
pageSize = jxutils.FormalizePageSize(pageSize)
|
||||
if offset < 0 {
|
||||
offset = 0
|
||||
}
|
||||
offset = jxutils.FormalizePageOffset(offset)
|
||||
sql := `
|
||||
SELECT SQL_CALC_FOUND_ROWS t1.*,
|
||||
t2.store_name,t2.vendor_store_id,t2.store_id,t2.jx_store_id,t2.status,t2.order_finished_at
|
||||
@@ -925,9 +704,7 @@ func (c *OrderManager) GetAfsOrders(ctx *jxcontext.Context, keyword, afsOrderID,
|
||||
globals.SugarLogger.Debugf("GetAfsOrders")
|
||||
|
||||
pageSize = jxutils.FormalizePageSize(pageSize)
|
||||
if offset < 0 {
|
||||
offset = 0
|
||||
}
|
||||
offset = jxutils.FormalizePageOffset(offset)
|
||||
sql := `
|
||||
SELECT SQL_CALC_FOUND_ROWS
|
||||
t1.*
|
||||
|
||||
Reference in New Issue
Block a user