447 lines
13 KiB
Go
447 lines
13 KiB
Go
package mtwmapi
|
||
|
||
import (
|
||
"encoding/json"
|
||
"git.rosy.net.cn/baseapi/utils"
|
||
)
|
||
|
||
//#region 买赠活动 (未测试,暂无门店有次活动)
|
||
|
||
// BatchQueryBuyGiftsAll 批量查询门店买赠活动
|
||
func (a *API) BatchQueryBuyGiftsAll(appPoiCode string) ([]*BatchQueryBuyGiftsAll, error) {
|
||
params := map[string]interface{}{
|
||
KeyAppPoiCode: appPoiCode,
|
||
"offset": 0,
|
||
"limit": 200,
|
||
}
|
||
i := 0
|
||
|
||
buyGifts := make([]*BatchQueryBuyGiftsAll, 0, 0)
|
||
|
||
for {
|
||
params["offset"] = i
|
||
result, err := a.AccessAPI2("act/buygifts/list", true, params, "data", "")
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
buyGift := make([]*BatchQueryBuyGiftsAll, 0, 0)
|
||
resultStr, err := json.Marshal(result)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
if err = json.Unmarshal([]byte(resultStr), &buyGift); err != nil {
|
||
return nil, err
|
||
}
|
||
buyGifts = append(buyGifts, buyGift...)
|
||
if len(buyGift) < 200 {
|
||
break
|
||
}
|
||
i++
|
||
}
|
||
|
||
return buyGifts, nil
|
||
}
|
||
|
||
// BatchCreateBuyGifts 批量创建满赠活动,最大每组200数据
|
||
func (a *API) BatchCreateBuyGifts(appPoiCode string, param []*BatchCreateBuyGiftsParam) (interface{}, error) {
|
||
params := map[string]interface{}{
|
||
KeyAppPoiCode: appPoiCode,
|
||
"act_data": string(utils.MustMarshal(param)),
|
||
}
|
||
|
||
result, err := a.AccessAPI2("act/buygifts/batchsave", false, params, resultKeySuccessMsg, "")
|
||
|
||
return result, err
|
||
}
|
||
|
||
//#endregion
|
||
|
||
//#region 满减(商品满减/门店满减)活动
|
||
|
||
// BatchGetDiscountList 批量获取门店满减活动列表 actType = 0 ,暂时不支持actType = 1 的返回,因为返回值里面没有商品详情
|
||
func (a *API) BatchGetDiscountList(appPoiCode string, actType int) ([]*GetDiscountList, error) {
|
||
result, err := a.AccessAPI2("act/full/discount/list", false, map[string]interface{}{KeyAppPoiCode: appPoiCode, "act_type": actType}, "success_list", "")
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
discountList := make([]*GetDiscountList, 0, 0)
|
||
byteData, err := json.Marshal(result)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
if err = json.Unmarshal(byteData, &discountList); err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
return discountList, nil
|
||
}
|
||
|
||
// BatchCreateDiscountList 批量创建满减活动
|
||
// 下面接口暂时不支持actType = 1 的活动创建因为上面接口查询返回时没有返回商品ID的详细信息,没返回actDetails 的信息所以无法创建
|
||
func (a *API) BatchCreateDiscountList(param *CreateDiscountList) (*CreateDiscountResult, error) {
|
||
|
||
result, err := a.AccessAPI2("act/full/discount/batchsave", false, utils.Struct2Map(param, "", false), "", "")
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
createDiscountResult := &CreateDiscountResult{}
|
||
byteData, err := json.Marshal(result)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
if err = json.Unmarshal(byteData, &createDiscountResult); err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
return createDiscountResult, nil
|
||
}
|
||
|
||
//#endregion
|
||
|
||
//#region 运费满减活动,只能获取阶梯运费活动,不能获取立减活动,且两个活动互斥,同一时间段只生效一个活动
|
||
|
||
// BatchGetShippingFee 查询运费满减活动配置
|
||
func (a *API) BatchGetShippingFee(appPoiCode string) (*ShippingFeeResult, error) {
|
||
result, err := a.AccessAPI2("act/full/discount/shippingfee/list", true, map[string]interface{}{KeyAppPoiCode: appPoiCode}, "", "")
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
shippingFee := &ShippingFeeResult{}
|
||
byteData, err := json.Marshal(result)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
if err = json.Unmarshal(byteData, &shippingFee); err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
return shippingFee, nil
|
||
}
|
||
|
||
// BatchCreateShippingFee 创建运费满减活动
|
||
func (a *API) BatchCreateShippingFee(AppPoiCode string, param []*ShippingFeeBatchCreateActData) (*ShippingResultData, error) {
|
||
byteData, err := json.Marshal(param)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
paramMap := map[string]interface{}{
|
||
AppPoiCode: AppPoiCode,
|
||
"act_data": string(byteData),
|
||
}
|
||
result, err := a.AccessAPI2("act/full/discount/shippingfee/batchsave", false, paramMap, "", "")
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
shippingFeeCreate := &ShippingResultData{}
|
||
byteResult, err := json.Marshal(result)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
if err = json.Unmarshal(byteResult, &shippingFeeCreate); err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
return shippingFeeCreate, nil
|
||
}
|
||
|
||
//#endregion
|
||
|
||
//#region 获取门店折扣爆品活动
|
||
|
||
// QueryProductsAll 获取门店折扣爆品活动列表
|
||
func (a *API) QueryProductsAll(poiCode string, actType int) (actList []*GetStoreRetailDiscountActData, err error) {
|
||
return a.RetailDiscountList(poiCode, actType)
|
||
}
|
||
|
||
// CreateProductsAct 创建门店折扣爆品活动
|
||
func (a *API) CreateProductsAct(poiCode string, actType int, actData []*RetailDiscountActData) (actResult []*RetailDiscountActResult, failedList []*AppFoodResult, err error) {
|
||
return a.RetailDiscountBatchSave2(poiCode, actType, actData)
|
||
}
|
||
|
||
//##endregion
|
||
|
||
//#region 查询商家券(店内发券)活动
|
||
|
||
// QueryStoreCoupon 查询商家券店内发券
|
||
func (a *API) QueryStoreCoupon(poiCode string) (couponActList []*CouponActInfo, err error) {
|
||
couponActList = make([]*CouponActInfo, 0, 0)
|
||
pageNum := 1
|
||
pageSize := 20
|
||
actType := 1
|
||
for {
|
||
actList, err := a.InStoreCouponList(poiCode, actType, pageNum, pageSize)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
if len(actList) != 0 {
|
||
couponActList = append(couponActList, actList...)
|
||
}
|
||
|
||
if len(actList) < pageSize && actType == 1 {
|
||
pageNum = 1
|
||
actType = 2
|
||
} else if len(actList) < pageSize && actType == 2 {
|
||
break
|
||
} else {
|
||
pageNum += 1
|
||
}
|
||
}
|
||
// 暂时只查询单店商家券
|
||
return couponActList, nil
|
||
}
|
||
|
||
// CreateStoreCouponBatch 批量新增单店店内商家券
|
||
func (a *API) CreateStoreCouponBatch(poiCode string, limitTime *LimitTime, couponInfoList []*CouponInfo) (couponResultList []*CouponResult, err error) {
|
||
return a.InStoreCouponBatchSave(poiCode, limitTime, couponInfoList)
|
||
}
|
||
|
||
//#endregion
|
||
|
||
//#region X件优惠活动
|
||
|
||
// QueryBundlesAct 本接口用于商家查询门店内X元M件、X件Y折活动的基本信息。 actType,0-X元M件,2-X件Y折,不填默认为0(待上线)
|
||
func (a *API) QueryBundlesAct(poiCode string, actType int) ([]*BundlesSuccessListDetail, error) {
|
||
result, err := a.AccessAPI2("act/item/bundles/list", true, map[string]interface{}{KeyAppPoiCode: poiCode, "type": actType}, "success_list", "")
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
bundlesList := make([]*BundlesSuccessListDetail, 0, 0)
|
||
|
||
byteData, err := json.Marshal(result)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
if err = json.Unmarshal(byteData, &bundlesList); err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
return bundlesList, nil
|
||
}
|
||
|
||
func (a *API) QueryBundlesSku(appPoiCode string, actId string) ([]*BundlesSkuSuccessListDetail, error) {
|
||
result, err := a.AccessAPI2("act/item/bundles/foods/list", true, map[string]interface{}{KeyAppPoiCode: appPoiCode, "act_id": actId}, "success_list", "")
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
resultByte, err := json.Marshal(result)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
resultData := make([]*BundlesSkuSuccessListDetail, 0, 0)
|
||
|
||
if err = json.Unmarshal(resultByte, &resultData); err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
return resultData, nil
|
||
}
|
||
|
||
// CreateBundlesAct 创建X件优惠活动
|
||
func (a *API) CreateBundlesAct(poiCode string, param *CreateBundlesActParam) ([]*BundlesSuccessListDetail, error) {
|
||
paramByte, err := json.Marshal(param)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
result, err := a.AccessAPI2("act/item/bundles/save", true, map[string]interface{}{KeyAppPoiCode: poiCode, "act_data": string(paramByte)}, "success_list", "")
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
bundlesList := make([]*BundlesSuccessListDetail, 0, 0)
|
||
|
||
byteData, err := json.Marshal(result)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
if err = json.Unmarshal(byteData, &bundlesList); err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
return bundlesList, nil
|
||
}
|
||
|
||
//#endregion
|
||
|
||
//#region 加价购 [暂时不对接,获取不到商品的换购价格和库存]
|
||
|
||
// QueryStoreRepurchase 查询门店所有加价购活动信息
|
||
func (a *API) QueryStoreRepurchase(poiCode string) ([]*RepurchaseResult, error) {
|
||
result, err := a.AccessAPI2("act/markup/repurchase/list", true, map[string]interface{}{KeyAppPoiCode: poiCode}, "success_list", "")
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
repurchaseList := make([]*RepurchaseResult, 0, 0)
|
||
|
||
byteData, err := json.Marshal(result)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
if err = json.Unmarshal(byteData, &repurchaseList); err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
return repurchaseList, nil
|
||
}
|
||
|
||
// QueryStoreSkuAct 查询门店商品层次的活动
|
||
func (a *API) QueryStoreSkuAct() {
|
||
// act/markup/repurchase/main/food/list
|
||
}
|
||
|
||
// CreateStoreRepurchase 创建加价活动
|
||
func (a *API) CreateStoreRepurchase(poiCode string, param *RepurchaseCreate) ([]*RepurchaseCreateResult, error) {
|
||
result, err := a.AccessAPI2("act/markup/repurchase/batchsave", false, map[string]interface{}{KeyAppPoiCode: poiCode, "act_data": param}, "success_list", "")
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
byteResult, err := json.Marshal(result)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
data := make([]*RepurchaseCreateResult, 0, 0)
|
||
if err := json.Unmarshal(byteResult, &data); err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
return data, nil
|
||
}
|
||
|
||
//#endregion
|
||
|
||
//#region 商品券活动
|
||
|
||
// CreateCouponAct 创建门店商品券活动
|
||
func (a *API) CreateCouponAct(param *CreateCouponAct) ([]*CreateStoreCouponActResult, error) {
|
||
byteParam, err := json.Marshal(param)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
result, err := a.AccessAPI2("act/goods/coupon/save", false, map[string]interface{}{"goods_coupon_data": string(byteParam)}, "success_list", "")
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
resultData, err := json.Marshal(result)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
successList := make([]*CreateStoreCouponActResult, 0, 0)
|
||
if err := utils.UnmarshalUseNumber(resultData, &successList); err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
return successList, nil
|
||
}
|
||
|
||
// GetStoreCouponAct 获取门店商品券活动
|
||
func (a *API) GetStoreCouponAct(param *GetStoreCouponActParam) ([]*GetStoreCouponActSuccessList, error) {
|
||
paramMap := utils.Struct2Map(param, "", false)
|
||
result, err := a.AccessAPI2("act/goods/coupon/list", true, paramMap, "success_list", "")
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
data := make([]*GetStoreCouponActSuccessList, 0, 0)
|
||
for _, v := range result.([]interface{}) {
|
||
coupon := &GetStoreCouponActSuccessList{}
|
||
storeCouponAct, _ := json.Marshal(v)
|
||
if err = json.Unmarshal(storeCouponAct, coupon); err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
//if len(coupon.ActPriceCouponInfo) != 0 || coupon.ActPriceCouponInfo != nil {
|
||
// actPriceCouponInfoObj := make([]GetStoreCouponActSuccessListActPriceCouponInfo, 0, 0)
|
||
// for _, apci := range coupon.ActPriceCouponInfo {
|
||
// apciObj := GetStoreCouponActSuccessListActPriceCouponInfo{}
|
||
// if err = json.Unmarshal([]byte(apci), apciObj); err != nil {
|
||
// return nil, err
|
||
// }
|
||
// actPriceCouponInfoObj = append(actPriceCouponInfoObj, apciObj)
|
||
// }
|
||
// coupon.ActPriceCouponInfoObj = actPriceCouponInfoObj
|
||
//}
|
||
//if len(coupon.DiscountCouponInfo) != 0 || coupon.DiscountCouponInfo != nil {
|
||
// discountCouponInfo := make([]GetStoreCouponActSuccessListDiscountCouponInfo, 0, 0)
|
||
// for _, dci := range coupon.DiscountCouponInfo {
|
||
// dciObj := GetStoreCouponActSuccessListDiscountCouponInfo{}
|
||
// if err = json.Unmarshal([]byte(dci), dciObj); err != nil {
|
||
// return nil, err
|
||
// }
|
||
// discountCouponInfo = append(discountCouponInfo, dciObj)
|
||
// }
|
||
// coupon.DiscountCouponInfoObj = discountCouponInfo
|
||
//}
|
||
|
||
data = append(data, coupon)
|
||
}
|
||
|
||
return data, nil
|
||
}
|
||
|
||
// GetCouponActSkuList 批量查询商品券活动中的商品
|
||
func (a *API) GetCouponActSkuList(poiCode, actIds string) ([]*CouponActSkuListSuccessList, error) {
|
||
result, err := a.AccessAPI2("act/goods/coupon/goodslist", true, map[string]interface{}{"app_poi_code": poiCode, "act_ids": actIds}, "success_list", "")
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
successList := make([]*CouponActSkuListSuccessList, 0, 0)
|
||
resultByte, err := json.Marshal(result)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
if err = json.Unmarshal(resultByte, &successList); err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
return successList, nil
|
||
}
|
||
|
||
//#endregion
|
||
|
||
//#region 第N件优惠活动
|
||
|
||
// GetStoreNDiscount 获取门店第N件优惠活动
|
||
func (a *API) GetStoreNDiscount(poiCode string) ([]*GetStoreXDiscountSuccessList, error) {
|
||
result, err := a.AccessAPI2("act/nth/discount/info", true, map[string]interface{}{KeyAppPoiCode: poiCode}, "success_list", "")
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
data := make([]*GetStoreXDiscountSuccessList, 0, 0)
|
||
if err := json.Unmarshal([]byte(result.(string)), &data); err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
return data, nil
|
||
}
|
||
|
||
// CreateStoreNDiscount 创建门店地N件优惠活动
|
||
func (a *API) CreateStoreNDiscount(poiCode string, param *CreateStoreXDiscountParam) ([]*CreateStoreXDiscountResult, error) {
|
||
paramStr, err := json.Marshal(param)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
result, err := a.AccessAPI2("act/nth/discount/save", true, map[string]interface{}{KeyAppPoiCode: poiCode, "act_data": string(paramStr)}, "success_list", "")
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
return result.([]*CreateStoreXDiscountResult), nil
|
||
}
|
||
|
||
//#endregion
|