diff --git a/business/jxstore/cms/order.go b/business/jxstore/cms/order.go index 543796fcd..edeef4d5c 100644 --- a/business/jxstore/cms/order.go +++ b/business/jxstore/cms/order.go @@ -280,3 +280,7 @@ func orderMessage(unionOrder *model.UnionOrder) { func GetMyUnionOrders(ctx *jxcontext.Context, statuss []int, vendorID, offset, pageSize int) (page *model.PagedInfo, err error) { return dao.GetMyUnionOrders(dao.GetDB(), ctx.GetUserID(), statuss, vendorID, offset, pageSize) } + +func GetUnionOrders(ctx *jxcontext.Context, vendorIDs, statuss []int, beginTime, endTime, keyword string, offset, pageSize int) (page *model.PagedInfo, err error) { + return dao.GetUnionOrdersPage(dao.GetDB(), vendorIDs, statuss, utils.Str2Time(beginTime), utils.Str2Time(endTime), keyword, offset, pageSize) +} diff --git a/business/model/dao/dao_order.go b/business/model/dao/dao_order.go index 5a43ba3ae..dda8501e6 100644 --- a/business/model/dao/dao_order.go +++ b/business/model/dao/dao_order.go @@ -602,3 +602,53 @@ func GetMyUnionOrders(db *DaoDB, userID string, statuss []int, vendorID, offset, } return page, err } + +type GetUnionOrdersPageResult struct { + model.UnionOrder + Name string `json:"name"` + Moble string `json:"moble"` +} + +func GetUnionOrdersPage(db *DaoDB, vendorIDs, statuss []int, beginTime, endTime time.Time, keyword string, offset, pageSize int) (page *model.PagedInfo, err error) { + var orders []*GetUnionOrdersPageResult + sql := ` + SELECT SQL_CALC_FOUND_ROWS a.*, b.name, b.mobile + FROM union_order a + LEFT JOIN user b ON a.user_id = b.user_id + WHERE 1 = 1 + ` + sqlParams := []interface{}{} + if len(vendorIDs) > 0 { + sql += ` AND a.vendor_id IN (` + GenQuestionMarks(len(vendorIDs)) + `)` + sqlParams = append(sqlParams, vendorIDs) + } + if len(statuss) > 0 { + sql += ` AND a.status IN (` + GenQuestionMarks(len(statuss)) + `)` + sqlParams = append(sqlParams, statuss) + } + if !utils.IsTimeZero(beginTime) { + sql += ` AND a.order_settle_at > ?` + sqlParams = append(sqlParams, beginTime) + } + if !utils.IsTimeZero(endTime) { + sql += ` AND a.order_settle_at < ?` + sqlParams = append(sqlParams, endTime) + } + if keyword != "" { + keywordLike := "%" + keyword + "%" + sql += ` AND (b.name LIKE ? OR b.mobile LIKE ? OR a.vendor_order_id LIKE ? OR a.goods_name LIKE ? OR a.comment LIKE ?)` + sqlParams = append(sqlParams, keywordLike, keywordLike, keywordLike, keywordLike, keywordLike) + } + sql += " LIMIT ? OFFSET ?" + pageSize = jxutils.FormalizePageSize(pageSize) + sqlParams = append(sqlParams, pageSize, offset) + txDB, _ := Begin(db) + defer Commit(db, txDB) + if err = GetRowsTx(txDB, &orders, sql, sqlParams...); err == nil { + page = &model.PagedInfo{ + TotalCount: GetLastTotalRowCountTx(txDB), + Data: orders, + } + } + return page, err +} diff --git a/controllers/union_controller.go b/controllers/union_controller.go index 3e3572169..4d804d740 100644 --- a/controllers/union_controller.go +++ b/controllers/union_controller.go @@ -2,6 +2,7 @@ package controllers import ( "git.rosy.net.cn/jx-callback/business/jxstore/cms" + "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/globals/api" "github.com/astaxie/beego/server/web" @@ -153,6 +154,11 @@ func (c *UnionController) GetPddBindInfo() { // @router /GetUnionOrders [get] func (c *UnionController) GetUnionOrders() { c.callGetUnionOrders(func(params *tUnionGetUnionOrdersParams) (retVal interface{}, errCode string, err error) { + var vendorIDs []int + var statuss []int + if err = jxutils.Strings2Objs(params.VendorIDs, &vendorIDs, params.Statuss, &statuss); err == nil { + retVal, err = cms.GetUnionOrders(params.Ctx, vendorIDs, statuss, params.BeginTime, params.EndTime, params.Keyword, params.Offset, params.PageSize) + } return retVal, "", err }) }