Accept Merge Request #132: (yonghui -> mark)
Merge Request: 改规格->改价 Created By: @苏尹岚 Accepted By: @苏尹岚 URL: https://rosydev.coding.net/p/jx-callback/d/jx-callback/git/merge/132
This commit is contained in:
@@ -1090,21 +1090,23 @@ func refreshStoreSkuPrice(ctx *jxcontext.Context, db *dao.DaoDB, skuID int) (err
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
for vendorID := range partner.PurchasePlatformHandlers {
|
list, err := dao.GetStoreSkusAndSkuName(db, nil, []int{skuID}, nil)
|
||||||
storeSkuList, err := dao.GetStoreSkus2(db, vendorID, 0, []int{skuID}, false)
|
for _, v := range list {
|
||||||
if err == nil {
|
storeID := v.StoreID
|
||||||
for _, v := range storeSkuList {
|
storeDetail, err := dao.GetStoreDetail(db, storeID, model.VendorIDJX)
|
||||||
v.Price = int64(jxutils.CaculateSkuPrice(int(v.UnitPrice), v.SpecQuality, v.SpecUnit, v.Unit))
|
if err != nil {
|
||||||
storeSku := &model.StoreSkuBind{}
|
|
||||||
storeSku.ID = v.BindID
|
|
||||||
if _, err = dao.UpdateEntityLogically(db, storeSku, map[string]interface{}{
|
|
||||||
"Price": v.Price,
|
|
||||||
dao.GetSyncStatusStructField(model.VendorNames[vendorID]): v.SkuSyncStatus | model.SyncFlagPriceMask,
|
|
||||||
}, ctx.GetUserName(), nil); err != nil {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
storeSku := &model.StoreSkuBind{}
|
||||||
}
|
storeSku.ID = v.BindID
|
||||||
|
storeSku.JdSyncStatus = v.JdSyncStatus | model.SyncFlagPriceMask
|
||||||
|
storeSku.MtwmSyncStatus = v.MtwmSyncStatus | model.SyncFlagPriceMask
|
||||||
|
storeSku.EbaiSyncStatus = v.EbaiSyncStatus | model.SyncFlagPriceMask
|
||||||
|
storeSku.Price = jxutils.CaculateSkuPrice(int(v.UnitPrice), v.SpecQuality, v.SpecUnit, v.Unit)
|
||||||
|
storeSku.JxPrice = jxutils.CaculatePriceByPricePack(storeDetail.PricePercentagePackObj, int(storeDetail.PricePercentage), int(storeSku.Price))
|
||||||
|
storeSku.LastOperator = ctx.GetUserName()
|
||||||
|
storeSku.UpdatedAt = time.Now()
|
||||||
|
dao.UpdateEntity(db, storeSku, "Price", "JdSyncStatus", "MtwmSyncStatus", "EbaiSyncStatus", "JxPrice")
|
||||||
}
|
}
|
||||||
dao.Commit(db)
|
dao.Commit(db)
|
||||||
return err
|
return err
|
||||||
|
|||||||
@@ -13,6 +13,8 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
"unicode"
|
"unicode"
|
||||||
|
|
||||||
|
"git.rosy.net.cn/jx-callback/business/jxstore/event"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi"
|
"git.rosy.net.cn/baseapi"
|
||||||
|
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils/excel"
|
"git.rosy.net.cn/jx-callback/business/jxutils/excel"
|
||||||
@@ -1035,6 +1037,7 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs
|
|||||||
if tmpStatus := getSkuSaleStatus(inSkuBind, skuBindInfo); tmpStatus != model.StoreSkuBindStatusNA {
|
if tmpStatus := getSkuSaleStatus(inSkuBind, skuBindInfo); tmpStatus != model.StoreSkuBindStatusNA {
|
||||||
skuBind.Status = tmpStatus
|
skuBind.Status = tmpStatus
|
||||||
}
|
}
|
||||||
|
// err = AddEventDetail(model.OperateAdd, v.RealSkuID, model.ThingTypeSku, storeID, ctx.GetTrackInfo(), "", "")
|
||||||
setStoreSkuBindStatus(skuBind, model.SyncFlagNewMask)
|
setStoreSkuBindStatus(skuBind, model.SyncFlagNewMask)
|
||||||
dao.WrapAddIDCULDEntity(skuBind, userName)
|
dao.WrapAddIDCULDEntity(skuBind, userName)
|
||||||
// globals.SugarLogger.Debug(utils.Format4Output(skuBind, false))
|
// globals.SugarLogger.Debug(utils.Format4Output(skuBind, false))
|
||||||
@@ -1059,8 +1062,8 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
skuBind = &v.StoreSkuBind
|
skuBind = &v.StoreSkuBind
|
||||||
|
|
||||||
if skuBindInfo.IsFocus == -1 && isCanChangePrice {
|
if skuBindInfo.IsFocus == -1 && isCanChangePrice {
|
||||||
|
// err = AddEventDetail(model.OperateDelete, skuBind.SkuID, model.ThingTypeSku, storeID, ctx.GetTrackInfo(), "", "")
|
||||||
if num, err = dao.DeleteEntityLogically(db, skuBind, map[string]interface{}{
|
if num, err = dao.DeleteEntityLogically(db, skuBind, map[string]interface{}{
|
||||||
model.FieldStatus: model.StoreSkuBindStatusDeleted,
|
model.FieldStatus: model.StoreSkuBindStatusDeleted,
|
||||||
model.FieldJdSyncStatus: model.SyncFlagDeletedMask,
|
model.FieldJdSyncStatus: model.SyncFlagDeletedMask,
|
||||||
@@ -1072,7 +1075,7 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// 用了SELECT FOR UPDATE后,只更新修改字段是没有必要的,暂时保留
|
// 用了SELECT FOR UPDATE后,只更新修改字段是没有必要的,暂时保留
|
||||||
updateFieldMap := make(map[string]int)
|
updateFieldMap := make(map[string]interface{})
|
||||||
if skuBindInfo.IsFocus == 1 { // 关注之后再关注不操作
|
if skuBindInfo.IsFocus == 1 { // 关注之后再关注不操作
|
||||||
// skuBind.Status = model.StoreSkuBindStatusDontSale // 缺省不可售?
|
// skuBind.Status = model.StoreSkuBindStatusDontSale // 缺省不可售?
|
||||||
// skuBind.DeletedAt = utils.DefaultTimeValue
|
// skuBind.DeletedAt = utils.DefaultTimeValue
|
||||||
@@ -1114,7 +1117,12 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs
|
|||||||
skuBind.StatusSaleEnd = skuBindInfo.StatusSaleEnd
|
skuBind.StatusSaleEnd = skuBindInfo.StatusSaleEnd
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// if updateFieldMap != nil {
|
||||||
|
// afterData := utils.MustMarshal(updateFieldMap)
|
||||||
|
// mapresult := refutil.FindMapAndStructMixed(updateFieldMap, skuBind)
|
||||||
|
// beforeData := utils.MustMarshal(mapresult)
|
||||||
|
// AddEventDetail(model.OperateUpdate, v.RealSkuID, model.ThingTypeSku, storeID, ctx.GetTrackInfo(), string(beforeData), string(afterData))
|
||||||
|
// }
|
||||||
if len(updateFieldMap) > 0 {
|
if len(updateFieldMap) > 0 {
|
||||||
updateFieldMap[model.FieldJdSyncStatus] = 1
|
updateFieldMap[model.FieldJdSyncStatus] = 1
|
||||||
updateFieldMap[model.FieldEbaiSyncStatus] = 1
|
updateFieldMap[model.FieldEbaiSyncStatus] = 1
|
||||||
@@ -1166,6 +1174,20 @@ func getSkuSaleStatus(inSkuBind *StoreSkuBindSkuInfo, skuNameBindInfo *StoreSkuB
|
|||||||
return model.StoreSkuBindStatusNA
|
return model.StoreSkuBindStatusNA
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func AddEventDetail(operateType, thingID, thingType, storeID int, accessUUID, beforeData, afterData string) (err error) {
|
||||||
|
operateEventDetail := &model.OperateEventDetail{
|
||||||
|
OperateType: operateType,
|
||||||
|
ThingID: thingID,
|
||||||
|
ThingType: thingType,
|
||||||
|
StoreID: storeID,
|
||||||
|
AccessUUID: accessUUID,
|
||||||
|
BeforeData: beforeData,
|
||||||
|
AfterData: afterData,
|
||||||
|
}
|
||||||
|
err = event.AddOperateEventDetail(operateEventDetail)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
func formatAutoSaleTime(autoSaleTime time.Time) (outAutoSaleTime time.Time) {
|
func formatAutoSaleTime(autoSaleTime time.Time) (outAutoSaleTime time.Time) {
|
||||||
if utils.IsTimeZero(autoSaleTime) {
|
if utils.IsTimeZero(autoSaleTime) {
|
||||||
outAutoSaleTime = utils.DefaultTimeValue
|
outAutoSaleTime = utils.DefaultTimeValue
|
||||||
@@ -3075,8 +3097,8 @@ func AutoFocusStoreSkusWithoutFocus(ctx *jxcontext.Context, skuIDs []int, isSync
|
|||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
skuBindInfo := &StoreSkuBindInfo{
|
skuBindInfo := &StoreSkuBindInfo{
|
||||||
UnitPrice: vv.UnitPrice,
|
UnitPrice: int(vv.UnitPrice),
|
||||||
NameID: vv.ID,
|
NameID: vv.NameID,
|
||||||
StoreID: v.ID,
|
StoreID: v.ID,
|
||||||
Skus: []*StoreSkuBindSkuInfo{},
|
Skus: []*StoreSkuBindSkuInfo{},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -99,6 +99,9 @@ type StoreSkuSyncInfo struct {
|
|||||||
SkuName string
|
SkuName string
|
||||||
StatusSaleBegin int16 `json:"statusSaleBegin"` //商品可售时间范围
|
StatusSaleBegin int16 `json:"statusSaleBegin"` //商品可售时间范围
|
||||||
StatusSaleEnd int16 `json:"statusSaleEnd"`
|
StatusSaleEnd int16 `json:"statusSaleEnd"`
|
||||||
|
JdSyncStatus int8 `orm:"default(2)"`
|
||||||
|
MtwmSyncStatus int8 `orm:"default(2)"`
|
||||||
|
EbaiSyncStatus int8 `orm:"default(2)"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type MissingStoreSkuInfo struct {
|
type MissingStoreSkuInfo struct {
|
||||||
@@ -1517,9 +1520,10 @@ func GetPriceReferPrice(db *DaoDB, cityCode int, skuID int, snapDate time.Time)
|
|||||||
return priceRefer, err
|
return priceRefer, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetStoreSkusAndSkuName(db *DaoDB, storeIDs, skuIDs, nameIDs []int) (storeSkuNameExt []*StoreSkuNameExt, err error) {
|
func GetStoreSkusAndSkuName(db *DaoDB, storeIDs, skuIDs, nameIDs []int) (storeSkuSyncInfo []*StoreSkuSyncInfo, err error) {
|
||||||
sql := `
|
sql := `
|
||||||
SELECT a.*,c.id
|
SELECT a.id bind_id, a.store_id, a.jd_sync_status, a.mtwm_sync_status, a.ebai_sync_status, a.unit_price,
|
||||||
|
c.id name_id, c.unit, b.*
|
||||||
FROM store_sku_bind a
|
FROM store_sku_bind a
|
||||||
JOIN sku b ON b.id = a.sku_id AND b.deleted_at = ?
|
JOIN sku b ON b.id = a.sku_id AND b.deleted_at = ?
|
||||||
JOIN sku_name c ON c.id = b.name_id AND c.deleted_at = ?
|
JOIN sku_name c ON c.id = b.name_id AND c.deleted_at = ?
|
||||||
@@ -1542,6 +1546,6 @@ func GetStoreSkusAndSkuName(db *DaoDB, storeIDs, skuIDs, nameIDs []int) (storeSk
|
|||||||
sql += " AND b.name_id IN (" + GenQuestionMarks(len(nameIDs)) + ")"
|
sql += " AND b.name_id IN (" + GenQuestionMarks(len(nameIDs)) + ")"
|
||||||
sqlParams = append(sqlParams, nameIDs)
|
sqlParams = append(sqlParams, nameIDs)
|
||||||
}
|
}
|
||||||
err = GetRows(db, &storeSkuNameExt, sql, sqlParams...)
|
err = GetRows(db, &storeSkuSyncInfo, sql, sqlParams...)
|
||||||
return storeSkuNameExt, err
|
return storeSkuSyncInfo, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,8 +24,8 @@ type OperateEventDetail struct {
|
|||||||
ThingType int `json:"thingType"` //各字段类型
|
ThingType int `json:"thingType"` //各字段类型
|
||||||
StoreID int `orm:"column(store_id)" json:"storeID"`
|
StoreID int `orm:"column(store_id)" json:"storeID"`
|
||||||
AccessUUID string `orm:"column(access_uuid)" json:"accessUUID"`
|
AccessUUID string `orm:"column(access_uuid)" json:"accessUUID"`
|
||||||
BeforeData string `orm:"size(32)" json:"beforeData"`
|
BeforeData string `orm:"size(255)" json:"beforeData"`
|
||||||
AfterData string `orm:"size(32)" json:"afterData"`
|
AfterData string `orm:"size(255)" json:"afterData"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (v *OperateEventDetail) TableIndex() [][]string {
|
func (v *OperateEventDetail) TableIndex() [][]string {
|
||||||
|
|||||||
@@ -91,6 +91,17 @@ func FilterMapByFieldList(mapData map[string]interface{}, fields []string) (vali
|
|||||||
return valid, invalid
|
return valid, invalid
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func FindMapAndStructMixed(mapData map[string]interface{}, obj interface{}) (valid map[string]interface{}) {
|
||||||
|
valid = make(map[string]interface{})
|
||||||
|
map2 := utils.Struct2FlatMap(obj)
|
||||||
|
for k, v := range map2 {
|
||||||
|
if mapData[k] != nil {
|
||||||
|
valid[k] = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return valid
|
||||||
|
}
|
||||||
|
|
||||||
func IsValueEqual(value1, value2 interface{}) bool {
|
func IsValueEqual(value1, value2 interface{}) bool {
|
||||||
if value1 == nil || value2 == nil {
|
if value1 == nil || value2 == nil {
|
||||||
return value1 == value2
|
return value1 == value2
|
||||||
|
|||||||
Reference in New Issue
Block a user