diff --git a/business/partner/purchase/jx/localjx/order.go b/business/partner/purchase/jx/localjx/order.go index 6c630c76f..b8bcc7435 100644 --- a/business/partner/purchase/jx/localjx/order.go +++ b/business/partner/purchase/jx/localjx/order.go @@ -4,6 +4,7 @@ import ( "crypto/md5" "fmt" "math" + "sort" "time" "git.rosy.net.cn/baseapi/utils" @@ -35,12 +36,29 @@ type JxSkuInfo struct { 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 { BuyerComment string `json:"buyerComment"` StoreID int `json:"storeID"` Skus []*JxSkuInfo `json:"skus"` - ExpectedDeliveredTime *time.Time `orm:"type(datetime)" json:"expectedDeliveredTime"` // 预期送达时间 + ExpectedDeliveredTimestamp int64 `json:"expectedDeliveredTimestamp"` // 预期送达时间 TotalPrice int64 `json:"totalPrice"` // 单位为分 订单总价 FreightPrice int64 `json:"freightPrice"` // 单位为分 订单配送费 @@ -137,12 +155,14 @@ func GetAvailableDeliverTime(ctx *jxcontext.Context, storeID int) (deliverTimerL closeTime1 := jxutils.JxOperationTime2TimeByDate(storeDetail.CloseTime1, beginDate) openTime2 := jxutils.JxOperationTime2TimeByDate(storeDetail.OpenTime2, 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 { timeInfo.TimeList = append(timeInfo.TimeList, &DeliveryTimeItem{ ViewTime: "立即送出", UnixTime: 0, - ViewShippingFee: "6.6元配送费", + ViewShippingFee: "约6.6元配送费", }) } deliverTimerList = append(deliverTimerList, timeInfo) @@ -154,7 +174,7 @@ func GetAvailableDeliverTime(ctx *jxcontext.Context, storeID int) (deliverTimerL timeInfo.TimeList = append(timeInfo.TimeList, &DeliveryTimeItem{ ViewTime: time2ShortTimeStr(deliveryTime), 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]) } checkTime := time.Now() - if jxOrder.ExpectedDeliveredTime == nil { + if jxOrder.ExpectedDeliveredTimestamp == 0 { if storeDetail.Status != model.StoreStatusOpened { return nil, nil, fmt.Errorf("门店:%s不是营业状态,状态是:%s", storeDetail.Name, model.StoreStatusName[storeDetail.Status]) } } else { - checkTime = *jxOrder.ExpectedDeliveredTime + checkTime = utils.Timestamp2Time(jxOrder.ExpectedDeliveredTimestamp) if checkTime.Sub(time.Now()) < DingShiDaMinTime { 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, "", 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.VendorUserID = order.UserID - if jxOrder.ExpectedDeliveredTime != nil { - order.ExpectedDeliveredTime = *jxOrder.ExpectedDeliveredTime + if jxOrder.ExpectedDeliveredTimestamp == 0 { + order.ExpectedDeliveredTime = utils.Timestamp2Time(jxOrder.ExpectedDeliveredTimestamp) order.BusinessType = model.BusinessTypeDingshida } else { order.ExpectedDeliveredTime = utils.DefaultTimeValue diff --git a/business/partner/purchase/jx/localjx/wxpay.go b/business/partner/purchase/jx/localjx/wxpay.go index 01ed71e43..6519d3edb 100644 --- a/business/partner/purchase/jx/localjx/wxpay.go +++ b/business/partner/purchase/jx/localjx/wxpay.go @@ -5,6 +5,7 @@ import ( "git.rosy.net.cn/baseapi/platformapi/wxpay" "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/jxcontext" "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), // 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) if err == nil { orderPay = &model.OrderPay{