Accept Merge Request #188: (su -> mark)

Merge Request: 非额先打门店暂时无法关注饿先打商品
Created By: @苏尹岚
Accepted By: @苏尹岚
URL: https://rosydev.coding.net/p/jx-callback/d/jx-callback/git/merge/188
This commit is contained in:
苏尹岚
2020-02-15 13:44:52 +08:00
5 changed files with 65 additions and 47 deletions

View File

@@ -415,6 +415,14 @@ func GetSkuNames(ctx *jxcontext.Context, keyword string, isBySku bool, params ma
sqlParams = append(sqlParams, nameIDs) sqlParams = append(sqlParams, nameIDs)
} }
} }
if params["isExd"] != nil {
var idExd = params["isExd"].(bool)
if idExd {
sql += " AND t2.exd_sku_id <> ''"
} else {
sql += " AND t2.exd_sku_id = ''"
}
}
if params["categoryID"] != nil { if params["categoryID"] != nil {
cat := &model.SkuCategory{} cat := &model.SkuCategory{}
cat.ID = params["categoryID"].(int) cat.ID = params["categoryID"].(int)
@@ -570,8 +578,9 @@ func GetSkuNames(ctx *jxcontext.Context, keyword string, isBySku bool, params ma
CONCAT("[", GROUP_CONCAT(DISTINCT CONCAT('{"id":', t2.id, ',"comment":"', t2.comment, '","status":', t2.status, CONCAT("[", GROUP_CONCAT(DISTINCT CONCAT('{"id":', t2.id, ',"comment":"', t2.comment, '","status":', t2.status,
',"createdAt":"', CONCAT(REPLACE(t2.created_at," ","T"),"+08:00"), '","updatedAt":"', CONCAT(REPLACE(t2.updated_at," ","T"),"+08:00"), ',"createdAt":"', CONCAT(REPLACE(t2.created_at," ","T"),"+08:00"), '","updatedAt":"', CONCAT(REPLACE(t2.updated_at," ","T"),"+08:00"),
'","lastOperator":"', t2.last_operator, '","specQuality":', t2.spec_quality, ',"specUnit":"', t2.spec_unit, '","lastOperator":"', t2.last_operator, '","specQuality":', t2.spec_quality, ',"specUnit":"', t2.spec_unit,
'","exdSkuID":"', t2.exd_sku_id,
'","weight":', t2.weight, ',"categoryID":', t2.category_id, ',"nameID":', t2.name_id, '","weight":', t2.weight, ',"categoryID":', t2.category_id, ',"nameID":', t2.name_id,
', "seq":', t2.seq, ', "seq":', t2.seq,
"}")), "]") skus_str, "}")), "]") skus_str,
CONCAT("[", GROUP_CONCAT(DISTINCT t3.place_code), "]") places_str CONCAT("[", GROUP_CONCAT(DISTINCT t3.place_code), "]") places_str
` + sql + ` ` + sql + `

View File

@@ -82,15 +82,16 @@ type StoreSkuBindInfo struct {
type tStoreSkuBindAndSpec struct { type tStoreSkuBindAndSpec struct {
model.StoreSkuBind model.StoreSkuBind
SkuStatus int SkuStatus int
SkuNameStatus int SkuNameStatus int
Name string Name string
SpecQuality float32 SpecQuality float32
SpecUnit string SpecUnit string
SkuNamePrice int SkuNamePrice int
SkuNameUnit string SkuNameUnit string
RealSkuID int `orm:"column(real_sku_id)"` RealSkuID int `orm:"column(real_sku_id)"`
ExdSkuID string `orm:"column(exd_sku_id)"`
StoreName string
ChangePriceType int8 `json:"changePriceType"` // 修改价格类型,即是否需要审核 ChangePriceType int8 `json:"changePriceType"` // 修改价格类型,即是否需要审核
} }
@@ -366,6 +367,9 @@ func getGetStoresSkusBaseSQL(db *dao.DaoDB, storeIDs, skuIDs []int, isFocus bool
if len(storeIDs) > 0 { if len(storeIDs) > 0 {
sql += " AND t3.id IN (" + dao.GenQuestionMarks(len(storeIDs)) + ")" sql += " AND t3.id IN (" + dao.GenQuestionMarks(len(storeIDs)) + ")"
sqlParams = append(sqlParams, storeIDs) sqlParams = append(sqlParams, storeIDs)
if len(storeIDs) == 1 {
sql += " AND IF(INSTR(t3.name,'" + model.ExdStoreName + "') > 0, t2.exd_sku_id <> '', t2.exd_sku_id = '')"
}
} }
if len(skuIDs) > 0 { if len(skuIDs) > 0 {
sql += " AND t2.id IN (" + dao.GenQuestionMarks(len(skuIDs)) + ")" sql += " AND t2.id IN (" + dao.GenQuestionMarks(len(skuIDs)) + ")"
@@ -976,13 +980,13 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs
sql := ` sql := `
SELECT SELECT
t2.*, t2.*,
t1.id real_sku_id, t1.status sku_status, t1.spec_quality, t1.spec_unit,` t1.id real_sku_id, t1.status sku_status, t1.spec_quality, t1.spec_unit, t1.exd_sku_id,`
if needGetExistingUnitPrice { if needGetExistingUnitPrice {
sql += " IF(t5.unit_price > 0, t5.unit_price, t3.price) sku_name_price," sql += " IF(t5.unit_price > 0, t5.unit_price, t3.price) sku_name_price,"
} }
sql += ` sql += `
t3.unit sku_name_unit, t3.name, t3.status sku_name_status, t3.unit sku_name_unit, t3.name, t3.status sku_name_status,
ts.change_price_type ts.change_price_type, ts.name store_name
FROM sku t1 FROM sku t1
JOIN store ts ON ts.id = ? AND ts.deleted_at = ? JOIN store ts ON ts.id = ? AND ts.deleted_at = ?
LEFT JOIN store_sku_bind t2 ON t2.sku_id = t1.id AND t2.store_id = ts.id AND t2.deleted_at = ? LEFT JOIN store_sku_bind t2 ON t2.sku_id = t1.id AND t2.store_id = ts.id AND t2.deleted_at = ?
@@ -1037,41 +1041,44 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs
// globals.SugarLogger.Debug(utils.Format4Output(inSkuBind, false)) // globals.SugarLogger.Debug(utils.Format4Output(inSkuBind, false))
var skuBind *model.StoreSkuBind var skuBind *model.StoreSkuBind
if v.ID == 0 { if v.ID == 0 {
if skuBindInfo.IsFocus == 1 && v.SkuNameStatus == model.SkuStatusNormal && v.SkuStatus == model.SkuStatusNormal && isCanChangePrice { if v.ExdSkuID == "" {
skuBind = &model.StoreSkuBind{ // if !(strings.Contains(v.StoreName, model.ExdStoreName) && v.ExdSkuID == "") {
StoreID: storeID, if skuBindInfo.IsFocus == 1 && v.SkuNameStatus == model.SkuStatusNormal && v.SkuStatus == model.SkuStatusNormal && isCanChangePrice {
SkuID: v.RealSkuID, skuBind = &model.StoreSkuBind{
SubStoreID: skuBindInfo.SubStoreID, // todo 这个应该从用户信息中自动获得 StoreID: storeID,
UnitPrice: unitPrice, SkuID: v.RealSkuID,
Price: jxutils.CaculateSkuPrice(unitPrice, v.SpecQuality, v.SpecUnit, v.SkuNameUnit), SubStoreID: skuBindInfo.SubStoreID, // todo 这个应该从用户信息中自动获得
Status: model.StoreSkuBindStatusDontSale, // 缺省不可售? UnitPrice: unitPrice,
} Price: jxutils.CaculateSkuPrice(unitPrice, v.SpecQuality, v.SpecUnit, v.SkuNameUnit),
skuBind.JxPrice = jxutils.CaculatePriceByPricePack(storeDetail.PricePercentagePackObj, int(storeDetail.PricePercentage), skuBind.Price) Status: model.StoreSkuBindStatusDontSale, // 缺省不可售?
if tmpStatus := getSkuSaleStatus(inSkuBind, skuBindInfo); tmpStatus != model.StoreSkuBindStatusNA {
skuBind.Status = tmpStatus
}
if globals.IsAddEvent {
err = AddEventDetail(db, ctx, model.OperateAdd, v.RealSkuID, model.ThingTypeSku, storeID, "", "")
}
setStoreSkuBindStatus(skuBind, model.SyncFlagNewMask)
dao.WrapAddIDCULDEntity(skuBind, userName)
// globals.SugarLogger.Debug(utils.Format4Output(skuBind, false))
if deletedSku := dao.GetDeletedStoreSkuBind(db, skuBind.StoreID, skuBind.SkuID); deletedSku == nil {
if err = dao.CreateEntity(db, skuBind); err != nil {
dao.Rollback(db)
return nil, err
} }
num = 1 skuBind.JxPrice = jxutils.CaculatePriceByPricePack(storeDetail.PricePercentagePackObj, int(storeDetail.PricePercentage), skuBind.Price)
} else { if tmpStatus := getSkuSaleStatus(inSkuBind, skuBindInfo); tmpStatus != model.StoreSkuBindStatusNA {
// 需要处理,在删除某个门店商品,同步失败的情况下,又把商品重新关注。 skuBind.Status = tmpStatus
// 所以统一处理成恢复删除的记录,这样避免问题 }
skuBind.ID = deletedSku.ID if globals.IsAddEvent {
// vendorSkuID的赋值意义不大 err = AddEventDetail(db, ctx, model.OperateAdd, v.RealSkuID, model.ThingTypeSku, storeID, "", "")
skuBind.MtwmID = deletedSku.MtwmID }
skuBind.EbaiID = deletedSku.EbaiID setStoreSkuBindStatus(skuBind, model.SyncFlagNewMask)
if num, err = dao.UpdateEntity(db, skuBind); err != nil { dao.WrapAddIDCULDEntity(skuBind, userName)
dao.Rollback(db) // globals.SugarLogger.Debug(utils.Format4Output(skuBind, false))
return nil, err if deletedSku := dao.GetDeletedStoreSkuBind(db, skuBind.StoreID, skuBind.SkuID); deletedSku == nil {
if err = dao.CreateEntity(db, skuBind); err != nil {
dao.Rollback(db)
return nil, err
}
num = 1
} else {
// 需要处理,在删除某个门店商品,同步失败的情况下,又把商品重新关注。
// 所以统一处理成恢复删除的记录,这样避免问题
skuBind.ID = deletedSku.ID
// vendorSkuID的赋值意义不大
skuBind.MtwmID = deletedSku.MtwmID
skuBind.EbaiID = deletedSku.EbaiID
if num, err = dao.UpdateEntity(db, skuBind); err != nil {
dao.Rollback(db)
return nil, err
}
} }
} }
} }

View File

@@ -47,6 +47,7 @@ var (
} }
checkCookieList = []string{ checkCookieList = []string{
"08:00:00", "08:00:00",
"12:00:00",
"18:00:00", "18:00:00",
} }
createStorePriceTimeList = []string{ createStorePriceTimeList = []string{

View File

@@ -15,7 +15,7 @@ dadaAppSecret = "2c717ad914767d6e2beb3f743db9e477"
mtwmAppID = "589" mtwmAppID = "589"
mtwmSecret = "a81eb3df418d83d6a1a4b7c572156d2f" mtwmSecret = "a81eb3df418d83d6a1a4b7c572156d2f"
mtwmCallbackURL = "http://callback.jxc4.com" mtwmCallbackURL = "http://callback.jxc4.com"
mtwmCookieStr = "_lxsdk_cuid=16ddced5e9a95-0a65869c427a14-48714616-15f900-16ddced5e9b2b; _hc.v=cfebbfd1-79a7-9823-d8df-77e59646cb34.1571369610; _lxsdk=16ddced5e9a95-0a65869c427a14-48714616-15f900-16ddced5e9b2b; uuid_update=true; uuid=7b28e71504f5414e382b.1579155871.1.0.0; device_uuid=!64dedf83-b510-4910-8a31-b2b13d0bdd73; pushToken=00kRvxlerO15kB0dJFWDwYuctAoe04xGMNd0r3BqvLUA*; acctId=57396785; token=0eRY2RM8Adm0th9r_lm1_BMg06Y95bBCLl79MVCMym0g*; brandId=-1; wmPoiId=-1; isOfflineSelfOpen=0; city_id=0; isChain=1; existBrandPoi=true; ignore_set_router_proxy=true; region_id=; region_version=0; newCategory=false; bsid=OyqgRLyV54i9JKP0zRCI9jPyXc4UBU-6KReDAkPIwSlljhb97JPyFUIXfYQvhlJb6G1erzHQKbvtZ2pSWOYDxQ; cityId=510100; provinceId=510000; city_location_id=0; location_id=0; igateApp=shangouepc; wpush_server_url=wss://wpush.meituan.com; shopCategory=food; set_info=%7B%22wmPoiId%22%3A-1%2C%22ignoreSetRouterProxy%22%3Atrue%7D; JSESSIONID=ikhdbyehstgx3lfc9l9pdr8u; LX_SC_CONSTANT=c_shangou_online_e_znrurnrc; _lxsdk_s=16fb15646be-e0a-ff3-7c4%7" mtwmCookieStr = "_lxsdk_cuid=16ddced5e9a95-0a65869c427a14-48714616-15f900-16ddced5e9b2b; _hc.v=cfebbfd1-79a7-9823-d8df-77e59646cb34.1571369610; _lxsdk=16ddced5e9a95-0a65869c427a14-48714616-15f900-16ddced5e9b2b; uuid_update=true; uuid=7b28e71504f5414e382b.1579155871.1.0.0; device_uuid=!64dedf83-b510-4910-8a31-b2b13d0bdd73; pushToken=00kRvxlerO15kB0dJFWDwYuctAoe04xGMNd0r3BqvLUA*; acctId=57396785; brandId=-1; wmPoiId=-1; isOfflineSelfOpen=0; city_id=0; isChain=1; existBrandPoi=true; ignore_set_router_proxy=true; region_id=; region_version=0; newCategory=false; bsid=OyqgRLyV54i9JKP0zRCI9jPyXc4UBU-6KReDAkPIwSlljhb97JPyFUIXfYQvhlJb6G1erzHQKbvtZ2pSWOYDxQ; cityId=510100; provinceId=510000; city_location_id=0; location_id=0; igateApp=shangouepc; wpush_server_url=wss://wpush.meituan.com; token=0MScAPaSa57iwRpgpCmGLf21tiA4yU4Uy-nDZlv8wNWs*; shopCategory=food; set_info=%7B%22wmPoiId%22%3A-1%2C%22ignoreSetRouterProxy%22%3Atrue%7D; JSESSIONID=105dgww27nsy6yfp68q7wmcni; LX_SC_CONSTANT=c_shangou_online_e_znrurnrc; _lxsdk_s=17041b590ac-3d-689-a8c%7C%7C15"
autonaviKey = "ef64f638f31e05cb7bde28790f7309fe" autonaviKey = "ef64f638f31e05cb7bde28790f7309fe"

View File

@@ -147,6 +147,7 @@ func (c *SkuController) SyncCategory() {
// @Param skuCategoryID query int false "商品所属类别ID" // @Param skuCategoryID query int false "商品所属类别ID"
// @Param unit query string false "商品单位" // @Param unit query string false "商品单位"
// @Param isSpu query bool false "是否是SPU" // @Param isSpu query bool false "是否是SPU"
// @Param isExd query bool false "是否是饿鲜达商品"
// @Param fromStatus query int false "查询起始状态0下架1正常" // @Param fromStatus query int false "查询起始状态0下架1正常"
// @Param toStatus query int false "查询起始状态0下架1正常" // @Param toStatus query int false "查询起始状态0下架1正常"
// @Param offset query int false "门店列表起始序号以0开始缺省为0" // @Param offset query int false "门店列表起始序号以0开始缺省为0"