访问京东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/model"
|
||||
"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/api"
|
||||
"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) {
|
||||
result, err := api.JdAPI.QuerySingleOrder(orderID)
|
||||
bussResult, bussErr := api.JdAPI.QueryOassBussMoney(orderID)
|
||||
// globals.SugarLogger.Info(result)
|
||||
if err == nil {
|
||||
//todo 将API获取的信息填入新字段里
|
||||
if err == nil && bussErr == nil {
|
||||
order = &model.GoodsOrder{
|
||||
VendorOrderID: orderID,
|
||||
VendorID: model.VendorIDJD,
|
||||
@@ -91,6 +94,7 @@ func (c *OrderController) GetOrder(orderID string) (order *model.GoodsOrder, err
|
||||
ActualPayPrice: utils.MustInterface2Int64(result["orderBuyerPayableMoney"]),
|
||||
Skus: []*model.OrderSku{},
|
||||
}
|
||||
|
||||
order.Status = c.GetStatusFromVendorStatus(order.VendorStatus)
|
||||
businessTage := utils.Interface2String(result["businessTag"])
|
||||
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
|
||||
}
|
||||
}
|
||||
setOrederDetailFee(bussResult, result, order)
|
||||
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) {
|
||||
order, err := c.GetOrder(msg.BillID)
|
||||
|
||||
@@ -123,3 +123,12 @@ const (
|
||||
BusinessTypeImmediate = 1
|
||||
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)"`
|
||||
StatusTime time.Time `orm:"type(datetime)"` // last status time
|
||||
ModelTimeInfo
|
||||
OriginalData string `orm:"type(text)"`
|
||||
Skus []*OrderSku `orm:"-"`
|
||||
OriginalData string `orm:"type(text)"`
|
||||
Skus []*OrderSku `orm:"-"`
|
||||
SkuTotalPmFee int64 //门店商品促销总支出
|
||||
OrderPmFee int64 //门店订单促销支出
|
||||
SkuTotalPmSubsidy int64 //平台商品促销总补贴
|
||||
OrderPmSubsidy int64 //平台订单促销补贴
|
||||
BoxFee int64 //餐盒费
|
||||
PlatformFeeRate int16 //平台费
|
||||
BillStoreFreightFee int64 //需要回调,门店所承担的运费
|
||||
}
|
||||
|
||||
func (o *GoodsOrder) TableUnique() [][]string {
|
||||
@@ -69,6 +76,8 @@ type OrderSku struct {
|
||||
SkuType int // 当前如果为gift就为1,否则缺省为0
|
||||
PromotionType int // todo 当前是用于记录京东的PromotionType(生成jxorder用),没有做转换
|
||||
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