+GetMyOrders

This commit is contained in:
gazebo
2019-11-29 10:35:38 +08:00
parent 3756ac67b2
commit ab493a59fb
9 changed files with 288 additions and 239 deletions

View File

@@ -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.*

View File

@@ -1207,9 +1207,7 @@ func TmpGetJxBadCommentsByStoreId(ctx *jxcontext.Context, keyword string, storeI
}
sql += " ORDER BY t1.createtime DESC"
pageSize = jxutils.FormalizePageSize(pageSize)
if offset < 0 {
offset = 0
}
offset = jxutils.FormalizePageOffset(offset)
sql += " LIMIT ? OFFSET ?"
sqlParams = append(sqlParams, pageSize, offset)
var commentList []*JxBadCommentsExt

View File

@@ -10,6 +10,15 @@ const (
UnlimitedPageSize = math.MaxInt32
)
type ShortSkuInfo struct {
SkuID int `orm:"column(sku_id)" json:"skuID,omitempty"`
SkuShopPrice int `json:"skuShopPrice,omitempty"`
SkuSalePrice int `json:"skuSalePrice,omitempty"`
SkuEarningPrice int `json:"skuEarningPrice,omitempty"`
SkuCount2 int `json:"skuCount2,omitempty"`
SkuName string `orm:"size(255)" json:"skuName"`
}
type GoodsOrderExt struct {
GoodsOrder
EarningPrice int64 `json:"earningPrice"` // 预估结算给门店老板的钱
@@ -29,12 +38,9 @@ type GoodsOrderExt struct {
DistrictName string `json:"districtName"`
CityName string `json:"cityName"`
SkuID int `orm:"column(sku_id)" json:"skuID,omitempty"`
SkuShopPrice int `json:"skuShopPrice,omitempty"`
SkuSalePrice int `json:"skuSalePrice,omitempty"`
SkuEarningPrice int `json:"skuEarningPrice,omitempty"`
SkuCount2 int `json:"skuCount2,omitempty"`
SkuInfo string `json:"skuInfo,omitempty"`
SkuInfo string `json:"skuInfo,omitempty"`
ShortSkuInfo `json:"-"`
SkuList []*ShortSkuInfo `json:"skuList,omitempty"`
}
type OrderSkuExt struct {

View File

@@ -2,10 +2,13 @@ package dao
import (
"fmt"
"strconv"
"time"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxutils"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/globals"
)
const (
@@ -712,3 +715,207 @@ func GetOrderPayList(db *DaoDB, vendorOrderID string, vendorID int) (payList []*
}
return payList, GetRows(db, &payList, sql, sqlParams)
}
func GetOrders(db *DaoDB, ids []int64, isIncludeSku, isIncludeFake bool, fromDateStr, toDateStr string, isDateFinish bool, skuIDs []int, isJxFirst bool, userID string, params map[string]interface{}, offset, pageSize int) (orders []*model.GoodsOrderExt, totalCount int, err error) {
globals.SugarLogger.Debugf("dao GetOrders ids:%v from:%s to:%s", ids, fromDateStr, toDateStr)
pageSize = jxutils.FormalizePageSize(pageSize)
offset = jxutils.FormalizePageOffset(offset)
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,
t3.sku_name`
}
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`
}
sqlWhere := " WHERE 1 = 1"
var (
sqlParams []interface{}
)
if len(ids) > 0 { // 如果给定了ids忽略其它所有条件
sqlWhere += " AND t1.id IN (" + GenQuestionMarks(len(ids)) + ")"
sqlParams = append(sqlParams, ids)
} else {
// 如果搜索关键字可能为订单号,则当成订单号查询
if params["keyword"] != nil {
if jxutils.GetPossibleVendorIDFromVendorOrderID(params["keyword"].(string)) > model.VendorIDUnknown {
params["vendorOrderID"] = params["keyword"]
}
}
if params["orderID"] != nil || params["vendorOrderID"] != nil {
sqlWhere += " AND (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 += `
AND t1.order_finished_at >= ? AND t1.order_finished_at < ?`
} else {
sqlWhere += `
AND 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 (" + 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 (" + 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 (" + 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 (" + 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 (" + 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 (" + 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 (" + GenQuestionMarks(len(vendorIDs)) + ")"
sqlParams = append(sqlParams, vendorIDs)
}
}
if userID != "" {
sqlWhere += " AND t1.user_id = ?"
sqlParams = append(sqlParams, userID)
}
}
sql += sqlWhere
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 {
if isIncludeSku {
sql += `
ORDER BY t1.id`
} else {
sql += `
ORDER BY t1.order_created_at DESC`
}
}
sql += `
LIMIT ? OFFSET ?`
sqlParams = append(sqlParams, pageSize, offset)
Begin(db)
defer Commit(db)
if err = GetRows(db, &orders, sql, sqlParams...); err == nil {
totalCount = GetLastTotalRowCount(db)
}
return orders, totalCount, err
}

View File

@@ -6,7 +6,7 @@ import (
func TestQueryRecipes(t *testing.T) {
db := GetDB()
recipeList, _, err := QueryFoodRecipes(db, "", 0, "", "", 0, 0)
recipeList, _, err := QueryFoodRecipes(db, "", 0, "", "", nil, 0, 0)
if err != nil {
t.Fatal(err)
}

View File

@@ -100,6 +100,39 @@ func init() {
orderNoBeginTimestamp = utils.Str2Time("2010-01-01 00:00:00").Unix()
}
func GetMyOrders(ctx *jxcontext.Context, fromDateStr, toDateStr string, params map[string]interface{}, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) {
db := dao.GetDB()
tmpOrderList, totalCount, err := dao.GetOrders(db, nil, false, false, fromDateStr, toDateStr, false, nil, false, ctx.GetUserID(), params, offset, pageSize)
if err == nil {
pagedInfo = &model.PagedInfo{
TotalCount: totalCount,
}
if totalCount > 0 {
var ids []int64
for _, v := range tmpOrderList {
ids = append(ids, v.ID)
}
orderSkuList, _, err2 := dao.GetOrders(db, ids, true, false, "", "", false, nil, false, "", nil, 0, model.UnlimitedPageSize)
if err = err2; err == nil {
orderMap := make(map[string]*model.GoodsOrderExt)
var orderList []*model.GoodsOrderExt
for _, v := range orderSkuList {
universalOrderID := jxutils.ComposeUniversalOrderID(v.VendorOrderID, v.VendorID)
if orderMap[universalOrderID] == nil {
orderMap[universalOrderID] = v
orderList = append(orderList, v)
}
orderMap[universalOrderID].SkuList = append(orderMap[universalOrderID].SkuList, &v.ShortSkuInfo)
}
pagedInfo.Data = orderList
} else {
pagedInfo = nil
}
}
}
return pagedInfo, err
}
func CreateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64, createType int) (outJxOrder *JxOrderInfo, err error) {
outJxOrder, deliveryAddress, err := generateOrder(ctx, jxOrder, addressID)
if err != nil {

View File

@@ -279,7 +279,6 @@ func (c *OrderController) ExportMTWaybills() {
// @Param isJxFirst query bool false "排序是否京西订单优先(缺省为否)"
// @Param adjustCount query int false "最小调整次数"
// @Param mustInvoice query bool false "是否必须要求开发票"
// @Param isPurchase query bool false "是否是用户自已的订单如果角色只有consumer会被强制设为true"
// @Param offset query int false "结果起始序号以0开始缺省为0"
// @Param pageSize query int false "结果页大小缺省为50-1表示全部"
// @Success 200 {object} controllers.CallResult

View File

@@ -72,3 +72,23 @@ func (c *JxOrderController) GetOrderPay() {
return retVal, "", err
})
}
// @Title 查询自己的订单
// @Description 查询自己的订单
// @Param token header string true "认证token"
// @Param vendorOrderID query string false "订单号,如果此项不为空,忽略其它所有查询条件"
// @Param keyword query string false "查询关键字"
// @Param fromDate query string false "开始日期包含格式2006-01-02如果订单号为空此项必须要求"
// @Param toDate query string false "结束日期包含格式2006-01-02如果订单号为空此项必须要求"
// @Param statuss query string false "订单状态列表[1,2,3],缺省不限制"
// @Param offset query int false "结果起始序号以0开始缺省为0"
// @Param pageSize query int false "结果页大小缺省为50-1表示全部"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /GetMyOrders [get]
func (c *JxOrderController) GetMyOrders() {
c.callGetMyOrders(func(params *tJxorderGetMyOrdersParams) (retVal interface{}, errCode string, err error) {
retVal, err = localjx.GetMyOrders(params.Ctx, params.FromDate, params.ToDate, params.MapData, params.Offset, params.PageSize)
return retVal, "", err
})
}

View File

@@ -610,6 +610,15 @@ func init() {
Filters: nil,
Params: nil})
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JxOrderController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JxOrderController"],
beego.ControllerComments{
Method: "GetMyOrders",
Router: `/GetMyOrders`,
AllowHTTPMethods: []string{"get"},
MethodParams: param.Make(),
Filters: nil,
Params: nil})
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JxOrderController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JxOrderController"],
beego.ControllerComments{
Method: "GetOrderPay",