Accept Merge Request #116: (yonghui -> mark)

Merge Request: 根据skuid 批量关注可售
Created By: @苏尹岚
Accepted By: @苏尹岚
URL: https://rosydev.coding.net/p/jx-callback/d/jx-callback/git/merge/116
This commit is contained in:
苏尹岚
2019-12-26 16:24:13 +08:00
6 changed files with 144 additions and 77 deletions

View File

@@ -101,6 +101,7 @@ func InitServiceInfo(version string, buildTime time.Time, gitCommit string) {
"payStatusName": model.PayStatusName,
"refundStatusName": model.RefundStatusName,
"autoReplyTypeName": model.AutoReplyTypeName,
"complaintReasons": model.ComplaintReasons,
},
}
}

View File

@@ -2766,57 +2766,73 @@ func FocusStoreSkusByExcelBin(ctx *jxcontext.Context, reader io.Reader, isAsync,
SkuRow: 1,
}
// xlsx, err := excelize.OpenFile("111.xlsx")
xlsx, err := excelize.OpenReader(reader)
if err != nil {
return "", err
}
rows, _ := xlsx.GetRows(xlsx.GetSheetName(1))
for rowNum, row := range rows {
if rowNum < sheetParam.SkuRow {
continue
}
GetCellForFocusStoreSkus(db, rowNum, row, sheetParam, skuMap)
}
for k, _ := range skuMap {
skuIDs = append(skuIDs, k)
}
skuList, err := dao.GetSkus(db, skuIDs, nil, nil, nil)
if err != nil && len(skuList) == 0 {
return
}
for _, v := range skuList {
var (
price int
specQuality float64
)
if v.Unit == model.SpecialUnit {
if v.SpecUnit == model.SpecUnitNames[1] || v.SpecUnit == model.SpecUnitNames[2] {
specQuality = float64(v.SpecQuality) * 1000
} else {
specQuality = float64(v.SpecQuality)
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 result, err
}
price = int(utils.Float64TwoInt64(utils.Int2Float64(model.SpecialSpecQuality) / specQuality * utils.Int2Float64(skuMap[v.ID])))
} else {
price = skuMap[v.ID]
}
if skuNameMap[v.NameID] < price {
skuNameMap[v.NameID] = price
rows, _ := xlsx.GetRows(xlsx.GetSheetName(1))
for rowNum, row := range rows {
if rowNum < sheetParam.SkuRow {
continue
}
GetCellForFocusStoreSkus(db, rowNum, row, sheetParam, skuMap)
}
case 1:
for k, _ := range skuMap {
skuIDs = append(skuIDs, k)
}
skuList, err := dao.GetSkus(db, skuIDs, nil, nil, nil)
if err != nil && len(skuList) == 0 {
return result, err
}
for _, v := range skuList {
var (
price int
specQuality float64
)
if v.Unit == model.SpecialUnit {
if v.SpecUnit == model.SpecUnitNames[1] || v.SpecUnit == model.SpecUnitNames[2] {
specQuality = float64(v.SpecQuality) * 1000
} else {
specQuality = float64(v.SpecQuality)
}
price = int(utils.Float64TwoInt64(utils.Int2Float64(model.SpecialSpecQuality) / specQuality * utils.Int2Float64(skuMap[v.ID])))
} else {
price = skuMap[v.ID]
}
if skuNameMap[v.NameID] < price {
skuNameMap[v.NameID] = price
}
}
for k, v := range skuNameMap {
skuBindInfo := &StoreSkuBindInfo{
NameID: k,
UnitPrice: v,
IsFocus: 1,
IsSale: 1,
}
skuBindInfos = append(skuBindInfos, skuBindInfo)
}
storeList, err := dao.GetStoreList(db, nil, nil, "")
for _, v := range storeList {
storeIDs = append(storeIDs, v.ID)
}
case 2:
UpdateStoresSkus(ctx, storeIDs, skuBindInfos, false, isAsync, isContinueWhenError)
}
return result, err
}
for k, v := range skuNameMap {
skuBindInfo := &StoreSkuBindInfo{
NameID: k,
UnitPrice: v,
IsFocus: 1,
IsSale: 1,
}
skuBindInfos = append(skuBindInfos, skuBindInfo)
taskSeq := tasksch.NewSeqTask2("根据Excel中skuID批量关注商品", ctx, isContinueWhenError, taskSeqFunc, 3)
tasksch.HandleTask(taskSeq, nil, true).Run()
if !isAsync {
_, err = taskSeq.GetResult(0)
hint = "1"
} else {
hint = taskSeq.GetID()
}
storeList, err := dao.GetStoreList(db, nil, nil, "")
for _, v := range storeList {
storeIDs = append(storeIDs, v.ID)
}
hint, err = UpdateStoresSkus(ctx, storeIDs, skuBindInfos, false, isAsync, isContinueWhenError)
return hint, err
}
@@ -2845,35 +2861,51 @@ func FocusStoreSkusBySku(ctx *jxcontext.Context, skuIDs []int, isAsync, isContin
db := dao.GetDB()
skuList, err := dao.GetSkus(db, skuIDs, nil, nil, nil)
storeList, err := dao.GetStoreList(db, nil, nil, "")
for _, v := range storeList {
storeIDs = append(storeIDs, v.ID)
}
for _, v := range skuList {
skuNameMap[v.NameID] = append(skuNameMap[v.NameID], &StoreSkuBindSkuInfo{
SkuID: v.ID,
IsSale: 1,
})
}
task := tasksch.NewParallelTask("根据skuID部分关注商品", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx,
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
store := batchItemList[0].(*model.Store)
for k, v := range skuNameMap {
midPrice, _ := dao.GetMidPriceByNameID(db, store.CityCode, k, utils.Time2Date(time.Now().AddDate(0, 0, -1)))
skuBindInfo := &StoreSkuBindInfo{
NameID: k,
UnitPrice: midPrice,
IsFocus: 1,
Skus: v,
}
retVal = []*StoreSkuBindInfo{skuBindInfo}
taskSeqFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
switch step {
case 0:
for _, v := range storeList {
storeIDs = append(storeIDs, v.ID)
}
return retVal, err
}, storeList)
tasksch.HandleTask(task, nil, true).Run()
result, err := task.GetResult(0)
for _, v := range result {
skuBindInfos = append(skuBindInfos, v.(*StoreSkuBindInfo))
for _, v := range skuList {
skuNameMap[v.NameID] = append(skuNameMap[v.NameID], &StoreSkuBindSkuInfo{
SkuID: v.ID,
IsSale: 1,
})
}
case 1:
taskFunc := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
store := batchItemList[0].(*model.Store)
for k, v := range skuNameMap {
midPrice, _ := dao.GetMidPriceByNameID(db, store.CityCode, k, utils.Time2Date(time.Now().AddDate(0, 0, -1)))
skuBindInfo := &StoreSkuBindInfo{
NameID: k,
UnitPrice: midPrice,
IsFocus: 1,
Skus: v,
}
retVal = []*StoreSkuBindInfo{skuBindInfo}
}
return retVal, err
}
taskParallel := tasksch.NewParallelTask("根据skuID部分关注商品", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, taskFunc, storeList)
tasksch.HandleTask(taskParallel, task, true).Run()
result1, _ := taskParallel.GetResult(0)
for _, v := range result1 {
skuBindInfos = append(skuBindInfos, v.(*StoreSkuBindInfo))
}
case 2:
UpdateStoresSkus(ctx, storeIDs, skuBindInfos, false, isAsync, isContinueWhenError)
}
return result, err
}
taskSeq := tasksch.NewSeqTask2("根据skuID批量部分关注商品", ctx, isContinueWhenError, taskSeqFunc, 3)
tasksch.HandleTask(taskSeq, nil, true).Run()
if !isAsync {
_, err = taskSeq.GetResult(0)
hint = "1"
} else {
hint = taskSeq.GetID()
}
hint, err = UpdateStoresSkus(ctx, storeIDs, skuBindInfos, false, isAsync, isContinueWhenError)
return hint, err
}

View File

@@ -86,6 +86,18 @@ var (
OrderTypeAfsOrder: "售后单",
}
ComplaintReasons = map[int]string{
ComplaintReasons1: "骑手态度恶劣",
ComplaintReasons2: "骑手接单后未取货",
ComplaintReasons3: "骑手取货太慢",
ComplaintReasons4: "骑手送货太慢",
ComplaintReasons5: "货品未送达",
ComplaintReasons6: "货品有损坏",
ComplaintReasons7: "骑手违规收取顾客其他费用",
ComplaintReasons69: "骑手恶意取消订单",
ComplaintReasons71: "骑手提前点击取货/送达",
}
MultiStoresVendorMap = map[int]int{
VendorIDJD: 1,
VendorIDMTWM: 0,
@@ -204,6 +216,19 @@ const (
LockStatusLocked = 1
)
//投诉原因
const (
ComplaintReasons1 = 1 //"骑手态度恶劣",
ComplaintReasons2 = 2 //"骑手接单后未取货"
ComplaintReasons3 = 3 //"骑手取货太慢",
ComplaintReasons4 = 4 //"骑手送货太慢",
ComplaintReasons5 = 5 //"货品未送达",
ComplaintReasons6 = 6 //"货品有损坏",
ComplaintReasons7 = 7 //"骑手违规收取顾客其他费用",
ComplaintReasons69 = 69 //"骑手恶意取消订单",
ComplaintReasons71 = 71 //"骑手提前点击取货/送达",
)
const (
WaybillStatusRefuseFailedGetGoods = -70
WaybillStatusUnknown = 0

View File

@@ -343,6 +343,11 @@ type OrderPayRefund struct {
OriginalData string `orm:"type(text)" json:"-"`
}
type OrderSupplementFee struct {
ModelIDCULD
VendorOrderID string `orm:"column(vendor_order_id);index;size(48)" json:"vendorOrderID"`
}
// 判断是否是购买平台自有物流
// 对于京东,饿百来说,就是其自有的物流,对于微商城来说,是达达
func IsWaybillPlatformOwn(bill *Waybill) bool {

View File

@@ -388,7 +388,9 @@ func limitOrderWeight(weight int) int {
}
func (c *DeliveryHandler) ComplaintRider(bill *model.Waybill, resonID int, resonContent string) (err error) {
err = api.DadaAPI.ComplaintRider(bill.VendorOrderID, resonID)
if globals.EnableStoreWrite {
err = api.DadaAPI.ComplaintRider(bill.VendorOrderID, resonID)
}
return err
}

View File

@@ -253,7 +253,9 @@ func limitOrderWeight(weight int) int {
}
func (c *DeliveryHandler) ComplaintRider(bill *model.Waybill, resonID int, resonContent string) (err error) {
err = api.MtpsAPI.EvaluateRider(utils.Str2Int64(bill.VendorWaybillID2), bill.VendorWaybillID, 1, resonContent)
if globals.EnableStoreWrite {
err = api.MtpsAPI.EvaluateRider(utils.Str2Int64(bill.VendorWaybillID2), bill.VendorWaybillID, 1, resonContent)
}
return err
}