新增饿鲜达商品导入,bug修复

This commit is contained in:
苏尹岚
2020-02-20 10:34:22 +08:00
parent a15102c12b
commit a1e318aee7
4 changed files with 163 additions and 4 deletions

View File

@@ -7,6 +7,8 @@ import (
"strings"
"time"
"github.com/360EntSecGroup-Skylar/excelize"
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
"git.rosy.net.cn/baseapi/platformapi/jdapi"
@@ -412,8 +414,12 @@ func GetSkuNames(ctx *jxcontext.Context, keyword string, isBySku bool, params ma
}
if params["nameIDs"] != nil {
var nameIDs []int
if err = utils.UnmarshalUseNumber([]byte(params["nameIDs"].(string)), &nameIDs); err != nil {
return nil, err
if ids, ok := params["nameIDs"].([]int); ok {
nameIDs = ids
} else {
if err = utils.UnmarshalUseNumber([]byte(params["nameIDs"].(string)), &nameIDs); err != nil {
return nil, err
}
}
if len(nameIDs) > 0 {
sql += " AND t1.id IN (" + dao.GenQuestionMarks(len(nameIDs)) + ")"
@@ -1471,7 +1477,7 @@ func DeleteSkuNameExPrefixOverdue(db *dao.DaoDB) (err error) {
func SumExianDaDepot(ctx *jxcontext.Context) (err error) {
db := dao.GetDB()
result, err := api.EbaiAPI.GetExianDaSkuDepot()
result, err := api.EbaiAPI.GetExianDaSkuDepot("")
for _, v := range result {
skus, err := api.EbaiAPI.GetExianDaSku(utils.Str2Int64(v.ElemeGoodsID))
if err != nil {
@@ -1579,3 +1585,127 @@ func CopyEbaiStoreSkusToJx(ctx *jxcontext.Context, baiduShopID string, storeID i
UpdateStoresSkusByBind(ctx, nil, storeSkuBindInfo, true, true)
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
}

View File

@@ -3341,7 +3341,10 @@ func UpdateStoreSkusSpecTagBin(ctx *jxcontext.Context, reader io.Reader, vendorI
storeSkuInfos[len(storeSkuInfos)-i-1] = tmp
}
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) {
handler := partner.GetPurchasePlatformFromVendorID(v).(partner.IPurchasePlatformStoreSkuHandler)
err = handler.UpdateStoreSkusSpecTag(ctx, vv, storeID, store.VendorStoreID, storeSkuMap[storeID])

View File

@@ -461,3 +461,20 @@ func (c *SkuController) CopyEbaiStoreSkusToJx() {
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
})
}

View File

@@ -1224,6 +1224,15 @@ func init() {
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.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.ControllerComments{
Method: "AddSku",