Files
baseapi/platformapi/mtwmapi/act_copy.go
邹宗楠 ad5f763b56 1
2024-05-24 09:49:14 +08:00

447 lines
13 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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折活动的基本信息。 actType0-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