新增饿鲜达商品导入,bug修复
This commit is contained in:
@@ -7,6 +7,8 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/360EntSecGroup-Skylar/excelize"
|
||||||
|
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
|
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/platformapi/jdapi"
|
"git.rosy.net.cn/baseapi/platformapi/jdapi"
|
||||||
@@ -412,9 +414,13 @@ func GetSkuNames(ctx *jxcontext.Context, keyword string, isBySku bool, params ma
|
|||||||
}
|
}
|
||||||
if params["nameIDs"] != nil {
|
if params["nameIDs"] != nil {
|
||||||
var nameIDs []int
|
var nameIDs []int
|
||||||
|
if ids, ok := params["nameIDs"].([]int); ok {
|
||||||
|
nameIDs = ids
|
||||||
|
} else {
|
||||||
if err = utils.UnmarshalUseNumber([]byte(params["nameIDs"].(string)), &nameIDs); err != nil {
|
if err = utils.UnmarshalUseNumber([]byte(params["nameIDs"].(string)), &nameIDs); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if len(nameIDs) > 0 {
|
if len(nameIDs) > 0 {
|
||||||
sql += " AND t1.id IN (" + dao.GenQuestionMarks(len(nameIDs)) + ")"
|
sql += " AND t1.id IN (" + dao.GenQuestionMarks(len(nameIDs)) + ")"
|
||||||
sqlParams = append(sqlParams, nameIDs)
|
sqlParams = append(sqlParams, nameIDs)
|
||||||
@@ -1471,7 +1477,7 @@ func DeleteSkuNameExPrefixOverdue(db *dao.DaoDB) (err error) {
|
|||||||
|
|
||||||
func SumExianDaDepot(ctx *jxcontext.Context) (err error) {
|
func SumExianDaDepot(ctx *jxcontext.Context) (err error) {
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
result, err := api.EbaiAPI.GetExianDaSkuDepot()
|
result, err := api.EbaiAPI.GetExianDaSkuDepot("")
|
||||||
for _, v := range result {
|
for _, v := range result {
|
||||||
skus, err := api.EbaiAPI.GetExianDaSku(utils.Str2Int64(v.ElemeGoodsID))
|
skus, err := api.EbaiAPI.GetExianDaSku(utils.Str2Int64(v.ElemeGoodsID))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -1579,3 +1585,127 @@ func CopyEbaiStoreSkusToJx(ctx *jxcontext.Context, baiduShopID string, storeID i
|
|||||||
UpdateStoresSkusByBind(ctx, nil, storeSkuBindInfo, true, true)
|
UpdateStoresSkusByBind(ctx, nil, storeSkuBindInfo, true, true)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func AddExdSkuByExcel(ctx *jxcontext.Context, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||||
|
var (
|
||||||
|
db = dao.GetDB()
|
||||||
|
skuMap = make(map[string]string)
|
||||||
|
)
|
||||||
|
taskSeqFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
||||||
|
switch step {
|
||||||
|
case 0:
|
||||||
|
xlsx, err := excelize.OpenFile("111.xlsx")
|
||||||
|
// xlsx, err := excelize.OpenReader(reader)
|
||||||
|
if err != nil {
|
||||||
|
return result, err
|
||||||
|
}
|
||||||
|
rows, _ := xlsx.GetRows(xlsx.GetSheetName(1))
|
||||||
|
for rowNum, row := range rows {
|
||||||
|
if rowNum < 2 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
var (
|
||||||
|
name string
|
||||||
|
upc string
|
||||||
|
)
|
||||||
|
for k, cell := range row {
|
||||||
|
if k == 2 {
|
||||||
|
name = cell
|
||||||
|
}
|
||||||
|
if k == 7 {
|
||||||
|
upc = cell
|
||||||
|
}
|
||||||
|
}
|
||||||
|
skuMap[upc] = name
|
||||||
|
}
|
||||||
|
case 1:
|
||||||
|
for k, _ := range skuMap {
|
||||||
|
fmt.Println(k, skuMap[k])
|
||||||
|
result, err := api.EbaiAPI.GetExianDaSkuDepot(k)
|
||||||
|
if err != nil {
|
||||||
|
return result, err
|
||||||
|
}
|
||||||
|
exdSku := result[0]
|
||||||
|
skus, err := api.EbaiAPI.GetExianDaSku(utils.Str2Int64(exdSku.ElemeGoodsID))
|
||||||
|
skuName := &model.SkuName{}
|
||||||
|
sql2 := `
|
||||||
|
SELECT a.*
|
||||||
|
FROM sku_name a
|
||||||
|
JOIN sku b ON b.name_id = a.id
|
||||||
|
WHERE a.upc = ?
|
||||||
|
AND b.exd_sku_id <> ''
|
||||||
|
`
|
||||||
|
sqlParams2 := []interface{}{
|
||||||
|
k,
|
||||||
|
}
|
||||||
|
dao.GetRow(db, skuName, sql2, sqlParams2)
|
||||||
|
dao.Begin(db)
|
||||||
|
defer func() {
|
||||||
|
if r := recover(); r != nil {
|
||||||
|
dao.Rollback(db)
|
||||||
|
panic(r)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
//表示京西库中已存在此饿鲜达商品,再判断更不更新名字
|
||||||
|
if skuName != nil {
|
||||||
|
if skuName.Name != skuMap[k] {
|
||||||
|
skuName.Name = skuMap[k]
|
||||||
|
_, err = dao.UpdateEntity(db, skuName, "Name")
|
||||||
|
if err != nil {
|
||||||
|
dao.Rollback(db)
|
||||||
|
return result, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
//插入
|
||||||
|
prefix, _, _, specUnit, unit, specQuality := jxutils.SplitSkuName(exdSku.GoodsName)
|
||||||
|
skuName2 := &model.SkuName{
|
||||||
|
Prefix: prefix,
|
||||||
|
Name: skuMap[k],
|
||||||
|
CategoryID: skus.CategoryIDThird,
|
||||||
|
IsGlobal: 1,
|
||||||
|
Unit: unit,
|
||||||
|
SpecQuality: specQuality,
|
||||||
|
SpecUnit: specUnit,
|
||||||
|
Price: 100,
|
||||||
|
Img: exdSku.ImageURL,
|
||||||
|
Upc: &k,
|
||||||
|
Status: model.SkuStatusNormal,
|
||||||
|
}
|
||||||
|
dao.WrapAddIDCULDEntity(skuName2, ctx.GetUserName())
|
||||||
|
err = dao.CreateEntity(db, skuName2)
|
||||||
|
if err != nil {
|
||||||
|
dao.Rollback(db)
|
||||||
|
return result, err
|
||||||
|
}
|
||||||
|
sku := &model.Sku{
|
||||||
|
NameID: skuName2.ID,
|
||||||
|
SpecQuality: specQuality,
|
||||||
|
SpecUnit: specUnit,
|
||||||
|
Weight: int(utils.Str2Int64(skus.Weight)),
|
||||||
|
Status: model.SkuStatusNormal,
|
||||||
|
ExdSkuID: exdSku.ElemeGoodsID,
|
||||||
|
ExdCategoryThirdID: skus.CategoryIDThird,
|
||||||
|
}
|
||||||
|
dao.WrapAddIDCULDEntity(sku, ctx.GetUserName())
|
||||||
|
err = dao.CreateEntity(db, sku)
|
||||||
|
if err != nil {
|
||||||
|
dao.Rollback(db)
|
||||||
|
return result, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dao.Commit(db)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result, err
|
||||||
|
}
|
||||||
|
taskSeq := tasksch.NewSeqTask2("创建饿鲜达商品", ctx, isContinueWhenError, taskSeqFunc, 2)
|
||||||
|
tasksch.HandleTask(taskSeq, nil, true).Run()
|
||||||
|
if !isAsync {
|
||||||
|
_, err = taskSeq.GetResult(0)
|
||||||
|
hint = "1"
|
||||||
|
} else {
|
||||||
|
hint = taskSeq.GetID()
|
||||||
|
}
|
||||||
|
return hint, err
|
||||||
|
}
|
||||||
|
|||||||
@@ -3341,7 +3341,10 @@ func UpdateStoreSkusSpecTagBin(ctx *jxcontext.Context, reader io.Reader, vendorI
|
|||||||
storeSkuInfos[len(storeSkuInfos)-i-1] = tmp
|
storeSkuInfos[len(storeSkuInfos)-i-1] = tmp
|
||||||
}
|
}
|
||||||
for _, v := range vendorIDs {
|
for _, v := range vendorIDs {
|
||||||
store, _ := dao.GetStoreDetail(db, storeID, v)
|
store, err := dao.GetStoreDetail(db, storeID, v)
|
||||||
|
if err != nil || store == nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
for _, vv := range apimanager.CurAPIManager.GetAppOrgCodeList(v) {
|
for _, vv := range apimanager.CurAPIManager.GetAppOrgCodeList(v) {
|
||||||
handler := partner.GetPurchasePlatformFromVendorID(v).(partner.IPurchasePlatformStoreSkuHandler)
|
handler := partner.GetPurchasePlatformFromVendorID(v).(partner.IPurchasePlatformStoreSkuHandler)
|
||||||
err = handler.UpdateStoreSkusSpecTag(ctx, vv, storeID, store.VendorStoreID, storeSkuMap[storeID])
|
err = handler.UpdateStoreSkusSpecTag(ctx, vv, storeID, store.VendorStoreID, storeSkuMap[storeID])
|
||||||
|
|||||||
@@ -461,3 +461,20 @@ func (c *SkuController) CopyEbaiStoreSkusToJx() {
|
|||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @Title 通过Excel创建饿鲜达商品(必须先要在饿鲜达系统中创建)
|
||||||
|
// @Description 通过Excel创建饿鲜达商品(必须先要在饿鲜达系统中创建)
|
||||||
|
// @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 /AddExdSkuByExcel [post]
|
||||||
|
func (c *SkuController) AddExdSkuByExcel() {
|
||||||
|
c.callAddExdSkuByExcel(func(params *tSkuAddExdSkuByExcelParams) (retVal interface{}, errCode string, err error) {
|
||||||
|
// r := c.Ctx.Request
|
||||||
|
// files := r.MultipartForm.File["userfiles"]
|
||||||
|
retVal, err = cms.AddExdSkuByExcel(params.Ctx, params.IsAsync, params.IsContinueWhenError)
|
||||||
|
return retVal, "", err
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@@ -1224,6 +1224,15 @@ func init() {
|
|||||||
Filters: nil,
|
Filters: nil,
|
||||||
Params: nil})
|
Params: nil})
|
||||||
|
|
||||||
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"],
|
||||||
|
beego.ControllerComments{
|
||||||
|
Method: "AddExdSkuByExcel",
|
||||||
|
Router: `/AddExdSkuByExcel`,
|
||||||
|
AllowHTTPMethods: []string{"post"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Filters: nil,
|
||||||
|
Params: nil})
|
||||||
|
|
||||||
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"],
|
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"],
|
||||||
beego.ControllerComments{
|
beego.ControllerComments{
|
||||||
Method: "AddSku",
|
Method: "AddSku",
|
||||||
|
|||||||
Reference in New Issue
Block a user