180 lines
5.5 KiB
Go
180 lines
5.5 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 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 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 += " ORDER BY a.created_at DESC"
|
|
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]
|
|
} else {
|
|
sendInfo := &UserDeliveryAddressEx{}
|
|
sendInfo.ConsigneeName = v.SendName
|
|
sendInfo.ConsigneeMobile = v.SendMobile
|
|
sendInfo.Address = v.SendAddress
|
|
sendInfo.AutoAddress = v.SendAutoAddress
|
|
sendInfo.CityCode = v.SendCityCode
|
|
sendInfo.DistrictCode = v.SendDistrictCode
|
|
sendInfo.DetailAddress = v.SendDetailAddress
|
|
sendInfo.Lng = v.SendLng
|
|
sendInfo.Lat = v.SendLat
|
|
v.DeliverySendInfo = sendInfo
|
|
}
|
|
if addressList2, _, err := QueryUserDeliveryAddress(db, int64(v.DeliveryReceiveID), nil, 0, 0, 0); err == nil && len(addressList2) > 0 {
|
|
v.DeliveryReceiveInfo = addressList2[0]
|
|
} else {
|
|
receiveInfo := &UserDeliveryAddressEx{}
|
|
receiveInfo.ConsigneeName = v.ReceiveName
|
|
receiveInfo.ConsigneeMobile = v.ReceiveMobile
|
|
receiveInfo.Address = v.ReceiveAddress
|
|
receiveInfo.AutoAddress = v.ReceiveAutoAddress
|
|
receiveInfo.CityCode = v.ReceiveCityCode
|
|
receiveInfo.DistrictCode = v.ReceiveDistrictCode
|
|
receiveInfo.DetailAddress = v.ReceiveDetailAddress
|
|
receiveInfo.Lng = v.ReceiveLng
|
|
receiveInfo.Lat = v.ReceiveLat
|
|
v.DeliveryReceiveInfo = receiveInfo
|
|
}
|
|
}
|
|
pagedInfo.Data = dOrders
|
|
}
|
|
return pagedInfo, err
|
|
}
|
|
|
|
type GetOrdersResult struct {
|
|
model.Order
|
|
UserName string `json:"userName"`
|
|
Mobile string `json:"mobile"`
|
|
}
|
|
|
|
func GetOrders(db *DaoDB, orderID, userID 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.*, b.name user_name, b.mobile
|
|
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 userID != "" {
|
|
sql += ` AND a.user_id = ?`
|
|
sqlParams = append(sqlParams, userID)
|
|
}
|
|
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
|
|
}
|