Merge remote-tracking branch 'origin/mark' into don

This commit is contained in:
Rosy-zhudan
2019-09-03 14:49:08 +08:00
33 changed files with 605 additions and 316 deletions

View File

@@ -16,7 +16,7 @@ import (
func TransferLegacyWeixins(mobile string) (err error) {
globals.SugarLogger.Debugf("TransferLegacyWeixins mobile:%s", mobile)
if !globals.EnableWXAuth2 {
if !globals.EnableWXAuth2 || globals.DisableWXAuth1 {
return nil
}
remark4Transfer := "transfer"

View File

@@ -1436,6 +1436,7 @@ func GetStoresVendorSnapshot(ctx *jxcontext.Context, parentTask tasksch.ITask, v
CloseTime2: store.CloseTime2,
DeliveryType: store.DeliveryType,
StoreName: store.OriginalName,
}}
}
}
@@ -1445,7 +1446,6 @@ func GetStoresVendorSnapshot(ctx *jxcontext.Context, parentTask tasksch.ITask, v
tasksch.HandleTask(task, parentTask, true).Run()
resultList, err := task.GetResult(0)
if len(resultList) > 0 {
err = nil // 强制忽略
for _, v := range resultList {
dao.WrapAddIDCULDEntity(v, ctx.GetUserName())
vendorStoreSnapshotList = append(vendorStoreSnapshotList, v.(*model.VendorStoreSnapshot))
@@ -1478,11 +1478,11 @@ func updateVendorStoreStatusBySnapshot(db *dao.DaoDB, curSnapshotList []*model.V
}()
for _, v := range storeMapList {
if snapshot := snapshotMap[jxutils.Combine2Int(v.StoreID, v.VendorID)]; snapshot != nil &&
(v.Status != snapshot.Status || v.DeliveryType != snapshot.DeliveryType) {
(v.Status != snapshot.Status || v.DeliveryType != snapshot.DeliveryType || v.StoreName != snapshot.StoreName) {
v.Status = snapshot.Status
v.DeliveryType = snapshot.DeliveryType
v.LastOperator = model.AdminName
if _, err = dao.UpdateEntity(db, v, model.FieldLastOperator, model.FieldUpdatedAt, model.FieldStatus, "DeliveryType"); err != nil {
v.StoreName = snapshot.StoreName
if _, err = dao.UpdateEntity(db, v, model.FieldStatus, "DeliveryType", "StoreName"); err != nil {
return err
}
}
@@ -1740,8 +1740,9 @@ func SaveAndSendAlarmVendorSnapshot(ctx *jxcontext.Context, vendorIDs, storeIDs
prevSnapshotAt := getCurrentSnapshotAt(curSnapshotAt.Add(-1 * time.Second))
db := dao.GetDB()
var curSnapshotList, prevSnapshotList []*model.VendorStoreSnapshot
task := tasksch.NewSeqTask("SaveAndSendAlarmVendorSnapshot", ctx,
func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
task := tasksch.NewParallelTask("SaveAndSendAlarmVendorSnapshot", tasksch.NewParallelConfig().SetIsContinueWhenError(true).SetParallelCount(1), ctx,
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
step := batchItemList[0].(int)
switch step {
case 0:
curSnapshotList, err = GetStoresVendorSnapshot(ctx, task, vendorIDs, storeIDs)
@@ -1758,7 +1759,7 @@ func SaveAndSendAlarmVendorSnapshot(ctx *jxcontext.Context, vendorIDs, storeIDs
err = SendAlarmVendorSnapshot(ctx, task, prevSnapshotList, curSnapshotList)
}
return nil, err
}, 4)
}, []int{0, 1, 2, 3})
tasksch.ManageTask(task).Run()
if !isAsync {
_, err = task.GetResult(0)

View File

@@ -464,41 +464,6 @@ func GetStoreAndSkuIDsFromInfo(skuNamesInfo *StoreSkuNamesInfo) (storeIDs, skuID
return jxutils.IntMap2List(storeIDMap), jxutils.IntMap2List(skuIDMap)
}
// func updateActPrice4StoreSkuName(db *dao.DaoDB, storeIDs, skuIDs []int, skuNamesInfo *StoreSkuNamesInfo) (err error) {
// // 活动商品信息
// jxSkuPriceMap, err := dao.GetPromotionSkuPriceMap(db, model.VendorIDJX, storeIDs, skuIDs, time.Now(), time.Now())
// if err != nil {
// globals.SugarLogger.Errorf("updateActPrice4StoreSkuName can not get sku promotion info for error:%v", err)
// return err
// }
// jdSkuPriceMap, err2 := dao.GetPromotionSkuPriceMap(db, model.VendorIDJD, storeIDs, skuIDs, time.Now(), time.Now())
// if err = err2; err != nil {
// globals.SugarLogger.Errorf("updateActPrice4StoreSkuName can not get sku promotion info for error:%v", err)
// return err
// }
// for _, skuName := range skuNamesInfo.SkuNames {
// if len(skuName.Skus2) > 0 {
// for _, v := range skuName.Skus2 {
// index := dao.GenSkuPriceMapKey(skuName.StoreID, v.SkuID)
// if jdSkuPriceMap[index] != nil {
// v.ActPrice = jdSkuPriceMap[index].Price
// }
// if jxSkuPriceMap[index] != nil {
// v.EarningPrice = jxSkuPriceMap[index].EarningPrice
// }
// v.RealEarningPrice = v.EarningPrice
// if v.RealEarningPrice == 0 {
// v.RealEarningPrice = int(jxutils.CaculateSkuEarningPrice(int64(v.BindPrice), int64(v.BindPrice), skuName.PayPercentage))
// }
// }
// } else {
// skuName.UnitPrice = skuName.Price
// }
// }
// return err
// }
// 根据已经部分关注的商品,得到已经存在的门店商品单价
func updateUnitPrice4StoreSkuNameNew(db *dao.DaoDB, skuNamesInfo *StoreSkuNamesInfo) (err error) {
storeIDMap := make(map[int]int)
@@ -523,11 +488,6 @@ func updateUnitPrice4StoreSkuNameNew(db *dao.DaoDB, skuNamesInfo *StoreSkuNamesI
}
func updateActPrice4StoreSkuNameNew(db *dao.DaoDB, storeIDs, skuIDs []int, skuNamesInfo *StoreSkuNamesInfo) (err error) {
// jxSkuPriceMap, err := dao.GetPromotionSkuPriceMap(db, model.VendorIDJX, storeIDs, skuIDs, time.Now(), time.Now())
// if err != nil {
// globals.SugarLogger.Errorf("updateActPrice4StoreSkuNameNew can not get sku promotion info for error:%v", err)
// return err
// }
if len(skuIDs) == 0 {
return nil
}
@@ -621,233 +581,6 @@ func updateSaleInfo4StoreSkuName(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs
return err
}
// 商品不可售,直接排除
// 如果门店商品是可售状态,那么会忽略区域限制。否则有区域限制
// func GetStoresSkusOld(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus bool, keyword string, isBySku bool, params map[string]interface{}, offset, pageSize int) (skuNamesInfo *StoreSkuNamesInfo, err error) {
// db := dao.GetDB()
// sql, sqlParams, err := getGetStoresSkusBaseSQL(db, storeIDs, skuIDs, isFocus, keyword, isBySku, params)
// if err != nil {
// return nil, err
// }
// sql += `
// GROUP BY
// t1.id,
// t1.created_at,
// t1.updated_at,
// t1.last_operator,
// t1.deleted_at,
// t1.prefix,
// t1.name,
// t1.brand_id,
// t1.category_id,
// t1.is_global,
// t1.unit,
// t1.price,
// t1.img,
// t1.elm_img_hash_code,
// t3.id,
// t3.name,
// t3.pay_percentage`
// if isBySku {
// sql += `,
// t2.id`
// }
// sqlData := `
// SELECT
// SQL_CALC_FOUND_ROWS
// t1.id,
// t1.created_at,
// t1.updated_at,
// t1.last_operator,
// t1.deleted_at,
// t1.prefix,
// t1.name,
// t1.brand_id,
// t1.category_id,
// t1.is_global,
// t1.unit,
// t1.price,
// t1.img,
// t1.elm_img_hash_code,
// t3.id store_id,
// t3.name store_name,
// t3.pay_percentage,
// CONCAT("[", GROUP_CONCAT(DISTINCT CONCAT('{"id":', t2.id, ',"comment":"', t2.comment, '","status":', t2.status, ',"createdAt":"',
// CONCAT(REPLACE(IF(t4.created_at IS NULL, '1970-01-01 00:00:00', t4.created_at)," ","T"),"+08:00"), '","updatedAt":"', CONCAT(REPLACE(IF(t4.updated_at IS NULL, '1970-01-01 00:00:00', t4.updated_at)," ","T"),"+08:00"),
// '","lastOperator":"', IF(t4.last_operator IS NULL, '', t4.last_operator), '","specQuality":', t2.spec_quality, ',"specUnit":"', t2.spec_unit, '","weight":', t2.weight,
// ',"categoryID":', t2.category_id, ',"nameID":', t2.name_id, ',"subStoreID":', IF(t4.sub_store_id IS NULL, 0, t4.sub_store_id),
// ',"price":', IF(t4.price IS NULL, 0, t4.price), ',"unitPrice":', IF(t4.unit_price IS NULL, t1.price, t4.unit_price),
// ',"storeSkuStatus":', IF(t4.status IS NULL, 0, t4.status),
// ',"jdID":', t2.jd_id, ',"jdSyncStatus":', IF(t4.jd_sync_status IS NULL, 0, t4.jd_sync_status),
// ',"ebaiID":', IF(t4.ebai_id IS NULL, 0, t4.ebai_id), ',"ebaiSyncStatus":', IF(t4.ebai_sync_status IS NULL, 0, t4.ebai_sync_status),
// ',"mtwmID":', IF(t4.mtwm_id IS NULL, 0, t4.mtwm_id), ',"mtwmSyncStatus":', IF(t4.mtwm_sync_status IS NULL, 0, t4.mtwm_sync_status),
// ',"wscID":', IF(t4.wsc_id IS NULL, 0, t4.wsc_id), ',"wscSyncStatus":', IF(t4.wsc_sync_status IS NULL, 0, t4.wsc_sync_status),
// "}")), "]") skus_str
// ` + sql + `
// ORDER BY t1.id DESC
// LIMIT ? OFFSET ?`
// pageSize = jxutils.FormalizePageSize(pageSize)
// sqlOffset := offset
// sqlPageSize := pageSize
// isSaleInfo := params["stFromTime"] != nil
// if isSaleInfo {
// sqlOffset = 0
// sqlPageSize = jxutils.FormalizePageSize(-1)
// }
// sqlParams = append(sqlParams, sqlPageSize, sqlOffset)
// skuNamesInfo = &StoreSkuNamesInfo{}
// // globals.SugarLogger.Debug(sqlData)
// dao.Begin(db)
// defer func() {
// if r := recover(); r != nil {
// dao.Rollback(db)
// panic(r)
// }
// }()
// // globals.SugarLogger.Debug(sqlData, sqlParams)
// if err = dao.GetRows(db, &skuNamesInfo.SkuNames, sqlData, sqlParams...); err == nil {
// skuNamesInfo.TotalCount = dao.GetLastTotalRowCount(db)
// dao.Commit(db)
// // 活动商品信息
// jxSkuPriceMap, err2 := dao.GetPromotionSkuPriceMap(db, model.VendorIDJX, storeIDs, skuIDs, time.Now(), time.Now())
// if err = err2; err != nil {
// globals.SugarLogger.Errorf("GetStoresSkus can not get sku promotion info for error:%v", err)
// return nil, err
// }
// jdSkuPriceMap, err2 := dao.GetPromotionSkuPriceMap(db, model.VendorIDJD, storeIDs, skuIDs, time.Now(), time.Now())
// if err = err2; err != nil {
// globals.SugarLogger.Errorf("GetStoresSkus can not get sku promotion info for error:%v", err)
// return nil, err
// }
// for _, skuName := range skuNamesInfo.SkuNames {
// if skuName.SkusStr != "" {
// if err = utils.UnmarshalUseNumber([]byte(skuName.SkusStr), &skuName.Skus); err != nil {
// return nil, err
// }
// if len(skuName.Skus) > 0 {
// skuName.UnitPrice = int(utils.MustInterface2Int64(skuName.Skus[0]["unitPrice"]))
// for _, v := range skuName.Skus {
// index := dao.GenSkuPriceMapKey(skuName.StoreID, int(utils.MustInterface2Int64(v["id"])))
// if jdSkuPriceMap[index] != nil {
// v["actPrice"] = jdSkuPriceMap[index].Price
// } else {
// v["actPrice"] = 0
// }
// earningPrice := 0
// if jxSkuPriceMap[index] != nil {
// earningPrice = jxSkuPriceMap[index].EarningPrice
// }
// v["earningPrice"] = earningPrice
// realEarningPrice := earningPrice
// if realEarningPrice == 0 {
// shopPrice := utils.Interface2Int64WithDefault(v["price"], 0)
// realEarningPrice = int(jxutils.CaculateSkuEarningPrice(shopPrice, shopPrice, skuName.PayPercentage))
// }
// v["realEarningPrice"] = realEarningPrice
// delete(v, "unitPrice")
// }
// } else {
// skuName.UnitPrice = skuName.Price
// }
// }
// }
// if isSaleInfo {
// var (
// saleInfoList []*SkuSaleInfo
// skuIDs []int
// timeList []time.Time
// fromCount, toCount int
// )
// saleInfoMap := make(map[int64]*SkuSaleInfo)
// for _, skuName := range skuNamesInfo.SkuNames {
// for _, sku := range skuName.Skus {
// skuIDs = append(skuIDs, int(utils.MustInterface2Int64(sku["id"])))
// }
// }
// toTimeStr := ""
// if params["stToTime"] != nil {
// toTimeStr = params["stToTime"].(string)
// }
// if timeList, err = jxutils.BatchStr2Time(params["stFromTime"].(string), toTimeStr); err != nil {
// return nil, err
// }
// if params["stFromCount"] != nil {
// fromCount = params["stFromCount"].(int)
// }
// toCount = math.MaxInt32
// if params["stToCount"] != nil {
// toCount = params["stToCount"].(int)
// }
// // 不能用SQL筛除否则不能区分是没有销量还是不在条件中
// if saleInfoList, err = GetStoresSkusSaleInfo(ctx, storeIDs, skuIDs, timeList[0], timeList[1], 0, math.MaxInt32); err != nil {
// return nil, err
// }
// for _, saleInfo := range saleInfoList {
// saleInfoMap[int64(saleInfo.StoreID)*100000+int64(saleInfo.SkuID)] = saleInfo
// }
// var newSkuNames []*StoreSkuNameExt
// for _, skuName := range skuNamesInfo.SkuNames {
// var newSkus []map[string]interface{}
// storeID2 := int64(skuName.StoreID) * 100000
// for _, sku := range skuName.Skus {
// saleInfo := saleInfoMap[storeID2+utils.MustInterface2Int64(sku["id"])]
// if saleInfo == nil && fromCount == 0 {
// saleInfo = &SkuSaleInfo{}
// }
// if saleInfo != nil && saleInfo.Count >= fromCount && saleInfo.Count <= toCount {
// sku["times"] = saleInfo.Times
// sku["count"] = saleInfo.Count
// newSkus = append(newSkus, sku)
// }
// }
// if len(newSkus) > 0 {
// skuName.Skus = newSkus
// newSkuNames = append(newSkuNames, skuName)
// }
// }
// skuNamesInfo.TotalCount = len(newSkuNames)
// skuNamesInfo.SkuNames = nil
// if offset < skuNamesInfo.TotalCount {
// endIndex := offset + pageSize
// if endIndex > skuNamesInfo.TotalCount {
// endIndex = skuNamesInfo.TotalCount
// }
// skuNamesInfo.SkuNames = newSkuNames[offset:endIndex]
// }
// }
// if globals.EnablePendingChange {
// if isGetOpRequest, ok := params["isGetOpRequest"].(bool); ok && isGetOpRequest {
// nameIDs := make([]int, len(skuNamesInfo.SkuNames))
// for k, skuName := range skuNamesInfo.SkuNames {
// nameIDs[k] = skuName.ID
// }
// pagedInfo, err2 := GetStoreOpRequests(ctx, utils.DefaultTimeValue, utils.DefaultTimeValue, "", storeIDs, nameIDs, nil, []int{model.RequestStatusNew}, 0, -1)
// if err = err2; err != nil {
// return nil, err
// }
// requestList := pagedInfo.Data.([]*StoreOpRequestInfo)
// requestMap := make(map[int]*StoreOpRequestInfo)
// for _, requestOp := range requestList {
// requestMap[requestOp.ItemID] = requestOp
// }
// for _, skuName := range skuNamesInfo.SkuNames {
// if requestOp := requestMap[skuName.ID]; requestOp != nil {
// skuName.PendingUnitPrice = requestOp.IntParam1
// skuName.PendingOpType = requestOp.Type
// }
// }
// }
// }
// } else {
// dao.Rollback(db)
// }
// return skuNamesInfo, err
// }
func getValidStoreVendorMap(db *dao.DaoDB, storeIDs []int) (realVendorMap map[int]int, err error) {
storeMapList, err := dao.GetStoresMapList(db, nil, storeIDs, model.StoreStatusAll, model.StoreIsSyncYes, "")
if err != nil {

View File

@@ -0,0 +1,30 @@
package cms
import (
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
)
func SyncCategories(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorIDs []int, appOrgCodes []string, catIDs []int, isAsync bool) (hint string, err error) {
// if len(vendorIDs) == 0 {
// vendorIDs = partner.GetMultiStoreVendorIDs()
// }
// vendorOrgCodeList := apimanager.CurAPIManager.GetVendorOrgCodeList(vendorIDs, appOrgCodes)
// task := tasksch.NewParallelTask("同步商家分类", nil, ctx,
// func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
// vendorOrgCodePair := batchItemList[0].(*apimanager.VendorOrgCodePair)
// if handler := partner.GetPurchasePlatformFromVendorID(vendorOrgCodePair.VendorID); handler != nil {
// }
// return retVal, err
// }, vendorOrgCodeList)
// tasksch.HandleTask(task, parentTask, len(catIDs) > 0).Run()
// if isAsync {
// hint = task.GetID()
// } else {
// resultList, err2 := task.GetResult(0)
// if err = err2; err == nil {
// hint = utils.Int2Str(len(resultList))
// }
// }
return hint, err
}