添加抖音授权登录,国美测试接口,修改运单重复骑手,添加推送骑手信息
This commit is contained in:
292
business/jxstore/cms/order_excel.go
Normal file
292
business/jxstore/cms/order_excel.go
Normal file
@@ -0,0 +1,292 @@
|
||||
package cms
|
||||
//
|
||||
//import (
|
||||
// "encoding/json"
|
||||
// "errors"
|
||||
// "fmt"
|
||||
// "git.rosy.net.cn/baseapi/utils"
|
||||
// "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||||
// "git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
|
||||
// "git.rosy.net.cn/jx-callback/business/model"
|
||||
// "git.rosy.net.cn/jx-callback/business/model/dao"
|
||||
// "git.rosy.net.cn/jx-callback/business/partner/purchase/jx/localjx"
|
||||
// "github.com/360EntSecGroup-Skylar/excelize"
|
||||
// "io"
|
||||
// "mime/multipart"
|
||||
// "strings"
|
||||
//)
|
||||
//
|
||||
//// 根据excel新增待拣货订单
|
||||
//func CreateOrderByExcel(ctx *jxcontext.Context, files []*multipart.FileHeader) (hint string, err error) {
|
||||
// if len(files) == 0 {
|
||||
// return "", errors.New("没有文件上传!")
|
||||
// }
|
||||
// fileHeader := files[0]
|
||||
// file, err := fileHeader.Open()
|
||||
// hint, err = RefreshJxPriceByExcelBin(ctx, file, true, true)
|
||||
// file.Close()
|
||||
// return hint, err
|
||||
//}
|
||||
//
|
||||
//type CreateOrderByExcelStore struct {
|
||||
// BuyerComment int // 备注
|
||||
// StoreID int // 门店id
|
||||
// Skus int // 商品列表
|
||||
// ExpectedDeliveredTimestamp int // 预期送达时间
|
||||
// TotalPrice int // 总价格
|
||||
// FreightPrice int // 运费
|
||||
// OrderPrice int // 订单价格
|
||||
// ActualPayPrice int // 顾客实际支付
|
||||
// OrderID int // 订单id
|
||||
// StoreName int // 门店名称
|
||||
// Weight int // 重量
|
||||
// FromStoreID int // 物料ID
|
||||
// EarningType int // 结算方式(1为报价,2为扣点),0无
|
||||
// OrderType int // 订单类型
|
||||
// IsBuyNowPrice int // 守价的值只有0和1
|
||||
// IsPriceDefend int
|
||||
// OrderID2 int
|
||||
// UserID int // 用户id
|
||||
// AddressID int // 收货地址id
|
||||
// CreateType int // "创建类型, 0:预创建, 1:创建"
|
||||
// IsDeliverySelf int // 自提
|
||||
//}
|
||||
//
|
||||
//// 赋值excel表字段排序
|
||||
//func SortExcelTable() *CreateOrderByExcelStore {
|
||||
// return &CreateOrderByExcelStore{
|
||||
// StoreID: 1,
|
||||
// StoreName: 2,
|
||||
// UserID: 3,
|
||||
// AddressID: 4,
|
||||
// Skus: 5,
|
||||
// Weight: 6,
|
||||
// TotalPrice: 7,
|
||||
// FreightPrice: 8,
|
||||
// OrderPrice: 9,
|
||||
// ActualPayPrice: 10,
|
||||
// ExpectedDeliveredTimestamp: 11,
|
||||
// OrderType: 12,
|
||||
// FromStoreID: 13,
|
||||
// EarningType: 14,
|
||||
// BuyerComment: 15,
|
||||
//
|
||||
// CreateType: 16,
|
||||
// IsDeliverySelf: 17,
|
||||
// IsPriceDefend: 18,
|
||||
// IsBuyNowPrice: 19,
|
||||
// OrderID: 20,
|
||||
// OrderID2: 21,
|
||||
// }
|
||||
//}
|
||||
//
|
||||
//// 订单结构体
|
||||
//type ExcelOrderStruct struct {
|
||||
// BuyerComment string `json:"buyerComment"` // 备注
|
||||
// StoreID int `json:"storeID"`
|
||||
// Skus []*JxSkuInfo `json:"skus"`
|
||||
// ExpectedDeliveredTimestamp int64 `json:"expectedDeliveredTimestamp"` // 预期送达时间
|
||||
// TotalPrice int64 `json:"totalPrice"` // 单位为分 订单总价
|
||||
// FreightPrice int64 `json:"freightPrice"` // 单位为分 订单配送费
|
||||
// OrderPrice int64 `json:"orderPrice"` // 单位为分 订单商品价格
|
||||
// ActualPayPrice int64 `json:"actualPayPrice"` // 单位为分 顾客实际支付
|
||||
// OrderID int64 `json:"orderID"`
|
||||
// StoreName string `json:"storeName"`
|
||||
// Weight int `json:"weight"`
|
||||
// FromStoreID int `json:"fromStoreID"` //
|
||||
// EarningType int `json:"earningType"`
|
||||
// OrderType int `json:"orderType"`
|
||||
// IsBuyNowPrice int `json:"isBuyNowPrice"`
|
||||
// IsPriceDefend int `json:"isPriceDefend"`
|
||||
// OrderID2 string `json:"-"` // 订单id2
|
||||
// UserID string `json:"userID"` // 用户id
|
||||
// AddressId int64 `json:"address_id"` // 地址id
|
||||
//}
|
||||
//
|
||||
//// 商品列表
|
||||
//type JxSkuInfo struct {
|
||||
// SkuID int `json:"skuID"`
|
||||
// Count int `json:"count"`
|
||||
// Price int64 `json:"price,omitempty"` // 原价
|
||||
// SalePrice int64 `json:"salePrice,omitempty"` // 售卖价
|
||||
// Name string `json:"name"`
|
||||
// Weight int `json:"weight"`
|
||||
// GroupSign bool `json:"groupSign"`
|
||||
// DefendPrice int64 `json:"defendPrice"` //守价
|
||||
//}
|
||||
//
|
||||
//// 解析excel到订单结构体当中
|
||||
//func GetCellIntoOrder(rowNum int, row []string, sheetParam *CreateOrderByExcelStore, order *ExcelOrderStruct, nameMap map[string]string) (errMsg string) {
|
||||
// address := make(map[string]int64, 0)
|
||||
// for k, cell := range row {
|
||||
// switch k {
|
||||
// case sheetParam.StoreID:
|
||||
// order.StoreID = utils.Str2Int(cell)
|
||||
// case sheetParam.StoreName:
|
||||
// order.StoreName = cell
|
||||
// case sheetParam.UserID:
|
||||
// order.UserID = cell
|
||||
// case sheetParam.AddressID:
|
||||
// order.AddressId = utils.Str2Int64(cell)
|
||||
// case sheetParam.Skus:
|
||||
// shop := make([]*JxSkuInfo, 0, 0)
|
||||
// if err := json.Unmarshal([]byte(cell), shop); err != nil {
|
||||
// return fmt.Sprintf("解析excel文档用户商品列表错,检查数据格式是否正确")
|
||||
// }
|
||||
// order.Skus = shop
|
||||
// case sheetParam.Weight:
|
||||
// order.Weight = utils.Str2Int(cell)
|
||||
// case sheetParam.TotalPrice:
|
||||
// order.TotalPrice = utils.Str2Int64(cell)
|
||||
// case sheetParam.FreightPrice:
|
||||
// order.FreightPrice = utils.Str2Int64(cell)
|
||||
// case sheetParam.OrderPrice:
|
||||
// order.OrderPrice = utils.Str2Int64(cell)
|
||||
// case sheetParam.ActualPayPrice:
|
||||
// order.ActualPayPrice = utils.Str2Int64(cell)
|
||||
// case :
|
||||
//
|
||||
//
|
||||
//
|
||||
// }
|
||||
//
|
||||
// if k == sheetParam.SkuNameIDCol {
|
||||
// cellReplace := strings.ReplaceAll(cell, ",", ",")
|
||||
// if cellReplace != "" {
|
||||
// if cellReplace[len(cellReplace)-1:len(cellReplace)] == "," {
|
||||
// cellReplace = cellReplace[0 : len(cellReplace)-1]
|
||||
// }
|
||||
// nameIDs := strings.Split(cellReplace, ",")
|
||||
// for _, v := range nameIDs {
|
||||
// if nameMap[v] != "" {
|
||||
// return fmt.Sprintf(" Excel中含有重复的nameID![%v]列,[%v]行,nameID [%v]\n", k+1, rowNum+1, v)
|
||||
// } else {
|
||||
// nameMap[v] = v
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// storeSkuNamePrice.NameIDGroup = cellReplace
|
||||
// }
|
||||
// if k == sheetParam.SkuPriceCol {
|
||||
// if IsChineseChar(cell) {
|
||||
// return fmt.Sprintf("Excel格式排版发生了变化!在[%v]列,[%v]行附近可能增加或减少了一列", k+1, rowNum+1)
|
||||
// }
|
||||
// storeSkuNamePrice.Price = int(utils.Float64TwoInt64(utils.Str2Float64(cell) * 100))
|
||||
// }
|
||||
// if k == sheetParam.SkuUnitCol {
|
||||
// storeSkuNamePrice.Unit = cell
|
||||
// }
|
||||
// }
|
||||
// return errMsg
|
||||
//}
|
||||
//
|
||||
//func AnalysisExcelOrder(ctx *jxcontext.Context, reader io.Reader, isAsync, isContinueWhenError bool) {
|
||||
// excelSort := SortExcelTable()
|
||||
// taskSeqFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
||||
// switch step {
|
||||
// case 0:
|
||||
// xlsx, err := excelize.OpenReader(reader)
|
||||
// if err != nil {
|
||||
// return "", err
|
||||
// }
|
||||
// rows, _ := xlsx.GetRows(xlsx.GetSheetName(1))
|
||||
// for rowNum, row := range rows {
|
||||
// if rowNum < model.YES { // 第一行跳过
|
||||
// continue
|
||||
// }
|
||||
// storeSkuNamePrice := &localjx.JxOrderInfo{}
|
||||
// errMsg += GetCellIntoStruct(rowNum, row, excelSort, storeSkuNamePrice, nameMap)
|
||||
// storeSkuNamePriceList = append(storeSkuNamePriceList, storeSkuNamePrice)
|
||||
// }
|
||||
// if errMsg != "" {
|
||||
// return "", errors.New(errMsg)
|
||||
// } else {
|
||||
// isErr = true
|
||||
// }
|
||||
// case 1:
|
||||
// db := dao.GetDB()
|
||||
// storeSkuNamePriceListOrg, _ := dao.GetStoreSkuNamePrice(db)
|
||||
// CreateOrUpdateStoreSkuNamePriceByExcel(db, ctx, storeSkuNamePriceList, storeSkuNamePriceListOrg)
|
||||
// storeSkuNamePriceListNew, _ := dao.GetStoreSkuNamePrice(db)
|
||||
// storeSkuNamePriceMapNew := StoreSkuNamePriceList2Map(ctx, storeSkuNamePriceListNew)
|
||||
// for _, v := range storeSkuNamePriceList {
|
||||
// if storeSkuNamePriceMapNew[v.OutSkuID] != nil {
|
||||
// storeSkuNamePriceListUpdate = append(storeSkuNamePriceListUpdate, storeSkuNamePriceMapNew[v.OutSkuID])
|
||||
// }
|
||||
// }
|
||||
// taskFunc := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
// storeSkuNamePrice := batchItemList[0].(*model.StoreSkuNamePrice)
|
||||
// var skuBindInfos []*StoreSkuBindInfo
|
||||
// nameIDGroup := strings.Split(storeSkuNamePrice.NameIDGroup, ",")
|
||||
// for _, v := range nameIDGroup {
|
||||
// if v != "" {
|
||||
// nameID := int(utils.Str2Int64(v))
|
||||
// for _, vv := range storeIDs {
|
||||
// skuList, err2 := dao.GetStoreSkusByNameIDs(db, []int{vv}, nameID)
|
||||
// err = err2
|
||||
// if len(skuList) > 0 {
|
||||
// unitPrice := 0
|
||||
// if skuList[0].Unit == model.UnitNames[0] {
|
||||
// if storeSkuNamePrice.Unit == "KG" {
|
||||
// unitPrice = storeSkuNamePrice.Price / 2
|
||||
// } else {
|
||||
// unitPrice = storeSkuNamePrice.Price
|
||||
// }
|
||||
// } else {
|
||||
// unitPrice = storeSkuNamePrice.Price
|
||||
// }
|
||||
// storeSkuBindInfo := &StoreSkuBindInfo{
|
||||
// NameID: nameID,
|
||||
// UnitPrice: unitPrice,
|
||||
// }
|
||||
// skuBindInfos = append(skuBindInfos, storeSkuBindInfo)
|
||||
// outSuccess := DataSuccess{
|
||||
// NameID: nameID,
|
||||
// Name: skuList[0].Name,
|
||||
// Unit: storeSkuNamePrice.Unit,
|
||||
// OrgPrice: utils.Str2Float64(utils.Int64ToStr(skuList[0].UnitPrice)) / 100,
|
||||
// NowPrice: utils.Str2Float64(utils.Int64ToStr(int64(unitPrice))) / 100,
|
||||
// MixPrice: utils.Str2Float64(utils.Int64ToStr(int64(unitPrice)-skuList[0].UnitPrice)) / 100,
|
||||
// }
|
||||
// dataLock.AppendDataSuccess(outSuccess)
|
||||
// } else {
|
||||
// //京西xx门店没有关注该商品
|
||||
// outFailed := DataFailed{
|
||||
// NameID: nameID,
|
||||
// Name: storeSkuNamePrice.Name,
|
||||
// Comment: fmt.Sprintf("京西[%v]门店没有关注该商品,商品nameID[%v],Excel上商品名[%v]", vv, nameID, storeSkuNamePrice.Name),
|
||||
// }
|
||||
// dataLock.AppendDataFailed(outFailed)
|
||||
// }
|
||||
// }
|
||||
// } else {
|
||||
// //nameID为空,还未填写nameID
|
||||
// outFailed := DataFailed{
|
||||
// NameID: 0,
|
||||
// Name: storeSkuNamePrice.Name,
|
||||
// Comment: fmt.Sprintf("商品nameID为空!,还未填写商品nameID,Excel上商品名[%v]", storeSkuNamePrice.Name),
|
||||
// }
|
||||
// dataLock.AppendDataFailed(outFailed)
|
||||
// }
|
||||
// }
|
||||
// retVal = skuBindInfos
|
||||
// return retVal, err
|
||||
// }
|
||||
// taskParallel := tasksch.NewParallelTask("刷新京西价", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, taskFunc, storeSkuNamePriceListUpdate)
|
||||
// tasksch.HandleTask(taskParallel, task, true).Run()
|
||||
// skuBindInfosInter, err = taskParallel.GetResult(0)
|
||||
// case 2:
|
||||
// //更新京西价
|
||||
// for _, v := range skuBindInfosInter {
|
||||
// skuBindInfoList = append(skuBindInfoList, v.(*StoreSkuBindInfo))
|
||||
// }
|
||||
// if isErr {
|
||||
// UpdateStoresSkus(ctx, 0, storeIDs, skuBindInfoList, false, false, isAsync, isContinueWhenError)
|
||||
// }
|
||||
// case 3:
|
||||
// //写Excel
|
||||
// WriteToExcelJx(task, dataLock.dataSuccessList, dataLock.dataFailedList)
|
||||
// }
|
||||
// return result, err
|
||||
// }
|
||||
//}
|
||||
@@ -740,7 +740,7 @@ func GetVendorStore(ctx *jxcontext.Context, vendorID int, vendorOrgCode, vendorS
|
||||
return nil, err
|
||||
}
|
||||
if handler := CurVendorSync.GetStoreHandler(vendorID); handler != nil {
|
||||
result, err2 := handler.ReadStore(ctx, vendorOrgCode, vendorStoreID)
|
||||
result, err2 := handler.ReadStore(ctx, vendorOrgCode, vendorStoreID, "")
|
||||
if err = err2; err == nil {
|
||||
retVal = &StoreExt{
|
||||
Store: result.Store,
|
||||
@@ -1361,7 +1361,7 @@ func AddStoreVendorMap(ctx *jxcontext.Context, db *dao.DaoDB, vendorID int, vend
|
||||
}
|
||||
if handler := CurVendorSync.GetStoreHandler(vendorID); handler != nil {
|
||||
if vendorOrgCode != globals.Mtwm2Code {
|
||||
store, err2 := handler.ReadStore(ctx, vendorOrgCode, storeMap.VendorStoreID)
|
||||
store, err2 := handler.ReadStore(ctx, vendorOrgCode, storeMap.VendorStoreID, storeMap.VendorStoreName)
|
||||
if err = err2; err == nil || storeMap.IsSync == 0 {
|
||||
if store != nil {
|
||||
storeMap.DeliveryType = store.DeliveryType
|
||||
@@ -1398,7 +1398,7 @@ func AddStoreVendorMap(ctx *jxcontext.Context, db *dao.DaoDB, vendorID int, vend
|
||||
storeMap.SyncStatus = model.SyncFlagNewMask //京东商城要去建店
|
||||
} else {
|
||||
if handler := CurVendorSync.GetStoreHandler(vendorID); handler != nil {
|
||||
store, err2 := handler.ReadStore(ctx, vendorOrgCode, storeMap.VendorStoreID)
|
||||
store, err2 := handler.ReadStore(ctx, vendorOrgCode, storeMap.VendorStoreID,storeMap.VendorStoreName)
|
||||
if err = err2; err == nil || storeMap.IsSync == 0 {
|
||||
if store != nil {
|
||||
storeMap.Status = store.Status
|
||||
@@ -1567,7 +1567,7 @@ func UpdateStoreVendorMap(ctx *jxcontext.Context, db *dao.DaoDB, storeID, vendor
|
||||
|
||||
if vendorID != model.VendorIDJX && vendorID != model.VendorIDYB {
|
||||
if vendorStoreID := utils.Interface2String(valid["vendorStoreID"]); vendorStoreID != "" {
|
||||
vendorStoreInfo, err2 := storeHandler.ReadStore(ctx, storeMap.VendorOrgCode, vendorStoreID)
|
||||
vendorStoreInfo, err2 := storeHandler.ReadStore(ctx, storeMap.VendorOrgCode, vendorStoreID,storeMap.VendorStoreName)
|
||||
if err = err2; err == nil {
|
||||
valid["deliveryType"] = vendorStoreInfo.DeliveryType
|
||||
}
|
||||
@@ -2256,7 +2256,7 @@ func GetStoresVendorSnapshot(ctx *jxcontext.Context, parentTask tasksch.ITask, v
|
||||
storeMap := batchItemList[0].(*model.StoreMap)
|
||||
if model.IsVendorRemote(storeMap.VendorID) {
|
||||
if handler := partner.GetPurchasePlatformFromVendorID(storeMap.VendorID); handler != nil {
|
||||
store, err2 := handler.ReadStore(ctx, storeMap.VendorOrgCode, storeMap.VendorStoreID)
|
||||
store, err2 := handler.ReadStore(ctx, storeMap.VendorOrgCode, storeMap.VendorStoreID,storeMap.VendorStoreName)
|
||||
if err = err2; err == nil {
|
||||
retVal = []interface{}{&model.VendorStoreSnapshot{
|
||||
StoreID: storeMap.StoreID,
|
||||
@@ -2910,13 +2910,13 @@ func GetVendorStoreInfo(ctx *jxcontext.Context, vendorIDList []int, isAsync, isC
|
||||
storeID := batchItemList[0].(string)
|
||||
if partner.IsMultiStore(vendorID) {
|
||||
multiHandler, _ := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IMultipleStoresHandler)
|
||||
storeDetail, err = multiHandler.ReadStore(ctx, "", storeID)
|
||||
storeDetail, err = multiHandler.ReadStore(ctx, "", storeID,"")
|
||||
if err != nil {
|
||||
return retVal, err
|
||||
}
|
||||
} else {
|
||||
singleHandler, _ := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.ISingleStoreHandler)
|
||||
storeDetail, err = singleHandler.ReadStore(ctx, "", storeID)
|
||||
storeDetail, err = singleHandler.ReadStore(ctx, "", storeID,"")
|
||||
if err != nil {
|
||||
return retVal, err
|
||||
}
|
||||
@@ -5279,7 +5279,7 @@ func RefreshStoreIsOnline(ctx *jxcontext.Context) (err error) {
|
||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
storeMap := batchItemList[0].(*model.StoreMap)
|
||||
if handler := CurVendorSync.GetStoreHandler(storeMap.VendorID); handler != nil {
|
||||
if store, err := handler.ReadStore(ctx, storeMap.VendorOrgCode, storeMap.VendorStoreID); err == nil && store != nil {
|
||||
if store, err := handler.ReadStore(ctx, storeMap.VendorOrgCode, storeMap.VendorStoreID,""); err == nil && store != nil {
|
||||
if store.Status != model.StoreStatusDisabled {
|
||||
storeMap.IsOnline = 1
|
||||
} else {
|
||||
|
||||
@@ -3948,6 +3948,7 @@ func RefershStoreSkusMidPrice(ctx *jxcontext.Context, storeIDs []int, isCountry
|
||||
return err
|
||||
}
|
||||
|
||||
// 根据excel刷新门店商品信息
|
||||
func RefreshJxPriceByExcel(ctx *jxcontext.Context, storeIDs []int, files []*multipart.FileHeader, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||
if len(files) == 0 {
|
||||
return "", errors.New("没有文件上传!")
|
||||
@@ -4268,13 +4269,13 @@ func GetVendorStoreSkuPrice(ctx *jxcontext.Context, vendorIDs []int, skuID int,
|
||||
}
|
||||
if partner.IsMultiStore(vendorID) {
|
||||
multiHandler, _ := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.IMultipleStoresHandler)
|
||||
storeDetail, err = multiHandler.ReadStore(ctx, v, vendorStoreID)
|
||||
storeDetail, err = multiHandler.ReadStore(ctx, v, vendorStoreID, "")
|
||||
if len(skuList) > 0 {
|
||||
inStoreSku.VendorSkuID = skuList[0].VendorSkuID
|
||||
}
|
||||
} else {
|
||||
singleHandler, _ := partner.GetPurchasePlatformFromVendorID(vendorID).(partner.ISingleStoreHandler)
|
||||
storeDetail, err = singleHandler.ReadStore(ctx, v, vendorStoreID)
|
||||
storeDetail, err = singleHandler.ReadStore(ctx, v, vendorStoreID, "")
|
||||
inStoreSku.SkuID = skuID
|
||||
}
|
||||
inStoreSkuList = append(inStoreSkuList, inStoreSku)
|
||||
|
||||
@@ -481,7 +481,7 @@ func buildStoreManageState(ctx *jxcontext.Context, db *dao.DaoDB, storeMap *mode
|
||||
}
|
||||
dao.WrapAddIDCULEntity(storeManage, ctx.GetUserName())
|
||||
handler := partner.GetPurchasePlatformFromVendorID(storeMap.VendorID)
|
||||
store, err := handler.ReadStore(ctx, storeDetail.VendorOrgCode, storeDetail.VendorStoreID)
|
||||
store, err := handler.ReadStore(ctx, storeDetail.VendorOrgCode, storeDetail.VendorStoreID, storeDetail.VendorStoreName)
|
||||
if err != nil || store == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user