From f8e6fd4bdd4fc09453f85792e79ec23bac0b1b66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 26 Dec 2019 09:24:14 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E6=A0=B9=E6=8D=AEexcel=E4=B8=ADskuid?= =?UTF-8?q?=E5=85=B3=E6=B3=A8=E5=95=86=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 110 +++++++++++++++++------------- 1 file changed, 63 insertions(+), 47 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 410a94c76..b5ecb5ee1 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -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 } From 9a05638ad292fc74c6947542d900b46fb571fd7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 26 Dec 2019 09:43:24 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E6=8A=95=E8=AF=89=E9=AA=91=E6=89=8B?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=B5=8B=E8=AF=95=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/partner/delivery/dada/waybill.go | 4 +++- business/partner/delivery/mtps/waybill.go | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/business/partner/delivery/dada/waybill.go b/business/partner/delivery/dada/waybill.go index e9e732629..5e9fce77d 100644 --- a/business/partner/delivery/dada/waybill.go +++ b/business/partner/delivery/dada/waybill.go @@ -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 } diff --git a/business/partner/delivery/mtps/waybill.go b/business/partner/delivery/mtps/waybill.go index 3f5bd9713..20c18c817 100644 --- a/business/partner/delivery/mtps/waybill.go +++ b/business/partner/delivery/mtps/waybill.go @@ -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 } From d1a8d459334e876d332c5fd8f0ea34504c36dfd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 26 Dec 2019 10:37:09 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E9=83=A8=E5=88=86=E5=85=B3=E6=B3=A8?= =?UTF-8?q?=E5=95=86=E5=93=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 72 +++++++++++++++++++------------ business/model/order.go | 5 +++ 2 files changed, 49 insertions(+), 28 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index b5ecb5ee1..b9dee32f5 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -2861,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 } diff --git a/business/model/order.go b/business/model/order.go index 264140f9d..0bc2c4d3f 100644 --- a/business/model/order.go +++ b/business/model/order.go @@ -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 { From 0f4ed3f31ec211a4dd0fa48c01f5ae49efeb2872 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 26 Dec 2019 16:23:28 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E6=8A=95=E8=AF=89=E5=8E=9F=E5=9B=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/cms.go | 1 + business/model/const.go | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/business/jxstore/cms/cms.go b/business/jxstore/cms/cms.go index eda6d1610..68258f6cb 100644 --- a/business/jxstore/cms/cms.go +++ b/business/jxstore/cms/cms.go @@ -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, }, } } diff --git a/business/model/const.go b/business/model/const.go index 2c85c1ee3..45907bdf5 100644 --- a/business/model/const.go +++ b/business/model/const.go @@ -85,6 +85,18 @@ var ( OrderTypeAfsOrder: "售后单", } + ComplaintReasons = map[int]string{ + ComplaintReasons1: "骑手态度恶劣", + ComplaintReasons2: "骑手接单后未取货", + ComplaintReasons3: "骑手取货太慢", + ComplaintReasons4: "骑手送货太慢", + ComplaintReasons5: "货品未送达", + ComplaintReasons6: "货品有损坏", + ComplaintReasons7: "骑手违规收取顾客其他费用", + ComplaintReasons69: "骑手恶意取消订单", + ComplaintReasons71: "骑手提前点击取货/送达", + } + MultiStoresVendorMap = map[int]int{ VendorIDJD: 1, VendorIDMTWM: 0, @@ -201,6 +213,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 From 2f3514d901d6c3ab097876dd034d338803df2446 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 26 Dec 2019 17:00:36 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E6=8A=95=E8=AF=89=E9=AA=91=E6=89=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/waybill.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/jxcallback/orderman/waybill.go b/business/jxcallback/orderman/waybill.go index 23d0c3042..d0779bb45 100644 --- a/business/jxcallback/orderman/waybill.go +++ b/business/jxcallback/orderman/waybill.go @@ -251,7 +251,7 @@ func GetComplaintReasons() (complaintReasonList []*dadaapi.ComplaintReason) { func ComplaintRider(ctx *jxcontext.Context, vendorOrderID string, vendorID, waybillVendorID, complaintID int) (err error) { db := dao.GetDB() - p := partner.GetDeliveryPlatformFromVendorID(vendorID).Handler + p := partner.GetDeliveryPlatformFromVendorID(waybillVendorID).Handler wayBillList, err := dao.GetWayBillByOrderID(db, model.OrderStatusFinished, vendorID, waybillVendorID, vendorOrderID) if err == nil && len(wayBillList) > 0 { err = p.ComplaintRider(wayBillList[0], complaintID, complaintReasonsMap[complaintID]) From e95a37789e83ec2c7f415e673077f44d2a0af55a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 26 Dec 2019 17:02:49 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E6=8A=95=E8=AF=89=E9=AA=91=E6=89=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/waybill.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/jxcallback/orderman/waybill.go b/business/jxcallback/orderman/waybill.go index d0779bb45..ae4831c20 100644 --- a/business/jxcallback/orderman/waybill.go +++ b/business/jxcallback/orderman/waybill.go @@ -256,7 +256,7 @@ func ComplaintRider(ctx *jxcontext.Context, vendorOrderID string, vendorID, wayb if err == nil && len(wayBillList) > 0 { err = p.ComplaintRider(wayBillList[0], complaintID, complaintReasonsMap[complaintID]) } else { - return fmt.Errorf("未查询到到相关订单,订单状态要求必须是完成!订单号:[%v] ,厂商:[%v]", vendorOrderID, waybillVendorID) + return fmt.Errorf("未查询到到相关订单,订单状态要求必须是完成!订单号:[%v] ,厂商:[%v],运送厂商:[%v]", vendorOrderID, vendorID, waybillVendorID) } return err } From c22581636d8b7ac2dff95f881649630a46eb3345 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 26 Dec 2019 17:10:20 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E6=8A=95=E8=AF=89=E9=AA=91=E6=89=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/model/dao/dao_order.go | 51 ++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/business/model/dao/dao_order.go b/business/model/dao/dao_order.go index 76e3a1e3a..7dadf5c58 100644 --- a/business/model/dao/dao_order.go +++ b/business/model/dao/dao_order.go @@ -1032,7 +1032,7 @@ func GetWayBillByOrderID(db *DaoDB, orderStatus, vendorID, waybillVendorID int, sql := ` SELECT b.* FROM goods_order a - JOIN waybill b ON IF(a.waybill_vendor_id = -1,a.vendor_order_id,a.vendor_waybill_id) = b.vendor_waybill_id AND b.vendor_id = a.vendor_id + JOIN waybill b ON IF(a.waybill_vendor_id = -1,a.vendor_order_id,a.vendor_waybill_id) = b.vendor_waybill_id AND b.order_vendor_id = a.vendor_id WHERE a.vendor_order_id = ? AND a.vendor_id = ? ` @@ -1051,3 +1051,52 @@ func GetWayBillByOrderID(db *DaoDB, orderStatus, vendorID, waybillVendorID int, err = GetRows(db, &wayBillList, sql, sqlParams...) return wayBillList, err } + +func GetOrdersSupplement(db *DaoDB, storIDs, vendorIDs []int, vendorOrderID string, fromTime, toTime time.Time, status, stype, offset, pageSize int) (orderSupplementFee []*model.OrderSupplementFee, totalCount int, err error) { + sql := ` + SELECT SQL_CALC_FOUND_ROWS * + FROM order_supplement_fee + WHERE 1=1 + AND deleted_at = ? + ` + sqlParams := []interface{}{ + utils.DefaultTimeValue, + } + if !utils.IsTimeZero(fromTime) { + sql += " AND supplement_time >= ?" + sqlParams = append(sqlParams, fromTime) + } + if !utils.IsTimeZero(toTime) { + sql += " AND supplement_time <= ?" + sqlParams = append(sqlParams, toTime) + } + if len(storIDs) > 0 { + sql += " AND store_id IN (" + GenQuestionMarks(len(storIDs)) + ")" + sqlParams = append(sqlParams, storIDs) + } + if len(vendorIDs) > 0 { + sql += " AND store_id IN (" + GenQuestionMarks(len(vendorIDs)) + ")" + sqlParams = append(sqlParams, vendorIDs) + } + if vendorOrderID != "" { + sql += " AND vendor_order_id = ?" + sqlParams = append(sqlParams, vendorOrderID) + } + if status >= 0 { + sql += " AND status = ?" + sqlParams = append(sqlParams, status) + } + if stype >= 0 { + sql += " AND type = ?" + sqlParams = append(sqlParams, stype) + } + sql += ` + LIMIT ? OFFSET ?` + sqlParams = append(sqlParams, pageSize, offset) + Begin(db) + defer Commit(db) + if err = GetRows(db, &orderSupplementFee, sql, sqlParams...); err == nil { + totalCount = GetLastTotalRowCount(db) + } + return orderSupplementFee, totalCount, err +}