CreateOrder返回的商品列表排序
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
|||||||
"crypto/md5"
|
"crypto/md5"
|
||||||
"fmt"
|
"fmt"
|
||||||
"math"
|
"math"
|
||||||
|
"sort"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
@@ -35,12 +36,29 @@ type JxSkuInfo struct {
|
|||||||
Weight int `json:"weight"`
|
Weight int `json:"weight"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type JxSkuInfoList []*JxSkuInfo
|
||||||
|
|
||||||
|
func (l JxSkuInfoList) Len() int {
|
||||||
|
return len(l)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l JxSkuInfoList) Less(i, j int) bool {
|
||||||
|
if l[i].SkuID == l[j].SkuID {
|
||||||
|
return l[i].SalePrice < l[j].SalePrice
|
||||||
|
}
|
||||||
|
return l[i].SkuID < l[j].SkuID
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l JxSkuInfoList) Swap(i, j int) {
|
||||||
|
l[i], l[j] = l[j], l[i]
|
||||||
|
}
|
||||||
|
|
||||||
type JxOrderInfo struct {
|
type JxOrderInfo struct {
|
||||||
BuyerComment string `json:"buyerComment"`
|
BuyerComment string `json:"buyerComment"`
|
||||||
StoreID int `json:"storeID"`
|
StoreID int `json:"storeID"`
|
||||||
Skus []*JxSkuInfo `json:"skus"`
|
Skus []*JxSkuInfo `json:"skus"`
|
||||||
|
|
||||||
ExpectedDeliveredTime *time.Time `orm:"type(datetime)" json:"expectedDeliveredTime"` // 预期送达时间
|
ExpectedDeliveredTimestamp int64 `json:"expectedDeliveredTimestamp"` // 预期送达时间
|
||||||
|
|
||||||
TotalPrice int64 `json:"totalPrice"` // 单位为分 订单总价
|
TotalPrice int64 `json:"totalPrice"` // 单位为分 订单总价
|
||||||
FreightPrice int64 `json:"freightPrice"` // 单位为分 订单配送费
|
FreightPrice int64 `json:"freightPrice"` // 单位为分 订单配送费
|
||||||
@@ -137,12 +155,14 @@ func GetAvailableDeliverTime(ctx *jxcontext.Context, storeID int) (deliverTimerL
|
|||||||
closeTime1 := jxutils.JxOperationTime2TimeByDate(storeDetail.CloseTime1, beginDate)
|
closeTime1 := jxutils.JxOperationTime2TimeByDate(storeDetail.CloseTime1, beginDate)
|
||||||
openTime2 := jxutils.JxOperationTime2TimeByDate(storeDetail.OpenTime2, beginDate)
|
openTime2 := jxutils.JxOperationTime2TimeByDate(storeDetail.OpenTime2, beginDate)
|
||||||
closeTime2 := jxutils.JxOperationTime2TimeByDate(storeDetail.CloseTime2, beginDate)
|
closeTime2 := jxutils.JxOperationTime2TimeByDate(storeDetail.CloseTime2, beginDate)
|
||||||
timeInfo := &DeliveryDayTimeInfo{}
|
timeInfo := &DeliveryDayTimeInfo{
|
||||||
|
Date: fmt.Sprintf("%s(周%s)", dayList[i], weekdayMap[int(beginDate.Weekday())]),
|
||||||
|
}
|
||||||
if i == 0 {
|
if i == 0 {
|
||||||
timeInfo.TimeList = append(timeInfo.TimeList, &DeliveryTimeItem{
|
timeInfo.TimeList = append(timeInfo.TimeList, &DeliveryTimeItem{
|
||||||
ViewTime: "立即送出",
|
ViewTime: "立即送出",
|
||||||
UnixTime: 0,
|
UnixTime: 0,
|
||||||
ViewShippingFee: "6.6元配送费",
|
ViewShippingFee: "约6.6元配送费",
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
deliverTimerList = append(deliverTimerList, timeInfo)
|
deliverTimerList = append(deliverTimerList, timeInfo)
|
||||||
@@ -154,7 +174,7 @@ func GetAvailableDeliverTime(ctx *jxcontext.Context, storeID int) (deliverTimerL
|
|||||||
timeInfo.TimeList = append(timeInfo.TimeList, &DeliveryTimeItem{
|
timeInfo.TimeList = append(timeInfo.TimeList, &DeliveryTimeItem{
|
||||||
ViewTime: time2ShortTimeStr(deliveryTime),
|
ViewTime: time2ShortTimeStr(deliveryTime),
|
||||||
UnixTime: deliveryTime.Unix(),
|
UnixTime: deliveryTime.Unix(),
|
||||||
ViewShippingFee: "6.6元配送费",
|
ViewShippingFee: "约6.6元配送费",
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -260,12 +280,12 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64
|
|||||||
return nil, nil, fmt.Errorf("门店:%s状态是:%s", storeDetail.Name, model.StoreStatusName[storeDetail.Status])
|
return nil, nil, fmt.Errorf("门店:%s状态是:%s", storeDetail.Name, model.StoreStatusName[storeDetail.Status])
|
||||||
}
|
}
|
||||||
checkTime := time.Now()
|
checkTime := time.Now()
|
||||||
if jxOrder.ExpectedDeliveredTime == nil {
|
if jxOrder.ExpectedDeliveredTimestamp == 0 {
|
||||||
if storeDetail.Status != model.StoreStatusOpened {
|
if storeDetail.Status != model.StoreStatusOpened {
|
||||||
return nil, nil, fmt.Errorf("门店:%s不是营业状态,状态是:%s", storeDetail.Name, model.StoreStatusName[storeDetail.Status])
|
return nil, nil, fmt.Errorf("门店:%s不是营业状态,状态是:%s", storeDetail.Name, model.StoreStatusName[storeDetail.Status])
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
checkTime = *jxOrder.ExpectedDeliveredTime
|
checkTime = utils.Timestamp2Time(jxOrder.ExpectedDeliveredTimestamp)
|
||||||
if checkTime.Sub(time.Now()) < DingShiDaMinTime {
|
if checkTime.Sub(time.Now()) < DingShiDaMinTime {
|
||||||
return nil, nil, fmt.Errorf("预订单只能在1小时后")
|
return nil, nil, fmt.Errorf("预订单只能在1小时后")
|
||||||
}
|
}
|
||||||
@@ -325,6 +345,7 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
sort.Sort(JxSkuInfoList(outJxOrder.Skus))
|
||||||
|
|
||||||
if outJxOrder.FreightPrice, _, err = delivery.CalculateDeliveryFee(dao.GetDB(), jxOrder.StoreID, "",
|
if outJxOrder.FreightPrice, _, err = delivery.CalculateDeliveryFee(dao.GetDB(), jxOrder.StoreID, "",
|
||||||
jxutils.StandardCoordinate2Int(deliveryAddress.Lng), jxutils.StandardCoordinate2Int(deliveryAddress.Lat),
|
jxutils.StandardCoordinate2Int(deliveryAddress.Lng), jxutils.StandardCoordinate2Int(deliveryAddress.Lat),
|
||||||
@@ -362,8 +383,8 @@ func jxOrder2GoodsOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, deliveryAd
|
|||||||
}
|
}
|
||||||
order.OrderCreatedAt = order.StatusTime
|
order.OrderCreatedAt = order.StatusTime
|
||||||
order.VendorUserID = order.UserID
|
order.VendorUserID = order.UserID
|
||||||
if jxOrder.ExpectedDeliveredTime != nil {
|
if jxOrder.ExpectedDeliveredTimestamp == 0 {
|
||||||
order.ExpectedDeliveredTime = *jxOrder.ExpectedDeliveredTime
|
order.ExpectedDeliveredTime = utils.Timestamp2Time(jxOrder.ExpectedDeliveredTimestamp)
|
||||||
order.BusinessType = model.BusinessTypeDingshida
|
order.BusinessType = model.BusinessTypeDingshida
|
||||||
} else {
|
} else {
|
||||||
order.ExpectedDeliveredTime = utils.DefaultTimeValue
|
order.ExpectedDeliveredTime = utils.DefaultTimeValue
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import (
|
|||||||
|
|
||||||
"git.rosy.net.cn/baseapi/platformapi/wxpay"
|
"git.rosy.net.cn/baseapi/platformapi/wxpay"
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/auth2/authprovider/weixin"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
"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"
|
||||||
@@ -30,6 +31,9 @@ func pay4OrderByWX(ctx *jxcontext.Context, order *model.GoodsOrder, vendorPayTyp
|
|||||||
TimeStart: wxpay.Time2PayTime(payCreatedAt),
|
TimeStart: wxpay.Time2PayTime(payCreatedAt),
|
||||||
// TimeExpire: wxpay.Time2PayTime(payCreatedAt.Add(PayWaitingTime)),
|
// TimeExpire: wxpay.Time2PayTime(payCreatedAt.Add(PayWaitingTime)),
|
||||||
}
|
}
|
||||||
|
if authInfo, err := ctx.GetV2AuthInfo(); err == nil && authInfo.GetAuthType() == weixin.AuthTypeMini {
|
||||||
|
param.OpenID = authInfo.GetAuthID()
|
||||||
|
}
|
||||||
result, err := api.WxpayAPI.CreateUnifiedOrder(param)
|
result, err := api.WxpayAPI.CreateUnifiedOrder(param)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
orderPay = &model.OrderPay{
|
orderPay = &model.OrderPay{
|
||||||
|
|||||||
Reference in New Issue
Block a user