jdshop2 create store
This commit is contained in:
@@ -3,19 +3,20 @@ package tempop
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"encoding/base64"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"math"
|
||||
"regexp"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"git.rosy.net.cn/jx-callback/business/auth2/authprovider/weixin"
|
||||
"git.rosy.net.cn/jx-callback/business/partner/delivery"
|
||||
"git.rosy.net.cn/jx-callback/business/partner/putils"
|
||||
"github.com/360EntSecGroup-Skylar/excelize"
|
||||
"github.com/qiniu/api.v7/storage"
|
||||
|
||||
"git.rosy.net.cn/baseapi/platformapi/jdapi"
|
||||
"git.rosy.net.cn/baseapi/platformapi/jdshopapi"
|
||||
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/baseapi/utils/errlist"
|
||||
@@ -1500,194 +1501,8 @@ func addSku(outSkuId string, cagtegoryId int, shopCategories []int64, brandId in
|
||||
}
|
||||
|
||||
func UploadJdsImage(ctx *jxcontext.Context) (err error) {
|
||||
//京东商城商品不同
|
||||
// type tTmp struct {
|
||||
// SkuID int `json:"skuID"`
|
||||
// Reason string `json:"reason"`
|
||||
// }
|
||||
// var vendorMap = make(map[int]*partner.SkuNameInfo)
|
||||
// var localMap = make(map[int]*model.StoreSkuBind)
|
||||
// var addList, deleteList []int
|
||||
// var updateList []*tTmp
|
||||
// vendorStock2JxStatus := func(stock int) (status int) {
|
||||
// if stock > 0 {
|
||||
// return model.StoreSkuBindStatusNormal
|
||||
// } else {
|
||||
// return model.StoreSkuBindStatusDontSale
|
||||
// }
|
||||
// }
|
||||
// handler := partner.GetPurchasePlatformFromVendorID(model.VendorIDJDShop).(partner.ISingleStoreStoreSkuHandler)
|
||||
// skuNameList, err := handler.GetStoreSkusFullInfo(ctx, nil, 0, "", nil)
|
||||
// storeSkuList, err := dao.GetStoresSkusInfo(dao.GetDB(), []int{model.JdShopMainStoreID}, nil)
|
||||
// for _, v := range skuNameList {
|
||||
// vendorMap[v.SkuList[0].SkuID] = v
|
||||
// }
|
||||
// for _, v := range storeSkuList {
|
||||
// if vendorMap[v.SkuID] == nil {
|
||||
// if v.Status == model.StoreSkuBindStatusNormal {
|
||||
// addList = append(addList, v.SkuID)
|
||||
// }
|
||||
// } else {
|
||||
// if int64(v.JdsPrice) != vendorMap[v.SkuID].SkuList[0].VendorPrice {
|
||||
// updateList = append(updateList, &tTmp{
|
||||
// SkuID: v.SkuID,
|
||||
// Reason: "价格不同",
|
||||
// })
|
||||
// }
|
||||
// if v.Status != vendorStock2JxStatus(vendorMap[v.SkuID].SkuList[0].Stock) {
|
||||
// updateList = append(updateList, &tTmp{
|
||||
// SkuID: v.SkuID,
|
||||
// Reason: "库存可售不同",
|
||||
// })
|
||||
// }
|
||||
// skus, _ := dao.GetSkus(dao.GetDB(), []int{v.SkuID}, nil, nil, nil, nil)
|
||||
// if skus[0].Comment != "" {
|
||||
// if skus[0].Comment != vendorMap[v.SkuID].SkuList[0].Comment {
|
||||
// updateList = append(updateList, &tTmp{
|
||||
// SkuID: v.SkuID,
|
||||
// Reason: "备注与销售属性不同",
|
||||
// })
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// localMap[v.SkuID] = v
|
||||
// }
|
||||
// for k, _ := range vendorMap {
|
||||
// if localMap[k] == nil {
|
||||
// deleteList = append(deleteList, k)
|
||||
// }
|
||||
// }
|
||||
// fmt.Println("addList2", addList)
|
||||
// fmt.Println("updateList2", utils.Format4Output(updateList, false))
|
||||
// fmt.Println("deleteList2", deleteList)
|
||||
// cms.DeletedDuplicateWaitAuditData(ctx, dao.GetDB())
|
||||
// orderman.RefreshJdShopOrdersEarningPrice(jxcontext.AdminCtx, time.Now().AddDate(0, 0, -2).Format("20060102"), time.Now().Format("20060102"))
|
||||
// var (
|
||||
// db = dao.GetDB()
|
||||
// goods []*model.GoodsOrder
|
||||
// )
|
||||
// sql := `SELECT * from goods_order where vendor_id = 0 and buyer_comment = '【JD】' and total_shop_money = 0 and status = 110
|
||||
// AND order_created_at > '2020-09-01'`
|
||||
// dao.GetRows(db, &goods, sql, nil)
|
||||
// for _, order2 := range goods {
|
||||
// results, err := api.JdAPI.GetJdShopOrders(order2.OrderCreatedAt.AddDate(0, 0, -1).Format("20060102"), order2.OrderCreatedAt.Format("20060102"), globals.JdOrgCode, globals.JdLoginName)
|
||||
// if err != nil || results == nil {
|
||||
// return err
|
||||
// }
|
||||
// for _, v := range results.BillList.Result {
|
||||
// if v.DueAmount != 0 {
|
||||
// order, _ := partner.CurOrderManager.LoadOrder(utils.Int64ToStr(v.OrderID), model.VendorIDJD)
|
||||
// stores, _ := dao.GetStoreList(db, []int{jxutils.GetSaleStoreIDFromOrder(order)}, nil, nil, nil, "")
|
||||
// if len(stores) > 0 {
|
||||
// store := stores[0]
|
||||
// if order.NewEarningPrice == 0 {
|
||||
// jxutils.RefreshOrderEarningPrice2(order, store.PayPercentage)
|
||||
// }
|
||||
// if order.TotalShopMoney == 0 {
|
||||
// order.TotalShopMoney = utils.Float64TwoInt64(v.DueAmount * 100)
|
||||
// }
|
||||
// dao.UpdateEntity(db, order, "TotalShopMoney", "NewEarningPrice")
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// type tmpJD struct {
|
||||
// JdStoreID int `orm:"column(jd_store_id)" json:"jdStoreID"`
|
||||
// SkuName string `json:"skuName"`
|
||||
// }
|
||||
// type tmpCount struct {
|
||||
// Count int `json:"count"`
|
||||
// ID int `orm:"column(id)" json:"id"`
|
||||
// }
|
||||
// var (
|
||||
// db = dao.GetDB()
|
||||
// tmpJDs []*tmpJD
|
||||
// jdMaps = make(map[int][]string)
|
||||
// jdMaps2 = make(map[int][]int)
|
||||
// a = 99999
|
||||
// )
|
||||
// sql := `SELECT * FROM tmp_jd`
|
||||
// dao.GetRows(db, &tmpJDs, sql, nil)
|
||||
// for _, v := range tmpJDs {
|
||||
// jdMaps[v.JdStoreID] = append(jdMaps[v.JdStoreID], v.SkuName)
|
||||
// }
|
||||
// for jdStoreID, skuNames := range jdMaps {
|
||||
// for _, v := range skuNames {
|
||||
// var (
|
||||
// nameIDs []int
|
||||
// tmpCount = &tmpCount{}
|
||||
// )
|
||||
// skuNames, _ := dao.GetSkuNames(db, nil, nil, v, false)
|
||||
// for _, v := range skuNames {
|
||||
// flag := false
|
||||
// for _, vv := range nameIDs {
|
||||
// if vv == v.ID {
|
||||
// flag = true
|
||||
// break
|
||||
// }
|
||||
// }
|
||||
// if !flag {
|
||||
// nameIDs = append(nameIDs, v.ID)
|
||||
// }
|
||||
// }
|
||||
// if len(nameIDs) == 0 {
|
||||
// continue
|
||||
// }
|
||||
// sql := `
|
||||
// SELECT SUM(a.count) count, c.id
|
||||
// FROM order_sku a
|
||||
// JOIN sku b ON a.sku_id = b.id
|
||||
// JOIN sku_name c ON c.id = b.name_id
|
||||
// WHERE c.name_id IN (` + dao.GenQuestionMarks(len(nameIDs)) + `)
|
||||
// AND a.order_created_at > ?
|
||||
// GROUP BY 2
|
||||
// ORDER BY 1 DESC
|
||||
// LIMIT 1
|
||||
// `
|
||||
// sqlParams := []interface{}{time.Now().AddDate(0, -1, 0)}
|
||||
// dao.GetRow(db, &tmpCount, sql, sqlParams)
|
||||
// if tmpCount.ID != 0 {
|
||||
// jdMaps2[jdStoreID] = append(jdMaps2[jdStoreID], tmpCount.ID)
|
||||
// } else {
|
||||
// jdMaps2[jdStoreID] = append(jdMaps2[jdStoreID], nameIDs[0])
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// for jdStoreID, skuNames := range jdMaps2 {
|
||||
// storeDetail, _ := dao.GetStoreDetailByVendorStoreID(db, utils.Int2Str(jdStoreID), model.VendorIDJD)
|
||||
// if storeDetail == nil {
|
||||
// continue
|
||||
// }
|
||||
// var skuBindInfos []*cms.StoreSkuBindInfo
|
||||
// for _, v := range skuNames {
|
||||
// var skuBindInfoSkus []*cms.StoreSkuBindSkuInfo
|
||||
// skuBindInfo := &cms.StoreSkuBindInfo{
|
||||
// IsFocus: 1,
|
||||
// IsSale: 1,
|
||||
// NameID: v,
|
||||
// StoreID: storeDetail.ID,
|
||||
// }
|
||||
// skus, _ := dao.GetSkus(db, nil, []int{v}, []int{model.SkuStatusNormal}, nil, nil)
|
||||
// for _, vv := range skus {
|
||||
// skuBindInfoSku := &cms.StoreSkuBindSkuInfo{
|
||||
// SkuID: vv.ID,
|
||||
// Stock: &a,
|
||||
// IsSale: 1,
|
||||
// }
|
||||
// skuBindInfoSkus = append(skuBindInfoSkus, skuBindInfoSku)
|
||||
// }
|
||||
// prices, _ := dao.GetPriceReferSnapshotNoPage(db, []int{0}, nil, []int{v}, utils.Time2Date(time.Now().AddDate(0, 0, -1)))
|
||||
// if len(prices) > 0 {
|
||||
// skuBindInfo.UnitPrice = prices[0].MidUnitPrice
|
||||
// } else {
|
||||
// skuBindInfo.UnitPrice = 1000
|
||||
// }
|
||||
// skuBindInfos = append(skuBindInfos, skuBindInfo)
|
||||
// }
|
||||
// cms.UpdateStoreSkus(ctx, 0, storeDetail.ID, skuBindInfos, true, true)
|
||||
// }
|
||||
var (
|
||||
jdStoreIDs = []string{
|
||||
// jdStoreIDs = []string{
|
||||
// "11734848",
|
||||
// "11734850",
|
||||
// "11734854",
|
||||
@@ -1718,7 +1533,7 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) {
|
||||
// "11981675",
|
||||
// "12011812",
|
||||
// "12007545",
|
||||
"11734846",
|
||||
// "11734846",
|
||||
// "12005417",
|
||||
// "12005640",
|
||||
// "12005682",
|
||||
@@ -1740,31 +1555,31 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) {
|
||||
// "11734851",
|
||||
// "12030632",
|
||||
// "12050456",
|
||||
}
|
||||
// }
|
||||
// jdStoreIDxipu = "11890095"
|
||||
// skuMap = make(map[string]partner.StoreSkuInfo)
|
||||
priceList = make(map[string][]*partner.StoreSkuInfo)
|
||||
// priceList = make(map[string][]*partner.StoreSkuInfo)
|
||||
// statusList1 = make(map[string][]*partner.StoreSkuInfo)
|
||||
// statusList2 = make(map[string][]*partner.StoreSkuInfo)
|
||||
// stockList = make(map[string][]*partner.StoreSkuInfo)
|
||||
vendorOrgCode = "320406"
|
||||
// vendorOrgCode = "320406"
|
||||
// vendorOrgCode = "82029"
|
||||
)
|
||||
// )
|
||||
|
||||
handler := partner.GetPurchasePlatformFromVendorID(model.VendorIDJD).(partner.IPurchasePlatformStoreSkuHandler)
|
||||
multiHandler := partner.GetPurchasePlatformFromVendorID(model.VendorIDJD).(partner.IMultipleStoresHandler)
|
||||
allSkuNameInfoList, err := multiHandler.GetSkus(ctx, vendorOrgCode, 0, "")
|
||||
// handler := partner.GetPurchasePlatformFromVendorID(model.VendorIDJD).(partner.IPurchasePlatformStoreSkuHandler)
|
||||
// multiHandler := partner.GetPurchasePlatformFromVendorID(model.VendorIDJD).(partner.IMultipleStoresHandler)
|
||||
// allSkuNameInfoList, err := multiHandler.GetSkus(ctx, vendorOrgCode, 0, "")
|
||||
// skuInfos := storeSkuFullList2BareFilter(allSkuNameInfoList)
|
||||
// outStoreSkuList, err := handler.GetStoreSkusBareInfo(ctx, vendorOrgCode, nil, 0, jdStoreIDxipu, skuInfos)
|
||||
// for _, vv := range outStoreSkuList {
|
||||
// skuMap[vv.VendorSkuID] = *vv
|
||||
// }
|
||||
for _, jdStoreID := range jdStoreIDs {
|
||||
skuInfos2 := storeSkuFullList2BareFilter(allSkuNameInfoList)
|
||||
outStoreSkuList2, _ := handler.GetStoreSkusBareInfo(ctx, vendorOrgCode, nil, 0, jdStoreID, skuInfos2)
|
||||
for _, v := range outStoreSkuList2 {
|
||||
v.VendorPrice = int64(math.Round(float64(v.VendorPrice) * 1.05))
|
||||
priceList[jdStoreID] = append(priceList[jdStoreID], v)
|
||||
// for _, jdStoreID := range jdStoreIDs {
|
||||
// skuInfos2 := storeSkuFullList2BareFilter(allSkuNameInfoList)
|
||||
// outStoreSkuList2, _ := handler.GetStoreSkusBareInfo(ctx, vendorOrgCode, nil, 0, jdStoreID, skuInfos2)
|
||||
// for _, v := range outStoreSkuList2 {
|
||||
// v.VendorPrice = int64(math.Round(float64(v.VendorPrice) * 1.05))
|
||||
// priceList[jdStoreID] = append(priceList[jdStoreID], v)
|
||||
// a := skuMap[v.VendorSkuID]
|
||||
// if &a == nil {
|
||||
// continue
|
||||
@@ -1785,24 +1600,24 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) {
|
||||
// v.Stock = a.Stock
|
||||
// stockList[jdStoreID] = append(stockList[jdStoreID], v)
|
||||
// }
|
||||
}
|
||||
}
|
||||
task := tasksch.NewParallelTask("syncStoreSkuNew", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(true), ctx,
|
||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
step := batchItemList[0].(int)
|
||||
switch step {
|
||||
case 0:
|
||||
if len(priceList) > 0 {
|
||||
for k, v := range priceList {
|
||||
_, err = putils.FreeBatchStoreSkuInfo("更新门店商品价格", func(task tasksch.ITask, batchedStoreSkuList []*partner.StoreSkuInfo) (result interface{}, successCount int, err error) {
|
||||
failedList, err := handler.UpdateStoreSkusPrice(ctx, vendorOrgCode, 0, k, batchedStoreSkuList)
|
||||
if len(failedList) > 0 {
|
||||
task.AddFailedList(failedList)
|
||||
}
|
||||
return nil, 1, err
|
||||
}, ctx, task, v, 50, true)
|
||||
}
|
||||
}
|
||||
// }
|
||||
// }
|
||||
// task := tasksch.NewParallelTask("syncStoreSkuNew", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(true), ctx,
|
||||
// func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
// step := batchItemList[0].(int)
|
||||
// switch step {
|
||||
// case 0:
|
||||
// if len(priceList) > 0 {
|
||||
// for k, v := range priceList {
|
||||
// _, err = putils.FreeBatchStoreSkuInfo("更新门店商品价格", func(task tasksch.ITask, batchedStoreSkuList []*partner.StoreSkuInfo) (result interface{}, successCount int, err error) {
|
||||
// failedList, err := handler.UpdateStoreSkusPrice(ctx, vendorOrgCode, 0, k, batchedStoreSkuList)
|
||||
// if len(failedList) > 0 {
|
||||
// task.AddFailedList(failedList)
|
||||
// }
|
||||
// return nil, 1, err
|
||||
// }, ctx, task, v, 50, true)
|
||||
// }
|
||||
// }
|
||||
// case 1:
|
||||
// if len(statusList1) > 0 {
|
||||
// for k, v := range statusList1 {
|
||||
@@ -1828,14 +1643,103 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) {
|
||||
// }, ctx, task, v, 50, true)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// return retVal, err
|
||||
// }, []int{0})
|
||||
// tasksch.HandleTask(task, nil, true).Run()
|
||||
// _, err = task.GetResult(0)
|
||||
var (
|
||||
storeMaps []*model.StoreMap
|
||||
db = dao.GetDB()
|
||||
)
|
||||
sql := `
|
||||
SELECT * FROM store_map WHERE vendor_id = 5 and store_id <> 102919 and deleted_at = '1970-01-01 00:00:00' AND vendor_org_code = 1
|
||||
`
|
||||
err = dao.GetRows(db, &storeMaps, sql, nil)
|
||||
for _, v := range storeMaps {
|
||||
store, _ := dao.GetStoreDetail(db, v.StoreID, model.VendorIDJDShop, "")
|
||||
data, _, _ := jxutils.DownloadFileByURL(jdshopapi.JdsStoreImg)
|
||||
timeMap := map[string]string{
|
||||
"businessBeginTime": int2TimeStr(int(store.OpenTime1)),
|
||||
"businessEndTime": int2TimeStr(int(store.CloseTime1)),
|
||||
}
|
||||
timeJSON, _ := json.Marshal(timeMap)
|
||||
createEntityStoreParam := &jdshopapi.CreateEntityStoreParam{
|
||||
Name: store.Name,
|
||||
AddCode: store.JdsCode,
|
||||
AddCodeName: store.DistrictName,
|
||||
AddName: store.ProvinceName + store.CityName + store.DistrictName + "@!" + store.Address,
|
||||
Coordinate: utils.Float64ToStr(jxutils.IntCoordinate2Standard(store.Lat)) + "," + utils.Float64ToStr(jxutils.IntCoordinate2Standard(store.Lng)),
|
||||
Phone: store.Tel1,
|
||||
ExtendJSON: string(timeJSON),
|
||||
ImageFile: base64.StdEncoding.EncodeToString(data),
|
||||
CategoryName: jdshopapi.JdsStoreCategoryName,
|
||||
CustomerID: utils.Int2Str(store.ID),
|
||||
}
|
||||
if store.JdsStreetCode != 0 {
|
||||
createEntityStoreParam.AddCode = store.JdsStreetCode
|
||||
}
|
||||
if createEntityStoreParam.AddCode == 0 {
|
||||
createEntityStoreParam.AddCode = store.JdCode
|
||||
}
|
||||
//证明这个店可能隶属直辖市或者东莞
|
||||
if model.ZXCityCodeMap[store.CityCode] != "" {
|
||||
result, _ := api.AutonaviAPI.GetCoordinateAreaInfo(jxutils.IntCoordinate2Standard(store.Lng), jxutils.IntCoordinate2Standard(store.Lat))
|
||||
if result["regeocode"] != nil {
|
||||
street := result["regeocode"].(map[string]interface{})["addressComponent"].(map[string]interface{})["township"].(string)
|
||||
if street != "" {
|
||||
result1, _ := api.JdShopAPI.GetProvince()
|
||||
for _, v := range result1 {
|
||||
if strings.Contains(store.CityName, v.AreaName) {
|
||||
result2, _ := api.JdShopAPI.GetCity(v.AreaID)
|
||||
for _, vv := range result2 {
|
||||
if strings.Contains(store.DistrictName, vv.AreaName) {
|
||||
result3, _ := api.JdShopAPI.GetCounty(vv.AreaID)
|
||||
for _, vvv := range result3 {
|
||||
if street == vvv.AreaName {
|
||||
createEntityStoreParam.AddCode = vvv.AreaID
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
vendorStoreID, _ := api.JdShop2API.CreateEntityStore(createEntityStoreParam)
|
||||
|
||||
storeMap := &model.StoreMap{
|
||||
StoreID: v.StoreID,
|
||||
VendorStoreID: vendorStoreID,
|
||||
VendorID: model.VendorIDJDShop,
|
||||
Status: 1,
|
||||
PricePercentage: 100,
|
||||
AutoPickup: 1,
|
||||
DeliveryType: 2,
|
||||
DeliveryCompetition: 1,
|
||||
IsSync: 1,
|
||||
PricePercentagePack: "京西100-100",
|
||||
VendorOrgCode: "2",
|
||||
JdsStreetCode: v.JdsStreetCode,
|
||||
JdsStreetName: v.JdsStreetName,
|
||||
}
|
||||
dao.CreateEntity(db, storeMap)
|
||||
break
|
||||
}
|
||||
return retVal, err
|
||||
}, []int{0})
|
||||
tasksch.HandleTask(task, nil, true).Run()
|
||||
_, err = task.GetResult(0)
|
||||
return err
|
||||
}
|
||||
|
||||
func int2TimeStr(time int) (str string) {
|
||||
str += utils.Int2Str(time / 1000)
|
||||
str += utils.Int2Str(time % 1000 / 100)
|
||||
str += ":"
|
||||
str += utils.Int2Str(time % 100 / 10)
|
||||
str += utils.Int2Str(time % 10)
|
||||
return str
|
||||
}
|
||||
|
||||
func storeSkuFullList2BareFilter(storeSkuFull []*partner.SkuNameInfo) (bareStoreSkuList []*partner.StoreSkuInfo) {
|
||||
for _, v := range storeSkuFull {
|
||||
for _, v2 := range v.SkuList {
|
||||
|
||||
Reference in New Issue
Block a user