diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 8461e9aaa..0e8db150c 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -3844,3 +3844,48 @@ func getSkuNamePrice(db *dao.DaoDB, skuID int, orgPrice int64) (price int64, nam } return price, nameID } + +func BackUpStoreSkuBind(ctx *jxcontext.Context, isAsync, isContinueWhenError bool) (hint string, err error) { + var ( + db = dao.GetDB() + storeSkuBinds []*model.StoreSkuBind + snapshotAt = time.Now() + ) + storeSkuBindHis := &model.StoreSkuBindHistory{ + SnapshotAt: snapshotAt.AddDate(0, 0, -3), + } + storeSkuBindHis2 := &model.StoreSkuBindHistory{ + SnapshotAt: snapshotAt, + } + dao.DeleteEntity(db, storeSkuBindHis, "SnapShotAt") + dao.DeleteEntity(db, storeSkuBindHis2, "SnapShotAt") + sql := `SELECT * FROM store_sku_bind WHERE deleted_at = ?` + sqlParams := []interface{}{utils.DefaultTimeValue} + err = dao.GetRows(db, &storeSkuBinds, sql, sqlParams) + task := tasksch.NewParallelTask("RefreshOrdersPriceInfo", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, + func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + v := batchItemList[0].(*model.StoreSkuBind) + dao.Begin(db) + defer func() { + if r := recover(); r != nil { + dao.Rollback(db) + panic(r) + } + }() + storeSkuBindHis := &model.StoreSkuBindHistory{} + storeSkuBindHis.StoreSkuBind = *v + storeSkuBindHis.StoreSkuBindID = v.ID + storeSkuBindHis.SnapshotAt = snapshotAt + dao.CreateEntity(db, storeSkuBindHis) + dao.Commit(db) + return retVal, err + }, storeSkuBinds) + tasksch.HandleTask(task, nil, true).Run() + if isAsync { + hint = task.GetID() + } else { + _, err = task.GetResult(0) + hint = "1" + } + return hint, err +} diff --git a/business/model/store_sku.go b/business/model/store_sku.go index 30feeeb27..a655a96a2 100644 --- a/business/model/store_sku.go +++ b/business/model/store_sku.go @@ -135,43 +135,9 @@ func (*StoreSkuBind) TableIndex() [][]string { } type StoreSkuBindHistory struct { - ModelIDCULD - StoreSkuBindID int `orm:"column(store_sku_bind_id)"` - StoreID int `orm:"column(store_id)"` - SkuID int `orm:"column(sku_id)"` - SubStoreID int `orm:"column(sub_store_id)"` - Price int // 单位为分,不用int64的原因是这里不需要累加 - UnitPrice int // 这个是一斤的门店商品价,放在这里的原因是避免额外增加一张store sku_name表,逻辑上要保证同一SKU NAME中的所有SKU这个字段的数据一致 - Status int - - // ElmID int64 `orm:"column(elm_id);index"` - MtwmID int64 `orm:"column(mtwm_id);index"` - EbaiID int64 `orm:"column(ebai_id);index"` - // WscID int64 `orm:"column(wsc_id);index"` // 表示微盟skuId - // WscID2 int64 `orm:"column(wsc_id2);index"` // 表示微盟goodsId - - // ElmSyncStatus int8 `orm:"default(2)"` - JdSyncStatus int8 `orm:"default(2)"` - MtwmSyncStatus int8 `orm:"default(2)"` - EbaiSyncStatus int8 `orm:"default(2)"` - // WscSyncStatus int8 `orm:"default(2)"` - - JdPrice int `json:"jdPrice"` - MtwmPrice int `json:"mtwmPrice"` - EbaiPrice int `json:"ebaiPrice"` - JxPrice int `json:"jxPrice"` - - JdLockTime *time.Time `orm:"null" json:"jdLockTime"` - MtwmLockTime *time.Time `orm:"null" json:"mtwmLockTime"` - EbaiLockTime *time.Time `orm:"null" json:"ebaiLockTime"` - JxLockTime *time.Time `orm:"null" json:"jxLockTime"` - - AutoSaleAt time.Time `orm:"type(datetime);null" json:"autoSaleAt"` - - StatusSaleBegin int16 //商品可售时间范围 - StatusSaleEnd int16 - - SnapshotAt time.Time `orm:"type(datetime);null;index" json:"snapshotAt"` + StoreSkuBind + StoreSkuBindID int `orm:"column(store_sku_bind_id)"` + SnapshotAt time.Time `orm:"type(datetime);null;index" json:"snapshotAt"` } func (*StoreSkuBindHistory) TableUnique() [][]string { diff --git a/controllers/cms_store_sku.go b/controllers/cms_store_sku.go index 5bd2a7c54..70d11c782 100644 --- a/controllers/cms_store_sku.go +++ b/controllers/cms_store_sku.go @@ -712,3 +712,18 @@ func (c *StoreSkuController) RefreshJxPriceByVendor2() { return retVal, "", err }) } + +// @Title 生成门店商品备份表 +// @Description 生成门店商品备份表 +// @Param token header string true "认证token" +// @Param isAsync formData bool false "是否异步,缺省是同步" +// @Param isContinueWhenError formData bool false "单个同步失败是否继续,缺省false" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /BackUpStoreSkuBind [post] +func (c *StoreSkuController) BackUpStoreSkuBind() { + c.callBackUpStoreSkuBind(func(params *tStoreSkuBackUpStoreSkuBindParams) (retVal interface{}, errCode string, err error) { + retVal, err = cms.BackUpStoreSkuBind(params.Ctx, params.IsAsync, params.IsContinueWhenError) + return retVal, "", err + }) +} diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 9f12bdaf7..a9b381ca7 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -655,6 +655,15 @@ func init() { Filters: nil, Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JxOrderController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JxOrderController"], + beego.ControllerComments{ + Method: "GetMatterOrderStatus", + Router: `/GetMatterOrderStatus`, + AllowHTTPMethods: []string{"post"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JxOrderController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JxOrderController"], beego.ControllerComments{ Method: "GetMyOrderCountInfo", @@ -1773,6 +1782,15 @@ func init() { Filters: nil, Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"], + beego.ControllerComments{ + Method: "BackUpStoreSkuBind", + Router: `/BackUpStoreSkuBind`, + AllowHTTPMethods: []string{"post"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"], beego.ControllerComments{ Method: "CopyStoreSkus",