- fixed a bug in defsch.init, replace LoadOrder with GetOrder.
- dynamic table name for legacy order related table.
This commit is contained in:
@@ -1,7 +1,6 @@
|
|||||||
package controller
|
package controller
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
@@ -49,38 +48,6 @@ func addOrderOrWaybillStatus(status *model.OrderStatus, db orm.Ormer) (isDuplica
|
|||||||
return isDuplicated, err
|
return isDuplicated, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetDataCityCodeFromOrder(order *model.GoodsOrder) (retVal string, err error) {
|
|
||||||
var sql string
|
|
||||||
if order.VendorID == model.VendorIDJD {
|
|
||||||
sql = `
|
|
||||||
SELECT t2.tel_code
|
|
||||||
FROM jxstoremap t0
|
|
||||||
JOIN jxstore t1 ON t0.jxstoreid = t1.storeid
|
|
||||||
JOIN city t2 ON t1.area = t2.citycode
|
|
||||||
WHERE t0.jdstoreid = ?
|
|
||||||
`
|
|
||||||
} else if order.VendorID == model.VendorIDELM {
|
|
||||||
sql = `
|
|
||||||
SELECT t2.tel_code
|
|
||||||
FROM jx_to_elm_store_map t0
|
|
||||||
JOIN jxstore t1 ON t0.jx_store_id = t1.storeid
|
|
||||||
JOIN city t2 ON t1.area = t2.citycode
|
|
||||||
WHERE t0.elm_store_id = ?
|
|
||||||
`
|
|
||||||
} else {
|
|
||||||
panic(fmt.Sprintf("wrong vendorid:%d", order.VendorID))
|
|
||||||
}
|
|
||||||
db := orm.NewOrm()
|
|
||||||
var lists []orm.ParamsList
|
|
||||||
num, err := db.Raw(sql, utils.Str2Int64(order.VendorStoreID)).ValuesList(&lists)
|
|
||||||
if err != nil && num == 1 {
|
|
||||||
retVal = lists[0][0].(string)
|
|
||||||
} else {
|
|
||||||
globals.SugarLogger.Errorf("GetDataCityCodeFromOrder can not find store info for vendorID:%d, store:%s", order.VendorID, order.VendorStoreID)
|
|
||||||
}
|
|
||||||
return retVal, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// todo 可以考虑改成完全按StatusTime来发送事件
|
// todo 可以考虑改成完全按StatusTime来发送事件
|
||||||
func LoadPendingOrders() {
|
func LoadPendingOrders() {
|
||||||
orders := OrderManager.LoadPendingOrders()
|
orders := OrderManager.LoadPendingOrders()
|
||||||
|
|||||||
@@ -1,13 +1,22 @@
|
|||||||
package dada
|
package dada
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/platformapi/dadaapi"
|
"git.rosy.net.cn/baseapi/platformapi/dadaapi"
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/controller"
|
"git.rosy.net.cn/jx-callback/business/controller"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
"git.rosy.net.cn/jx-callback/business/scheduler"
|
"git.rosy.net.cn/jx-callback/business/scheduler"
|
||||||
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"git.rosy.net.cn/jx-callback/globals/api"
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
|
"github.com/astaxie/beego/orm"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
ErrCanNotFindDadaCityCode = errors.New("不能找到美团配送站点配置")
|
||||||
)
|
)
|
||||||
|
|
||||||
type WaybillController struct {
|
type WaybillController struct {
|
||||||
@@ -72,7 +81,7 @@ func (c *WaybillController) CreateWaybill(order *model.GoodsOrder) (err error) {
|
|||||||
ReceiverAddress: order.ConsigneeAddress,
|
ReceiverAddress: order.ConsigneeAddress,
|
||||||
ReceiverPhone: order.ConsigneeMobile,
|
ReceiverPhone: order.ConsigneeMobile,
|
||||||
}
|
}
|
||||||
if billParams.CityCode, err = controller.GetDataCityCodeFromOrder(order); err == nil {
|
if billParams.CityCode, err = c.getDataCityCodeFromOrder(order); err == nil {
|
||||||
billParams.ReceiverLng, billParams.ReceiverLat, _ = jxutils.IntCoordinate2MarsStandard(order.ConsigneeLng, order.ConsigneeLat, order.CoordinateType)
|
billParams.ReceiverLng, billParams.ReceiverLat, _ = jxutils.IntCoordinate2MarsStandard(order.ConsigneeLng, order.ConsigneeLat, order.CoordinateType)
|
||||||
addParams := map[string]interface{}{
|
addParams := map[string]interface{}{
|
||||||
"info": order.BuyerComment,
|
"info": order.BuyerComment,
|
||||||
@@ -94,6 +103,41 @@ func (c *WaybillController) CancelWaybill(bill *model.Waybill) (err error) {
|
|||||||
reasonID = dadaapi.ReasonIDNobodyPickup
|
reasonID = dadaapi.ReasonIDNobodyPickup
|
||||||
reasonMsg = "ReasonIDNobodyPickup"
|
reasonMsg = "ReasonIDNobodyPickup"
|
||||||
}
|
}
|
||||||
_, err = api.DadaAPI.CancelOrder(bill.VendorWaybillID, reasonID, reasonMsg)
|
_, err = api.DadaAPI.CancelOrder(bill.VendorOrderID, reasonID, reasonMsg)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *WaybillController) getDataCityCodeFromOrder(order *model.GoodsOrder) (retVal string, err error) {
|
||||||
|
var sql string
|
||||||
|
if order.VendorID == model.VendorIDJD {
|
||||||
|
sql = `
|
||||||
|
SELECT t2.tel_code
|
||||||
|
FROM jxstoremap t0
|
||||||
|
JOIN jxstore t1 ON t0.jxstoreid = t1.storeid
|
||||||
|
JOIN city t2 ON t1.area = t2.citycode
|
||||||
|
WHERE t0.jdstoreid = ?
|
||||||
|
`
|
||||||
|
} else if order.VendorID == model.VendorIDELM {
|
||||||
|
sql = `
|
||||||
|
SELECT t2.tel_code
|
||||||
|
FROM jx_to_elm_store_map t0
|
||||||
|
JOIN jxstore t1 ON t0.jx_store_id = t1.storeid
|
||||||
|
JOIN city t2 ON t1.area = t2.citycode
|
||||||
|
WHERE t0.elm_store_id = ?
|
||||||
|
`
|
||||||
|
} else {
|
||||||
|
panic(fmt.Sprintf("wrong vendorid:%d", order.VendorID))
|
||||||
|
}
|
||||||
|
db := orm.NewOrm()
|
||||||
|
var lists []orm.ParamsList
|
||||||
|
num, err := db.Raw(sql, utils.Str2Int64(order.VendorStoreID)).ValuesList(&lists)
|
||||||
|
if err == nil && num == 1 {
|
||||||
|
retVal = lists[0][0].(string)
|
||||||
|
} else {
|
||||||
|
globals.SugarLogger.Errorf("GetDataCityCodeFromOrder can not find store info for vendorID:%d, store:%s, num:%d, error:%v", order.VendorID, order.VendorStoreID, num, err)
|
||||||
|
if err == nil {
|
||||||
|
err = ErrCanNotFindDadaCityCode
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return retVal, err
|
||||||
|
}
|
||||||
|
|||||||
45
business/controller/dada/waybill_test.go
Normal file
45
business/controller/dada/waybill_test.go
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
package dada
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"git.rosy.net.cn/jx-callback/business/controller"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
|
"git.rosy.net.cn/jx-callback/globals/db"
|
||||||
|
"github.com/astaxie/beego"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
beego.InitBeegoBeforeTest("/Users/xujianhua/go/src/git.rosy.net.cn/jx-callback/conf/app.conf")
|
||||||
|
beego.BConfig.RunMode = "dev" // InitBeegoBeforeTest会将runmode设置为test
|
||||||
|
|
||||||
|
globals.Init()
|
||||||
|
db.Init()
|
||||||
|
api.Init()
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCreateWaybill(t *testing.T) {
|
||||||
|
orderID := "817540316000041"
|
||||||
|
if order, err := controller.OrderManager.LoadOrder(orderID, model.VendorIDJD); err == nil {
|
||||||
|
// globals.SugarLogger.Debug(order)
|
||||||
|
c := new(WaybillController)
|
||||||
|
if err = c.CreateWaybill(order); err == nil {
|
||||||
|
time.Sleep(1 * time.Second)
|
||||||
|
bill := &model.Waybill{
|
||||||
|
VendorOrderID: orderID,
|
||||||
|
WaybillVendorID: model.VendorIDDada,
|
||||||
|
}
|
||||||
|
err = c.CancelWaybill(bill)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err.Error())
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
t.Fatal(err.Error())
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
t.Fatal(err.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
package mtps
|
package mtps
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"math"
|
"math"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/platformapi/mtpsapi"
|
"git.rosy.net.cn/baseapi/platformapi/mtpsapi"
|
||||||
@@ -12,9 +13,14 @@ import (
|
|||||||
"git.rosy.net.cn/jx-callback/business/scheduler"
|
"git.rosy.net.cn/jx-callback/business/scheduler"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"git.rosy.net.cn/jx-callback/globals/api"
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
|
"github.com/astaxie/beego"
|
||||||
"github.com/astaxie/beego/orm"
|
"github.com/astaxie/beego/orm"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
ErrCanNotFindMTPSStore = errors.New("不能找到美团配送站点配置")
|
||||||
|
)
|
||||||
|
|
||||||
type WaybillController struct {
|
type WaybillController struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -158,19 +164,19 @@ func (c *WaybillController) CreateWaybill(order *model.GoodsOrder) (err error) {
|
|||||||
}
|
}
|
||||||
if billParams.DeliveryID, err = c.getDeliveryID(order, db); err == nil {
|
if billParams.DeliveryID, err = c.getDeliveryID(order, db); err == nil {
|
||||||
if billParams.ShopID, err = c.getMTPSShopID(order, db); err == nil {
|
if billParams.ShopID, err = c.getMTPSShopID(order, db); err == nil {
|
||||||
|
globals.SugarLogger.Debug(billParams.ShopID)
|
||||||
goods := &mtpsapi.GoodsDetail{
|
goods := &mtpsapi.GoodsDetail{
|
||||||
Goods: []*mtpsapi.GoodsItem{},
|
Goods: []*mtpsapi.GoodsItem{},
|
||||||
}
|
}
|
||||||
for _, sku := range order.Skus {
|
for _, sku := range order.Skus {
|
||||||
goodItem := &mtpsapi.GoodsItem{
|
goodItem := &mtpsapi.GoodsItem{
|
||||||
GoodCount: sku.Count,
|
GoodCount: sku.Count,
|
||||||
GoodName: sku.SkuName,
|
|
||||||
GoodPrice: jxutils.IntPrice2Standard(sku.SalePrice),
|
GoodPrice: jxutils.IntPrice2Standard(sku.SalePrice),
|
||||||
GoodUnit: "", //这个应该不是必须的,商品名里已经有UNIT的字样了
|
|
||||||
}
|
}
|
||||||
|
goodItem.GoodName, goodItem.GoodUnit = jxutils.SplitSkuName(sku.SkuName)
|
||||||
goods.Goods = append(goods.Goods, goodItem)
|
goods.Goods = append(goods.Goods, goodItem)
|
||||||
}
|
}
|
||||||
addParams := utils.Params2Map("note", order.BuyerComment, "good_detail", string(utils.MustMarshal(goods)))
|
addParams := utils.Params2Map("note", order.BuyerComment, "goods_detail", string(utils.MustMarshal(goods)))
|
||||||
_, err = api.MtpsAPI.CreateOrderByShop(billParams, addParams)
|
_, err = api.MtpsAPI.CreateOrderByShop(billParams, addParams)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -209,10 +215,16 @@ func (c *WaybillController) getMTPSShopID(order *model.GoodsOrder, db orm.Ormer)
|
|||||||
var lists []orm.ParamsList
|
var lists []orm.ParamsList
|
||||||
JxStoreID := jxutils.GetJxStoreIDFromOrder(order)
|
JxStoreID := jxutils.GetJxStoreIDFromOrder(order)
|
||||||
num, err := db.Raw(sql, JxStoreID).ValuesList(&lists)
|
num, err := db.Raw(sql, JxStoreID).ValuesList(&lists)
|
||||||
if err != nil && num == 1 {
|
if err == nil && num == 1 {
|
||||||
retVal = lists[0][0].(string)
|
retVal = lists[0][0].(string)
|
||||||
|
if beego.BConfig.RunMode == "dev" {
|
||||||
|
retVal = "test_0001"
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
globals.SugarLogger.Errorf("getMTPSShopID can not find mtps store info for orderID:%s, store:%d", order.VendorOrderID, JxStoreID)
|
globals.SugarLogger.Errorf("getMTPSShopID can not find mtps store info for orderID:%s, store:%d, num:%d, error:%v", order.VendorOrderID, JxStoreID, num, err)
|
||||||
|
if err == nil {
|
||||||
|
err = ErrCanNotFindMTPSStore
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return retVal, err
|
return retVal, err
|
||||||
}
|
}
|
||||||
|
|||||||
42
business/controller/mtps/waybill_test.go
Normal file
42
business/controller/mtps/waybill_test.go
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
package mtps
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"git.rosy.net.cn/jx-callback/business/controller"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
|
"git.rosy.net.cn/jx-callback/globals/db"
|
||||||
|
"github.com/astaxie/beego"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
beego.InitBeegoBeforeTest("/Users/xujianhua/go/src/git.rosy.net.cn/jx-callback/conf/app.conf")
|
||||||
|
beego.BConfig.RunMode = "dev" // InitBeegoBeforeTest会将runmode设置为test
|
||||||
|
|
||||||
|
globals.Init()
|
||||||
|
db.Init()
|
||||||
|
api.Init()
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCreateWaybill(t *testing.T) {
|
||||||
|
orerID := "817109342000022"
|
||||||
|
order, _ := controller.OrderManager.LoadOrder(orerID, model.VendorIDJD)
|
||||||
|
// globals.SugarLogger.Debug(order)
|
||||||
|
c := new(WaybillController)
|
||||||
|
if err := c.CreateWaybill(order); err != nil {
|
||||||
|
t.Fatal(err.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCancelWaybill(t *testing.T) {
|
||||||
|
bill := &model.Waybill{
|
||||||
|
VendorWaybillID: "1532332342088966",
|
||||||
|
VendorWaybillID2: "55",
|
||||||
|
}
|
||||||
|
c := new(WaybillController)
|
||||||
|
if err := c.CancelWaybill(bill); err != nil {
|
||||||
|
t.Fatal(err.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -239,7 +239,12 @@ func (c *OrderController) LoadOrder(vendorOrderID string, vendorID int) (order *
|
|||||||
VendorOrderID: vendorOrderID,
|
VendorOrderID: vendorOrderID,
|
||||||
VendorID: vendorID,
|
VendorID: vendorID,
|
||||||
}
|
}
|
||||||
err = db.Read(order, "VendorOrderID", "VendorID")
|
if err = db.Read(order, "VendorOrderID", "VendorID"); err == nil {
|
||||||
|
_, err = db.QueryTable("order_sku").Filter("vendor_order_id", vendorOrderID).Filter("vendor_id", vendorID).All(&order.Skus)
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
globals.SugarLogger.Warnf("LoadOrder orderID:%s failed with error:%v", vendorOrderID, err)
|
||||||
|
}
|
||||||
return order, err
|
return order, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -132,30 +132,32 @@ func (c *OrderController) legacyWriteJxOrder(order *model.GoodsOrder, db orm.Orm
|
|||||||
|
|
||||||
db.Begin()
|
db.Begin()
|
||||||
if isDelFirst {
|
if isDelFirst {
|
||||||
db.Raw("DELETE FROM jxorder2 WHERE order_id = ?", utils.Str2Int64(order.VendorOrderID))
|
db.Raw("DELETE FROM "+globals.JxorderTableName+" WHERE order_id = ?", utils.Str2Int64(order.VendorOrderID))
|
||||||
db.Raw("DELETE FROM jxordersku2 WHERE order_id = ?", utils.Str2Int64(order.VendorOrderID))
|
db.Raw("DELETE FROM "+globals.JxorderskuTableName+" WHERE order_id = ?", utils.Str2Int64(order.VendorOrderID))
|
||||||
}
|
}
|
||||||
|
|
||||||
jxorder := &legacyorder.Jxorder2{
|
jxorder := &legacyorder.Jxorder2{
|
||||||
VenderId: int8(order.VendorID),
|
VenderId: int8(order.VendorID),
|
||||||
OrderId: utils.Str2Int64(order.VendorOrderID),
|
OrderId: utils.Str2Int64(order.VendorOrderID),
|
||||||
JxStoreId: utils.Int2Str(jxutils.GetJxStoreIDFromOrder(order)),
|
JxStoreId: utils.Int2Str(jxutils.GetJxStoreIDFromOrder(order)),
|
||||||
JxStoreName: order.StoreName,
|
JxStoreName: order.StoreName,
|
||||||
OrderNum: order.OrderSeq,
|
OrderNum: order.OrderSeq,
|
||||||
OrderStatus: legacyMapOrderStatus(order.Status),
|
OrderStatus: legacyMapOrderStatus(order.Status),
|
||||||
OrderStatusTime: utils.Time2Str(order.StatusTime),
|
OrderStatusTime: utils.Time2Str(order.StatusTime),
|
||||||
BusinessTag: businessTags,
|
BusinessTag: businessTags,
|
||||||
SkuCount: order.SkuCount,
|
SkuCount: order.SkuCount,
|
||||||
OrderBuyerRemark: order.BuyerComment,
|
OrderBuyerRemark: order.BuyerComment,
|
||||||
BuyerFullName: order.ConsigneeName,
|
BuyerFullName: order.ConsigneeName,
|
||||||
BuyerFullAddress: order.ConsigneeAddress,
|
BuyerFullAddress: order.ConsigneeAddress,
|
||||||
BuyerMobile: order.ConsigneeMobile,
|
BuyerMobile: order.ConsigneeMobile,
|
||||||
BuyerCoordType: legacyMapCoordinateType(order.CoordinateType),
|
BuyerCoordType: legacyMapCoordinateType(order.CoordinateType),
|
||||||
BuyerLng: jxutils.IntCoordinate2Standard(order.ConsigneeLng),
|
BuyerLng: jxutils.IntCoordinate2Standard(order.ConsigneeLng),
|
||||||
BuyerLat: jxutils.IntCoordinate2Standard(order.ConsigneeLat),
|
BuyerLat: jxutils.IntCoordinate2Standard(order.ConsigneeLat),
|
||||||
CityName: "all",
|
CityName: "all",
|
||||||
OrderStartTime: utils.Time2Str(order.StatusTime),
|
OrderStartTime: utils.Time2Str(order.StatusTime),
|
||||||
JdStoreId: order.VendorStoreID,
|
JdStoreId: order.VendorStoreID,
|
||||||
|
OrderTotalMoney: int(order.SalePrice),
|
||||||
|
OrderDiscountMoney: int(order.SalePrice - order.ActualPayPrice),
|
||||||
// DeliveryPackageWeight: float64(order.Weight) / 1000,
|
// DeliveryPackageWeight: float64(order.Weight) / 1000,
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -169,7 +171,7 @@ func (c *OrderController) legacyWriteJxOrder(order *model.GoodsOrder, db orm.Orm
|
|||||||
globals.SugarLogger.Infof("insert jxorder:%v error:%v", jxorder, err)
|
globals.SugarLogger.Infof("insert jxorder:%v error:%v", jxorder, err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
sql := "INSERT INTO jxordersku2(vender_id, order_id, jx_sku_id, sku_name, jx_store_id, sku_price, sku_count, is_gift, promotion_type, sku_plat_discount, sku_vender_discount, sku_img) VALUES"
|
sql := "INSERT INTO " + globals.JxorderskuTableName + "(vender_id, order_id, jx_sku_id, sku_name, jx_store_id, sku_price, sku_count, is_gift, promotion_type, sku_plat_discount, sku_vender_discount, sku_img) VALUES"
|
||||||
params := []interface{}{}
|
params := []interface{}{}
|
||||||
for _, sku := range order.Skus {
|
for _, sku := range order.Skus {
|
||||||
sql += "(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?),"
|
sql += "(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?),"
|
||||||
@@ -184,7 +186,7 @@ func (c *OrderController) legacyWriteJxOrder(order *model.GoodsOrder, db orm.Orm
|
|||||||
vendorOrderID := utils.Str2Int64(order.VendorOrderID)
|
vendorOrderID := utils.Str2Int64(order.VendorOrderID)
|
||||||
utils.CallFuncLogError(func() error {
|
utils.CallFuncLogError(func() error {
|
||||||
_, err = db.Raw(`
|
_, err = db.Raw(`
|
||||||
UPDATE jxorder2 t1
|
UPDATE `+globals.JxorderTableName+` t1
|
||||||
JOIN jxstore t2 ON t2.storeid = t1.jx_store_id
|
JOIN jxstore t2 ON t2.storeid = t1.jx_store_id
|
||||||
SET t1.store_lng = t2.lng,
|
SET t1.store_lng = t2.lng,
|
||||||
t1.store_lat = t2.lat
|
t1.store_lat = t2.lat
|
||||||
@@ -195,7 +197,7 @@ func (c *OrderController) legacyWriteJxOrder(order *model.GoodsOrder, db orm.Orm
|
|||||||
|
|
||||||
utils.CallFuncLogError(func() error {
|
utils.CallFuncLogError(func() error {
|
||||||
_, err = db.Raw(`
|
_, err = db.Raw(`
|
||||||
UPDATE jxordersku2 t1
|
UPDATE `+globals.JxorderskuTableName+` t1
|
||||||
JOIN jx_sku t2 ON t2.id = t1.jx_sku_id
|
JOIN jx_sku t2 ON t2.id = t1.jx_sku_id
|
||||||
JOIN jx_sku_name t3 ON t3.id = t2.nameid
|
JOIN jx_sku_name t3 ON t3.id = t2.nameid
|
||||||
SET t1.sku_img = t3.img
|
SET t1.sku_img = t3.img
|
||||||
@@ -227,6 +229,15 @@ func (c *OrderController) legacyJxOrderStatusChanged(status *model.OrderStatus,
|
|||||||
updateFields = append(updateFields, "DeliveryFinishTime")
|
updateFields = append(updateFields, "DeliveryFinishTime")
|
||||||
}
|
}
|
||||||
_, err = db.Update(jxorder, updateFields...)
|
_, err = db.Update(jxorder, updateFields...)
|
||||||
|
|
||||||
|
db.Raw(`
|
||||||
|
UPDATE `+globals.JxorderTableName+` t1
|
||||||
|
JOIN waybill t2 ON t2.vendor_order_id = t1.order_id AND t2.status = 105
|
||||||
|
SET t1.delivery_price = IF(t2.waybill_vendor_id = 102, t2.desired_fee/100, t1.delivery_price),
|
||||||
|
t1.delivery_price1 = IF(t2.waybill_vendor_id = 101, t2.desired_fee/100, t1.delivery_price1)
|
||||||
|
WHERE t1.order_id = ?
|
||||||
|
`, jxorder.OrderId).Exec()
|
||||||
|
|
||||||
return err
|
return err
|
||||||
}, "legacyJxOrderStatusChanged")
|
}, "legacyJxOrderStatusChanged")
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -160,3 +160,11 @@ func CallMsgHandlerAsync(handler func(), primaryID string) {
|
|||||||
handler()
|
handler()
|
||||||
}, primaryID)
|
}, primaryID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func SplitSkuName(fullName string) (name string, unit string) {
|
||||||
|
index := strings.Index(fullName, "/")
|
||||||
|
if index >= 0 {
|
||||||
|
return fullName[:index], fullName[index+1:]
|
||||||
|
}
|
||||||
|
return fullName, "份"
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package legacyorder
|
package legacyorder
|
||||||
|
|
||||||
|
import "git.rosy.net.cn/jx-callback/globals"
|
||||||
|
|
||||||
type Elemeorder2 struct {
|
type Elemeorder2 struct {
|
||||||
Id int `orm:"column(id);auto"`
|
Id int `orm:"column(id);auto"`
|
||||||
Orderid string `orm:"column(orderid);size(50);null;unique"`
|
Orderid string `orm:"column(orderid);size(50);null;unique"`
|
||||||
@@ -11,5 +13,5 @@ type Elemeorder2 struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (t *Elemeorder2) TableName() string {
|
func (t *Elemeorder2) TableName() string {
|
||||||
return "elemeorder2"
|
return globals.ElemeorderTableName
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
package legacyorder
|
package legacyorder
|
||||||
|
|
||||||
|
import (
|
||||||
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
|
)
|
||||||
|
|
||||||
type Jdorder2 struct {
|
type Jdorder2 struct {
|
||||||
Id int `orm:"column(id);auto"`
|
Id int `orm:"column(id);auto"`
|
||||||
Code string `orm:"column(code);size(2);null"`
|
Code string `orm:"column(code);size(2);null"`
|
||||||
@@ -13,5 +17,5 @@ type Jdorder2 struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (t *Jdorder2) TableName() string {
|
func (t *Jdorder2) TableName() string {
|
||||||
return "jdorder2"
|
return globals.JdorderTableName
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package legacyorder
|
package legacyorder
|
||||||
|
|
||||||
|
import "git.rosy.net.cn/jx-callback/globals"
|
||||||
|
|
||||||
type Jxorder2 struct {
|
type Jxorder2 struct {
|
||||||
Id int `orm:"column(id);auto"`
|
Id int `orm:"column(id);auto"`
|
||||||
VenderId int8 `orm:"column(vender_id);null"`
|
VenderId int8 `orm:"column(vender_id);null"`
|
||||||
@@ -55,5 +57,5 @@ type Jxorder2 struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (t *Jxorder2) TableName() string {
|
func (t *Jxorder2) TableName() string {
|
||||||
return "jxorder2"
|
return globals.JxorderTableName
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package legacyorder
|
package legacyorder
|
||||||
|
|
||||||
|
import "git.rosy.net.cn/jx-callback/globals"
|
||||||
|
|
||||||
type Jxordersku2 struct {
|
type Jxordersku2 struct {
|
||||||
Id int `orm:"column(id);auto"`
|
Id int `orm:"column(id);auto"`
|
||||||
VenderId int8 `orm:"column(vender_id);null"`
|
VenderId int8 `orm:"column(vender_id);null"`
|
||||||
@@ -17,5 +19,5 @@ type Jxordersku2 struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (t *Jxordersku2) TableName() string {
|
func (t *Jxordersku2) TableName() string {
|
||||||
return "jxordersku2"
|
return globals.JxorderskuTableName
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ func init() {
|
|||||||
if err = sch.AcceptOrRefuseOrder(order, isAcceptIt); err != nil {
|
if err = sch.AcceptOrRefuseOrder(order, isAcceptIt); err != nil {
|
||||||
// 为了解决京东新消息与接单消息乱序的问题
|
// 为了解决京东新消息与接单消息乱序的问题
|
||||||
if errWithCode, ok := err.(*utils.ErrorWithCode); ok && errWithCode.Level() == 1 && errWithCode.IntCode() == -1 {
|
if errWithCode, ok := err.(*utils.ErrorWithCode); ok && errWithCode.Level() == 1 && errWithCode.IntCode() == -1 {
|
||||||
if order2, err2 := sch.CurOrderManager.LoadOrder(order.VendorOrderID, order.VendorID); err2 == nil && order2.Status > order.Status {
|
if order2, err2 := sch.GetPurchasePlatformFromVendorID(order.VendorID).GetOrder(order.VendorOrderID); err2 == nil && order2.Status > order.Status {
|
||||||
sch.OnOrderStatusChanged(model.Order2Status(order2))
|
sch.OnOrderStatusChanged(model.Order2Status(order2))
|
||||||
err = nil
|
err = nil
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ var (
|
|||||||
AutonaviAPI *autonavi.API
|
AutonaviAPI *autonavi.API
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func Init() {
|
||||||
JdAPI = jdapi.New(beego.AppConfig.String("jdToken"), beego.AppConfig.String("jdAppKey"), beego.AppConfig.String("jdSecret"))
|
JdAPI = jdapi.New(beego.AppConfig.String("jdToken"), beego.AppConfig.String("jdAppKey"), beego.AppConfig.String("jdSecret"))
|
||||||
initElm()
|
initElm()
|
||||||
MtpsAPI = mtpsapi.New(beego.AppConfig.String("mtpsAppKey"), beego.AppConfig.String("mtpsSecret"))
|
MtpsAPI = mtpsapi.New(beego.AppConfig.String("mtpsAppKey"), beego.AppConfig.String("mtpsSecret"))
|
||||||
|
|||||||
@@ -10,20 +10,21 @@ import (
|
|||||||
_ "github.com/go-sql-driver/mysql" // import your used driver
|
_ "github.com/go-sql-driver/mysql" // import your used driver
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func Init() {
|
||||||
// set default database
|
// set default database
|
||||||
orm.RegisterDataBase("default", "mysql", beego.AppConfig.String("dbConnectStr"), 30)
|
orm.RegisterDataBase("default", "mysql", beego.AppConfig.String("dbConnectStr"), 30)
|
||||||
models.RegisterModels()
|
if globals.CallLegacyMsgHandler {
|
||||||
|
models.RegisterModels()
|
||||||
|
}
|
||||||
if globals.CallNewMsgHandler {
|
if globals.CallNewMsgHandler {
|
||||||
orm.RegisterModel(new(model.GoodsOrder))
|
orm.RegisterModel(new(model.GoodsOrder))
|
||||||
orm.RegisterModel(new(model.OrderSku))
|
orm.RegisterModel(new(model.OrderSku))
|
||||||
orm.RegisterModel(new(model.Waybill))
|
orm.RegisterModel(new(model.Waybill))
|
||||||
orm.RegisterModel(new(model.OrderStatus))
|
orm.RegisterModel(new(model.OrderStatus))
|
||||||
|
|
||||||
// orm.RegisterModel(new(legacyorder.Elemeorder2))
|
|
||||||
// orm.RegisterModel(new(legacyorder.Jdorder2))
|
|
||||||
orm.RegisterModel(new(legacyorder.Jxorder2))
|
orm.RegisterModel(new(legacyorder.Jxorder2))
|
||||||
orm.RegisterModel(new(legacyorder.Jxordersku2))
|
orm.RegisterModel(new(legacyorder.Jxordersku2))
|
||||||
|
// orm.RegisterModel(new(legacyorder.Elemeorder2))
|
||||||
|
// orm.RegisterModel(new(legacyorder.Jdorder2))
|
||||||
}
|
}
|
||||||
// create table
|
// create table
|
||||||
orm.RunSyncdb("default", false, true)
|
orm.RunSyncdb("default", false, true)
|
||||||
|
|||||||
@@ -18,18 +18,37 @@ var (
|
|||||||
ReallyCallPlatformAPI bool
|
ReallyCallPlatformAPI bool
|
||||||
|
|
||||||
SugarLogger *zap.SugaredLogger
|
SugarLogger *zap.SugaredLogger
|
||||||
|
|
||||||
|
JxorderTableName string
|
||||||
|
JxorderskuTableName string
|
||||||
|
ElemeorderTableName string
|
||||||
|
JdorderTableName string
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
logs.SetLogFuncCallDepth(3)
|
logs.SetLogFuncCallDepth(3)
|
||||||
beego.BConfig.Log.AccessLogs = true
|
beego.BConfig.Log.AccessLogs = true
|
||||||
|
|
||||||
|
logger, _ := zap.NewDevelopment()
|
||||||
|
SugarLogger = logger.Sugar()
|
||||||
|
baseapi.Init(SugarLogger)
|
||||||
|
}
|
||||||
|
|
||||||
|
func Init() {
|
||||||
CallLegacyMsgHandler = beego.AppConfig.DefaultBool("callLegacyMsgHandler", true)
|
CallLegacyMsgHandler = beego.AppConfig.DefaultBool("callLegacyMsgHandler", true)
|
||||||
CallNewMsgHandler = beego.AppConfig.DefaultBool("callNewMsgHandler", false)
|
CallNewMsgHandler = beego.AppConfig.DefaultBool("callNewMsgHandler", false)
|
||||||
GenerateLegacyJxOrder = beego.AppConfig.DefaultBool("generateLegacyJxOrder", false)
|
GenerateLegacyJxOrder = beego.AppConfig.DefaultBool("generateLegacyJxOrder", false)
|
||||||
ReallyCallPlatformAPI = !CallLegacyMsgHandler
|
ReallyCallPlatformAPI = !CallLegacyMsgHandler
|
||||||
|
|
||||||
logger, _ := zap.NewDevelopment()
|
if ReallyCallPlatformAPI {
|
||||||
SugarLogger = logger.Sugar()
|
JxorderTableName = "jxorder"
|
||||||
baseapi.Init(SugarLogger)
|
JxorderskuTableName = "jxordersku"
|
||||||
|
ElemeorderTableName = "elemeorder"
|
||||||
|
JdorderTableName = "jdorder"
|
||||||
|
} else {
|
||||||
|
JxorderTableName = "jxorder2"
|
||||||
|
JxorderskuTableName = "jxordersku2"
|
||||||
|
ElemeorderTableName = "elemeorder2"
|
||||||
|
JdorderTableName = "jdorder2"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -205,9 +205,10 @@ func normalOrderStatus(msg *jdapi.CallbackOrderMsg) (err error) {
|
|||||||
|
|
||||||
err = db.Read(rec, "JdOrderId")
|
err = db.Read(rec, "JdOrderId")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
globals.SugarLogger.Warnf("error when accessing db err:%v, rec:%v", err, rec)
|
|
||||||
if err == orm.ErrNoRows {
|
if err == orm.ErrNoRows {
|
||||||
err = nil // 如果没有查到,不当成错误
|
err = nil // 如果没有查到,不当成错误
|
||||||
|
} else {
|
||||||
|
globals.SugarLogger.Warnf("error when accessing db err:%v, rec:%v", err, rec)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if rec.OrderStatus == int(utils.Str2Int64(msg.StatusID)) {
|
if rec.OrderStatus == int(utils.Str2Int64(msg.StatusID)) {
|
||||||
|
|||||||
8
main.go
8
main.go
@@ -3,12 +3,20 @@ package main
|
|||||||
import (
|
import (
|
||||||
bzcon "git.rosy.net.cn/jx-callback/business/controller"
|
bzcon "git.rosy.net.cn/jx-callback/business/controller"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
|
"git.rosy.net.cn/jx-callback/globals/db"
|
||||||
"git.rosy.net.cn/jx-callback/legacy/jd/controller"
|
"git.rosy.net.cn/jx-callback/legacy/jd/controller"
|
||||||
"git.rosy.net.cn/jx-callback/legacy/tasks"
|
"git.rosy.net.cn/jx-callback/legacy/tasks"
|
||||||
_ "git.rosy.net.cn/jx-callback/routers"
|
_ "git.rosy.net.cn/jx-callback/routers"
|
||||||
"github.com/astaxie/beego"
|
"github.com/astaxie/beego"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
globals.Init()
|
||||||
|
db.Init()
|
||||||
|
api.Init()
|
||||||
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
if beego.BConfig.RunMode == "prod" {
|
if beego.BConfig.RunMode == "prod" {
|
||||||
if err := tasks.RefreshWeixinToken(); err != nil {
|
if err := tasks.RefreshWeixinToken(); err != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user