diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index dad4f684a..e1ff3e4ca 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -4431,7 +4431,7 @@ func RefreshTiktokShopToken(ctx *jxcontext.Context) (err error) { globals.SugarLogger.Debugf("定时任务更新抖店店铺token错误:%s,%s", utils.Format4Output(v, false), err.Error()) continue } - if access.ExpiresIn-time.Now().Unix() > 24*60*60 { + if access.ExpiresIn-time.Now().Unix() > 48*60*60 { continue } api.SetToken(access.AccessToken) diff --git a/business/model/dao/store.go b/business/model/dao/store.go index f6eaf514b..216895dd1 100644 --- a/business/model/dao/store.go +++ b/business/model/dao/store.go @@ -1564,20 +1564,28 @@ func GetStoreBrandInfos(storeID int) (date *BrandInfos, err error) { return detail, err } +var FreightTemplateMap = make(map[int]*model.FreightTemplate) + // 查询FreightTemplate func QueryStoreBindInfo(storeID int) (*model.FreightTemplate, error) { + if storeID == model.NO { + return nil, errors.New("storeId 不能为0") + } + if _, ok := FreightTemplateMap[storeID]; ok { + return FreightTemplateMap[storeID], nil + } + var ( sqlParams []interface{} bindInfo *model.FreightTemplate ) - sql := "SELECT a.store_id,a.vendor_store_id,a.template_id,a.warehouse_id,a.fence_id,a.trade_limit_id FROM freight_template a " - if storeID != 0 { - sql += "WHERE store_id = ? " - sqlParams = append(sqlParams, storeID) - } - if err := GetRow(GetDB(), &bindInfo, sql, sqlParams); err != nil { + sql := "SELECT a.* FROM freight_template a " + sql += "WHERE a.store_id = ? " + sqlParams = append(sqlParams, storeID) + if err := GetRow(GetDB(), &bindInfo, sql, sqlParams...); err != nil { return nil, err } + FreightTemplateMap[storeID] = bindInfo return bindInfo, nil } diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index b0a9042c8..31b10cc6c 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -120,7 +120,8 @@ func GetSkuDetailList(api *tiktokShop.API, param *MainSku) (*product_listV2_resp // 抖店的商品只管创建,创建接口会返回成功,但是审核的时候不一定成功.当前系统无法判定此商品是否已经创建过了! func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeID int, vendorStoreID string, storeSkuList []*dao.StoreSkuSyncInfo, isCreate bool) (failedList []*partner.StoreSkuInfoWithErr, err error) { var syncType string - storeDetail, _ := dao.GetStoreDetail(dao.GetDB(), storeID, model.VendorIDDD, "") + db := dao.GetDB() + storeDetail, _ := dao.GetStoreDetail(db, storeID, model.VendorIDDD, "") api := getAPI(storeDetail.VendorOrgCode, storeID, vendorStoreID) if isCreate { syncType = "创建商品" @@ -204,7 +205,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI // 根据本地商品id获取线上商品是否存在,存在则只创建子商品 var tiktokResultProductId int64 = 0 // 获取本地存储映射关系 - localThing, err := dao.GetThingToTiktokMapList(dao.GetDB(), model.VendorIDDD, int64(storeSku.SkuID)) + localThing, err := dao.GetThingToTiktokMapList(db, model.VendorIDDD, int64(storeSku.SkuID)) if len(localThing) == 0 { // 线上不存在创建 tiktokResult, err := api.CreateStoreCommodity(param) // 创建主商品 if err != nil { @@ -227,8 +228,8 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI } // 创建子商品 - temp, err := dao.QueryStoreBindInfo(storeDetail.ID) - if err != nil || temp == nil || temp.TemplateID == 0 { + temp, err := dao.QueryStoreBindInfo(storeDetail.Store.ID) + if err != nil || temp == nil || temp.ID == 0 { // 运费模板 param.FreightId, err = GetDeliveryTemp(api, vendorStoreID, storeDetail) if err != nil { @@ -248,11 +249,32 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI FenceID: "", TradeLimitID: param.SaleLimitId, } - dao.WrapAddIDCULDEntity(freightTemplate, "jxAdmin") - err = dao.CreateEntity(dao.GetDB(), freightTemplate) + err = dao.CreateEntity(db, freightTemplate) } else { - param.FreightId = temp.TemplateID - param.SaleLimitId = temp.TradeLimitID + if temp.TemplateID != 0 { + param.FreightId = temp.TemplateID + } else { + // 运费模板 + param.FreightId, err = GetDeliveryTemp(api, vendorStoreID, storeDetail) + if err != nil { + return nil, err + } + temp.TemplateID = param.FreightId + _, err = dao.UpdateEntity(db, temp, "TemplateID") + dao.FreightTemplateMap[temp.StoreID] = temp + } + if temp.TradeLimitID != 0 { + param.SaleLimitId = temp.TradeLimitID + } else { + // 获取门店限售模板 + param.SaleLimitId, err = CreateSaleTemp(utils.Str2Int64(vendorStoreID), api) + if err != nil { + return nil, err + } + temp.TradeLimitID = param.SaleLimitId + _, err = dao.UpdateEntity(db, temp, "TradeLimitID") + dao.FreightTemplateMap[temp.StoreID] = temp + } } param.MainProductId = tiktokResultProductId @@ -479,7 +501,6 @@ func GetDeliveryTemp(api *tiktokShop.API, vendorStoreID string, storeDetail *dao return 0, err } freightId = temp.TemplateId - dao.InsertIntoFreightTemplate(storeDetail.Store.ID, storeDetail.VendorStoreID, freightId, 0, 0, 0) } globals.SugarLogger.Debugf("freightId =last %d", freightId) return freightId, nil diff --git a/controllers/tiktok_order.go b/controllers/tiktok_order.go index 2a1eecdcb..eb7b7dfac 100644 --- a/controllers/tiktok_order.go +++ b/controllers/tiktok_order.go @@ -2,7 +2,9 @@ package controllers import ( "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api" + "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/partner/purchase/tiktok_store" + "git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals/api" "github.com/astaxie/beego/server/web" "strings" @@ -28,12 +30,27 @@ func (t *TiktokController) CallbackTiktokOrderMsg() { } // 2.参数解析 - orderStatus, resp := api.TiktokStore.CreateOrderCallback(byteList) + orderStatus, storeMap, resp := api.TiktokStore.CreateOrderCallback(byteList) if resp.Code != 0 { t.Data["json"] = resp t.ServeJSON() return } + globals.SugarLogger.Debugf("storeMap %s", utils.Format4Output(storeMap, false)) + // 判断订单来源(门店所属菜市,果园,其他方) + //for k, _ := range storeMap { + // vendorStoreId := utils.Int64ToStr(k) + // storeDetail, err := dao.GetStoreDetailByVendorStoreID(dao.GetDB(), vendorStoreId, model.VendorIDDD, "") + // if err != nil { + // globals.SugarLogger.Errorf("门店信息获取失败: %s", err) + // continue + // } + // if storeDetail != nil { + // continue + // } else { + // // 进入这里面就可能是果园或者其他三放的订单了,将当前信息推送过去 + // } + //} for k, v := range orderStatus { for _, callback := range v {