- remove partner.GetFieldIDName and partner.GetFieldSyncStatusName (use dao.GetXXXField instead)
- mtwm.UpdateStore - mtwm.SyncStoreCategory
This commit is contained in:
@@ -443,7 +443,7 @@ func UpdateStoreVendorMap(ctx *jxcontext.Context, db *dao.DaoDB, storeID, vendor
|
|||||||
storeSkuBind := &model.StoreSkuBind{}
|
storeSkuBind := &model.StoreSkuBind{}
|
||||||
if num, err = dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, storeSkuBind, nil, userName, map[string]interface{}{
|
if num, err = dao.UpdateEntityLogicallyAndUpdateSyncStatus(db, storeSkuBind, nil, userName, map[string]interface{}{
|
||||||
model.FieldStoreID: storeID,
|
model.FieldStoreID: storeID,
|
||||||
}, storeHandler.GetFieldSyncStatusName()); err != nil {
|
}, dao.GetSyncStatusStructField(model.VendorNames[vendorID])); err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
dao.Commit(db)
|
dao.Commit(db)
|
||||||
|
|||||||
@@ -127,7 +127,7 @@ func (v *VendorSync) GetSingleStoreHandler(vendorID int) partner.ISingleStoreHan
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (v *VendorSync) syncCategories(ctx *jxcontext.Context, parentTask tasksch.ITask, multiStoresHandler partner.IMultipleStoresHandler, db *dao.DaoDB, cats []*model.SkuCategory, userName string) (err error) {
|
func (v *VendorSync) syncCategories(ctx *jxcontext.Context, parentTask tasksch.ITask, multiStoresHandler partner.IMultipleStoresHandler, db *dao.DaoDB, cats []*model.SkuCategory, userName string) (err error) {
|
||||||
syncStatusFieldName := multiStoresHandler.GetFieldSyncStatusName()
|
syncStatusFieldName := dao.GetSyncStatusStructField(model.VendorNames[multiStoresHandler.GetVendorID()])
|
||||||
task := tasksch.NewParallelTask("syncCategories", nil, userName, func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) {
|
task := tasksch.NewParallelTask("syncCategories", nil, userName, func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) {
|
||||||
cat := batchItemList[0].(*model.SkuCategory)
|
cat := batchItemList[0].(*model.SkuCategory)
|
||||||
updateFields := []string{syncStatusFieldName}
|
updateFields := []string{syncStatusFieldName}
|
||||||
@@ -136,7 +136,7 @@ func (v *VendorSync) syncCategories(ctx *jxcontext.Context, parentTask tasksch.I
|
|||||||
err = multiStoresHandler.DeleteCategory(db, cat, userName)
|
err = multiStoresHandler.DeleteCategory(db, cat, userName)
|
||||||
} else if (syncStatus & model.SyncFlagNewMask) != 0 { // 新增
|
} else if (syncStatus & model.SyncFlagNewMask) != 0 { // 新增
|
||||||
err = multiStoresHandler.CreateCategory(db, cat, userName)
|
err = multiStoresHandler.CreateCategory(db, cat, userName)
|
||||||
updateFields = append(updateFields, multiStoresHandler.GetFieldIDName())
|
updateFields = append(updateFields, dao.GetVendorThingIDStructField(model.VendorNames[multiStoresHandler.GetVendorID()]))
|
||||||
} else if (syncStatus & model.SyncFlagModifiedMask) != 0 { // 修改
|
} else if (syncStatus & model.SyncFlagModifiedMask) != 0 { // 修改
|
||||||
err = multiStoresHandler.UpdateCategory(db, cat, userName)
|
err = multiStoresHandler.UpdateCategory(db, cat, userName)
|
||||||
}
|
}
|
||||||
@@ -186,7 +186,7 @@ func (v *VendorSync) SyncReorderCategories(ctx *jxcontext.Context, db *dao.DaoDB
|
|||||||
err2 := multiStoresHandler.ReorderCategories(db, categoryID, userName)
|
err2 := multiStoresHandler.ReorderCategories(db, categoryID, userName)
|
||||||
if err2 == nil {
|
if err2 == nil {
|
||||||
cat := &model.SkuCategory{}
|
cat := &model.SkuCategory{}
|
||||||
_, err2 = dao.UpdateEntityByKV(db, cat, utils.Params2Map(multiStoresHandler.GetFieldSyncStatusName(), 0), utils.Params2Map(model.FieldParentID, categoryID))
|
_, err2 = dao.UpdateEntityByKV(db, cat, utils.Params2Map(dao.GetSyncStatusStructField(model.VendorNames[multiStoresHandler.GetVendorID()]), 0), utils.Params2Map(model.FieldParentID, categoryID))
|
||||||
return nil, err2
|
return nil, err2
|
||||||
}
|
}
|
||||||
return nil, err2
|
return nil, err2
|
||||||
@@ -233,7 +233,7 @@ func (v *VendorSync) SyncSku(ctx *jxcontext.Context, db *dao.DaoDB, nameID, skuI
|
|||||||
globals.SugarLogger.Debugf("SyncSku, nameID:%d, skuID:%d, userName:%s", nameID, skuID, userName)
|
globals.SugarLogger.Debugf("SyncSku, nameID:%d, skuID:%d, userName:%s", nameID, skuID, userName)
|
||||||
return v.LoopMultiStoresVendors(ctx, db, "SyncSku", isAsync, userName, func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) {
|
return v.LoopMultiStoresVendors(ctx, db, "SyncSku", isAsync, userName, func(t *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (interface{}, error) {
|
||||||
multiStoresHandler := v.GetMultiStoreHandler(batchItemList[0].(int))
|
multiStoresHandler := v.GetMultiStoreHandler(batchItemList[0].(int))
|
||||||
syncStatusFieldName := multiStoresHandler.GetFieldSyncStatusName()
|
syncStatusFieldName := dao.GetSyncStatusStructField(model.VendorNames[multiStoresHandler.GetVendorID()])
|
||||||
var skuList []*model.Sku
|
var skuList []*model.Sku
|
||||||
cond := make(map[string]interface{})
|
cond := make(map[string]interface{})
|
||||||
if nameID != -1 {
|
if nameID != -1 {
|
||||||
@@ -254,7 +254,7 @@ func (v *VendorSync) SyncSku(ctx *jxcontext.Context, db *dao.DaoDB, nameID, skuI
|
|||||||
err = multiStoresHandler.DeleteSku(db, sku, userName)
|
err = multiStoresHandler.DeleteSku(db, sku, userName)
|
||||||
} else if syncStatus&model.SyncFlagNewMask != 0 { // 新增
|
} else if syncStatus&model.SyncFlagNewMask != 0 { // 新增
|
||||||
err = multiStoresHandler.CreateSku(db, sku, userName)
|
err = multiStoresHandler.CreateSku(db, sku, userName)
|
||||||
updateFields = append(updateFields, multiStoresHandler.GetFieldIDName())
|
updateFields = append(updateFields, dao.GetVendorThingIDStructField(model.VendorNames[multiStoresHandler.GetVendorID()]))
|
||||||
} else if syncStatus&model.SyncFlagModifiedMask != 0 { // 修改
|
} else if syncStatus&model.SyncFlagModifiedMask != 0 { // 修改
|
||||||
err = multiStoresHandler.UpdateSku(db, sku, userName)
|
err = multiStoresHandler.UpdateSku(db, sku, userName)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,12 +19,12 @@ const (
|
|||||||
|
|
||||||
var (
|
var (
|
||||||
VendorNames = map[int]string{
|
VendorNames = map[int]string{
|
||||||
VendorIDJD: "JD",
|
VendorIDJD: "Jd",
|
||||||
VendorIDMTWM: "MT",
|
VendorIDMTWM: "Mtwm",
|
||||||
VendorIDELM: "ELEME",
|
VendorIDELM: "Elm",
|
||||||
VendorIDEBAI: "EBAI",
|
VendorIDEBAI: "Ebai",
|
||||||
VendorIDDada: "Dada",
|
VendorIDDada: "Dada",
|
||||||
VendorIDMTPS: "MTPS",
|
VendorIDMTPS: "Mtps",
|
||||||
}
|
}
|
||||||
VendorChineseNames = map[int]string{
|
VendorChineseNames = map[int]string{
|
||||||
VendorIDJD: "京东到家",
|
VendorIDJD: "京东到家",
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package dao
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"reflect"
|
"reflect"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
@@ -81,3 +82,51 @@ func GenQuestionMarks(count int) string {
|
|||||||
}
|
}
|
||||||
return marks
|
return marks
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ConvertStructFieldPrefix(prefix string) string {
|
||||||
|
return prefix
|
||||||
|
}
|
||||||
|
|
||||||
|
func ConvertJsonFieldPrefix(prefix string) string {
|
||||||
|
return strings.ToLower(prefix)
|
||||||
|
}
|
||||||
|
|
||||||
|
func ConvertDBFieldPrefix(prefix string) string {
|
||||||
|
return strings.ToLower(prefix)
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetVendorThingIDStructField(prefix string) string {
|
||||||
|
return ConvertStructFieldPrefix(prefix) + "ID"
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetVendorThingIDJsonField(prefix string) string {
|
||||||
|
return ConvertJsonFieldPrefix(prefix) + "ID"
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetVendorThingIDDBField(prefix string) string {
|
||||||
|
return ConvertDBFieldPrefix(prefix) + "_id"
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetSyncStatusStructField(prefix string) string {
|
||||||
|
return ConvertStructFieldPrefix(prefix) + "SyncStatus"
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetSyncStatusJsonField(prefix string) string {
|
||||||
|
return ConvertJsonFieldPrefix(prefix) + "SyncStatus"
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetSyncStatusDBField(prefix string) string {
|
||||||
|
return ConvertDBFieldPrefix(prefix) + "_sync_status"
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetCategoryIDStructField(prefix string) string {
|
||||||
|
return ConvertStructFieldPrefix(prefix) + "CategoryID"
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetCategoryIDJsonField(prefix string) string {
|
||||||
|
return ConvertJsonFieldPrefix(prefix) + "CategoryID"
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetCategoryIDDBField(prefix string) string {
|
||||||
|
return ConvertDBFieldPrefix(prefix) + "_category_id"
|
||||||
|
}
|
||||||
|
|||||||
30
business/model/dao/store.go
Normal file
30
business/model/dao/store.go
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
package dao
|
||||||
|
|
||||||
|
import (
|
||||||
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
|
)
|
||||||
|
|
||||||
|
type StoreDetail struct {
|
||||||
|
model.Store
|
||||||
|
VendorStoreID string `orm:"column(vendor_store_id);size(48)" json:"vendorStoreID"`
|
||||||
|
VendorStatus int `json:"vendor_status"` // 取值同Store.Status
|
||||||
|
DeliveryFee int `json:"deliveryFee"`
|
||||||
|
SyncStatus int8 `orm:"default(2)" json:"syncStatus"`
|
||||||
|
model.Place // district info
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetStoreDetail(db *DaoDB, storeID, vendorID int) (storeDetail *StoreDetail, err error) {
|
||||||
|
sql := `
|
||||||
|
SELECT t2.status vendor_status, t2.vendor_store_id, t2.sync_status, district.*, t1.*
|
||||||
|
FROM store t1
|
||||||
|
JOIN store_map t2 ON t1.id = t2.store_id AND t2.vendor_id = ? AND t2.deleted_at = ?
|
||||||
|
LEFT JOIN place district ON t1.district_code = district.code
|
||||||
|
WHERE t1.id = ? AND t1.deleted_at = ?
|
||||||
|
`
|
||||||
|
storeDetail = &StoreDetail{}
|
||||||
|
if err = GetRow(db, storeDetail, sql, vendorID, utils.DefaultTimeValue, storeID, utils.DefaultTimeValue); err == nil {
|
||||||
|
return storeDetail, nil
|
||||||
|
}
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
87
business/model/dao/store_sku.go
Normal file
87
business/model/dao/store_sku.go
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
package dao
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
|
)
|
||||||
|
|
||||||
|
type SkuStoreCatInfo struct {
|
||||||
|
model.SkuCategory
|
||||||
|
CatID int `orm:"column(cat_id)"` // 这个主要用于判断是否有store_sku_category_map
|
||||||
|
VendorCatID string `orm:"column(vendor_cat_id)"`
|
||||||
|
CatSyncStatus int8
|
||||||
|
|
||||||
|
ParentCatName string
|
||||||
|
ParentCatID int `orm:"column(parent_cat_id)"` // 这个主要用于判断是否有父store_sku_category_map
|
||||||
|
ParentVendorCatID string `orm:"column(parent_vendor_cat_id)"`
|
||||||
|
ParentCatSyncStatus int8
|
||||||
|
}
|
||||||
|
|
||||||
|
type StoreCatSyncInfo struct {
|
||||||
|
CatName string
|
||||||
|
Seq int `json:"seq"`
|
||||||
|
model.StoreSkuCategoryMap
|
||||||
|
|
||||||
|
ParentCatName string
|
||||||
|
ParentCatID int `orm:"column(parent_cat_id)"` // 这个主要用于判断是否有父store_sku_category_map
|
||||||
|
ParentVendorCatID string `orm:"column(parent_vendor_cat_id)"`
|
||||||
|
ParentCatSyncStatus int8
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetSkusCategories(db *DaoDB, vendorID, storeID int, skuIDs []int, level int) (cats []*SkuStoreCatInfo, err error) {
|
||||||
|
sql := `
|
||||||
|
SELECT DISTINCT t4.*, t5.category_id cat_id, t5.%s_id vendor_cat_id, t5.%s_sync_status cat_sync_status, t4p.name parent_cat_name, t5p.category_id parent_cat_id, t5p.%s_id parent_vendor_cat_id, t5p.%s_sync_status parent_cat_sync_status
|
||||||
|
FROM store_sku_bind t1
|
||||||
|
JOIN sku t2 ON t1.sku_id = t2.id
|
||||||
|
JOIN sku_name t3 ON t2.name_id = t3.id
|
||||||
|
`
|
||||||
|
if level == 2 {
|
||||||
|
sql += `
|
||||||
|
JOIN sku_category t4 ON (t3.category_id = t4.id OR t2.category_id = t4.id)
|
||||||
|
`
|
||||||
|
} else {
|
||||||
|
sql += `
|
||||||
|
JOIN sku_category t4c ON (t3.category_id = t4c.id OR t2.category_id = t4c.id)
|
||||||
|
JOIN sku_category t4 ON t4.id = t4c.parent_id
|
||||||
|
`
|
||||||
|
}
|
||||||
|
sql += `
|
||||||
|
LEFT JOIN store_sku_category_map t5 ON t4.id = t5.category_id AND t5.store_id = t1.store_id AND t5.deleted_at = ?
|
||||||
|
LEFT JOIN sku_category t4p ON t4.parent_id = t4p.id
|
||||||
|
LEFT JOIN store_sku_category_map t5p ON t4p.id = t5p.category_id AND t5p.store_id = t1.store_id AND t5p.deleted_at = ?
|
||||||
|
WHERE t1.store_id = ?
|
||||||
|
`
|
||||||
|
sqlParams := []interface{}{
|
||||||
|
storeID,
|
||||||
|
utils.DefaultTimeValue,
|
||||||
|
utils.DefaultTimeValue,
|
||||||
|
}
|
||||||
|
if len(skuIDs) > 0 {
|
||||||
|
sql += " AND t1.sku_id IN (" + GenQuestionMarks(len(skuIDs)) + ")"
|
||||||
|
sqlParams = append(sqlParams, skuIDs)
|
||||||
|
}
|
||||||
|
filedPrefix := ConvertDBFieldPrefix(model.VendorNames[vendorID])
|
||||||
|
sql = fmt.Sprintf(sql, filedPrefix, filedPrefix, filedPrefix, filedPrefix)
|
||||||
|
if err = GetRows(db, &cats, sql, sqlParams...); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return cats, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetStoreCategories(db *DaoDB, vendorID, storeID int, level int) (cats []*StoreCatSyncInfo, err error) {
|
||||||
|
filedPrefix := ConvertDBFieldPrefix(model.VendorNames[vendorID])
|
||||||
|
sql := fmt.Sprintf(`
|
||||||
|
SELECT t5.*, t4.name cat_name, t4.seq, t4p.name parent_cat_name, t5p.category_id parent_cat_id, t5p.%s_id parent_vendor_cat_id, t5p.%s_sync_status parent_cat_sync_status
|
||||||
|
FROM store_sku_category_map t5
|
||||||
|
JOIN sku_category t4 ON t5.category_id = t4.id
|
||||||
|
JOIN sku_category t4p ON t4.parent_id = t4p.id
|
||||||
|
JOIN store_sku_category_map t5p ON t4p.id = t5p.category_id AND t5p.deleted_at = ?
|
||||||
|
WHERE t5.store_id = ? AND t5.level = ? AND t5.%s_sync_status <> 0
|
||||||
|
`, filedPrefix, filedPrefix, filedPrefix)
|
||||||
|
if err = GetRows(db, &cats, sql, utils.DefaultTimeValue, storeID, level); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return cats, err
|
||||||
|
}
|
||||||
@@ -134,6 +134,7 @@ type SkuCategory struct {
|
|||||||
JdCategoryID int `orm:"column(jd_category_id)" json:"jdCategoryID"` // 这个是指对应的京东商品类别
|
JdCategoryID int `orm:"column(jd_category_id)" json:"jdCategoryID"` // 这个是指对应的京东商品类别
|
||||||
ElmCategoryID int64 `orm:"column(elm_category_id)" json:"elmCategoryID"` // 这个是指对应的饿了么商品类别
|
ElmCategoryID int64 `orm:"column(elm_category_id)" json:"elmCategoryID"` // 这个是指对应的饿了么商品类别
|
||||||
EbaiCategoryID int64 `orm:"column(ebai_category_id)" json:"ebaiCategoryID"` // 这个是指对应的饿百商品类别
|
EbaiCategoryID int64 `orm:"column(ebai_category_id)" json:"ebaiCategoryID"` // 这个是指对应的饿百商品类别
|
||||||
|
MtwmCategoryID int64 `orm:"column(mtwm_category_id)" json:"mtwmCategoryID"` // 这个是指对应的美团外卖商品类别
|
||||||
|
|
||||||
JdID int64 `orm:"column(jd_id);null" json:"jdID"` // 这个是指商家自己的商品类别在京东平台上的ID
|
JdID int64 `orm:"column(jd_id);null" json:"jdID"` // 这个是指商家自己的商品类别在京东平台上的ID
|
||||||
JdSyncStatus int8 `orm:"default(2)" json:"jdSyncStatus"`
|
JdSyncStatus int8 `orm:"default(2)" json:"jdSyncStatus"`
|
||||||
|
|||||||
@@ -165,9 +165,10 @@ type StoreMap struct {
|
|||||||
VendorStoreID string `orm:"column(vendor_store_id);size(48)" json:"vendorStoreID"`
|
VendorStoreID string `orm:"column(vendor_store_id);size(48)" json:"vendorStoreID"`
|
||||||
Status int `json:"status"` // 取值同Store.Status
|
Status int `json:"status"` // 取值同Store.Status
|
||||||
|
|
||||||
PricePercentage int16 `orm:"default(100)" json:"pricePercentage"` // todo 厂商价格相对于本地价格的百分比,这个字段的修改会比较特殊,因为可能需要刷新厂商价格
|
PricePercentage int16 `orm:"default(100)" json:"pricePercentage"` // todo 厂商价格相对于本地价格的百分比,这个字段的修改会比较特殊,因为可能需要刷新厂商价格
|
||||||
AutoPickup int8 `orm:"default(1)" json:"autoPickup"` // 是否自动拣货
|
AutoPickup int8 `orm:"default(1)" json:"autoPickup"` // 是否自动拣货
|
||||||
DeliveryType int8 `orm:"default(0)" json:"deliveryType"` // 配送类型
|
DeliveryType int8 `orm:"default(0)" json:"deliveryType"` // 配送类型
|
||||||
|
DeliveryFee int `json:"deliveryFee"`
|
||||||
DeliveryCompetition int8 `orm:"default(1)" json:"deliveryCompetition"` // 是否支持配送竞争
|
DeliveryCompetition int8 `orm:"default(1)" json:"deliveryCompetition"` // 是否支持配送竞争
|
||||||
|
|
||||||
SyncStatus int8 `orm:"default(2)" json:"syncStatus"`
|
SyncStatus int8 `orm:"default(2)" json:"syncStatus"`
|
||||||
|
|||||||
@@ -16,11 +16,13 @@ type StoreSkuCategoryMap struct {
|
|||||||
StoreID int `orm:"column(store_id)"`
|
StoreID int `orm:"column(store_id)"`
|
||||||
CategoryID int `orm:"column(category_id)"`
|
CategoryID int `orm:"column(category_id)"`
|
||||||
|
|
||||||
ElmID int64 `orm:"column(elm_id);index"`
|
ElmID int64 `orm:"column(elm_id);index"`
|
||||||
EbaiID int64 `orm:"column(ebai_id);index"`
|
EbaiID int64 `orm:"column(ebai_id);index"`
|
||||||
|
MtwmID string `orm:"column(mtwm_id);size(16)"` // 美团外卖没有ID,保存名字
|
||||||
|
|
||||||
ElmSyncStatus int8
|
ElmSyncStatus int8
|
||||||
EbaiSyncStatus int8
|
EbaiSyncStatus int8
|
||||||
|
MtwmSyncStatus int8
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*StoreSkuCategoryMap) TableUnique() [][]string {
|
func (*StoreSkuCategoryMap) TableUnique() [][]string {
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, policy func(del
|
|||||||
billParams.ReceiverLng, billParams.ReceiverLat, _ = jxutils.IntCoordinate2MarsStandard(order.ConsigneeLng, order.ConsigneeLat, order.CoordinateType)
|
billParams.ReceiverLng, billParams.ReceiverLat, _ = jxutils.IntCoordinate2MarsStandard(order.ConsigneeLng, order.ConsigneeLat, order.CoordinateType)
|
||||||
addParams := map[string]interface{}{
|
addParams := map[string]interface{}{
|
||||||
"info": utils.FilterMb4(order.BuyerComment),
|
"info": utils.FilterMb4(order.BuyerComment),
|
||||||
// "origin_mark": model.VendorNames[order.VendorID],
|
// "origin_mark": model.VendorChineseNames[order.VendorID],
|
||||||
"origin_mark_no": fmt.Sprintf("%d", order.OrderSeq),
|
"origin_mark_no": fmt.Sprintf("%d", order.OrderSeq),
|
||||||
"cargo_type": 13,
|
"cargo_type": 13,
|
||||||
"cargo_weight": jxutils.IntWeight2Float(order.Weight),
|
"cargo_weight": jxutils.IntWeight2Float(order.Weight),
|
||||||
|
|||||||
@@ -90,8 +90,6 @@ type IPurchasePlatformHandler interface {
|
|||||||
RefreshAllStoresID(ctx *jxcontext.Context, parentTask tasksch.ITask, isAsync bool) (hint string, err error)
|
RefreshAllStoresID(ctx *jxcontext.Context, parentTask tasksch.ITask, isAsync bool) (hint string, err error)
|
||||||
|
|
||||||
GetVendorID() int
|
GetVendorID() int
|
||||||
GetFieldIDName() string
|
|
||||||
GetFieldSyncStatusName() string
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// db *dao.DaoDB,
|
// db *dao.DaoDB,
|
||||||
|
|||||||
@@ -34,14 +34,6 @@ type tEbaiStoreInfo struct {
|
|||||||
DistrictID int `orm:"column(district_id)"`
|
DistrictID int `orm:"column(district_id)"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PurchaseHandler) GetFieldIDName() string {
|
|
||||||
return model.FieldEbaiID
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *PurchaseHandler) GetFieldSyncStatusName() string {
|
|
||||||
return model.FieldEbaiSyncStatus
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *PurchaseHandler) CreateStore(db *dao.DaoDB, storeID int, userName string) (vendorStoreID string, err error) {
|
func (p *PurchaseHandler) CreateStore(db *dao.DaoDB, storeID int, userName string) (vendorStoreID string, err error) {
|
||||||
var store tEbaiStoreInfo
|
var store tEbaiStoreInfo
|
||||||
sql := `
|
sql := `
|
||||||
|
|||||||
@@ -9,14 +9,6 @@ import (
|
|||||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (p *PurchaseHandler) GetFieldIDName() string {
|
|
||||||
return model.FieldElmID
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *PurchaseHandler) GetFieldSyncStatusName() string {
|
|
||||||
return model.FieldElmSyncStatus
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *PurchaseHandler) ReadStore(vendorStoreID string) (*model.Store, error) {
|
func (p *PurchaseHandler) ReadStore(vendorStoreID string) (*model.Store, error) {
|
||||||
return nil, errors.New("饿了么还没实现")
|
return nil, errors.New("饿了么还没实现")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,14 +30,6 @@ type tJdStoreInfo struct {
|
|||||||
SyncStatus int
|
SyncStatus int
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PurchaseHandler) GetFieldIDName() string {
|
|
||||||
return model.FieldJdID
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *PurchaseHandler) GetFieldSyncStatusName() string {
|
|
||||||
return model.FieldJdSyncStatus
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *PurchaseHandler) ReadStore(vendorStoreID string) (*model.Store, error) {
|
func (p *PurchaseHandler) ReadStore(vendorStoreID string) (*model.Store, error) {
|
||||||
result, err := api.JdAPI.GetStoreInfoByStationNo(vendorStoreID)
|
result, err := api.JdAPI.GetStoreInfoByStationNo(vendorStoreID)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import (
|
|||||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
"git.rosy.net.cn/jx-callback/business/partner"
|
"git.rosy.net.cn/jx-callback/business/partner"
|
||||||
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@@ -28,6 +29,48 @@ func (c *PurchaseHandler) GetVendorID() int {
|
|||||||
return model.VendorIDMTWM
|
return model.VendorIDMTWM
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *PurchaseHandler) GetVendorCategories() (vendorCats []*model.SkuVendorCategory, err error) {
|
||||||
|
cats, err := api.MtwmAPI.RetailGetSpTagIds()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
vendorCatMapList := make([]map[string]*model.SkuVendorCategory, 3)
|
||||||
|
manID := 10000
|
||||||
|
for i := 0; i < 3; i++ {
|
||||||
|
vendorCatMapList[i] = make(map[string]*model.SkuVendorCategory)
|
||||||
|
for _, v := range cats {
|
||||||
|
if utils.MustInterface2Int64(v["level"]) == 3 {
|
||||||
|
namePathList := strings.Split(strings.Trim(utils.Interface2String(v["namePath"]), ","), ",")
|
||||||
|
if len(namePathList) != 3 {
|
||||||
|
panic(fmt.Sprintf("%s没有三级结构", v["namePath"]))
|
||||||
|
}
|
||||||
|
name := namePathList[i]
|
||||||
|
if _, ok := vendorCatMapList[i][name]; !ok {
|
||||||
|
cat := &model.SkuVendorCategory{
|
||||||
|
VendorID: model.VendorIDMTWM,
|
||||||
|
Name: utils.Interface2String(v["name"]),
|
||||||
|
Level: int(utils.MustInterface2Int64(v["level"])),
|
||||||
|
}
|
||||||
|
cat.LastOperator = "builder"
|
||||||
|
vendorCats = append(vendorCats, cat)
|
||||||
|
vendorCatMapList[i][name] = cat
|
||||||
|
if i == 2 {
|
||||||
|
cat.IsLeaf = int8(1)
|
||||||
|
cat.VendorCategoryID = utils.Int64ToStr(utils.MustInterface2Int64(v["id"]))
|
||||||
|
} else {
|
||||||
|
cat.VendorCategoryID = utils.Int2Str(manID) // 非叶子结点编码没有实际使用
|
||||||
|
manID++
|
||||||
|
}
|
||||||
|
if i > 0 {
|
||||||
|
cat.ParentID = vendorCatMapList[i-1][namePathList[i-1]].VendorCategoryID
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return vendorCats, nil
|
||||||
|
}
|
||||||
|
|
||||||
func rangeMtwm2JX(areaStr string) string {
|
func rangeMtwm2JX(areaStr string) string {
|
||||||
var area []interface{}
|
var area []interface{}
|
||||||
if err := utils.UnmarshalUseNumber([]byte(areaStr), &area); err == nil {
|
if err := utils.UnmarshalUseNumber([]byte(areaStr), &area); err == nil {
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
package mtwm
|
package mtwm
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
_ "git.rosy.net.cn/jx-callback/business/jxcallback/orderman"
|
_ "git.rosy.net.cn/jx-callback/business/jxcallback/orderman"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"git.rosy.net.cn/jx-callback/globals/api"
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
@@ -16,3 +19,11 @@ func init() {
|
|||||||
beegodb.Init()
|
beegodb.Init()
|
||||||
api.Init()
|
api.Init()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestGetVendorCategories(t *testing.T) {
|
||||||
|
result, err := new(PurchaseHandler).GetVendorCategories()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
t.Log(utils.Format4Output(result, false))
|
||||||
|
}
|
||||||
|
|||||||
@@ -30,18 +30,6 @@ type tEbaiStoreInfo struct {
|
|||||||
DistrictID int `orm:"column(district_id)"`
|
DistrictID int `orm:"column(district_id)"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PurchaseHandler) GetFieldIDName() string {
|
|
||||||
return model.FieldMtwmID
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *PurchaseHandler) GetFieldSyncStatusName() string {
|
|
||||||
return model.FieldMtwmSyncStatus
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *PurchaseHandler) CreateStore(db *dao.DaoDB, storeID int, userName string) (vendorStoreID string, err error) {
|
|
||||||
return vendorStoreID, err
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *PurchaseHandler) ReadStore(vendorStoreID string) (*model.Store, error) {
|
func (p *PurchaseHandler) ReadStore(vendorStoreID string) (*model.Store, error) {
|
||||||
result, err := api.MtwmAPI.PoiGet(vendorStoreID)
|
result, err := api.MtwmAPI.PoiGet(vendorStoreID)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
@@ -93,28 +81,38 @@ func (p *PurchaseHandler) ReadStore(vendorStoreID string) (*model.Store, error)
|
|||||||
}
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
func (p *PurchaseHandler) CreateStore(db *dao.DaoDB, storeID int, userName string) (err error) {
|
||||||
|
return p.UpdateStore(db, storeID, userName)
|
||||||
|
}
|
||||||
|
|
||||||
func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName string) (err error) {
|
func (p *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName string) (err error) {
|
||||||
type StoreAndVendorInfo struct {
|
|
||||||
model.Store
|
|
||||||
model.StoreMap
|
|
||||||
}
|
|
||||||
var store StoreAndVendorInfo
|
|
||||||
sql := `
|
|
||||||
SELECT *
|
|
||||||
FROM store t1
|
|
||||||
JOIN store_map t2 ON t1.id = t2.store_id AND t2.vendor_id = ? AND (t2.deleted_at = ? OR t2.sync_status <> 0)
|
|
||||||
LEFT JOIN place city ON t1.city_code = city.code
|
|
||||||
LEFT JOIN place district ON t1.district_code = district.code
|
|
||||||
WHERE t1.id = ?
|
|
||||||
ORDER BY t2.updated_at
|
|
||||||
`
|
|
||||||
if db == nil {
|
if db == nil {
|
||||||
db = dao.GetDB()
|
db = dao.GetDB()
|
||||||
}
|
}
|
||||||
if err = dao.GetRow(db, &store, sql, model.VendorIDJD, utils.DefaultTimeValue, storeID); err == nil {
|
storeDetail, err := dao.GetStoreDetail(db, storeID, model.VendorIDMTWM)
|
||||||
globals.SugarLogger.Debug(utils.Format4Output(store, false))
|
if err != nil {
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
|
openTime := [][2]int16{[2]int16{storeDetail.OpenTime1, storeDetail.CloseTime1}}
|
||||||
|
if storeDetail.OpenTime2 > 0 {
|
||||||
|
openTime = append(openTime, [2]int16{storeDetail.OpenTime2, storeDetail.CloseTime2})
|
||||||
|
}
|
||||||
|
params := map[string]interface{}{
|
||||||
|
"name": storeDetail.Store.Name,
|
||||||
|
"address": storeDetail.Address,
|
||||||
|
"longitude": jxutils.IntCoordinate2Standard(storeDetail.Lng),
|
||||||
|
"latitude": jxutils.IntCoordinate2Standard(storeDetail.Lat),
|
||||||
|
"phone": storeDetail.Tel1,
|
||||||
|
"shipping_fee": jxutils.IntPrice2Standard(int64(storeDetail.DeliveryFee)),
|
||||||
|
"shipping_time": openTimeJX2Mtwm(openTime),
|
||||||
|
"third_tag_name": "蔬菜",
|
||||||
|
}
|
||||||
|
params["open_level"], params["is_online"] = bizStatusJX2Mtwm(jxutils.MergeStoreStatus(storeDetail.Status, storeDetail.VendorStatus))
|
||||||
|
globals.SugarLogger.Debug(utils.Format4Output(params, false))
|
||||||
|
if globals.EnableStoreWrite && globals.EnableMtwmStoreWrite {
|
||||||
|
err = api.MtwmAPI.PoiSave(utils.Int2Str(storeDetail.Store.ID), params)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PurchaseHandler) RefreshAllStoresID(ctx *jxcontext.Context, parentTask tasksch.ITask, isAsync bool) (hint string, err error) {
|
func (p *PurchaseHandler) RefreshAllStoresID(ctx *jxcontext.Context, parentTask tasksch.ITask, isAsync bool) (hint string, err error) {
|
||||||
|
|||||||
87
business/partner/purchase/mtwm/store_sku.go
Normal file
87
business/partner/purchase/mtwm/store_sku.go
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
package mtwm
|
||||||
|
|
||||||
|
import (
|
||||||
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
|
"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 (p *PurchaseHandler) SyncStoreCategory(ctx *jxcontext.Context, parentTask tasksch.ITask, storeID int, isAsync bool) (hint string, err error) {
|
||||||
|
userName := ctx.GetUserName()
|
||||||
|
strStoreID := utils.Int2Str(storeID)
|
||||||
|
db := dao.GetDB()
|
||||||
|
rootTask := tasksch.NewSeqTask("mtwm SyncStoreCategory", userName, func(rootTask *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
||||||
|
level := step + 1
|
||||||
|
catList, err := dao.GetStoreCategories(db, model.VendorIDMTWM, storeID, level)
|
||||||
|
task := tasksch.NewParallelTask("mtwm SyncStoreCategory2", nil, userName, func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||||
|
updateFields := []string{dao.GetSyncStatusStructField(model.VendorNames[model.VendorIDMTWM])}
|
||||||
|
catInfo := batchItemList[0].(*dao.StoreCatSyncInfo)
|
||||||
|
if globals.EnableStoreWrite && globals.EnableMtwmStoreWrite {
|
||||||
|
if catInfo.MtwmSyncStatus&model.SyncFlagDeletedMask != 0 { // 删除
|
||||||
|
err = api.MtwmAPI.RetailCatDelete(strStoreID, catInfo.MtwmID)
|
||||||
|
} else if catInfo.MtwmSyncStatus&(model.SyncFlagNewMask|model.SyncFlagModifiedMask) != 0 { // 新增
|
||||||
|
catName := catInfo.CatName
|
||||||
|
subCatName := ""
|
||||||
|
originName := ""
|
||||||
|
if catInfo.MtwmSyncStatus&model.SyncFlagNewMask == 0 {
|
||||||
|
originName = catInfo.MtwmID
|
||||||
|
}
|
||||||
|
if level == 2 {
|
||||||
|
originName = catInfo.ParentCatName
|
||||||
|
catName = catInfo.ParentCatName
|
||||||
|
subCatName = catInfo.CatName
|
||||||
|
if catInfo.MtwmSyncStatus&model.SyncFlagNewMask == 0 {
|
||||||
|
originName = catInfo.MtwmID
|
||||||
|
catName = catInfo.CatName
|
||||||
|
subCatName = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if catName == "" {
|
||||||
|
panic("catName is empty")
|
||||||
|
}
|
||||||
|
if err := api.MtwmAPI.RetailCatUpdate(strStoreID, originName, catName, subCatName, catInfo.Seq); err == nil {
|
||||||
|
catInfo.MtwmID = catInfo.CatName
|
||||||
|
updateFields = append(updateFields, dao.GetVendorThingIDStructField(model.VendorNames[model.VendorIDMTWM]))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if err == nil {
|
||||||
|
db2 := dao.GetDB()
|
||||||
|
catInfo.MtwmSyncStatus = 0
|
||||||
|
_, err = dao.UpdateEntity(db2, &catInfo.StoreSkuCategoryMap, updateFields...)
|
||||||
|
}
|
||||||
|
return nil, err
|
||||||
|
}, catList)
|
||||||
|
rootTask.AddChild(task).Run()
|
||||||
|
_, err = task.GetResult(0)
|
||||||
|
return nil, err
|
||||||
|
}, 2)
|
||||||
|
tasksch.AddChild(parentTask, rootTask).Run()
|
||||||
|
if !isAsync {
|
||||||
|
_, err = rootTask.GetResult(0)
|
||||||
|
}
|
||||||
|
return rootTask.ID, err
|
||||||
|
}
|
||||||
|
func (p *PurchaseHandler) ReadStoreCategories(storeID int) (cats []*model.SkuCategory, err error) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *PurchaseHandler) ReadStoreSku(storeID, skuID int) (skuNameExt *model.SkuNameExt, err error) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *PurchaseHandler) SyncStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, storeID int, skuIDs []int, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||||
|
return hint, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *PurchaseHandler) RefreshStoresAllSkusID(ctx *jxcontext.Context, parentTask tasksch.ITask, isAsync bool, storeIDs []int) (hint string, err error) {
|
||||||
|
return hint, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *PurchaseHandler) FullSyncStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, storeID int, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||||
|
return hint, err
|
||||||
|
}
|
||||||
17
business/partner/purchase/mtwm/store_sku_test.go
Normal file
17
business/partner/purchase/mtwm/store_sku_test.go
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
package mtwm
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||||||
|
// _ "git.rosy.net.cn/jx-callback/business/jxcallback/orderman"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestSyncStoreCategory(t *testing.T) {
|
||||||
|
store, err := new(PurchaseHandler).SyncStoreCategory(jxcontext.AdminCtx, nil, 100077, false)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
t.Log(utils.Format4Output(store, false))
|
||||||
|
}
|
||||||
@@ -16,9 +16,8 @@ func TestReadStore(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestUpdateStore(t *testing.T) {
|
func TestUpdateStore(t *testing.T) {
|
||||||
store, err := new(PurchaseHandler).UpdateStore("4351018")
|
err := new(PurchaseHandler).UpdateStore(nil, 100002, "test")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
t.Log(utils.Format4Output(store, false))
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,8 @@ enableStore = true
|
|||||||
enableStoreWrite = false
|
enableStoreWrite = false
|
||||||
enableEbaiStoreWrite = false
|
enableEbaiStoreWrite = false
|
||||||
enableElmStoreWrite = true
|
enableElmStoreWrite = true
|
||||||
|
enableMtwmStoreWrite = false
|
||||||
|
|
||||||
orderUseNewTable = true
|
orderUseNewTable = true
|
||||||
|
|
||||||
aliKey = "LTAI6xJUGaP6WdMQ"
|
aliKey = "LTAI6xJUGaP6WdMQ"
|
||||||
|
|||||||
10
controllers/mtwm_callback.go
Normal file
10
controllers/mtwm_callback.go
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
package controllers
|
||||||
|
|
||||||
|
import (
|
||||||
|
_ "git.rosy.net.cn/jx-callback/business/partner/purchase/mtwm"
|
||||||
|
"github.com/astaxie/beego"
|
||||||
|
)
|
||||||
|
|
||||||
|
type MtwmController struct {
|
||||||
|
beego.Controller
|
||||||
|
}
|
||||||
@@ -27,7 +27,9 @@ var (
|
|||||||
EnableStoreWrite bool
|
EnableStoreWrite bool
|
||||||
EnableEbaiStoreWrite bool
|
EnableEbaiStoreWrite bool
|
||||||
EnableElmStoreWrite bool
|
EnableElmStoreWrite bool
|
||||||
OrderUseNewTable bool
|
EnableMtwmStoreWrite bool
|
||||||
|
|
||||||
|
OrderUseNewTable bool
|
||||||
|
|
||||||
QiniuBucket string
|
QiniuBucket string
|
||||||
)
|
)
|
||||||
@@ -56,6 +58,7 @@ func Init() {
|
|||||||
EnableStoreWrite = beego.AppConfig.DefaultBool("enableStoreWrite", false)
|
EnableStoreWrite = beego.AppConfig.DefaultBool("enableStoreWrite", false)
|
||||||
EnableEbaiStoreWrite = beego.AppConfig.DefaultBool("enableEbaiStoreWrite", false)
|
EnableEbaiStoreWrite = beego.AppConfig.DefaultBool("enableEbaiStoreWrite", false)
|
||||||
EnableElmStoreWrite = beego.AppConfig.DefaultBool("enableElmStoreWrite", false)
|
EnableElmStoreWrite = beego.AppConfig.DefaultBool("enableElmStoreWrite", false)
|
||||||
|
EnableMtwmStoreWrite = beego.AppConfig.DefaultBool("enableMtwmStoreWrite", false)
|
||||||
|
|
||||||
if EnableStore {
|
if EnableStore {
|
||||||
OrderUseNewTable = beego.AppConfig.DefaultBool("orderUseNewTable", false)
|
OrderUseNewTable = beego.AppConfig.DefaultBool("orderUseNewTable", false)
|
||||||
|
|||||||
Reference in New Issue
Block a user