Merge branch 'mark' of e.coding.net:rosydev/jx-callback into mark
This commit is contained in:
@@ -254,12 +254,12 @@ func GetComplaintReasons() (complaintReasonList []*dadaapi.ComplaintReason) {
|
|||||||
|
|
||||||
func ComplaintRider(ctx *jxcontext.Context, vendorOrderID string, vendorID, waybillVendorID, complaintID int) (err error) {
|
func ComplaintRider(ctx *jxcontext.Context, vendorOrderID string, vendorID, waybillVendorID, complaintID int) (err error) {
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
p := partner.GetDeliveryPlatformFromVendorID(vendorID).Handler
|
p := partner.GetDeliveryPlatformFromVendorID(waybillVendorID).Handler
|
||||||
wayBillList, err := dao.GetWayBillByOrderID(db, model.OrderStatusFinished, vendorID, waybillVendorID, vendorOrderID)
|
wayBillList, err := dao.GetWayBillByOrderID(db, model.OrderStatusFinished, vendorID, waybillVendorID, vendorOrderID)
|
||||||
if err == nil && len(wayBillList) > 0 {
|
if err == nil && len(wayBillList) > 0 {
|
||||||
err = p.ComplaintRider(wayBillList[0], complaintID, complaintReasonsMap[complaintID])
|
err = p.ComplaintRider(wayBillList[0], complaintID, complaintReasonsMap[complaintID])
|
||||||
} else {
|
} else {
|
||||||
return fmt.Errorf("未查询到到相关订单,订单状态要求必须是完成!订单号:[%v] ,厂商:[%v]", vendorOrderID, waybillVendorID)
|
return fmt.Errorf("未查询到到相关订单,订单状态要求必须是完成!订单号:[%v] ,厂商:[%v],运送厂商:[%v]", vendorOrderID, vendorID, waybillVendorID)
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -101,6 +101,7 @@ func InitServiceInfo(version string, buildTime time.Time, gitCommit string) {
|
|||||||
"payStatusName": model.PayStatusName,
|
"payStatusName": model.PayStatusName,
|
||||||
"refundStatusName": model.RefundStatusName,
|
"refundStatusName": model.RefundStatusName,
|
||||||
"autoReplyTypeName": model.AutoReplyTypeName,
|
"autoReplyTypeName": model.AutoReplyTypeName,
|
||||||
|
"complaintReasons": model.ComplaintReasons,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2766,57 +2766,73 @@ func FocusStoreSkusByExcelBin(ctx *jxcontext.Context, reader io.Reader, isAsync,
|
|||||||
SkuRow: 1,
|
SkuRow: 1,
|
||||||
}
|
}
|
||||||
// xlsx, err := excelize.OpenFile("111.xlsx")
|
// xlsx, err := excelize.OpenFile("111.xlsx")
|
||||||
xlsx, err := excelize.OpenReader(reader)
|
taskSeqFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
||||||
if err != nil {
|
switch step {
|
||||||
return "", err
|
case 0:
|
||||||
}
|
xlsx, err := excelize.OpenReader(reader)
|
||||||
rows, _ := xlsx.GetRows(xlsx.GetSheetName(1))
|
if err != nil {
|
||||||
for rowNum, row := range rows {
|
return result, err
|
||||||
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)
|
|
||||||
}
|
}
|
||||||
price = int(utils.Float64TwoInt64(utils.Int2Float64(model.SpecialSpecQuality) / specQuality * utils.Int2Float64(skuMap[v.ID])))
|
rows, _ := xlsx.GetRows(xlsx.GetSheetName(1))
|
||||||
} else {
|
for rowNum, row := range rows {
|
||||||
price = skuMap[v.ID]
|
if rowNum < sheetParam.SkuRow {
|
||||||
}
|
continue
|
||||||
if skuNameMap[v.NameID] < price {
|
}
|
||||||
skuNameMap[v.NameID] = price
|
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 {
|
taskSeq := tasksch.NewSeqTask2("根据Excel中skuID批量关注商品", ctx, isContinueWhenError, taskSeqFunc, 3)
|
||||||
skuBindInfo := &StoreSkuBindInfo{
|
tasksch.HandleTask(taskSeq, nil, true).Run()
|
||||||
NameID: k,
|
if !isAsync {
|
||||||
UnitPrice: v,
|
_, err = taskSeq.GetResult(0)
|
||||||
IsFocus: 1,
|
hint = "1"
|
||||||
IsSale: 1,
|
} else {
|
||||||
}
|
hint = taskSeq.GetID()
|
||||||
skuBindInfos = append(skuBindInfos, skuBindInfo)
|
|
||||||
}
|
}
|
||||||
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
|
return hint, err
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2845,35 +2861,51 @@ func FocusStoreSkusBySku(ctx *jxcontext.Context, skuIDs []int, isAsync, isContin
|
|||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
skuList, err := dao.GetSkus(db, skuIDs, nil, nil, nil)
|
skuList, err := dao.GetSkus(db, skuIDs, nil, nil, nil)
|
||||||
storeList, err := dao.GetStoreList(db, nil, nil, "")
|
storeList, err := dao.GetStoreList(db, nil, nil, "")
|
||||||
for _, v := range storeList {
|
taskSeqFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
||||||
storeIDs = append(storeIDs, v.ID)
|
switch step {
|
||||||
}
|
case 0:
|
||||||
for _, v := range skuList {
|
for _, v := range storeList {
|
||||||
skuNameMap[v.NameID] = append(skuNameMap[v.NameID], &StoreSkuBindSkuInfo{
|
storeIDs = append(storeIDs, v.ID)
|
||||||
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}
|
|
||||||
}
|
}
|
||||||
return retVal, err
|
for _, v := range skuList {
|
||||||
}, storeList)
|
skuNameMap[v.NameID] = append(skuNameMap[v.NameID], &StoreSkuBindSkuInfo{
|
||||||
tasksch.HandleTask(task, nil, true).Run()
|
SkuID: v.ID,
|
||||||
result, err := task.GetResult(0)
|
IsSale: 1,
|
||||||
for _, v := range result {
|
})
|
||||||
skuBindInfos = append(skuBindInfos, v.(*StoreSkuBindInfo))
|
}
|
||||||
|
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
|
return hint, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -86,6 +86,18 @@ var (
|
|||||||
OrderTypeAfsOrder: "售后单",
|
OrderTypeAfsOrder: "售后单",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ComplaintReasons = map[int]string{
|
||||||
|
ComplaintReasons1: "骑手态度恶劣",
|
||||||
|
ComplaintReasons2: "骑手接单后未取货",
|
||||||
|
ComplaintReasons3: "骑手取货太慢",
|
||||||
|
ComplaintReasons4: "骑手送货太慢",
|
||||||
|
ComplaintReasons5: "货品未送达",
|
||||||
|
ComplaintReasons6: "货品有损坏",
|
||||||
|
ComplaintReasons7: "骑手违规收取顾客其他费用",
|
||||||
|
ComplaintReasons69: "骑手恶意取消订单",
|
||||||
|
ComplaintReasons71: "骑手提前点击取货/送达",
|
||||||
|
}
|
||||||
|
|
||||||
MultiStoresVendorMap = map[int]int{
|
MultiStoresVendorMap = map[int]int{
|
||||||
VendorIDJD: 1,
|
VendorIDJD: 1,
|
||||||
VendorIDMTWM: 0,
|
VendorIDMTWM: 0,
|
||||||
@@ -204,6 +216,19 @@ const (
|
|||||||
LockStatusLocked = 1
|
LockStatusLocked = 1
|
||||||
)
|
)
|
||||||
|
|
||||||
|
//投诉原因
|
||||||
|
const (
|
||||||
|
ComplaintReasons1 = 1 //"骑手态度恶劣",
|
||||||
|
ComplaintReasons2 = 2 //"骑手接单后未取货"
|
||||||
|
ComplaintReasons3 = 3 //"骑手取货太慢",
|
||||||
|
ComplaintReasons4 = 4 //"骑手送货太慢",
|
||||||
|
ComplaintReasons5 = 5 //"货品未送达",
|
||||||
|
ComplaintReasons6 = 6 //"货品有损坏",
|
||||||
|
ComplaintReasons7 = 7 //"骑手违规收取顾客其他费用",
|
||||||
|
ComplaintReasons69 = 69 //"骑手恶意取消订单",
|
||||||
|
ComplaintReasons71 = 71 //"骑手提前点击取货/送达",
|
||||||
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
WaybillStatusRefuseFailedGetGoods = -70
|
WaybillStatusRefuseFailedGetGoods = -70
|
||||||
WaybillStatusUnknown = 0
|
WaybillStatusUnknown = 0
|
||||||
|
|||||||
@@ -1032,7 +1032,7 @@ func GetWayBillByOrderID(db *DaoDB, orderStatus, vendorID, waybillVendorID int,
|
|||||||
sql := `
|
sql := `
|
||||||
SELECT b.*
|
SELECT b.*
|
||||||
FROM goods_order a
|
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 = ?
|
WHERE a.vendor_order_id = ?
|
||||||
AND a.vendor_id = ?
|
AND a.vendor_id = ?
|
||||||
`
|
`
|
||||||
@@ -1051,3 +1051,52 @@ func GetWayBillByOrderID(db *DaoDB, orderStatus, vendorID, waybillVendorID int,
|
|||||||
err = GetRows(db, &wayBillList, sql, sqlParams...)
|
err = GetRows(db, &wayBillList, sql, sqlParams...)
|
||||||
return wayBillList, err
|
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
|
||||||
|
}
|
||||||
|
|||||||
@@ -344,6 +344,11 @@ type OrderPayRefund struct {
|
|||||||
OriginalData string `orm:"type(text)" json:"-"`
|
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 {
|
func IsWaybillPlatformOwn(bill *Waybill) bool {
|
||||||
|
|||||||
@@ -388,7 +388,9 @@ func limitOrderWeight(weight int) int {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *DeliveryHandler) ComplaintRider(bill *model.Waybill, resonID int, resonContent string) (err error) {
|
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
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -253,7 +253,9 @@ func limitOrderWeight(weight int) int {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *DeliveryHandler) ComplaintRider(bill *model.Waybill, resonID int, resonContent string) (err error) {
|
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
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user