Merge branch 'jdshop' of https://e.coding.net/rosydev/jx-callback into jdshop
This commit is contained in:
@@ -20,6 +20,33 @@ import (
|
||||
"git.rosy.net.cn/jx-callback/globals"
|
||||
)
|
||||
|
||||
var (
|
||||
// 换成京西结算账号
|
||||
jxSettleIdMap = map[int64]bool{
|
||||
// 菜市
|
||||
7030017: true,
|
||||
7974502: true,
|
||||
100639968: true,
|
||||
100715370: true,
|
||||
100822700: true,
|
||||
101093797: true,
|
||||
102715080: true,
|
||||
102114997: true,
|
||||
102641826: true,
|
||||
102651220: true,
|
||||
// 果园啊
|
||||
6572945: true,
|
||||
6772759: true,
|
||||
101968432: true,
|
||||
102101411: true,
|
||||
102176700: true,
|
||||
102369597: true,
|
||||
102416681: true,
|
||||
102924441: true,
|
||||
103376926: true,
|
||||
}
|
||||
)
|
||||
|
||||
// 订单骑手信息推送:将获取到的三方配送订单,且订单状态为配送中的订单,将配送人员的信息返回给订单方
|
||||
// 该方法为定时任务,没五分钟推送一次订单消息,订单状态发生变化时
|
||||
//配送状态code,如下提供配送状态枚举值,
|
||||
@@ -62,6 +89,12 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) {
|
||||
if orderId == "" && v.VendorID == model.VendorIDDD { // 抖音门店订单除了三方配送回调时推送,不在主动推送配送消息
|
||||
continue
|
||||
}
|
||||
|
||||
// 平台自配送
|
||||
if v.WaybillVendorID == model.YES {
|
||||
continue
|
||||
}
|
||||
|
||||
if orderId == "" { // 订单id为空是,是定时轮询操作,不做此状态
|
||||
waybillList, _ := dao.GetWaybills(dao.GetDB(), v.VendorOrderID)
|
||||
if len(waybillList) > 0 && waybillList[0].Status > model.WaybillStatusEndBegin {
|
||||
@@ -87,16 +120,11 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) {
|
||||
}
|
||||
}
|
||||
|
||||
if riderInfo == nil || wayBillStatus == model.OrderStatusNew || wayBillStatus == model.OrderStatusCanceled || (riderInfo.CourierName == "" && v.WaybillVendorID == -1 && v.DeliveryType == "store") { // 真商家自送
|
||||
if wayBillStatus == model.OrderStatusNew || wayBillStatus == model.OrderStatusCanceled || (v.WaybillVendorID == -1 && v.DeliveryType == "store") { // 真商家自送
|
||||
riderInfo.OrderId = v.VendorOrderID
|
||||
riderInfo.CourierName = "门店老板"
|
||||
riderInfo.CourierPhone = "18048531223"
|
||||
riderInfo.LogisticsProviderCode = "10017"
|
||||
riderInfo.LogisticsStatus = v.Status
|
||||
storeDetail, err := dao.GetStoreDetail(dao.GetDB(), v.JxStoreID, 0, "")
|
||||
if err != nil {
|
||||
riderInfo.CourierPhone = storeDetail.Tel1
|
||||
}
|
||||
}
|
||||
|
||||
switch riderInfo.LogisticsStatus {
|
||||
@@ -104,7 +132,7 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) {
|
||||
riderInfo.LogisticsStatus = 0
|
||||
riderInfo.OpCode = tiktok_api.TiktokLogisticsStatusCALLRIDER
|
||||
case 12: // 骑手接单
|
||||
riderInfo.LogisticsStatus = 12
|
||||
riderInfo.LogisticsStatus = 10
|
||||
riderInfo.OpCode = tiktok_api.TiktokLogisticsORDERRECEIVED
|
||||
case 15: // 到店
|
||||
riderInfo.LogisticsStatus = 15
|
||||
@@ -136,13 +164,27 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) {
|
||||
if riderInfo.Latitude == "" {
|
||||
riderInfo.Latitude = utils.Float64ToStr(utils.Int2Float64(v.ConsigneeLat) / 1000000)
|
||||
}
|
||||
|
||||
if riderInfo.CourierPhone == "" {
|
||||
storeDetail, err := dao.GetStoreDetail(dao.GetDB(), v.JxStoreID, 0, "")
|
||||
if err != nil {
|
||||
riderInfo.CourierPhone = storeDetail.Tel1
|
||||
}
|
||||
riderInfo.CourierName = "老板"
|
||||
}
|
||||
if riderInfo.CourierPhone == "" {
|
||||
riderInfo.CourierName = "石锋"
|
||||
riderInfo.CourierPhone = "18048531223"
|
||||
}
|
||||
if riderInfo.ThirdCarrierOrderId == "" {
|
||||
riderInfo.ThirdCarrierOrderId = riderInfo.OrderId + "_fake"
|
||||
}
|
||||
// 目前只推送美团骑手信息
|
||||
switch v.VendorID {
|
||||
case model.VendorIDMTWM: // 美团订单
|
||||
paramsMap := utils.Struct2Map(riderInfo, "", true)
|
||||
if handler := partner.GetPurchaseOrderHandlerFromVendorID(v.VendorID); handler != nil {
|
||||
if err := handler.GetOrderRider(v.VendorOrgCode, v.VendorStoreID, paramsMap); err != nil {
|
||||
globals.SugarLogger.Errorf("Error pushing meituan rider information :%s--%s--%v", riderInfo.OrderId, riderInfo.ThirdCarrierOrderId, err)
|
||||
if err := handler.GetOrderRider(v.VendorOrgCode, v.VendorStoreID, utils.Struct2Map(riderInfo, "", true)); err != nil {
|
||||
globals.SugarLogger.Errorf("Error pushing meituan rider information :%s--%s--%v", v.VendorOrderID, utils.Format4Output(riderInfo, false), err)
|
||||
}
|
||||
}
|
||||
case model.VendorIDELM: // 饿了么
|
||||
@@ -162,7 +204,7 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) {
|
||||
case model.VendorIDDD: // 抖店小时达
|
||||
continue
|
||||
default:
|
||||
globals.SugarLogger.Errorf("Order source error, non system order")
|
||||
globals.SugarLogger.Errorf("Order source error, non system order: %s", v.VendorOrderID)
|
||||
continue
|
||||
}
|
||||
}
|
||||
@@ -368,7 +410,7 @@ func LoadingStoreOrderSettleAmount(startTime, endTime int64, jxStoreId []int) er
|
||||
var (
|
||||
db = dao.GetDB()
|
||||
now = time.Now()
|
||||
from = time.Date(now.Year(), now.Month(), now.Day()-2, 0, 0, 0, 0, time.Local).Unix()
|
||||
from = time.Date(now.Year(), now.Month(), now.Day()-4, 0, 0, 0, 0, time.Local).Unix()
|
||||
to = time.Date(now.Year(), now.Month(), now.Day()-1, 23, 59, 59, 59, time.Local).Unix()
|
||||
)
|
||||
|
||||
@@ -376,45 +418,58 @@ func LoadingStoreOrderSettleAmount(startTime, endTime int64, jxStoreId []int) er
|
||||
from = startTime
|
||||
to = endTime
|
||||
}
|
||||
storeMapList, err := dao.GetStoresMapList(db, []int{model.VendorIDMTWM}, jxStoreId, []int{model.StoreStatusClosed, model.StoreStatusHaveRest, model.StoreStatusOpened}, model.StoreStatusAll, 0, "", "", "")
|
||||
storeMapList, err := dao.GetStoresMapList(db, []int{model.VendorIDMTWM}, jxStoreId, []int{model.StoreStatusClosed, model.StoreStatusHaveRest, model.StoreStatusOpened}, model.StoreStatusAll, model.StoreIsSyncAll, "", "", "")
|
||||
if err != nil || len(storeMapList) == model.NO {
|
||||
globals.SugarLogger.Errorf("获取美团门店列表异常: %v", err)
|
||||
return err
|
||||
}
|
||||
|
||||
taskFunc := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
storeListValue := batchItemList[0].([]*model.StoreMap)
|
||||
for _, v := range storeListValue {
|
||||
storeOrder, err := mtwm.GetAPI(v.VendorOrgCode, v.StoreID, v.VendorStoreID).GetStoreBillList(&mtwmapi.Bill{
|
||||
AppPoiCode: v.VendorStoreID,
|
||||
StartDate: from,
|
||||
EndDate: to,
|
||||
Offset: 0,
|
||||
Limit: 200,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
storeListValue := batchItemList[0].(*model.StoreMap)
|
||||
billListParam := &mtwmapi.Bill{
|
||||
AppPoiCode: storeListValue.VendorStoreID,
|
||||
StartDate: from,
|
||||
EndDate: to,
|
||||
Offset: 0,
|
||||
Limit: 200,
|
||||
}
|
||||
storeOrder, settleId, err := mtwm.GetAPI(storeListValue.VendorOrgCode, storeListValue.StoreID, storeListValue.VendorStoreID).GetStoreBillList(billListParam)
|
||||
if err != nil {
|
||||
globals.SugarLogger.Debugf("GetStoreBillList err : %v", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// 如果收款账户为京西的收款账户,则此门店不是服务商(否则是服务商,使用门店发单[需要自己的账户充值金额才行]!)
|
||||
if settleId != model.NO && jxSettleIdMap[settleId] {
|
||||
brandSql := `UPDATE store_map s SET s.create_delivery_type = ?,s.is_service = ? WHERE s.vendor_store_id = ? AND s.deleted_at = ?`
|
||||
if _, err := dao.ExecuteSQL(db, brandSql, []interface{}{model.NO, model.NO, storeListValue.VendorStoreID, utils.DefaultTimeValue}...); err != nil {
|
||||
globals.SugarLogger.Debugf("将门店修改为非服务商和系统发单: %v", err)
|
||||
}
|
||||
} else {
|
||||
brandSql := `UPDATE store_map s SET s.create_delivery_type = ?,s.is_service = ? WHERE s.vendor_store_id = ? AND s.deleted_at = ?`
|
||||
if _, err := dao.ExecuteSQL(db, brandSql, []interface{}{model.YES, model.YES, storeListValue.VendorStoreID, utils.DefaultTimeValue}...); err != nil {
|
||||
globals.SugarLogger.Debugf("将门店修改为服务商和门店发单: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
for _, so := range storeOrder {
|
||||
// 更新订单的结算信息
|
||||
if so.PlatformSettlement > 0 {
|
||||
goodsOrderSql := `UPDATE goods_order g SET g.total_shop_money = ? WHERE g.vendor_order_id = ? `
|
||||
if _, err := dao.ExecuteSQL(db, goodsOrderSql, []interface{}{so.PlatformSettlement + so.TimingFee + so.DeliveryFee, so.OrderId}...); err != nil {
|
||||
globals.SugarLogger.Debugf("更新订单结算信息错误: %v", err)
|
||||
}
|
||||
for _, so := range storeOrder {
|
||||
// 更新订单的结算信息
|
||||
if so.PlatformSettlement > 0 {
|
||||
goodsOrderSql := `UPDATE goods_order g SET g.total_shop_money = ? WHERE g.vendor_order_id = ? `
|
||||
if _, err := dao.ExecuteSQL(db, goodsOrderSql, []interface{}{so.PlatformSettlement + so.TimingFee + so.DeliveryFee, so.OrderId}...); err != nil {
|
||||
globals.SugarLogger.Debugf("更新订单结算信息错误: %v", err)
|
||||
}
|
||||
// 更新订单的配送信息
|
||||
if so.TimingFee != 0 || so.DeliveryFee != 0 {
|
||||
wayBillSql := `UPDATE waybill w SET w.desired_fee = ?,w.punctual_fee = ? WHERE g.vendor_order_id = ? AND g.vendor_waybill_id = ? `
|
||||
if _, err := dao.ExecuteSQL(db, wayBillSql, []interface{}{so.DeliveryFee * -1, so.TimingFee * -1, so.OrderId, so.OrderId}...); err != nil {
|
||||
globals.SugarLogger.Debugf("更新订单物流结算信息错误: %v", err)
|
||||
}
|
||||
}
|
||||
// 更新订单的配送信息
|
||||
if so.TimingFee != 0 || so.DeliveryFee != 0 {
|
||||
wayBillSql := `UPDATE waybill w SET w.desired_fee = ?,w.punctual_fee = ? WHERE w.vendor_order_id = ? AND w.vendor_waybill_id = ? `
|
||||
if _, err := dao.ExecuteSQL(db, wayBillSql, []interface{}{so.DeliveryFee, so.TimingFee, so.OrderId, so.OrderId}...); err != nil {
|
||||
globals.SugarLogger.Debugf("更新订单物流结算信息错误: %v", err)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return retVal, err
|
||||
}
|
||||
task := tasksch.NewParallelTask("更新美团订单配送费/保险费/结算信息", tasksch.NewParallelConfig().SetParallelCount(4), jxcontext.AdminCtx, taskFunc, storeMapList)
|
||||
|
||||
Reference in New Issue
Block a user