访问京东API,获取结账必要信息。
This commit is contained in:
@@ -10,6 +10,7 @@ import (
|
|||||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
"git.rosy.net.cn/jx-callback/business/scheduler"
|
"git.rosy.net.cn/jx-callback/business/scheduler"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/util"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"git.rosy.net.cn/jx-callback/globals/api"
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
"git.rosy.net.cn/jx-callback/legacy/freshfood"
|
"git.rosy.net.cn/jx-callback/legacy/freshfood"
|
||||||
@@ -70,8 +71,10 @@ func (c *OrderController) onOrderMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi
|
|||||||
|
|
||||||
func (c *OrderController) GetOrder(orderID string) (order *model.GoodsOrder, err error) {
|
func (c *OrderController) GetOrder(orderID string) (order *model.GoodsOrder, err error) {
|
||||||
result, err := api.JdAPI.QuerySingleOrder(orderID)
|
result, err := api.JdAPI.QuerySingleOrder(orderID)
|
||||||
|
bussResult, bussErr := api.JdAPI.QueryOassBussMoney(orderID)
|
||||||
// globals.SugarLogger.Info(result)
|
// globals.SugarLogger.Info(result)
|
||||||
if err == nil {
|
//todo 将API获取的信息填入新字段里
|
||||||
|
if err == nil && bussErr == nil {
|
||||||
order = &model.GoodsOrder{
|
order = &model.GoodsOrder{
|
||||||
VendorOrderID: orderID,
|
VendorOrderID: orderID,
|
||||||
VendorID: model.VendorIDJD,
|
VendorID: model.VendorIDJD,
|
||||||
@@ -91,6 +94,7 @@ func (c *OrderController) GetOrder(orderID string) (order *model.GoodsOrder, err
|
|||||||
ActualPayPrice: utils.MustInterface2Int64(result["orderBuyerPayableMoney"]),
|
ActualPayPrice: utils.MustInterface2Int64(result["orderBuyerPayableMoney"]),
|
||||||
Skus: []*model.OrderSku{},
|
Skus: []*model.OrderSku{},
|
||||||
}
|
}
|
||||||
|
|
||||||
order.Status = c.GetStatusFromVendorStatus(order.VendorStatus)
|
order.Status = c.GetStatusFromVendorStatus(order.VendorStatus)
|
||||||
businessTage := utils.Interface2String(result["businessTag"])
|
businessTage := utils.Interface2String(result["businessTag"])
|
||||||
if strings.Index(businessTage, "dj_aging_immediately") >= 0 {
|
if strings.Index(businessTage, "dj_aging_immediately") >= 0 {
|
||||||
@@ -137,9 +141,48 @@ func (c *OrderController) GetOrder(orderID string) (order *model.GoodsOrder, err
|
|||||||
order.Weight += sku.Weight * sku.Count
|
order.Weight += sku.Weight * sku.Count
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
setOrederDetailFee(bussResult, result, order)
|
||||||
return order, err
|
return order, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func setOrederDetailFee(bussResult []interface{}, result map[string]interface{}, order *model.GoodsOrder) {
|
||||||
|
var skuTotalPmFee, orderPmFee, skuTotalPmSubsidy, orderPmSubsidy int64
|
||||||
|
for _, value := range bussResult {
|
||||||
|
OassBussinessSkusNew := value.(map[string]interface{})
|
||||||
|
discountlist := OassBussinessSkusNew["discountlist"].([]interface{})
|
||||||
|
promotionType := utils.MustInterface2Int64(OassBussinessSkusNew["promotionType"])
|
||||||
|
skuId := utils.MustInterface2Int64(OassBussinessSkusNew["skuId"])
|
||||||
|
for _, value := range discountlist {
|
||||||
|
OrderBussiDiscountMoney := value.(map[string]interface{})
|
||||||
|
if isHave, _ := util.Contain(promotionType, model.JdSkuPromotion); isHave == true {
|
||||||
|
singleSkuPmFee := utils.MustInterface2Int64(OrderBussiDiscountMoney["saleMoney"])
|
||||||
|
skuTotalPmFee += singleSkuPmFee
|
||||||
|
singleSkuPmSubsidy := utils.MustInterface2Int64(OrderBussiDiscountMoney["costMoney"])
|
||||||
|
skuTotalPmSubsidy += singleSkuPmSubsidy
|
||||||
|
setSkuDetailFee(singleSkuPmFee, singleSkuPmSubsidy, order, skuId)
|
||||||
|
} else {
|
||||||
|
orderPmFee += utils.MustInterface2Int64(OrderBussiDiscountMoney["saleMoney"])
|
||||||
|
orderPmSubsidy += utils.MustInterface2Int64(OrderBussiDiscountMoney["costMoney"])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
order.SkuTotalPmFee = skuTotalPmFee
|
||||||
|
order.OrderPmFee = orderPmFee
|
||||||
|
order.SkuTotalPmSubsidy = skuTotalPmSubsidy
|
||||||
|
order.OrderPmSubsidy = orderPmSubsidy
|
||||||
|
order.BoxFee = utils.MustInterface2Int64(result["packagingMoney"])
|
||||||
|
order.PlatformFeeRate = model.JdPlatformFeeRate
|
||||||
|
}
|
||||||
|
|
||||||
|
func setSkuDetailFee(skuPmFee int64, skuPmSubsidy int64, order *model.GoodsOrder, skuId int64) {
|
||||||
|
for _, value := range order.Skus {
|
||||||
|
if value.SkuID == int(skuId) {
|
||||||
|
value.SkuPmSubsidy = skuPmSubsidy
|
||||||
|
value.SkuPmFee = skuPmFee
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
func (c *OrderController) onOrderNew(msg *jdapi.CallbackOrderMsg) (response *jdapi.CallbackResponse) {
|
func (c *OrderController) onOrderNew(msg *jdapi.CallbackOrderMsg) (response *jdapi.CallbackResponse) {
|
||||||
order, err := c.GetOrder(msg.BillID)
|
order, err := c.GetOrder(msg.BillID)
|
||||||
|
|||||||
@@ -123,3 +123,12 @@ const (
|
|||||||
BusinessTypeImmediate = 1
|
BusinessTypeImmediate = 1
|
||||||
BusinessTypeDingshida = 2
|
BusinessTypeDingshida = 2
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
JdSkuPromotion = [10]int64{2, 3, 4, 1203, 6, 9998, 9997, 9996, 8, 8001}
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
JdPlatformFeeRate = 10
|
||||||
|
MtPlatformFeeRate = 10
|
||||||
|
)
|
||||||
|
|||||||
@@ -44,8 +44,15 @@ type GoodsOrder struct {
|
|||||||
OrderFinishedAt time.Time `orm:"type(datetime)"`
|
OrderFinishedAt time.Time `orm:"type(datetime)"`
|
||||||
StatusTime time.Time `orm:"type(datetime)"` // last status time
|
StatusTime time.Time `orm:"type(datetime)"` // last status time
|
||||||
ModelTimeInfo
|
ModelTimeInfo
|
||||||
OriginalData string `orm:"type(text)"`
|
OriginalData string `orm:"type(text)"`
|
||||||
Skus []*OrderSku `orm:"-"`
|
Skus []*OrderSku `orm:"-"`
|
||||||
|
SkuTotalPmFee int64 //门店商品促销总支出
|
||||||
|
OrderPmFee int64 //门店订单促销支出
|
||||||
|
SkuTotalPmSubsidy int64 //平台商品促销总补贴
|
||||||
|
OrderPmSubsidy int64 //平台订单促销补贴
|
||||||
|
BoxFee int64 //餐盒费
|
||||||
|
PlatformFeeRate int16 //平台费
|
||||||
|
BillStoreFreightFee int64 //需要回调,门店所承担的运费
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *GoodsOrder) TableUnique() [][]string {
|
func (o *GoodsOrder) TableUnique() [][]string {
|
||||||
@@ -69,6 +76,8 @@ type OrderSku struct {
|
|||||||
SkuType int // 当前如果为gift就为1,否则缺省为0
|
SkuType int // 当前如果为gift就为1,否则缺省为0
|
||||||
PromotionType int // todo 当前是用于记录京东的PromotionType(生成jxorder用),没有做转换
|
PromotionType int // todo 当前是用于记录京东的PromotionType(生成jxorder用),没有做转换
|
||||||
OrderCreatedAt time.Time `orm:"type(datetime);index"` // 分区考虑
|
OrderCreatedAt time.Time `orm:"type(datetime);index"` // 分区考虑
|
||||||
|
SkuPmSubsidy int64 //平台商品活动补贴
|
||||||
|
SkuPmFee int64 //门店商品促销支出
|
||||||
}
|
}
|
||||||
|
|
||||||
// 同样商品在一个订单中可能重复出现(比如搞活动时,相同商品价格不一样,第一个有优惠)
|
// 同样商品在一个订单中可能重复出现(比如搞活动时,相同商品价格不一样,第一个有优惠)
|
||||||
|
|||||||
25
business/util/Contain.go
Normal file
25
business/util/Contain.go
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
package util
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"reflect"
|
||||||
|
)
|
||||||
|
|
||||||
|
// 判断obj是否在target中,target支持的类型arrary,slice,map
|
||||||
|
func Contain(obj interface{}, target interface{}) (bool, error) {
|
||||||
|
targetValue := reflect.ValueOf(target)
|
||||||
|
switch reflect.TypeOf(target).Kind() {
|
||||||
|
case reflect.Slice, reflect.Array:
|
||||||
|
for i := 0; i < targetValue.Len(); i++ {
|
||||||
|
if targetValue.Index(i).Interface() == obj {
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case reflect.Map:
|
||||||
|
if targetValue.MapIndex(reflect.ValueOf(obj)).IsValid() {
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false, errors.New("not in array")
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user