162 lines
6.9 KiB
Go
162 lines
6.9 KiB
Go
package jdapi
|
||
|
||
import (
|
||
"git.rosy.net.cn/baseapi/utils"
|
||
)
|
||
|
||
// 新版订单级促销
|
||
|
||
const (
|
||
OrderDiscountActivityTypeManJian = 1 // 满减
|
||
OrderDiscountActivityTypeHuanGou = 1202 // 换购
|
||
OrderDiscountActivityTypeManZeng = 1203 // 满赠
|
||
OrderDiscountActivityTypeManJianJian = 1206 // 满件减
|
||
OrderDiscountActivityTypeManJianZhe = 1207 // 满件折
|
||
OrderDiscountActivityTypeKunBang = 1208 // 捆绑
|
||
OrderDiscountActivityTypeMeiManJian = 2210 // 每满减
|
||
|
||
ParticipationModeAllSku = 1 // 全部商品维度
|
||
ParticipationModePartSku = 2 // 部分商品维度
|
||
)
|
||
|
||
type OrderDiscountGift struct {
|
||
SkuID string `json:"skuId"`
|
||
StockCount int `json:"stockCount"`
|
||
}
|
||
|
||
type OrderDiscountRuleRequest struct {
|
||
LowerLimitAmount int `json:"lowerLimitAmount,omitempty"`
|
||
DiscountAmount int `json:"discountAmount,omitempty"`
|
||
UpperLimitCount int `json:"upperLimitCount,omitempty"`
|
||
LowerLimitCount int `json:"lowerLimitCount,omitempty"`
|
||
DiscountRate float32 `json:"discountRate,omitempty"`
|
||
AddPrice int `json:"addPrice,omitempty"` // 分
|
||
GiftList []*OrderDiscountGift `json:"giftList,omitempty"`
|
||
LadderLimit int `json:"ladderLimit"`
|
||
}
|
||
|
||
type OrderDiscountActivity struct {
|
||
OutActivityID string `json:"outActivityId"` // 必须
|
||
PromName string `json:"promName"` // 必须
|
||
PromType int `json:"promType"` // 必须
|
||
BeginTime string `json:"beginTime"` // 必须
|
||
EndTime string `json:"endTime"` // 必须
|
||
ParticipationMode int `json:"participationMode"` // 必须
|
||
OutStationNos []string `json:"outStationNos,omitempty"`
|
||
StationNos []string `json:"stationNos,omitempty"`
|
||
OutSkuIDs []string `json:"outSkuIds,omitempty"`
|
||
SkuIDs []string `json:"skuIds,omitempty"`
|
||
LimitOrderTotalNumber int `json:"limitOrderTotalNumber"` // 必须, 活动限购单量(0为不限,不超过10万)
|
||
LimitUserTotalNumber int `json:"limitUserTotalNumber,omitempty"` // 用户限购单量(0为不限,不超过100,仅满减和每满减有效)
|
||
Display string `json:"display"` // 必须
|
||
RuleRequestList []*OrderDiscountRuleRequest `json:"ruleRequestList,omitempty"`
|
||
}
|
||
|
||
type ActivityOpResultInfo struct {
|
||
ActivityID int64 `json:"activityID"`
|
||
PromName string `json:"promName"`
|
||
StationNo int64 `json:"stationNo"`
|
||
SkuID int64 `json:"skuID"`
|
||
OutActivityID string `json:"outActivityId"`
|
||
OutSkuID string `json:"outSkuId"`
|
||
OutStationNo string `json:"outStationNo"`
|
||
}
|
||
|
||
type ActivityOpQueryResultResponse struct {
|
||
SubCode string `json:"subCode"`
|
||
SubMsg string `json:"subMsg"`
|
||
ResultList []*ActivityOpResultInfo `json:"resultList"`
|
||
}
|
||
|
||
type ActivityOpQueryInfoResponse struct {
|
||
ActivityID int64 `json:"activityID"`
|
||
OutActivityID string `json:"outActivityId"`
|
||
PromotionName string `json:"promotionName"`
|
||
BeginDate *utils.JavaDate `json:"beginDate"`
|
||
EndDate *utils.JavaDate `json:"endDate"`
|
||
Awords string `json:"awords"`
|
||
State int `json:"state"`
|
||
OrderLadder string `json:"orderLadder"`
|
||
StationList []struct {
|
||
OrgName string `json:"orgName"`
|
||
StationNo int64 `json:"stationNo"`
|
||
OutStationNo string `json:"outStationNo"`
|
||
StationName string `json:"stationName"`
|
||
} `json:"stationList"`
|
||
SkuList []struct {
|
||
OrgName string `json:"orgName"`
|
||
SkuID int64 `json:"skuId"`
|
||
OutSkuID string `json:"outSkuId"`
|
||
SkuName string `json:"skuName"`
|
||
} `json:"skuList"`
|
||
LadderList []struct {
|
||
BenefitMaxCount int `json:"benefitMaxCount"`
|
||
DiscountAmount int `json:"discountAmount"`
|
||
DiscountRate float32 `json:"discountRate"`
|
||
LowMoney int `json:"lowMoney"`
|
||
LowerLimitCount int `json:"lowerLimitCount"`
|
||
OpGiftSkuList []struct {
|
||
OrgName string `json:"orgName"`
|
||
SkuID int64 `json:"skuId"`
|
||
OutSkuID string `json:"outSkuId"`
|
||
SkuName string `json:"skuName"`
|
||
StockCount int `json:"stockCount"`
|
||
} `json:"opGiftSkuList"`
|
||
OrderLadder string `json:"orderLadder"`
|
||
} `json:"ladderList"`
|
||
}
|
||
|
||
// 订单级促销活动提交接口
|
||
// https://openo2o.jddj.com/staticnew/widgets/resources.html?groupid=211&apiid=cf98af94d4124ca287af6cfe48f0f3aa
|
||
func (a *API) OrderDiscountSubmitActivity(actInfo *OrderDiscountActivity) (activityID int64, err error) {
|
||
result, err := a.AccessAPINoPage("orderdiscount/submitActivity", utils.Struct2FlatMap(actInfo), nil, nil, nil)
|
||
if err == nil {
|
||
return utils.MustInterface2Int64((result.(map[string]interface{}))["activityId"]), nil
|
||
}
|
||
return 0, err
|
||
}
|
||
|
||
// 订单级促销活动查询活动提交处理结果接口
|
||
// https://openo2o.jddj.com/staticnew/widgets/resources.html?groupid=211&apiid=b04e5426948349a78db1c5c9585d8df7
|
||
func (a *API) OrderDiscountQuerySubmitActivityResult(activityID int64) (response *ActivityOpQueryResultResponse, err error) {
|
||
result, err := a.AccessAPINoPage("orderdiscount/querySubmitActivityResult", map[string]interface{}{
|
||
"activityId": activityID,
|
||
"operator": utils.APIPin,
|
||
"traceId": utils.GetUUID(),
|
||
}, nil, nil, genNoPageResultParser("code", "detail", "result", "0"))
|
||
if err == nil {
|
||
err = utils.Map2StructByJson(result.([]interface{})[0], &response, true)
|
||
}
|
||
return response, err
|
||
}
|
||
|
||
// 订单级促销活动查询促销详情接口
|
||
// https://openo2o.jddj.com/staticnew/widgets/resources.html?groupid=211&apiid=116d7dfe0b4e4122be300ce26b4e5381
|
||
func (a *API) OrderDiscountQueryActivityInfo(activityID int64) (response *ActivityOpQueryInfoResponse, err error) {
|
||
result, err := a.AccessAPINoPage("orderdiscount/queryActivityInfo", map[string]interface{}{
|
||
"activityId": activityID,
|
||
"sourceFrom": 3,
|
||
"operator": utils.APIPin,
|
||
"traceId": "",
|
||
"version": "",
|
||
}, nil, nil, genNoPageResultParser("code", "detail", "result", "0"))
|
||
if err == nil {
|
||
err = utils.Map2StructByJson(result, &response, true)
|
||
}
|
||
return response, err
|
||
}
|
||
|
||
// 订单级促销活动取消接口
|
||
// https://openo2o.jddj.com/staticnew/widgets/resources.html?groupid=211&apiid=42509fdfeec14105a516b07b774a3055
|
||
func (a *API) OrderDiscountCancelActivity(activityID int64, operator, traceID string) (err error) {
|
||
if traceID == "" {
|
||
traceID = utils.GetUUID()
|
||
}
|
||
_, err = a.AccessAPINoPage("orderdiscount/cancelActivity", map[string]interface{}{
|
||
"activityId": activityID,
|
||
"operator": utils.GetAPIOperator(operator),
|
||
"traceId": traceID,
|
||
}, nil, nil, nil)
|
||
return err
|
||
}
|