Merge remote-tracking branch 'origin/jdshop' into jxact

This commit is contained in:
苏尹岚
2020-08-18 08:49:00 +08:00
19 changed files with 262 additions and 94 deletions

View File

@@ -1070,7 +1070,7 @@ func RefreshPageActs(ctx *jxcontext.Context, vendorIDs []int, createdFrom time.T
func DeleteStoresFromAct(ctx *jxcontext.Context, vendorID int, actTypes, storeIDs []int, isAsync, isContinueWhenError bool) (hint string, err error) {
db := dao.GetDB()
task := tasksch.NewParallelTask("将SKU从所有活动中删除", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError), ctx,
task := tasksch.NewParallelTask("将门店从所有活动中删除", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError), ctx,
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
storeID := batchItemList[0].(int)
acts, _ := dao.QueryActs(db, 0, 0, 50, 0, "", vendorID, []int{1}, actTypes, nil, storeID, nil, 0, utils.ZeroTimeValue, utils.ZeroTimeValue, time.Now().AddDate(0, -3, 0), time.Now())
@@ -1094,7 +1094,6 @@ func DeleteStoresFromAct(ctx *jxcontext.Context, vendorID int, actTypes, storeID
_, err = SyncAct(ctx, nil, v.ID, nil, true)
}
}
return retVal, err
}, storeIDs)
tasksch.HandleTask(task, nil, true).Run()

View File

@@ -1224,6 +1224,7 @@ func AddStoreVendorMap(ctx *jxcontext.Context, db *dao.DaoDB, vendorID int, vend
if globals.IsAddEvent {
err = AddEventDetail(db, ctx, model.OperateAdd, vendorID, model.ThingTypeStore, storeID, "", `{"VendorID":`+utils.Int2Str(vendorID)+`}`)
}
_, err = CurVendorSync.FullSyncStoresSkus(ctx, db, []int{vendorID}, []int{storeID}, true, nil, true, true)
return outStoreMap, err
}

View File

@@ -1684,7 +1684,8 @@ func CopyStoreSkus(ctx *jxcontext.Context, fromStoreID int, toStoreIDs []int, co
t1.status = IF(? = 0, t1.status, t0.status),
t1.jd_sync_status = t1.jd_sync_status | ?,
t1.mtwm_sync_status = t1.mtwm_sync_status | ?,
t1.ebai_sync_status = t1.ebai_sync_status | ?
t1.ebai_sync_status = t1.ebai_sync_status | ?,
t1.stock = t0.stock
WHERE t1.store_id = ? AND t1.deleted_at = ? AND t0.id IS NOT NULL
`
sqlParams := []interface{}{
@@ -1725,13 +1726,13 @@ func CopyStoreSkus(ctx *jxcontext.Context, fromStoreID int, toStoreIDs []int, co
// 添加toStore中不存在但fromStore存在的
sql = `
INSERT INTO store_sku_bind(created_at, updated_at, last_operator, deleted_at, store_id, sku_id, sub_store_id, price, jx_price, unit_price, status,
jd_sync_status, ebai_sync_status, mtwm_sync_status)
jd_sync_status, ebai_sync_status, mtwm_sync_status, stock)
SELECT ?, ?, ?, ?, ?,
t1.sku_id, 0,
IF(t1.price * ? / 100 > 0, t1.price * ? / 100, 1) * ?,
IF(t1.jx_price * ? / 100 > 0, t1.jx_price * ? / 100, 1) * ?,
IF(t1.unit_price * ? / 100 > 0, t1.unit_price * ? / 100, 1) * ?,
IF(? = 0, ?, t1.status), ?, ?, ?
IF(? = 0, ?, t1.status), ?, ?, ?, t1.stock
FROM store_sku_bind t1
JOIN sku t2 ON t1.sku_id = t2.id AND t2.deleted_at = ?
JOIN sku_name t3 ON t2.name_id = t3.id AND t3.deleted_at = ?
@@ -3332,7 +3333,7 @@ func FocusStoreSkusBySku(ctx *jxcontext.Context, skuBindInfos []*StoreSkuBindInf
} else {
payPercentage = store.PayPercentage
}
priceReferList, _ := dao.GetPriceReferSnapshotNoPage(db, []int{store.CityCode}, nil, []int{skuList[0].NameID}, utils.Time2Date(time.Now().AddDate(0, 0, -1)))
priceReferList, _ := dao.GetPriceReferSnapshotNoPage(db, []int{0}, nil, []int{skuList[0].NameID}, utils.Time2Date(time.Now().AddDate(0, 0, -1)))
if len(priceReferList) > 0 {
price = priceReferList[0].MidUnitPrice / payPercentage * 100
}
@@ -4796,3 +4797,103 @@ func StoreSkuPriceAudit(ctx *jxcontext.Context, storeSkuAudits []*model.StoreSku
}
return nil, hint, err
}
func GetSpecialtyStoreSkus(ctx *jxcontext.Context, storeIDs, vendorIDs []int) (err error) {
type SpecialtyStoreSkus struct {
StoreID int `json:"门店ID"`
StoreName string `json:"门店名"`
SkuID int `json:"SkuID"`
SkuName string `json:"商品名"`
Price float64 `json:"平台价"`
VendorName string `json:"平台名"`
}
var (
db = dao.GetDB()
specialtyStoreSkus []*SpecialtyStoreSkus
excelTitle = []string{
"门店ID",
"门店名",
"SkuID",
"商品名",
"平台价",
"平台名",
}
sheetList []*excel.Obj2ExcelSheetConfig
downloadURL, fileName string
)
for _, v := range vendorIDs {
for _, vv := range storeIDs {
storeDetail, err := dao.GetStoreDetail(db, vv, v)
if err != nil || storeDetail == nil {
continue
}
if partner.IsMultiStore(v) {
var (
page = 1
vendorSkuIDs []string
)
_, totalCount, _ := api.JdPageAPI.GetJdTopSkus(storeDetail.VendorStoreID, page)
for ; page < totalCount/10+1; page++ {
result, _, _ := api.JdPageAPI.GetJdTopSkus(storeDetail.VendorStoreID, page)
vendorSkuIDs = append(vendorSkuIDs, result...)
}
for _, vvv := range vendorSkuIDs {
thingMap := &model.ThingMap{}
sql := `
SELECT * FROM thing_map WHERE thing_type = 3 AND vendor_thing_id = ? AND vendor_org_code = 320406
AND deleted_at = ?
`
sqlParams := []interface{}{
vvv, utils.DefaultTimeValue,
}
dao.GetRow(db, &thingMap, sql, sqlParams)
skus, _ := dao.GetSkus(db, []int{int(thingMap.ThingID)}, nil, nil, nil, nil)
specialtyStoreSku := &SpecialtyStoreSkus{
StoreID: vv,
StoreName: storeDetail.Name,
SkuID: int(thingMap.ThingID),
SkuName: skus[0].Name,
Price: 0,
VendorName: model.VendorNames[v],
}
specialtyStoreSkus = append(specialtyStoreSkus, specialtyStoreSku)
}
} else {
handler := partner.GetPurchasePlatformFromVendorID(v).(partner.ISingleStoreStoreSkuHandler)
skuList, _ := handler.GetStoreSkusFullInfo(ctx, nil, vv, storeDetail.VendorStoreID, nil)
for _, sku := range skuList {
if sku.SkuList[0].IsSpecialty == model.YES {
specialtyStoreSku := &SpecialtyStoreSkus{
StoreID: vv,
StoreName: storeDetail.Name,
SkuID: sku.SkuList[0].SkuID,
SkuName: sku.Name,
Price: float64(sku.SkuList[0].VendorPrice) / 100,
VendorName: model.VendorNames[v],
}
specialtyStoreSkus = append(specialtyStoreSkus, specialtyStoreSku)
}
}
}
}
}
excelConf := &excel.Obj2ExcelSheetConfig{
Title: "sheet1",
Data: specialtyStoreSkus,
CaptionList: excelTitle,
}
sheetList = append(sheetList, excelConf)
if excelConf != nil {
downloadURL, fileName, err = jxutils.UploadExeclAndPushMsg(sheetList, "力荐或置顶商品")
} else {
baseapi.SugarLogger.Debug("WriteToExcel: dataSuccess is nil!")
}
if err != nil {
baseapi.SugarLogger.Errorf("WriteToExcel:upload %s , %s failed error:%v", fileName, err)
} else {
noticeMsg := fmt.Sprintf("[详情点我]%s/billshow/?normal=true&path=%s \n", globals.BackstageHost, downloadURL)
ddmsg.SendUserMessage(dingdingapi.MsgTyeText, ctx.GetUserID(), "异步任务完成", noticeMsg)
baseapi.SugarLogger.Debug("WriteToExcel: dataSuccess downloadURL: [%v]", downloadURL)
}
return err
}

View File

@@ -13,7 +13,6 @@ import (
"github.com/360EntSecGroup-Skylar/excelize"
"github.com/qiniu/api.v7/storage"
"git.rosy.net.cn/baseapi/platformapi/dadaapi"
"git.rosy.net.cn/baseapi/platformapi/jdapi"
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"
"git.rosy.net.cn/baseapi/utils"
@@ -1585,18 +1584,34 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) {
// fmt.Println("updateList2", utils.Format4Output(updateList, false))
// fmt.Println("deleteList2", deleteList)
var (
db = dao.GetDB()
db = dao.GetDB()
storeSkus []*model.StoreSkuBind
)
list, err := dao.GetStoreCourierList(db, nil, []int{model.VendorIDDada}, model.StoreStatusAll, model.StoreAuditStatusAll)
for _, v := range list {
sd, _ := api.DadaAPI.ShopDetail(v.VendorStoreID)
if !strings.Contains(sd.StationName, globals.StoreName) {
shopInfo := &dadaapi.ShopInfo{
OriginShopID: v.VendorStoreID,
StationName: globals.StoreName + "-" + sd.StationName,
}
api.DadaAPI.ShopUpdate(shopInfo)
sql := `
SELECT a.* FROM store_sku_bind a,store b
WHERE a.store_id = b.id AND b.deleted_at = '1970-01-01 00:00:00' AND a.unit_price = 100
AND a.deleted_at = '1970-01-01 00:00:00'
AND a.sku_id NOT IN (34268,6045545,29401,6039481,29285,29286,29287,6040945,6040963,31737,33465,6045629,34989,6043733,6039661,25917,29569)
`
err = dao.GetRows(db, &storeSkus, sql, nil)
for _, v := range storeSkus {
var unitPrice = 0
his, _ := dao.GetStoreSkuHistory(db, []int{v.StoreID}, []int{v.SkuID}, model.StoreAuditStatusAll, utils.Time2Date(utils.Str2Time("2020-08-09 00:00:00")))
if len(his) == 0 {
p, _ := dao.GetPriceReferSnapshotNoPage(db, []int{0}, []int{v.SkuID}, nil, utils.Time2Date(time.Now().AddDate(0, 0, -1)))
unitPrice = p[0].MidUnitPrice
} else {
unitPrice = his[0].UnitPrice
}
skus, _ := dao.GetSkus(db, []int{v.SkuID}, nil, nil, nil, nil)
var skuBindInfos []*cms.StoreSkuBindInfo
skuBindInfo := &cms.StoreSkuBindInfo{
StoreID: v.StoreID,
NameID: skus[0].NameID,
UnitPrice: unitPrice,
}
skuBindInfos = append(skuBindInfos, skuBindInfo)
cms.UpdateStoresSkusByBind(ctx, nil, skuBindInfos, true, true, false)
}
return err
}