492 lines
16 KiB
Go
492 lines
16 KiB
Go
package orderman
|
||
|
||
import (
|
||
"strconv"
|
||
"time"
|
||
|
||
"git.rosy.net.cn/baseapi/utils"
|
||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||
"git.rosy.net.cn/jx-callback/business/jxutils/excel"
|
||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||
"git.rosy.net.cn/jx-callback/business/model"
|
||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||
"git.rosy.net.cn/jx-callback/business/partner"
|
||
"git.rosy.net.cn/jx-callback/globals"
|
||
"github.com/astaxie/beego/orm"
|
||
)
|
||
|
||
const (
|
||
maxLastHours = 7 * 24 // 最多只能查询7天内的订单数据
|
||
defLastHours = 2 * 24 // 缺省是两天内的订单
|
||
)
|
||
|
||
type tWaybillExt struct {
|
||
model.Waybill
|
||
StoreName string `json:"storeName"`
|
||
StoreID int `json:"storeID" orm:"column(store_id)"`
|
||
}
|
||
|
||
func (c *OrderManager) GetStoreOrderInfo(ctx *jxcontext.Context, storeID string, lastHours int, fromStatus, toStatus, offset, pageSize int) (orders []*model.GoodsOrderExt, err error) {
|
||
globals.SugarLogger.Debugf("GetStoreOrderInfo storeID:%s", storeID)
|
||
if lastHours > maxLastHours {
|
||
lastHours = maxLastHours
|
||
} else if lastHours == 0 {
|
||
lastHours = defLastHours
|
||
}
|
||
if toStatus == 0 {
|
||
toStatus = fromStatus
|
||
}
|
||
if offset < 0 {
|
||
offset = 0
|
||
}
|
||
pageSize = jxutils.FormalizePageSize(pageSize)
|
||
|
||
db := orm.NewOrm()
|
||
_, err = db.Raw(`
|
||
SELECT t1.*,
|
||
t2.status waybill_status, t2.courier_name, t2.courier_mobile,
|
||
t2.actual_fee, t2.desired_fee, t2.waybill_created_at, t2.waybill_finished_at
|
||
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
|
||
WHERE IF(t1.jx_store_id != 0, t1.jx_store_id, t1.store_id) = ?
|
||
AND t1.order_created_at >= ?
|
||
AND t1.Status >= ? AND t1.Status <= ?
|
||
ORDER BY t1.status, t1.order_created_at
|
||
LIMIT ? OFFSET ?
|
||
`, storeID, time.Now().Add(-time.Duration(lastHours)*time.Hour), fromStatus, toStatus, pageSize, offset).QueryRows(&orders)
|
||
if err == nil {
|
||
return orders, nil
|
||
}
|
||
globals.SugarLogger.Infof("GetStoreOrderInfo storeID:%s failed with error:%v", storeID, err)
|
||
return nil, err
|
||
}
|
||
|
||
func (c *OrderManager) GetStoreOrderCountInfo(ctx *jxcontext.Context, storeID string, lastHours int) (countInfo []*model.GoodsOrderCountInfo, err error) {
|
||
globals.SugarLogger.Debugf("GetStoreOrderCountInfo storeID:%s", storeID)
|
||
if lastHours > maxLastHours {
|
||
lastHours = maxLastHours
|
||
} else if lastHours == 0 {
|
||
lastHours = defLastHours
|
||
}
|
||
|
||
db := orm.NewOrm()
|
||
_, err = db.Raw(`
|
||
SELECT t1.status, COUNT(*) count
|
||
FROM goods_order t1
|
||
WHERE IF(t1.jx_store_id != 0, t1.jx_store_id, t1.store_id) = ?
|
||
AND t1.order_created_at >= ?
|
||
GROUP BY 1
|
||
ORDER BY 1
|
||
`, storeID, time.Now().Add(-time.Duration(lastHours)*time.Hour)).QueryRows(&countInfo)
|
||
if err == nil {
|
||
return countInfo, nil
|
||
}
|
||
globals.SugarLogger.Infof("GetStoreOrderCountInfo storeID:%s failed with error:%v", storeID, err)
|
||
return nil, err
|
||
}
|
||
|
||
func (c *OrderManager) GetOrderSkuInfo(ctx *jxcontext.Context, vendorOrderID string, vendorID int) (skus []*model.OrderSkuExt, err error) {
|
||
globals.SugarLogger.Debugf("GetOrderSkuInfo orderID:%s", vendorOrderID)
|
||
if globals.OrderUseNewTable {
|
||
db := dao.GetDB()
|
||
if vendorID == model.VendorIDELM {
|
||
err = dao.GetRows(db, &skus, `
|
||
SELECT t1.*, IF(t3.img IS NULL OR t3.img = '', t4.col_imageUrl, t3.img) image
|
||
FROM order_sku t1
|
||
LEFT JOIN sku t2 ON IF(t1.jx_sku_id != 0, t1.jx_sku_id, t1.sku_id) = t2.id AND t2.deleted_at = ?
|
||
LEFT JOIN sku_name t3 ON t2.name_id = t3.id AND t3.deleted_at = ?
|
||
LEFT JOIN ede_skus t4 ON t1.vendor_sku_id = t4.col_id
|
||
WHERE vendor_order_id = ? AND vendor_id = ?
|
||
ORDER BY t1.sku_name
|
||
`, utils.DefaultTimeValue, utils.DefaultTimeValue, vendorOrderID, vendorID)
|
||
} else if vendorID == model.VendorIDJD {
|
||
err = dao.GetRows(db, &skus, `
|
||
SELECT t1.*, IF(t3.img IS NULL OR t3.img = '', t4.image, t3.img) image
|
||
FROM order_sku t1
|
||
LEFT JOIN sku t2 ON IF(t1.jx_sku_id != 0, t1.jx_sku_id, t1.sku_id) = t2.id AND t2.deleted_at = ?
|
||
LEFT JOIN sku_name t3 ON t2.name_id = t3.id AND t3.deleted_at = ?
|
||
LEFT JOIN jde_sku_infos t4 ON t1.vendor_sku_id = t4.skuId
|
||
WHERE vendor_order_id = ? AND vendor_id = ?
|
||
ORDER BY t1.sku_name
|
||
`, utils.DefaultTimeValue, utils.DefaultTimeValue, vendorOrderID, vendorID)
|
||
}
|
||
if err != nil || len(skus) == 0 {
|
||
err = dao.GetRows(db, &skus, `
|
||
SELECT t1.*, t3.img image
|
||
FROM order_sku t1
|
||
LEFT JOIN sku t2 ON IF(t1.jx_sku_id != 0, t1.jx_sku_id, t1.sku_id) = t2.id AND t2.deleted_at = ?
|
||
LEFT JOIN sku_name t3 ON t2.name_id = t3.id AND t3.deleted_at = ?
|
||
WHERE t1.vendor_order_id = ? AND t1.vendor_id = ?
|
||
ORDER BY t1.sku_name
|
||
`, utils.DefaultTimeValue, utils.DefaultTimeValue, vendorOrderID, vendorID)
|
||
if err != nil {
|
||
globals.SugarLogger.Infof("GetOrderSkuInfo orderID:%s vendorID:%d failed with error:%v", vendorOrderID, vendorID, err)
|
||
return nil, err
|
||
}
|
||
}
|
||
if len(skus) == 0 {
|
||
return nil, ErrCanNotFindOrder
|
||
}
|
||
return skus, nil
|
||
}
|
||
db := orm.NewOrm()
|
||
var num int64
|
||
// 为了显示图片,非正规的使用导出表
|
||
if vendorID == model.VendorIDELM {
|
||
num, err = db.Raw(`
|
||
SELECT t1.*, IF(t3.img IS NULL OR t3.img = '', t4.col_imageUrl, t3.img) image
|
||
FROM order_sku t1
|
||
LEFT JOIN jx_sku t2 ON IF(t1.jx_sku_id != 0, t1.jx_sku_id, t1.sku_id) = t2.id
|
||
LEFT JOIN jx_sku_name t3 ON t2.nameid = t3.id
|
||
LEFT JOIN ede_skus t4 ON t1.vendor_sku_id = t4.col_id
|
||
WHERE vendor_order_id = ? AND vendor_id = ?
|
||
ORDER BY t1.sku_name
|
||
`, vendorOrderID, vendorID).QueryRows(&skus)
|
||
} else if vendorID == model.VendorIDJD {
|
||
num, err = db.Raw(`
|
||
SELECT t1.*, IF(t3.img IS NULL OR t3.img = '', t4.image, t3.img) image
|
||
FROM order_sku t1
|
||
LEFT JOIN jx_sku t2 ON IF(t1.jx_sku_id != 0, t1.jx_sku_id, t1.sku_id) = t2.id
|
||
LEFT JOIN jx_sku_name t3 ON t2.nameid = t3.id
|
||
LEFT JOIN jde_sku_infos t4 ON t1.vendor_sku_id = t4.skuId
|
||
WHERE vendor_order_id = ? AND vendor_id = ?
|
||
ORDER BY t1.sku_name
|
||
`, vendorOrderID, vendorID).QueryRows(&skus)
|
||
}
|
||
|
||
if err != nil || num == 0 {
|
||
num, err = db.Raw(`
|
||
SELECT t1.*, t3.img image
|
||
FROM order_sku t1
|
||
LEFT JOIN jx_sku t2 ON IF(t1.jx_sku_id != 0, t1.jx_sku_id, t1.sku_id) = t2.id
|
||
LEFT JOIN jx_sku_name t3 ON t2.nameid = t3.id
|
||
WHERE vendor_order_id = ? AND vendor_id = ?
|
||
ORDER BY t1.sku_name
|
||
`, vendorOrderID, vendorID).QueryRows(&skus)
|
||
}
|
||
if err == nil && num > 0 {
|
||
return skus, nil
|
||
}
|
||
if err == nil {
|
||
err = ErrCanNotFindOrder
|
||
}
|
||
globals.SugarLogger.Infof("GetOrderSkuInfo orderID:%s vendorID:%d failed with error:%v", vendorOrderID, vendorID, err)
|
||
return nil, err
|
||
}
|
||
|
||
func (c *OrderManager) GetOrderInfo(ctx *jxcontext.Context, vendorOrderID string, vendorID int, isRefresh bool) (order *model.GoodsOrderExt, err error) {
|
||
globals.SugarLogger.Debugf("GetOrderInfo orderID:%s", vendorOrderID)
|
||
db := orm.NewOrm()
|
||
orders := []*model.GoodsOrderExt{}
|
||
|
||
// 这里用QueryRows而不用QueryRow的原因是用QueryRow在这种情况下不能将数据读出,很奇怪。大概的原因是QueryRow对于GoodsOrderExt这种有嵌入的struct处理有问题
|
||
num, err := db.Raw(`
|
||
SELECT t1.*, t2.status waybill_status, t2.courier_name, t2.courier_mobile
|
||
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
|
||
WHERE t1.vendor_order_id = ? AND vendor_id = ?
|
||
`, vendorOrderID, vendorID).QueryRows(&orders)
|
||
if err == nil && num > 0 {
|
||
order = orders[0]
|
||
if isRefresh && vendorID == model.VendorIDJD {
|
||
tmpOrder, err2 := partner.GetPurchasePlatformFromVendorID(vendorID).GetOrder(vendorOrderID)
|
||
if err = err2; err == nil {
|
||
order.CurrentConsigneeMobile = tmpOrder.ConsigneeMobile
|
||
} else {
|
||
order.CurrentConsigneeMobile = "Error"
|
||
globals.SugarLogger.Infof("GetOrderInfo GetOrder failed with error:%v", err2)
|
||
}
|
||
}
|
||
return order, nil
|
||
}
|
||
if err == nil {
|
||
err = ErrCanNotFindOrder
|
||
}
|
||
globals.SugarLogger.Infof("GetOrderInfo orderID:%s failed with error:%v", vendorOrderID, err)
|
||
return nil, err
|
||
}
|
||
|
||
func (c *OrderManager) GetOrderWaybillInfo(ctx *jxcontext.Context, vendorOrderID string, vendorID int) (bills []*model.Waybill, err error) {
|
||
globals.SugarLogger.Debugf("GetOrderWaybillInfo orderID:%s", vendorOrderID)
|
||
db := orm.NewOrm()
|
||
_, err = db.Raw(`
|
||
SELECT t1.*
|
||
FROM waybill t1
|
||
WHERE t1.vendor_order_id = ? AND order_vendor_id = ?
|
||
`, vendorOrderID, vendorID).QueryRows(&bills)
|
||
if err == nil {
|
||
return bills, nil
|
||
}
|
||
globals.SugarLogger.Infof("GetOrderWaybillInfo orderID:%s failed with error:%v", vendorOrderID, err)
|
||
return nil, err
|
||
}
|
||
|
||
func (c *OrderManager) ExportMTWaybills(ctx *jxcontext.Context, fromDateStr, toDateStr string) (excelContent []byte, err error) {
|
||
globals.SugarLogger.Debugf("ExportMTWaybills from:%s to:%s", fromDateStr, toDateStr)
|
||
|
||
fromDate, err := utils.TryStr2Time(fromDateStr)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
if toDateStr == "" {
|
||
toDateStr = fromDateStr
|
||
}
|
||
toDate, err := utils.TryStr2Time(toDateStr)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
toDate = toDate.Add(24 * time.Hour)
|
||
var waybills []*tWaybillExt
|
||
sql := `
|
||
SELECT t1.*, t2.store_name, IF(t2.store_id <> 0, t2.store_id, t2.jx_store_id) store_id
|
||
FROM waybill t1
|
||
JOIN goods_order t2 ON t1.vendor_order_id = t2.vendor_order_id
|
||
WHERE t1.waybill_vendor_id = 102 AND t1.status = 105 AND t1.waybill_created_at >= ? AND t1.waybill_created_at <= ?
|
||
ORDER BY t1.id
|
||
`
|
||
db := dao.GetDB()
|
||
if err = dao.GetRows(db, &waybills, sql, fromDate, toDate); err == nil {
|
||
config := []*excel.Obj2ExcelSheetConfig{
|
||
&excel.Obj2ExcelSheetConfig{
|
||
Title: "Sheet1",
|
||
Data: waybills,
|
||
CaptionList: []string{
|
||
"vendorWaybillID",
|
||
"waybillVendorID",
|
||
"vendorOrderID",
|
||
"orderVendorID",
|
||
"storeName",
|
||
"storeID",
|
||
"courierName",
|
||
"status",
|
||
"desiredFee",
|
||
"waybillCreatedAt",
|
||
},
|
||
},
|
||
}
|
||
return excel.Obj2Excel(config), nil
|
||
}
|
||
return nil, err
|
||
}
|
||
|
||
func (c *OrderManager) GetOrders(ctx *jxcontext.Context, fromDateStr, toDateStr string, params map[string]interface{}, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) {
|
||
globals.SugarLogger.Debugf("GetOrders from:%s to:%s", fromDateStr, toDateStr)
|
||
|
||
fromDate, err := utils.TryStr2Time(fromDateStr)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
if toDateStr == "" {
|
||
toDateStr = fromDateStr
|
||
}
|
||
toDate, err := utils.TryStr2Time(toDateStr)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
toDate = toDate.Add(24 * time.Hour)
|
||
pageSize = jxutils.FormalizePageSize(pageSize)
|
||
if offset < 0 {
|
||
offset = 0
|
||
}
|
||
|
||
sql := `
|
||
SELECT SQL_CALC_FOUND_ROWS t1.*,
|
||
t2.status waybill_status, t2.courier_name, t2.courier_mobile,
|
||
t2.actual_fee, t2.desired_fee, t2.waybill_created_at, t2.waybill_finished_at
|
||
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
|
||
`
|
||
sqlWhere := `
|
||
WHERE t1.order_created_at >= ? AND t1.order_created_at < ?
|
||
`
|
||
sqlParams := []interface{}{
|
||
fromDate,
|
||
toDate,
|
||
}
|
||
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_store_id LIKE ?
|
||
OR t1.consignee_name LIKE ? OR t1.consignee_mobile 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)
|
||
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["vendorIDs"] != nil {
|
||
var vendorIDs []int
|
||
if err = utils.UnmarshalUseNumber([]byte(params["vendorIDs"].(string)), &vendorIDs); err != nil {
|
||
return nil, err
|
||
}
|
||
if len(vendorIDs) > 0 {
|
||
sqlWhere += " AND t1.vendor_id IN (" + dao.GenQuestionMarks(len(vendorIDs)) + ")"
|
||
sqlParams = append(sqlParams, vendorIDs)
|
||
}
|
||
}
|
||
if params["waybillVendorIDs"] != nil {
|
||
var waybillVendorIDs []int
|
||
if err = utils.UnmarshalUseNumber([]byte(params["waybillVendorIDs"].(string)), &waybillVendorIDs); err != nil {
|
||
return nil, err
|
||
}
|
||
if len(waybillVendorIDs) > 0 {
|
||
sqlWhere += " AND t2.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, err
|
||
}
|
||
if len(storeIDs) > 0 {
|
||
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, err
|
||
}
|
||
if len(statuss) > 0 {
|
||
sqlWhere += " AND t1.status IN (" + dao.GenQuestionMarks(len(statuss)) + ")"
|
||
sqlParams = append(sqlParams, statuss)
|
||
}
|
||
}
|
||
if params["cities"] != nil {
|
||
var cities []int
|
||
if err = utils.UnmarshalUseNumber([]byte(params["cities"].(string)), &cities); err != nil {
|
||
return nil, err
|
||
}
|
||
if len(cities) > 0 {
|
||
sql += " JOIN store st ON t1.store_id = st.id"
|
||
sqlWhere += " AND st.city_code IN (" + dao.GenQuestionMarks(len(cities)) + ")"
|
||
sqlParams = append(sqlParams, cities)
|
||
}
|
||
}
|
||
|
||
sql += sqlWhere
|
||
sql += `
|
||
ORDER BY t1.order_created_at DESC
|
||
LIMIT ? OFFSET ?
|
||
`
|
||
sqlParams = append(sqlParams, pageSize, offset)
|
||
|
||
var orders []*model.GoodsOrderExt
|
||
pagedInfo = &model.PagedInfo{}
|
||
db := dao.GetDB()
|
||
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 {
|
||
countInfo := &struct{ Ct int }{}
|
||
if err = dao.GetRow(db, countInfo, "SELECT FOUND_ROWS() ct"); err == nil {
|
||
pagedInfo.TotalCount = countInfo.Ct
|
||
pagedInfo.Data = orders
|
||
}
|
||
}
|
||
dao.Commit(db)
|
||
return pagedInfo, err
|
||
}
|
||
|
||
func (c *OrderManager) GetWaybills(ctx *jxcontext.Context, fromDateStr, toDateStr string, params map[string]interface{}, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) {
|
||
globals.SugarLogger.Debugf("GetWaybills from:%s to:%s", fromDateStr, toDateStr)
|
||
|
||
fromDate, err := utils.TryStr2Time(fromDateStr)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
if toDateStr == "" {
|
||
toDateStr = fromDateStr
|
||
}
|
||
toDate, err := utils.TryStr2Time(toDateStr)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
toDate = toDate.Add(24 * time.Hour)
|
||
pageSize = jxutils.FormalizePageSize(pageSize)
|
||
if offset < 0 {
|
||
offset = 0
|
||
}
|
||
|
||
sqlParams := []interface{}{
|
||
fromDate,
|
||
toDate,
|
||
}
|
||
sql := `
|
||
SELECT SQL_CALC_FOUND_ROWS t1.*, t2.store_name, IF(t2.store_id <> 0, t2.store_id, t2.jx_store_id) store_id
|
||
FROM waybill t1
|
||
JOIN goods_order t2 ON t1.vendor_order_id = t2.vendor_order_id
|
||
WHERE t1.status = 105 AND t1.waybill_created_at >= ? AND t1.waybill_created_at < ?
|
||
`
|
||
if params["keyword"] != nil {
|
||
keyword := params["keyword"].(string)
|
||
keywordLike := "%" + keyword + "%"
|
||
sql += `
|
||
AND (t2.store_name LIKE ? OR t1.vendor_order_id 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)
|
||
if keywordInt64, err2 := strconv.ParseInt(keyword, 10, 64); err2 == nil {
|
||
sql += " OR t2.store_id = ? OR t2.jx_store_id = ?"
|
||
sqlParams = append(sqlParams, keywordInt64, keywordInt64)
|
||
}
|
||
sql += ")"
|
||
}
|
||
|
||
if params["waybillVendorIDs"] != nil {
|
||
var waybillVendorIDs []int
|
||
if err = utils.UnmarshalUseNumber([]byte(params["waybillVendorIDs"].(string)), &waybillVendorIDs); err != nil {
|
||
return nil, err
|
||
}
|
||
if len(waybillVendorIDs) > 0 {
|
||
sql += " AND t2.waybill_vendor_id IN (" + dao.GenQuestionMarks(len(waybillVendorIDs)) + ")"
|
||
sqlParams = append(sqlParams, waybillVendorIDs)
|
||
}
|
||
}
|
||
if params["statuss"] != nil {
|
||
var statuss []int
|
||
if err = utils.UnmarshalUseNumber([]byte(params["statuss"].(string)), &statuss); err != nil {
|
||
return nil, err
|
||
}
|
||
if len(statuss) > 0 {
|
||
sql += " AND t1.status IN (" + dao.GenQuestionMarks(len(statuss)) + ")"
|
||
sqlParams = append(sqlParams, statuss)
|
||
}
|
||
}
|
||
sql += `
|
||
ORDER BY t1.id
|
||
LIMIT ? OFFSET ?
|
||
`
|
||
sqlParams = append(sqlParams, pageSize, offset)
|
||
var waybills []*tWaybillExt
|
||
pagedInfo = &model.PagedInfo{}
|
||
db := dao.GetDB()
|
||
dao.Begin(db)
|
||
defer func() {
|
||
if r := recover(); r != nil {
|
||
dao.Rollback(db)
|
||
panic(r)
|
||
}
|
||
}()
|
||
if err = dao.GetRows(db, &waybills, sql, sqlParams...); err == nil {
|
||
countInfo := &struct{ Ct int }{}
|
||
if err = dao.GetRow(db, countInfo, "SELECT FOUND_ROWS() ct"); err == nil {
|
||
pagedInfo.TotalCount = countInfo.Ct
|
||
pagedInfo.Data = waybills
|
||
}
|
||
}
|
||
dao.Commit(db)
|
||
return pagedInfo, err
|
||
}
|