This commit is contained in:
richboo111
2022-09-30 17:09:56 +08:00
parent e7f1101b9c
commit 13b7bd1c62
10 changed files with 698 additions and 103 deletions

View File

@@ -14,12 +14,13 @@ const (
VendorIDMTWM = 1
VendorIDELM = 2
VendorIDEBAI = 3
VendorIDYB = 4 //银豹
VendorIDJDShop = 5 //京东商城
VendorIDDouDian = 6 //抖店
VendorIDJX = 9 // 这是一个假的京西VendorID
VendorIDGD = 10
VendorIDYB = 4 //银豹
VendorIDJDShop = 5 //京东商城
VendorIDWSC = 11 // 微盟微商城
VendorIDPurchaseEnd = 11
VendorIDJX = 9 // 这是一个假的京西VendorID
VendorGoMei = 12 // 国美
VendorIDTT = 13 // 抖音平台小程序

View File

@@ -304,10 +304,6 @@ var (
type Store struct {
ModelIDCULD
RowID int64 `json:"rowID"` //标识这条数据(抖店用)
//StoreCode string `json:"storeCode"` //门店编码(抖店用)
//OpenTime map[int64]string `json:"openTime"` //营业时间(抖店用)
OriginalName string `orm:"-" json:"originalName"`
Name string `orm:"size(255)" json:"name"`
CityCode int `orm:"default(0);null" json:"cityCode"` // todo ?
@@ -1001,3 +997,18 @@ func (*BrandCategoryMap) TableUnique() [][]string {
[]string{"BrandID", "CategoryID", "DeletedAt"},
}
}
// 抖店 创建运费模板映射关系
type FreightTemplate struct {
ModelIDCULD
StoreID int64 `orm:"column(store_id)" json:"storeID"` //京西本地门店ID
VendorStoreID int64 `orm:"column(vendor_store_id)" json:"vendorStoreID"` //抖店平台门店ID
TemplateID int64 `orm:"column(template_id)" json:"templateID"` //运费模板ID
TemplateDetail string `orm:"column(template_detail)" json:"templateDetail"` //json转化的模板信息
}
func (*FreightTemplate) TableUnique() [][]string {
return [][]string{
[]string{"StoreID", "TemplateID", "VendorStoreID"},
}
}

View File

@@ -1,6 +1,7 @@
package doudian
import (
"git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
"git.rosy.net.cn/jx-callback/business/model"
@@ -19,6 +20,25 @@ type PurchaseHandler struct {
putils.DefSingleStorePlatform
}
func init() {
if api.DouDianApi != nil {
CurPurchaseHandler = New()
partner.RegisterPurchasePlatform(CurPurchaseHandler)
}
}
func New() (obj *PurchaseHandler) {
obj = new(PurchaseHandler)
obj.ISingleStoreStoreSkuHandler = obj
return obj
}
func bizStatusJX2DouDian(status int) (onLine int) {
if status == model.StoreStatusDisabled || status == model.StoreStatusClosed {
return tiktok_api.StoreStatusOffline
}
return tiktok_api.StoreStatusOnline
}
func (P *PurchaseHandler) SyncAct(ctx *jxcontext.Context, parentTask tasksch.ITask, act *model.Act2, actOrderRules []*model.ActOrderRule, actStoreSkuList []*model.ActStoreSku2) (err error) {
//TODO implement me
panic("implement me")
@@ -184,49 +204,17 @@ func (P *PurchaseHandler) GetVendorCategories(ctx *jxcontext.Context) (vendorCat
panic("implement me")
}
func (P *PurchaseHandler) ReadStore(ctx *jxcontext.Context, vendorOrgCode, vendorStoreID, vendorStoreName string) (store *dao.StoreDetail, err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) DeleteStore(db *dao.DaoDB, storeID int, userName string) (err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) GetStoreStatus(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string) (storeStatus int, err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) UpdateStoreCustomID(ctx *jxcontext.Context, vendorOrgCode, vendorStoreID string, storeID int64) (err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) RefreshAllStoresID(ctx *jxcontext.Context, parentTask tasksch.ITask, isAsync bool) (hint string, err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) UploadImg(ctx *jxcontext.Context, vendorOrgCode, imgURL string, imgData []byte, imgName string, imgType int) (imgHint string, err error) {
//TODO implement me
panic("implement me")
}
func (P *PurchaseHandler) UpdateStoreLineStatus(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, lineStatus int) (err error) {
//TODO implement me
panic("implement me")
}
func init() {
if api.DouDianApi != nil {
CurPurchaseHandler = New()
partner.RegisterPurchasePlatform(CurPurchaseHandler)
}
}
func New() (obj *PurchaseHandler) {
obj = new(PurchaseHandler)
obj.ISingleStoreStoreSkuHandler = obj
return obj
}

View File

@@ -1,59 +1,427 @@
package doudian
import (
"errors"
"fmt"
address_create_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/address_create/request"
address_list_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/address_list/request"
address_list_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/address_list/response"
freightTemplate_create_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/freightTemplate_create/request"
shop_batchCreateStore_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_batchCreateStore/request"
shop_bindStoreFreight_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_bindStoreFreight/request"
shop_bindStoreSaleLimit_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_bindStoreSaleLimit/request"
shop_editStore_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_editStore/request"
shop_getStoreDetail_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_getStoreDetail/request"
shop_getStoreList_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_getStoreList/request"
shop_storeSuspend_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_storeSuspend/request"
shop_unsuspendStore_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_unsuspendStore/request"
trade_createTradeLimitTemplate_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/trade_createTradeLimitTemplate/request"
"git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/baseapi/utils/errlist"
"git.rosy.net.cn/jx-callback/business/jxstore/event"
"git.rosy.net.cn/jx-callback/business/jxutils"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/globals"
"git.rosy.net.cn/jx-callback/globals/api"
)
func splicingTimeToDoudian(openTime1, closeTime1, openTime2, closeTime2 int16) (timeList string) {
//700 1200 -> 7:00-12:00
timeStr := ""
if openTime1 != 0 && closeTime1 != 0 {
tOpenTime1 := utils.Int64ToStr(int64(openTime1))
len1 := len(tOpenTime1) - 2
s1 := tOpenTime1[:len1] + ":" + tOpenTime1[len1+1:]
tCloseTime1 := utils.Int64ToStr(int64(closeTime1))
len2 := len(tCloseTime1) - 2
s2 := tCloseTime1[:len2] + ":" + tCloseTime1[len2+1:]
timeStr += s1 + "-" + s2
if openTime2 != 0 && closeTime2 != 0 {
tOpenTime2 := utils.Int64ToStr(int64(openTime2))
len3 := len(tOpenTime2) - 2
s3 := tOpenTime2[:len3] + ":" + tOpenTime2[len3+1:]
tCloseTime2 := utils.Int64ToStr(int64(closeTime2))
len4 := len(tCloseTime2) - 2
s4 := tCloseTime2[:len4] + ":" + tCloseTime2[len4+1:]
timeStr += " " + s3 + "-" + s4
}
}
return timeStr
}
// shop/batchCreateStore 批量创建门店
func (P *PurchaseHandler) CreateStore2(db *dao.DaoDB, storeID int, userName string, params map[string]interface{}, storeDetail *dao.StoreDetail) (vendorStoreID string, err error) {
////ShopBatchCreateStoreParam:=[]*shop_batchCreateStore_request.ShopBatchCreateStoreParam{}
//var (
// storeIDs string
//)
////tempOpenTime := strings.Split(storeDetail.OpenTime, ",")
////m := make(map[int64]string)
////for _, i := range tempOpenTime {
//// parts := strings.Split(i, ":")
//// m[utils.Str2Int64(parts[0])] = parts[1]
////}
//lists := []shop_batchCreateStore_request.StoreListItem{}
//list := shop_batchCreateStore_request.StoreListItem{
// RowId: storeDetail.RowID,
// Name: storeDetail.Name,
// StoreCode: storeDetail.StoreCode,
// Longitude: utils.Float64ToStr(jxutils.IntCoordinate2Standard(storeDetail.Lng)),
// Latitude: utils.Float64ToStr(jxutils.IntCoordinate2Standard(storeDetail.Lat)),
// Province: storeDetail.ProvinceName,
// City: storeDetail.CityName,
// District: storeDetail.DistrictName,
// Address: storeDetail.Address,
// Contact: storeDetail.Tel1,
// OpenTime: &shop_batchCreateStore_request.OpenTime{
// DayMap: storeDetail.OpenTime,
// },
//}
//lists = append(lists, list)
//ShopBatchCreateStoreParam := &shop_batchCreateStore_request.ShopBatchCreateStoreParam{
// StoreList: lists,
//}
//if resp, err := api.DouDianApi.BatchCreateStore(ShopBatchCreateStoreParam); err != nil {
// return "", err
//} else {
// for _, v := range resp.ResultList {
// storeIDs += utils.Int64ToStr(v.Store.StoreId)
// }
// return storeIDs, nil
//}
return "", nil
var (
storeIDs string
lists []shop_batchCreateStore_request.StoreListItem
ShopBatchCreateStoreParam *shop_batchCreateStore_request.ShopBatchCreateStoreParam
)
timeStr := ""
if storeDetail.OpenTime1 == 0 || storeDetail.CloseTime1 == 0 {
return "", fmt.Errorf("营业时间必填")
} else {
timeStr = splicingTimeToDoudian(storeDetail.OpenTime1, storeDetail.CloseTime1, storeDetail.OpenTime2, storeDetail.CloseTime2)
}
m := make(map[int64]string)
for j := 1; j <= 7; j++ {
m[int64(j)] = timeStr
}
list := shop_batchCreateStore_request.StoreListItem{
RowId: 1,
Name: storeDetail.Name,
StoreCode: storeDetail.VendorStoreID,
Longitude: utils.Float64ToStr(jxutils.IntCoordinate2Standard(storeDetail.Lng)),
Latitude: utils.Float64ToStr(jxutils.IntCoordinate2Standard(storeDetail.Lat)),
Province: storeDetail.ProvinceName,
City: storeDetail.CityName,
District: storeDetail.DistrictName,
Address: storeDetail.Address,
Contact: storeDetail.Tel1,
OpenTime: &shop_batchCreateStore_request.OpenTime{
DayMap: m,
},
}
lists = append(lists, list)
ShopBatchCreateStoreParam = &shop_batchCreateStore_request.ShopBatchCreateStoreParam{
StoreList: lists,
}
if resp, err := api.DouDianApi.BatchCreateStore(ShopBatchCreateStoreParam); err != nil {
return "", err
} else {
for k, v := range resp.ResultList {
if k != len(resp.ResultList) {
storeIDs += utils.Int64ToStr(v.Store.StoreId) + ","
}
storeIDs += utils.Int64ToStr(v.Store.StoreId)
}
return storeIDs, nil
}
}
// shop/editStore 编辑门店信息 正向推送平台
func (P *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName string) (err error) {
globals.SugarLogger.Debugf("doudian Update storeID:%d, userName:%s", storeID, userName)
var (
storeInfo *dao.StoreDetail
name string
)
if db == nil {
db = dao.GetDB()
}
//doudianApi:=getapi
//storeDetail:=dao.GetStoreDetail(db,storeID,)
sqlStr := ` SELECT
t1.*,
t2.status, t2.vendor_store_id, t2.vendor_org_code,
IF(t1.updated_at > t2.updated_at, t1.last_operator, t2.last_operator) real_last_operator, t2.sync_status, t2.vendor_store_name
FROM store t1
LEFT JOIN store_map t2 ON t1.id = t2.store_id AND t2.vendor_id = ? AND (t2.deleted_at = ?)
WHERE t1.id = ?
ORDER BY t2.updated_at`
err = dao.GetRow(db, &storeInfo, sqlStr, model.VendorIDDouDian, utils.DefaultTimeValue, utils.Int2Str(storeID))
if err != nil {
return err
}
errList := errlist.New()
timeStr := ""
m := make(map[int64]string)
if storeInfo.OpenTime1 != 0 && storeInfo.CloseTime1 != 0 {
timeStr = splicingTimeToDoudian(storeInfo.OpenTime1, storeInfo.CloseTime1, storeInfo.OpenTime2, storeInfo.CloseTime2)
for j := 1; j <= 7; j++ {
m[int64(j)] = timeStr
}
}
vendorStoreID := &shop_getStoreDetail_request.ShopGetStoreDetailParam{
StoreId: utils.Str2Int64(storeInfo.VendorStoreID),
}
if globals.EnableDouDianStoreWrite {
remoteStoreInfo, err2 := api.DouDianApi.GetStoreDetail(vendorStoreID)
if err2 != nil {
return err2
}
if remoteStoreInfo.StoreDetail.Store.StoreId == 0 {
return fmt.Errorf("ID:%d 的门店不存在,请先创建", utils.Str2Int64(storeInfo.VendorStoreID))
}
mergedStoreStatus := jxutils.MergeStoreStatus(storeInfo.Status, storeInfo.VendorStatus)
name = remoteStoreInfo.StoreDetail.Store.Name
if storeInfo.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreName) != 0 {
if storeInfo.VendorStoreName != "" {
name = storeInfo.VendorStoreName
}
}
store := fmt.Sprintf("门店id:%d,门店名称:%s,第三方门店状态:%d,本地修改前门店状态%d,本地门店修改后状态:%d,第三方平台Id(抖店):%s", storeID, remoteStoreInfo.StoreDetail.Store.Name, remoteStoreInfo.StoreDetail.Store.State, storeInfo.Status, mergedStoreStatus, storeInfo.VendorOrgCode)
event.AddOperateEvent(jxcontext.AdminCtx, jxcontext.AdminCtx.GetTrackInfo(), store, "", "", 10, "UpdateStore")
params := &shop_editStore_request.ShopEditStoreParam{
StoreId: remoteStoreInfo.StoreDetail.Store.StoreId, //平台id不可修改
Name: name,
StoreCode: utils.Int2Str(storeInfo.ID), //自用编码即很本地storeID
Latitude: utils.Int2Str(storeInfo.Lat),
Longitude: utils.Int2Str(storeInfo.Lng),
Province: storeInfo.ProvinceName,
City: storeInfo.CityName,
District: storeInfo.DistrictName,
Address: storeInfo.Address,
Contact: storeInfo.Tel1,
OpenTime: &shop_editStore_request.OpenTime{
DayMap: m,
},
}
//修改店铺状态
if storeInfo.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreStatus) != 0 {
errList.AddErr(P.UpdateStoreStatus(jxcontext.AdminCtx, storeInfo.VendorOrgCode, storeID, storeInfo.VendorStoreID, mergedStoreStatus))
}
_, err3 := api.DouDianApi.EditStore(params)
if err3 != nil {
errList.AddErr(err3)
}
}
return err
}
// shop/storeSuspend 门店暂停营业
// shop/unsuspendStore 门店恢复营业
func (p *PurchaseHandler) UpdateStoreStatus(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, status int) (err error) {
isOnline := bizStatusJX2DouDian(status)
if globals.EnableDouDianStoreWrite {
if isOnline != tiktok_api.StoreStatusOnline { //暂停营业状态
unsuspendStoreID := &shop_unsuspendStore_request.ShopUnsuspendStoreParam{
StoreId: utils.Str2Int64(vendorStoreID),
}
_, err = api.DouDianApi.UnsuspendStore(unsuspendStoreID)
} else { //恢复营业
suspendStoreID := &shop_storeSuspend_request.ShopStoreSuspendParam{
StoreId: utils.Str2Int64(vendorStoreID),
}
getStoreID := &shop_getStoreDetail_request.ShopGetStoreDetailParam{
StoreId: utils.Str2Int64(vendorStoreID),
}
//平台上店铺状态
remoteStoreInfo, err2 := api.DouDianApi.GetStoreDetail(getStoreID)
if err2 != nil {
return err2
}
if remoteStoreInfo.StoreDetail.Store.SuspendType == tiktok_api.SuspendTypePlatformPenalty {
err = errors.New("门店因平台处罚暂停营业,不可主动修改营业状态")
} else {
_, err = api.DouDianApi.StoreSuspend(suspendStoreID)
}
}
}
return err
}
// /freightTemplate/create 创建运费模板
func (P *PurchaseHandler) CreateFreightTemplate(templateInfo freightTemplate_create_request.FreightTemplateCreateParam, storeID, vendorStoreID int64) error {
var (
db *dao.DaoDB
)
if templateInfo.Template.RuleType > 0 {
templateInfo.Template.CalculateType = tiktok_api.CalculateTypeNum
}
info := &freightTemplate_create_request.FreightTemplateCreateParam{
Template: templateInfo.Template,
Columns: templateInfo.Columns,
}
resp, err := api.DouDianApi.FreightTemplateCreate(info)
if err != nil {
return err
}
//创建成功后进行绑定
bindInfo := &shop_bindStoreFreight_request.ShopBindStoreFreightParam{
StoreId: vendorStoreID,
FreightId: resp.TemplateId,
}
_, err1 := api.DouDianApi.BindFreightTemplate(bindInfo)
if err != nil {
return err1
}
//并写入数据库
freightInfo := model.FreightTemplate{
StoreID: storeID,
VendorStoreID: vendorStoreID,
TemplateID: resp.TemplateId,
}
if err = dao.CreateEntity(db, freightInfo); err != nil {
return err
}
return nil
}
// /shop/bindStoreFreight 门店绑定运费模版
//门店绑定运费模版,运费模版必须属于门店关联的抖店,且门店与运费模版是一对一关系
func (P *PurchaseHandler) ShopBindStoreFreight(storeID, freightID int64) error {
param := &shop_bindStoreFreight_request.ShopBindStoreFreightParam{
StoreId: storeID,
FreightId: freightID,
}
_, err := api.DouDianApi.BindFreightTemplate(param)
if err != nil {
return err
}
return nil
}
// /address/create 创建店铺地址库(新建即绑定)
func (P *PurchaseHandler) CreateAddress(addressInfo address_create_request.AddressCreateParam) (addressID int64, err error) {
info := &address_create_request.AddressCreateParam{
Address: addressInfo.Address,
StoreId: addressInfo.StoreId,
}
resp, err := api.DouDianApi.AddressCreate(info)
if err != nil {
return 0, err
}
//添加进数据库page_shop
//获取门店信息
//storeID := &shop_getStoreDetail_request.ShopGetStoreDetailParam{
// StoreId: addressInfo.StoreId,
//}
//storeInfo, err1 := api.DouDianApi.GetStoreDetail(storeID)
//if err1 != nil {
// return 0, err1
//}
//createAddress := &model.PageShop{ //此表暂存门店售后地址库
// Name: storeInfo.StoreDetail.Store.Name,
// VendorID: model.VendorIDDouDian,
// VendorStoreID: utils.Int64ToStr(storeInfo.StoreDetail.Store.StoreId), //抖店平台ID
// OrgCode: storeInfo.StoreDetail.Store.StoreCode, //暂时用来存放京西平台门店ID
// VendorStatus: utils.Int64ToStr(storeInfo.StoreDetail.Store.State),
// Status: 0,
// CityCode: utils.Str2Int(storeInfo.StoreDetail.Store.CityCode),
// DistrictCode: utils.Str2Int(storeInfo.StoreDetail.Store.DistrictCode),
// Address: storeInfo.StoreDetail.Store.Address,
// Lng: utils.Str2Float64(storeInfo.StoreDetail.Store.Longitude),
// Lat: utils.Str2Float64(storeInfo.StoreDetail.Store.Latitude),
// Tel1: storeInfo.StoreDetail.Store.Contact,
//}
//if err = dao.CreateEntity(dao.GetDB(), createAddress); err != nil {
// return 0, err
//}
return resp.AddressId, nil
}
// /address/list 获取售后地址列表接口
//分页获取商家地址列表
func (P *PurchaseHandler) GetAddressList(param *address_list_request.AddressListParam) (*address_list_response.AddressListData, error) {
//不传入ID则是获取所有门店售后地址列表
info := &address_list_request.AddressListParam{
PageSize: 10,
PageNo: 1,
OrderBy: param.OrderBy,
OrderField: param.OrderField,
}
if param.StoreId != 0 {
info.StoreId = param.StoreId
}
listInfo, err := api.DouDianApi.GetAddressList(info)
if err != nil {
return nil, err
}
return listInfo, nil
}
// /trade/createTradeLimitTemplate 创建限售模板
func (P *PurchaseHandler) CreateTradeLimitTemplate(template trade_createTradeLimitTemplate_request.TradeCreateTradeLimitTemplateParam) (tradeLimitID int64, err error) {
info := &trade_createTradeLimitTemplate_request.TradeCreateTradeLimitTemplateParam{
StoreId: template.StoreId,
TradeLimitRuleRequestList: template.TradeLimitRuleRequestList,
}
resp, err := api.DouDianApi.CreateTradeLimitTemplate(info)
if err != nil {
return 0, err
}
return resp.TradeLimitId, nil
}
// /shop/bindStoreSaleLimit 门店绑定限售模板
func (P *PurchaseHandler) BindStoreSaleLimit(storeID, saleLimitTemplateID int64) error {
info := &shop_bindStoreSaleLimit_request.ShopBindStoreSaleLimitParam{
StoreId: storeID,
SaleLimitId: saleLimitTemplateID,
}
if _, err := api.DouDianApi.BindStoreSaleLimit(info); err != nil {
return err
}
return nil
}
func (P *PurchaseHandler) UpdateStoreOpTime(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, opTimeList []int16) (err error) {
t1 := opTimeList[0]
t2 := opTimeList[1]
t3 := opTimeList[2]
t4 := opTimeList[4]
timeStr := splicingTimeToDoudian(t1, t2, t3, t4)
m := make(map[int64]string)
for j := 1; j <= 7; j++ {
m[int64(j)] = timeStr
}
params := &shop_editStore_request.ShopEditStoreParam{
StoreId: utils.Str2Int64(vendorStoreID),
OpenTime: &shop_editStore_request.OpenTime{
DayMap: m,
},
}
if globals.EnableDouDianStoreWrite {
api.DouDianApi.EditStore(params)
}
return err
}
func (P *PurchaseHandler) GetStoreStatus(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string) (storeStatus int, err error) {
params := &shop_getStoreDetail_request.ShopGetStoreDetailParam{
StoreId: utils.Str2Int64(vendorStoreID),
}
result, err := api.DouDianApi.GetStoreDetail(params)
if err != nil {
return 0, err
}
status := bizStatusJX2DouDian(int(result.StoreDetail.Store.State))
return status, nil
}
func (P *PurchaseHandler) EnableAutoAcceptOrder(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, isSetEnable bool) (err error) {
return err
}
// 获取店铺所有平台ID
func (P *PurchaseHandler) GetAllStoresVendorID(ctx *jxcontext.Context, vendorOrgCode string) (vendorStoreIDs []string, err error) {
param := &shop_getStoreList_request.ShopGetStoreListParam{
Page: 0,
PageSize: 10,
}
storeList, err := api.DouDianApi.GetStoreList(param)
if err != nil {
return nil, err
}
if len(storeList.StoreDetailList) > 0 {
vendorStoreIDs = make([]string, len(storeList.StoreDetailList))
for k, v := range storeList.StoreDetailList {
vendorStoreIDs[k] = utils.Int64ToStr(v.Store.StoreId)
}
}
return vendorStoreIDs, err
}
func (P *PurchaseHandler) UpdateStoreLineStatus(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, lineStatus int) (err error) {
if lineStatus == model.StoreStatusOpened {
param := &shop_storeSuspend_request.ShopStoreSuspendParam{
StoreId: utils.Str2Int64(vendorStoreID),
}
_, err = api.DouDianApi.StoreSuspend(param)
} else {
param := &shop_unsuspendStore_request.ShopUnsuspendStoreParam{
StoreId: utils.Str2Int64(vendorStoreID),
}
_, err = api.DouDianApi.UnsuspendStore(param)
}
return err
}
func (P *PurchaseHandler) ReadStore(ctx *jxcontext.Context, vendorOrgCode, vendorStoreID, vendorStoreName string) (store *dao.StoreDetail, err error) {
return nil, err
}
func (P *PurchaseHandler) RefreshAllStoresID(ctx *jxcontext.Context, parentTask tasksch.ITask, isAsync bool) (hint string, err error) {
return "", errors.New("抖店暂不支持此操作")
}

View File

@@ -1,5 +1,15 @@
package doudian
//
//import (
// freightTemplate_create_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/freightTemplate_create/request"
// shop_batchCreateStore_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_batchCreateStore/request"
// "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api"
// "git.rosy.net.cn/baseapi/utils"
// "git.rosy.net.cn/jx-callback/business/model"
// "git.rosy.net.cn/jx-callback/business/model/dao"
// "testing"
//)
//
//func TestCreateStore(t *testing.T) {
// accesstoken := `{"access_token":"90868a42-1287-4453-ba71-34c72f22e886","expires_in":555553,"scope":"SCOPE","shop_id":"","shop_name":"小时达开放平台对接专用店","refresh_token":"4e8cf946-8df1-4489-be88-f96f2d4603a8","authority_id ":""}`
@@ -7,22 +17,93 @@ package doudian
// request := shop_batchCreateStore_request.New()
// //storeList := make([]*shop_batchCreateStore_request.StoreListItem, 0)
// storeInfo := model.Store{
// RowID: int64(2),
// Name: "京西菜市小时达测试店铺0921",
// StoreCode: "666667",
// Lng: utils.Str2Int("119.441741"),
// Lat: utils.Str2Int("32.133087"),
// Address: "金牛区二环路北一段10号",
// Tel1: "17358644830",
// OpenTime: map[int64]string{1: "07:00-19:00", 2: "8:00-19:00"},
// Name: "京西菜市小时达测试店铺0926",
// Lng: utils.Str2Int("128.443241"),
// Lat: utils.Str2Int("31.133237"),
// Address: "金牛区一环路北二段10号",
// Tel1: "17358644830",
// OpenTime1: 700,
// CloseTime1: 1230,
// OpenTime2: 1300,
// CloseTime2: 1800,
// //OpenTime: map[int64]string{1: "07:00-19:00", 2: "8:00-19:00"},
// }
// list := &dao.StoreDetail{}
// list.Store = storeInfo
// list.ProvinceName = "四川省"
// list.CityName = "成都市"
// list.DistrictName = "金牛区"
// list.VendorStoreID = "666667"
// _, err := CurPurchaseHandler.CreateStore2(nil, 0, "", nil, list)
// resp, err := request.Execute(tiktok_api.AccessToken)
// t.Fatal("err===========", err)
// t.Fatalf("resp===========:%v", resp)
//}
//
//func TestUpdateStore(t *testing.T) {
// accesstoken := `{"access_token":"90868a42-1287-4453-ba71-34c72f22e886","expires_in":555553,"scope":"SCOPE","shop_id":"","shop_name":"小时达开放平台对接专用店","refresh_token":"4e8cf946-8df1-4489-be88-f96f2d4603a8","authority_id ":""}`
// tiktok_api.New("7136048270014416392", "c397aa9f-3927-47c4-8cfe-4d84e02602e0", accesstoken)
// request := shop_batchCreateStore_request.New()
// err := CurPurchaseHandler.UpdateStore(nil, 666667, "")
// resp, err := request.Execute(tiktok_api.AccessToken)
// t.Fatal("err===========", err)
// t.Fatalf("resp===========:%v", resp)
//}
////
////func TestCreateFreightTemplate(t *testing.T) {
//// accesstoken := `{"access_token":"6c4d71b3-831c-4a96-8d2e-977e37afba5a","expires_in":462248,"scope":"SCOPE","shop_id":"","shop_name":"小时达开放平台对接 专用店","refresh_token":"65aae144-4cc0-44d2-89ba-5d3062caca41","authority_ id":""}`
//// tiktok_api.New("7136048270014416392", "c397aa9f-3927-47c4-8cfe-4d84e02602e0", accesstoken)
//// t1 := freightTemplate_create_request.FreightTemplateCreateParam{
//// Columns: []freightTemplate_create_request.ColumnsItem{
//// {
//// AddWeight: 20,
//// MinSkuAmount: -1,
//// FirstWeight: 20,
//// ProvinceInfos: []freightTemplate_create_request.ProvinceInfosItem{
//// {
//// Id: 51,
//// Children: []freightTemplate_create_request.ChildrenItem_4{
//// {
//// Id: 510101,
//// Children: []freightTemplate_create_request.ChildrenItem_5{
//// {
//// Id: 510107,
//// Children: []freightTemplate_create_request.ChildrenItem{
//// {
//// Id: 610041,
//// },
//// },
//// },
//// },
//// },
//// },
//// },
//// },
//// },
//// },
//// Template: &freightTemplate_create_request.Template{
//// TemplateName: "运费模板创建测试0929",
//// ProductProvince: 51,
//// ProductCity: 510104,
//// CalculateType: 1,
//// TransferType: 1,
//// RuleType: 0,
//// },
//// }
//// //t2 := []freightTemplate_create_request.FreightTemplateCreateParam{}
//// //t2 = append(t2, t1)
//// freightID, err := CurPurchaseHandler.CreateFreightTemplate(t1)
//// //fmt.Println("freightID==", fmt.Sprintf("%v", freightID))
//// t.Fatal("err===========", err)
//// t.Fatalf("resp===========:%v", freightID)
////}
//
////func TestBindFreightTemplate(t *testing.T) {
//// accesstoken := `{"access_token":"6c4d71b3-831c-4a96-8d2e-977e37afba5a","expires_in":462248,"scope":"SCOPE","shop_id":"","shop_name":"小时达开放平台对接 专用店","refresh_token":"65aae144-4cc0-44d2-89ba-5d3062caca41","authority_ id":""}`
//// tiktok_api.New("7136048270014416392", "c397aa9f-3927-47c4-8cfe-4d84e02602e0", accesstoken)
//// request := shop_bindStoreFreight_request.New()
//// param := shop_bindStoreFreight_request.ShopBindStoreFreightParam{
//// //StoreId: ,
//// //FreightId: ,
//// }
////}

View File

@@ -0,0 +1,143 @@
package doudian
import (
"fmt"
warehouse_bindFencesByStore_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/warehouse_bindFencesByStore/request"
warehouse_bindStore_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/warehouse_bindStore/request"
warehouse_createBatch_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/warehouse_createBatch/request"
warehouse_createFence_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/warehouse_createFence/request"
"git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/globals/api"
"strings"
)
// /warehouse/createBatch 批量创建区域仓
func (P *PurchaseHandler) BatchCreateWarehouse(param warehouse_createBatch_request.WarehouseCreateBatchParam) error {
infos := []warehouse_createBatch_request.OutWarehouseListItem{}
for _, v := range param.OutWarehouseList {
info := warehouse_createBatch_request.OutWarehouseListItem{
OutWarehouseId: v.OutWarehouseId,
Name: v.Name,
Intro: v.Intro,
AddressDetail: v.AddressDetail,
WarehouseLocation: v.WarehouseLocation,
}
infos = append(infos, info)
}
req := &warehouse_createBatch_request.WarehouseCreateBatchParam{
OutWarehouseList: infos,
}
resp, err := api.DouDianApi.BatchCreateWarehouse(req)
if err != nil {
return err
}
if resp.Data["outWarehouseId"] == false {
return fmt.Errorf("outWarehouseId:%v 出错", resp.Data["outWarehouseId"])
}
return nil
}
// /warehouse/bindStore 仓库绑定门店
func (P *PurchaseHandler) BindStoreWarehouse(storeIDs []int64, outWarehouseID string) error {
param := &warehouse_bindStore_request.WarehouseBindStoreParam{
StoreIds: storeIDs,
OutWarehouseId: outWarehouseID,
}
if _, err := api.DouDianApi.StoreBindWarehouse(param); err != nil {
return err
}
return nil
}
type LocalStore struct {
Lng int `json:"-"` // 乘了10的6次方
Lat int `json:"-"` // 乘了10的6次方
DeliveryRangeType int8 `json:"deliveryRangeType"` // 参见相关常量定义
DeliveryRange string `json:"deliveryRange"` // 如果DeliveryRangeType为DeliveryRangeTypePolygon则为逗号分隔坐标分号分隔的坐标点坐标与Lng和Lat一样都是整数比如 121361504,31189308;121420555,31150238。否则为半径单位为米
VendorStoreID string `json:"vendorStoreID"` // 平台上门店id
}
// /warehouse/createFence 以门店方式创建电子围栏
func (P *PurchaseHandler) CreateFenceByStore(storeID int) (fenceID string, err error) {
var (
db *dao.DaoDB
localStore *LocalStore
verticeses []warehouse_createFence_request.VerticesItem
)
sqlParam := []interface{}{
model.VendorIDDouDian,
}
sqlStr := ` SELECT t.lng,t.lat,t.delivery_range_type,t.delivery_range,s.vendor_store_id FROM store t
LEFT JOIN store_map s ON t.id = s.store_id
WHERE s.vendor_id= ? `
if storeID != 0 {
sqlStr += " AND t.id = ? "
sqlParam = append(sqlParam, storeID)
} else {
return "", fmt.Errorf("storeID必填")
}
if err = dao.GetRow(db, &localStore, sqlStr, sqlParam...); err == nil {
param := &warehouse_createFence_request.WarehouseCreateFenceParam{
FenceInfo: &warehouse_createFence_request.FenceInfo{
OutFenceId: "京西门店:" + utils.Int2Str(storeID) + " 的电子围栏",
Shape: int32(localStore.DeliveryRangeType),
},
}
if localStore.DeliveryRangeType == tiktok_api.ShapeCircular {
circular := &warehouse_createFence_request.Circular{
Center: &warehouse_createFence_request.Center{
Longitude: utils.Int2Float64(localStore.Lng),
Latitude: utils.Int2Float64(localStore.Lat),
},
Radius: utils.Str2Float64(localStore.DeliveryRange),
}
param.FenceInfo.Circular = circular
} else if localStore.DeliveryRangeType == tiktok_api.ShapePolygon {
tempStr := strings.Split(localStore.DeliveryRange, ";")
for v := len(tempStr) - 1; v >= 0; v-- {
s2 := strings.Split(tempStr[v], ",")
vertices := warehouse_createFence_request.VerticesItem{
Longitude: utils.Str2Float64(s2[0]),
Latitude: utils.Str2Float64(s2[1]),
}
verticeses = append(verticeses, vertices)
}
param.FenceInfo.Polygon.Vertices = verticeses
}
resp, err := api.DouDianApi.CreateFence(param)
if err != nil {
return "", err
} else {
return resp.FenceId, err
}
} else {
return "", err
}
}
//直接创建电子围栏方式
func (P *PurchaseHandler) CreateFenceDirectly(param warehouse_createFence_request.WarehouseCreateFenceParam) (fenceID string, err error) {
info := &warehouse_createFence_request.WarehouseCreateFenceParam{
FenceInfo: param.FenceInfo,
}
resp, err := api.DouDianApi.CreateFence(info)
if err != nil {
return "", err
}
return resp.FenceId, err
}
//门店直接绑定围栏
func (P *PurchaseHandler) BindFenceByStore(storeID int64, addOutFenceIDs []string) error {
param := &warehouse_bindFencesByStore_request.WarehouseBindFencesByStoreParam{
StoreId: storeID,
AddOutFenceIds: addOutFenceIDs,
}
if _, err := api.DouDianApi.BindFenceByStore(param); err != nil {
return err
}
return nil
}

View File

@@ -255,8 +255,7 @@ func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin
JOIN store_map t2 ON t1.id = t2.store_id AND t2.vendor_id = ? AND (t2.deleted_at = ?)
LEFT JOIN brand t3 ON t3.id = t1.brand_id
WHERE t1.id = ?
ORDER BY t2.updated_at
`
ORDER BY t2.updated_at`
if err = dao.GetRows(db, &stores, sql, model.VendorIDEBAI, utils.DefaultTimeValue, storeID); err == nil {
for _, store := range stores {
if globals.EnableEbaiStoreWrite {
@@ -264,7 +263,7 @@ func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin
if store.SyncStatus&model.SyncFlagDeletedMask == 0 {
shopID = store.ID
}
store2, err2 := p.ReadStore(jxcontext.AdminCtx, store.VendorOrgCode, store.VendorStoreID,"")
store2, err2 := p.ReadStore(jxcontext.AdminCtx, store.VendorOrgCode, store.VendorStoreID, "")
// globals.SugarLogger.Debugf("ebai UpdateStore2 store2:%s, err2:%v", utils.Format4Output(store2, true), err2)
if err = err2; err == nil {
if store2.ID == store.ID {

View File

@@ -61,7 +61,7 @@ type tEbaiStoreInfo struct {
DistrictID int `orm:"column(district_id)"`
}
func (p *PurchaseHandler) ReadStore(ctx *jxcontext.Context, vendorOrgCode, vendorStoreID,vendorStoreName string) (retVal *dao.StoreDetail, err error) {
func (p *PurchaseHandler) ReadStore(ctx *jxcontext.Context, vendorOrgCode, vendorStoreID, vendorStoreName string) (retVal *dao.StoreDetail, err error) {
result, err := getAPIWithoutToken(vendorOrgCode).PoiGet(vendorStoreID)
if err == nil {
// globals.SugarLogger.Debug(utils.Format4Output(result, false))
@@ -232,12 +232,13 @@ func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin
db = dao.GetDB()
}
mtapi := getAPI(getStoreVendorOrgCode(storeID), storeID, "")
//获取本地store信息
storeDetail, err := dao.GetStoreDetail(db, storeID, model.VendorIDMTWM, "")
if err != nil {
return err
}
errList := errlist.New()
//获取平台store信息
remoteStoreInfo, err := mtapi.PoiGet(storeDetail.VendorStoreID)
if err != nil {
return err

View File

@@ -38,6 +38,7 @@ enableMtwmStoreWrite = false
enableWscStoreWrite = false
enableYbStoreWrite = false
enableJdShopWrite = false
enableDouDianStoreWrite=false
jdsCookie = "shshshfpa=13b38d4a-8ba0-df12-0012-82d9a37fb835-1573795914; shshshfpb=abYp8Dq5JobRtp2pkZa7MbA%3D%3D; __jdu=1142616513; pinId=WMIzMhF5BfL6nJp9AcA2-A; pin=shop_jxcs; unick=shop_jxcs; _tp=7FBEvLyPe%2FKcgxsfY5lRgA%3D%3D; _pst=shop_jxcs; areaId=22; ipLoc-djd=22-1930-50948-57092; user-key=3ec204b4-f204-4320-98e3-b2569c757800; cn=0; shshshfp=5d23828ee6ea3a33e1a58588db1713f8; 3AB9D23F7A4B3C9B=AK36FFYF5J6WMPRH7YTXMEX4CATHR6NAA3IQEESU2I33FEJRQ3DRLU4SZJYD2XGFLCFW43DHYP5HQKOMR4EFQSLKLA; navigation=[%22shop_jxcs%22]; __jdv=122270672|baidu|-|organic|not set|1589514011252; language=zh_CN; ceshi3.com=000; csrf_token=b84d0a5c-6288-4db4-84e1-cadf66be3bf7; mba_muid=1142616513; TrackID=1qvZk-6QSAOp1NmaouJGEx58_cFglCFv57HEfoHOezMrOnV3_FSK-5ExeYhHx97IltBADG3dvJqLIt3P57wyUW4Z2Q3Y8ITo8Cfdmlz3kykM; RT="z=1&dm=jd.com&si=mcot45862q&ss=kaf1rcqz&sl=2&tt=38t&ld=22qx&nu=b99e5a7f32b36f184614d34a1d926a39&cl=3clu&ul=3crs&hd=3cz3"; b-sec=S2JWP6CAFP7K4I6PXVBUVCO6YVXUX2JAPDHLX5RZUDE4YKCGOEXJIINB3Q4THCFCMVWZPFAYGLWLG; thor=80FAF09E9A09B6E618A68057BDFCFCB8C86E8252DC9F7D3B34572625904FBA0AB6BF053A5325612EC0407791BB05F5301356E71E8B282C40C06D0B5DF3439DEECB102A78FAFF7AC0FC4E2D1FA8DD8BBAE1A011E50B5C74F1870AD982D7BF453F470F31F2241B73AC4C25485025C2ABEBC8A538AF7257824D2FAEE300A1435175B0B451FB5C19B78D729FC83152CA3BAF; _vender_=TNK3O6PALVQGGA33SGBIUTOKL4OOE6DP6OMNVIPMAMULGTRFWUMTVWGFRUTYP4L4EPN3KP73P33BOBN5SNJFBNQB5OMQYSJ5MORGQLJS7QAPOMIN7AZD6B3ZLP2DV4JCXDI5P3KOXJ3PHLIIRZ2YVS4JSSA3JRSBACNLJSC24ELO46GIMRW53XGW36EBPLZMZP2MQCAMJNO44FKT46B7VDVT7KQTELESOOF6E377AYC3NWKQF6ICIYBW4BA4JL5QG2NHGNOHOUJDNUW3N22UF32DLFLEIQGVO2W55J6AKPPBT227XA5NO4S3NFVIUUUADGOYH56T72MTNXCILWVMN4RMUNVFMGL4ISGXJS7YILE7A2ESPAU43MISAOZM2BR53MGRB5OZSQZPV5DBDCN2OVVT3XT5N2VMFELARQNTMAJCDBGXFURSN2Q7SYULLKZEZHTYWWOI65LS5OIHLUZQKWFGMNSQF2UBSYV7FG46CWJGMVHOGV3FY4RUEVJK6BQ223QK3H3VMTHXCZOZV4GKR5EWGIZZDVUAK4B36BPA5HPBO7PXKBOEXEBX77IYBNQLCGMK72J4VKNOUPYKNB5JE5D5UN3R2MMFGLJARTL2QTC5ZRZ4PJCJZWWOV37VWLWFVAN5IGHPAYME73KTNFABM5W73XLOXJFQWTFRZEK3FCL3BLRV4UOXLBQGA34R4WUBYSZURMKTXXB7U; __jda=65775340.1142616513.1573036516.1589946171.1589952725.54; __jdb=65775340.147.1142616513|54.1589952725; __jdc=65775340; _base_=YKH2KDFHMOZBLCUV7NSRBWQUJPBI7JIMU5R3EFJ5UDHJ5LCU7R2NILKK5UJ6GLA2RGYT464UKXAI4Z6HPCTN4UQM3WHVQ4ENFP57OC2DC7JQLRXRUO5PW6B77O6UXAZ4TCNE6YVKRXISVLBYGYO44RCDDPWDA4AEL7ZLXI2SG4SOQWCP5WPWO6EFS7HEHMRWVKBRVHB33TFD4SMNBHRJCTDFHU6SZXCZD6RFXX2OORYGL5H2GYF2IIH2KKD4T72IR4F577G2E5II2OMMXYF2GDYNTS7WGAUXFEWRJ3CTKDBDWMHUKJQF4ZFOTNBBYBIZRXZYERXXIG6ATJFKID7XOR3NQ2CL6K7A2IEZV5HCBNYDPXFCM2ZMCS474KZ44S5F; _vender_new_=GI63BGTJFDBQ46CD7JXUX3HEPM4P5LEA3TJTFGW4ZGGIVOLTPK5T25EXTBLCENPUTR7E2I23YDFQ4ARO6JW3NHSWBDE73RTUKJTADIPFPLYFE3ARGJUBPHWUIONS72KRQOZC5P7PB4VPPLRHGEP7L3Z5K62L2E2MGTWHFJRQ3CAVBDYVW2Z4J6U73HW4BKKOCDAH5T6OJJKWKLBZFOTI7342QSL7YQ2E3I4T777RNZF23XGOTCP3D4INHNO5MNKT3XJZQBVHWUVZYQUXCK5QQTKWADKQUCYV3JRY6YAYOD7Z5IIKGNLREQTCPO7SYGSIS655JUGOUILFLXVZE6KCFG7ZTPRUD6VPE4KCIE4OUZSED6FTSEZHTM363E7XXCHB4NA7VLZHCQSBHDVGMRA7RM4RGJC3MOI4TJNGCLW6QKUCCZAY7XTGOTMC53TFUYERGNIH2RBULZ7UTZH5GU3TC6RWFI2QL4QTAIARA6GNVXENEOYIPZEHN222YDAJX5OBBEECAMAPNKZ3XNF5CNGDJ3DSU2ZLOCAKLFPCYTIIWPPJMCQ636F5464HS4OVFPFNIDW4OCE23JRPYP5FAL6TKHPAC3H3ZRU7WA5GKJJKBZUGIX7NEO4LZB7FJ3RZZZH3UHPQMNILD5DT2V7HVCUOVNOFBEOW5ID2ZMQ3XV264IU4MYHN64RA; _BELONG_CLIENT_=WPSC4XJXWK5USS4JNZY2X7VRLR5MCBKRSVHEXABGTHDGISIQK5YOLZUXYE7IOIM7MOKO74H6CRN6WHAAR4TMDV3XZWMXZRCRT5XRNE3V356BTOB2Y7LPK66VWQK6HPTGWVXIDXDCPVE3W5WMHAIO6AT2LX2XXVNUCXR34ZWFK6HY45CORGIKOSYDYZBF27WOKTUX6BS4FZMIJWNUX6CB4JAA25ZLF7ZEKYOO4QV5HTSBXGNRM3E242MBI6V5D4C5VJDQ3EOYCOW5BMTUJZACIBHXQFAVLRF76VQY5PNJGGJNBEZHSFYYJA3YORRT7FB5AHCOIFQKF3W5RWNUX6CB4JAA26JNMO7AYWNUPZF5HTSBXGNRM3E242MBI6V5D4C5VJDQ3EOYCOW5BWZDKMOJ5BS6II53ERY6ALV3ZWPF42L4CPUHEGPYIII35KDC4FCNVCORCXFD6IVNLBEDPB2GGP4UHWNRUDOQBDIW7RZJXBA2WV5ANZOTEGUCDWYRVQS2YUTIZNZ276PRYG4N56V6YTII7MBKBC7LYHO7C555HTSBXGNRM3E466AYN67DHWVM5HQFJ4NFDO5BTOKMOS5L2CXFVYDR2FCOILVYPEI; _lvtc_=5ZH3OJ7CWYNVGEKDRC32XTFXGY"

View File

@@ -17,15 +17,16 @@ var (
AliKey string
AliSecret string
EnableStoreWrite bool
EnableJdStoreWrite bool
EnableEbaiStoreWrite bool
EnableElmStoreWrite bool
EnableMtwmStoreWrite bool
EnableWscStoreWrite bool
EnablePendingChange bool
EnableYbStoreWrite bool
EnableJdShopWrite bool //京东商城
EnableStoreWrite bool
EnableJdStoreWrite bool
EnableEbaiStoreWrite bool
EnableElmStoreWrite bool
EnableMtwmStoreWrite bool
EnableWscStoreWrite bool
EnablePendingChange bool
EnableYbStoreWrite bool
EnableJdShopWrite bool //京东商城
EnableDouDianStoreWrite bool //抖音-抖店
QiniuBucket string
WeimobCallbackURL string
@@ -113,6 +114,7 @@ func Init() {
// EnablePendingChange = web.AppConfig.DefaultBool("enablePendingChange", false)
EnableYbStoreWrite = EnableStoreWrite && web.AppConfig.DefaultBool("enableYbStoreWrite", false)
EnableJdShopWrite = EnableStoreWrite && web.AppConfig.DefaultBool("enableJdShopWrite", false)
EnableDouDianStoreWrite = EnableStoreWrite && web.AppConfig.DefaultBool("enableDouDianStoreWrite", false)
QiniuBucket = web.AppConfig.DefaultString("qiniuBucket", "")