Files
jx-callback/business/model/dao/dao_order.go
苏尹岚 f0b9ea7385 getorders
2020-11-17 15:26:38 +08:00

144 lines
4.3 KiB
Go

package dao
import (
"time"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxutils"
"git.rosy.net.cn/jx-callback/business/model"
)
func GetDeliveryOrdersNoPage(db *DaoDB, userIDs []string, statuss []int, fromTime, toTime time.Time, isWeights []int) (dOrders []*model.DeliveryOrder, err error) {
sql := `
SELECT *
FROM delivery_order
WHERE 1 = 1
`
sqlParams := []interface{}{}
if len(userIDs) > 0 {
sql += ` AND a.user_id IN (` + GenQuestionMarks(len(userIDs)) + `)`
sqlParams = append(sqlParams, userIDs)
}
if len(statuss) > 0 {
sql += ` AND a.status IN (` + GenQuestionMarks(len(statuss)) + `)`
sqlParams = append(sqlParams, statuss)
}
if len(isWeights) > 0 {
sql += ` AND a.is_weight IN (` + GenQuestionMarks(len(isWeights)) + `)`
sqlParams = append(sqlParams, isWeights)
}
if fromTime != utils.ZeroTimeValue {
sql += ` AND a.created_at >= ?`
sqlParams = append(sqlParams, fromTime)
}
if toTime != utils.ZeroTimeValue {
sql += ` AND a.created_at <= ?`
sqlParams = append(sqlParams, toTime)
}
err = GetRows(db, &dOrders, sql, sqlParams)
return dOrders, err
}
type GetDeliveryOrdersResult struct {
model.DeliveryOrder
DeliverySendInfo *UserDeliveryAddressEx `json:"deliverySendInfo"`
DeliveryReceiveInfo *UserDeliveryAddressEx `json:"deliveryReceiveInfo"`
}
func GetDeliveryOrders(db *DaoDB, userIDs []string, statuss []int, fromTime, toTime time.Time, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) {
var dOrders []*GetDeliveryOrdersResult
sql := `
SELECT SQL_CALC_FOUND_ROWS a.*
FROM delivery_order a
WHERE 1 = 1
`
sqlParams := []interface{}{}
if len(userIDs) > 0 {
sql += ` AND a.user_id IN (` + GenQuestionMarks(len(userIDs)) + `)`
sqlParams = append(sqlParams, userIDs)
}
if len(statuss) > 0 {
sql += ` AND a.status IN (` + GenQuestionMarks(len(statuss)) + `)`
sqlParams = append(sqlParams, statuss)
}
if fromTime != utils.ZeroTimeValue {
sql += ` AND a.created_at >= ?`
sqlParams = append(sqlParams, fromTime)
}
if toTime != utils.ZeroTimeValue {
sql += ` AND a.created_at <= ?`
sqlParams = append(sqlParams, toTime)
}
sql += " LIMIT ? OFFSET ?"
pageSize = jxutils.FormalizePageSize(pageSize)
sqlParams = append(sqlParams, pageSize, offset)
Begin(db)
defer Commit(db)
if err = GetRows(db, &dOrders, sql, sqlParams...); err == nil {
pagedInfo = &model.PagedInfo{
TotalCount: GetLastTotalRowCount(db),
// Data: dOrders,
}
for _, v := range dOrders {
if addressList1, _, err := QueryUserDeliveryAddress(db, int64(v.DeliverySendID), nil, 0, 0, 0); err == nil && len(addressList1) > 0 {
v.DeliverySendInfo = addressList1[0]
}
if addressList2, _, err := QueryUserDeliveryAddress(db, int64(v.DeliveryReceiveID), nil, 0, 0, 0); err == nil && len(addressList2) > 0 {
v.DeliveryReceiveInfo = addressList2[0]
}
}
pagedInfo.Data = dOrders
}
return pagedInfo, err
}
func GetOrders(db *DaoDB, orderID string, orderType int, cityCodes []int, fromTime, toTime time.Time, keyword string, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) {
var orders []*model.Order
sql := `
SELECT SQL_CALC_FOUND_ROWS a.*
FROM ` + "order" + ` a
JOIN user b ON b.user_id = a.user_id AND b.deleted_at = ?
WHERE 1 = 1
`
sqlParams := []interface{}{
utils.DefaultTimeValue,
}
if orderID != "" {
sql += ` AND a.order_id = ?`
sqlParams = append(sqlParams, orderID)
}
if orderType != 0 {
sql += ` AND a.type = ?`
sqlParams = append(sqlParams, orderType)
}
if len(cityCodes) > 0 {
sql += ` AND a.city_code IN ` + GenQuestionMarks(len(cityCodes)) + `)`
sqlParams = append(sqlParams, cityCodes)
}
if fromTime != utils.ZeroTimeValue {
sql += ` AND a.created_at >= ?`
sqlParams = append(sqlParams, fromTime)
}
if toTime != utils.ZeroTimeValue {
sql += ` AND a.created_at <= ?`
sqlParams = append(sqlParams, toTime)
}
if keyword != "" {
sql += ` AND (b.mobile LIKE ? OR b.name LIKE ?)`
sqlParams = append(sqlParams, "%"+keyword+"%", "%"+keyword+"%")
}
sql += " LIMIT ? OFFSET ?"
pageSize = jxutils.FormalizePageSize(pageSize)
sqlParams = append(sqlParams, pageSize, offset)
Begin(db)
defer Commit(db)
if err = GetRows(db, &orders, sql, sqlParams); err == nil {
pagedInfo = &model.PagedInfo{
TotalCount: GetLastTotalRowCount(db),
Data: orders,
}
}
return pagedInfo, err
}