From 157d36c47fd886ab444069c256c1257ebf8b8358 Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 20 Jun 2018 15:53:08 +0800 Subject: [PATCH] - adjust package structure. --- business/elm/controller/order.go | 9 +-- business/freshfood/freshfood.go | 17 +++-- business/jd/controller/order.go | 17 ++--- business/mtps/controller/order.go | 6 +- controllers/elm_order.go | 4 +- controllers/jd_order.go | 6 +- controllers/mtps_order.go | 6 +- globals/globals.go | 93 +------------------------- globals/globals2/globals2.go | 105 ++++++++++++++++++++++++++++++ 9 files changed, 139 insertions(+), 124 deletions(-) create mode 100644 globals/globals2/globals2.go diff --git a/business/elm/controller/order.go b/business/elm/controller/order.go index ae4364a6d..881e643bd 100644 --- a/business/elm/controller/order.go +++ b/business/elm/controller/order.go @@ -5,6 +5,7 @@ import ( "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/elm/models" "git.rosy.net.cn/jx-callback/globals" + "git.rosy.net.cn/jx-callback/globals/globals2" "github.com/astaxie/beego/orm" ) @@ -46,12 +47,12 @@ func (o *OrderController) NewOrder(msg *elmapi.ELMCallbackMsg, orderId string) * return errResponseDBError } if created || rec.Type != msg.Type { - result, err := globals.ElmAPI.GetOrder(orderId) + result, err := globals2.ElmAPI.GetOrder(orderId) if err != nil { globals.SugarLogger.Warnf("call GetOrder error:%v", err) return errResponseCallELMAPIError } - err = globals.FreshFoodAPI.NewELMOrder(result) + err = globals2.FreshFoodAPI.NewELMOrder(result) if err != nil { globals.SugarLogger.Warnf("internal error:%v", err) return errResponseInternal @@ -74,7 +75,7 @@ func (o *OrderController) OrderStatusChanged(msg *elmapi.ELMCallbackMsg, orderId return errResponseDBError } if rec.Type != msg.Type { - err = globals.FreshFoodAPI.ELMOrderStatus(orderId, msg.Type, utils.GetCurTimestamp()) + err = globals2.FreshFoodAPI.ELMOrderStatus(orderId, msg.Type, utils.GetCurTimestamp()) if err != nil { globals.SugarLogger.Warnf("internal error:%v", err) return errResponseInternal @@ -83,7 +84,7 @@ func (o *OrderController) OrderStatusChanged(msg *elmapi.ELMCallbackMsg, orderId utils.CallFuncLogError(func() error { _, err := db.Update(rec, "Type") return err - }, globals.ErrStrAccessDB) + }, globals2.ErrStrAccessDB) } } else { globals.SugarLogger.Infof("duplicate elm msg received:%v", msg) diff --git a/business/freshfood/freshfood.go b/business/freshfood/freshfood.go index 3a476b646..b73aae10a 100644 --- a/business/freshfood/freshfood.go +++ b/business/freshfood/freshfood.go @@ -9,7 +9,7 @@ import ( "git.rosy.net.cn/baseapi/platform/mtpsapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jd/models" - "go.uber.org/zap" + "git.rosy.net.cn/jx-callback/globals" ) const ( @@ -75,13 +75,12 @@ const ( ) type FreshFoodAPI struct { - baseURL string - sugarLogger *zap.SugaredLogger - client *http.Client + baseURL string + client *http.Client } -func NewFreshFoodAPI(baseURL string, sugarredLogger *zap.SugaredLogger) *FreshFoodAPI { - return &FreshFoodAPI{baseURL, sugarredLogger, &http.Client{Timeout: time.Second * 5}} +func NewFreshFoodAPI(baseURL string) *FreshFoodAPI { + return &FreshFoodAPI{baseURL, &http.Client{Timeout: time.Second * 5}} } func (f *FreshFoodAPI) AccessFreshFood(apiStr string, params url.Values) error { @@ -90,14 +89,14 @@ func (f *FreshFoodAPI) AccessFreshFood(apiStr string, params url.Values) error { for i := 0; i < retryCount; i++ { // _, err := f.client.PostForm(fullURL, params) err = error(nil) - f.sugarLogger.Debug(fullURL) - f.sugarLogger.Debug(params) + globals.SugarLogger.Debug(fullURL) + globals.SugarLogger.Debug(params) if err == nil { break } } if err != nil { - f.sugarLogger.Warnf("Call %s error:%v", fullURL, err) + globals.SugarLogger.Warnf("Call %s error:%v", fullURL, err) } return err } diff --git a/business/jd/controller/order.go b/business/jd/controller/order.go index 058ecf200..ffccf628c 100644 --- a/business/jd/controller/order.go +++ b/business/jd/controller/order.go @@ -8,6 +8,7 @@ import ( "git.rosy.net.cn/jx-callback/business/jd/models" "git.rosy.net.cn/jx-callback/compat/corm" "git.rosy.net.cn/jx-callback/globals" + "git.rosy.net.cn/jx-callback/globals/globals2" "github.com/astaxie/beego/orm" ) @@ -119,7 +120,7 @@ func (c *OrderController) OrderStatus(order *jdapi.JDOrderMsg) *jdapi.JDCallback utils.CallFuncLogError(func() error { _, err := db.Update(rec, "OrderStatus", "OrderStatusTime", "Code") return err - }, globals.ErrStrAccessDB) + }, globals2.ErrStrAccessDB) addOrderMsg(order) } } else { @@ -135,7 +136,7 @@ func (c *OrderController) OrderStatus(order *jdapi.JDOrderMsg) *jdapi.JDCallback } func (c *OrderController) OrderDeliveryStatus(jdOrderDeliveryStatusMsg *jdapi.JDDeliveryStatusMsg) *jdapi.JDCallbackResponse { - err := globals.FreshFoodAPI.JDOrderDeliveryStatus(jdOrderDeliveryStatusMsg) + err := globals2.FreshFoodAPI.JDOrderDeliveryStatus(jdOrderDeliveryStatusMsg) if err != nil { globals.SugarLogger.Errorf("Error when calling JDOrderDeliveryStatus, error:%v", err) @@ -147,11 +148,11 @@ func (c *OrderController) OrderDeliveryStatus(jdOrderDeliveryStatusMsg *jdapi.JD //----------- func acceptOrder(order *jdapi.JDOrderMsg) { - globals.Jdapi.OrderAcceptOperate(order.BillId, true) + globals2.Jdapi.OrderAcceptOperate(order.BillId, true) } func newOrder(order *jdapi.JDOrderMsg) error { - result, err := globals.Jdapi.LegacyQuerySingleOrder(order.BillId) + result, err := globals2.Jdapi.LegacyQuerySingleOrder(order.BillId) acceptOrder(order) if err != nil { globals.SugarLogger.Errorf("error when query jd order:%s, error:%v", order.BillId, err) @@ -183,13 +184,13 @@ func newOrder(order *jdapi.JDOrderMsg) error { resultByteArr := utils.MustMarshal(data) rec.Data = string(resultByteArr) - err = globals.FreshFoodAPI.NewJDOrder(rec) + err = globals2.FreshFoodAPI.NewJDOrder(rec) if err == nil { db := orm.NewOrm() utils.CallFuncLogError(func() error { _, err := db.Update(rec, "Data", "Code", "Msg", "Success", "CityName", "OrderStatus", "OrderStatusTime") return err - }, globals.ErrStrAccessDB) + }, globals2.ErrStrAccessDB) } else { globals.SugarLogger.Errorf("Error when calling NewJDOrder error:%v", err) } @@ -223,7 +224,7 @@ func normalOrderStatus(order *jdapi.JDOrderMsg) error { rec.OrderStatus = utils.Str2Int(order.StatusId) rec.OrderStatusTime = order.Timestamp - err = globals.FreshFoodAPI.JDOrderStatus(rec) + err = globals2.FreshFoodAPI.JDOrderStatus(rec) if err != nil { globals.SugarLogger.Warnf("access freshfood failed, error:%v", err) return err @@ -233,6 +234,6 @@ func normalOrderStatus(order *jdapi.JDOrderMsg) error { utils.CallFuncLogError(func() error { _, err := db.Update(rec, "OrderStatus", "OrderStatusTime", "Code") return err - }, globals.ErrStrAccessDB) + }, globals2.ErrStrAccessDB) return err } diff --git a/business/mtps/controller/order.go b/business/mtps/controller/order.go index ad7eef788..290639058 100644 --- a/business/mtps/controller/order.go +++ b/business/mtps/controller/order.go @@ -2,7 +2,7 @@ package controller import ( "git.rosy.net.cn/baseapi/platform/mtpsapi" - "git.rosy.net.cn/jx-callback/globals" + "git.rosy.net.cn/jx-callback/globals/globals2" ) type OrderController struct { @@ -18,9 +18,9 @@ func Error2Response(err error) *mtpsapi.MtpsCallbackResponse { } func (c *OrderController) OrderStatusChanged(order *mtpsapi.MtpsCallbackOrderMsg) *mtpsapi.MtpsCallbackResponse { - return Error2Response(globals.FreshFoodAPI.MtpsOrderStatusChanged(order)) + return Error2Response(globals2.FreshFoodAPI.MtpsOrderStatusChanged(order)) } func (c *OrderController) OrderException(order *mtpsapi.MtpsCallbackOrderExceptionMsg) *mtpsapi.MtpsCallbackResponse { - return Error2Response(globals.FreshFoodAPI.MtpsOrderException(order)) + return Error2Response(globals2.FreshFoodAPI.MtpsOrderException(order)) } diff --git a/controllers/elm_order.go b/controllers/elm_order.go index cd8de66c6..968805057 100644 --- a/controllers/elm_order.go +++ b/controllers/elm_order.go @@ -3,7 +3,7 @@ package controllers import ( "git.rosy.net.cn/baseapi/platform/elmapi" "git.rosy.net.cn/jx-callback/business/elm/controller" - "git.rosy.net.cn/jx-callback/globals" + "git.rosy.net.cn/jx-callback/globals/globals2" "github.com/astaxie/beego" ) @@ -23,7 +23,7 @@ func (c *ELMOrderController) URLMapping() { // @Failure 403 body is empty // @router /msg [post] func (c *ELMOrderController) MsgPost() { - obj, callbackResponse := globals.ElmAPI.GetMsgFromData(c.Ctx.Input.RequestBody) + obj, callbackResponse := globals2.ElmAPI.GetMsgFromData(c.Ctx.Input.RequestBody) if callbackResponse == nil { cc := &controller.OrderController{} callbackResponse = cc.OrderMessage(obj) diff --git a/controllers/jd_order.go b/controllers/jd_order.go index 7f09b2741..325aaabe9 100644 --- a/controllers/jd_order.go +++ b/controllers/jd_order.go @@ -2,7 +2,7 @@ package controllers import ( "git.rosy.net.cn/jx-callback/business/jd/controller" - "git.rosy.net.cn/jx-callback/globals" + "git.rosy.net.cn/jx-callback/globals/globals2" "github.com/astaxie/beego" ) @@ -24,7 +24,7 @@ func (c *JDOrderController) URLMapping() { } func (c *JDOrderController) orderStatus() { - obj, callbackResponse := globals.Jdapi.GetOrderMsg(c.Ctx.Request) + obj, callbackResponse := globals2.Jdapi.GetOrderMsg(c.Ctx.Request) if callbackResponse == nil { cc := controller.OrderController{} callbackResponse = cc.OrderStatus(obj) @@ -130,7 +130,7 @@ func (c *JDOrderController) ApplyCancelOrder() { // @Failure 403 body is empty // @router /pushDeliveryStatus [post] func (c *JDOrderController) PushDeliveryStatus() { - obj, callbackResponse := globals.Jdapi.GetOrderDeliveryMsg(c.Ctx.Request) + obj, callbackResponse := globals2.Jdapi.GetOrderDeliveryMsg(c.Ctx.Request) if callbackResponse == nil { cc := controller.OrderController{} callbackResponse = cc.OrderDeliveryStatus(obj) diff --git a/controllers/mtps_order.go b/controllers/mtps_order.go index 1cdf6df7f..96b3e8c8a 100644 --- a/controllers/mtps_order.go +++ b/controllers/mtps_order.go @@ -2,7 +2,7 @@ package controllers import ( "git.rosy.net.cn/jx-callback/business/mtps/controller" - "git.rosy.net.cn/jx-callback/globals" + "git.rosy.net.cn/jx-callback/globals/globals2" "github.com/astaxie/beego" ) @@ -22,7 +22,7 @@ func (c *MTPSOrderController) URLMapping() { // @Failure 403 body is empty // @router /status [post] func (c *MTPSOrderController) Status() { - obj, callbackResponse := globals.MtpsAPI.GetOrderCallbackMsg(c.Ctx.Request) + obj, callbackResponse := globals2.MtpsAPI.GetOrderCallbackMsg(c.Ctx.Request) if callbackResponse == nil { cc := &controller.OrderController{} callbackResponse = cc.OrderStatusChanged(obj) @@ -37,7 +37,7 @@ func (c *MTPSOrderController) Status() { // @Failure 403 body is empty // @router /except [Post] func (c *MTPSOrderController) Except() { - obj, callbackResponse := globals.MtpsAPI.GetOrderExceptionCallbackMsg(c.Ctx.Request) + obj, callbackResponse := globals2.MtpsAPI.GetOrderExceptionCallbackMsg(c.Ctx.Request) if callbackResponse == nil { cc := &controller.OrderController{} callbackResponse = cc.OrderException(obj) diff --git a/globals/globals.go b/globals/globals.go index b48e26cad..f6f76edea 100644 --- a/globals/globals.go +++ b/globals/globals.go @@ -1,106 +1,15 @@ package globals import ( - "git.rosy.net.cn/baseapi/platform/elmapi" - "git.rosy.net.cn/baseapi/platform/jdapi" - "git.rosy.net.cn/baseapi/platform/mtpsapi" - "git.rosy.net.cn/baseapi/utils" - elmmodels "git.rosy.net.cn/jx-callback/business/elm/models" - "git.rosy.net.cn/jx-callback/business/freshfood" - "git.rosy.net.cn/jx-callback/business/jd/models" - "github.com/astaxie/beego/orm" _ "github.com/go-sql-driver/mysql" // import your used driver "go.uber.org/zap" ) -const ( - freshFoodServerURL = "http://test.jxc4.com" - // freshFoodServerURL = "http://portal.jingxicaishi.com" -) - -const ( - // 京东西安账号 - jdToken = "c8854ef2-f80a-45ee-aceb-dc8014d646f8" - jdAppKey = "06692746f7224695ad4788ce340bc854" - jdSecret = "d6b42a35a7414a5490d811654d745c84" - - // 京东全国账号 - // jdToken = "91633f2a-c5f5-4982-a925-a220d19095c3" - // jdAppKey = "1dba76d40cac446ca500c0391a0b6c9d" - // jdSecret = "a88d031a1e7b462cb1579f12e97fe7f4" -) - -const ( - // 饿了么生产 - // elmIsProd = true - // elmToken = "" //"bab2a27f99562f394b411dbb9a6214da" - // elmAppKey = "KLRDcOZGrk" - // elmSecret = "1fc221f8265506531da36fb613d5f5ad673f2e9a" - - elmIsProd = false - elmToken = "2d2b583447b04b6bba5a6f3faed3559b" - elmAppKey = "RwT214gAsS" - elmSecret = "56afff4b9ebd8a7eb532d18fa33f17be57f9b9db" -) - -const ( - // mtpsAppKey = "25e816550bc9484480642f19a95f13fd" - // mtpsSecret = "r4$HqrKx9~=7?2Jfo,$Z~a7%~k!Au&pEdI2)oPJvSbH2ao@2N0[8wSIvtuumh_J^" - mtpsAppKey = "3c0a05d464c247c19d7ec13accc78605" - mtpsSecret = "b1M}9?:sTbsB[OF2gNORnN(|(iy9rB8(`7]|[wGLnbmt`evfM>E:A90DjHAW:UPE" -) - -const ( - ErrStrAccessDB = "Error when access DB" -) - var ( - SugarLogger *zap.SugaredLogger - FreshFoodAPI *freshfood.FreshFoodAPI - - Jdapi *jdapi.JDAPI - ElmAPI *elmapi.ELMAPI - MtpsAPI *mtpsapi.MTPSAPI + SugarLogger *zap.SugaredLogger ) func init() { logger, _ := zap.NewDevelopment() SugarLogger = logger.Sugar() - initDB() - FreshFoodAPI = freshfood.NewFreshFoodAPI(freshFoodServerURL, SugarLogger) - - Jdapi = jdapi.NewJDAPI(jdToken, jdAppKey, jdSecret, SugarLogger) - initElm() - MtpsAPI = mtpsapi.NewMTPSAPI(mtpsAppKey, mtpsSecret, SugarLogger) -} - -func initElm() { - token := elmToken - if token == "" { - db := orm.NewOrm() - var tokenInfo []orm.Params - num, err := db.Raw("SELECT * FROM thirdpartytoken WHERE thirdparty='eleme'").Values(&tokenInfo) - if err != nil || num != 1 { - panic(err.Error()) - } - - var tokenInfo2 map[string]interface{} - if err := utils.UnmarshalUseNumber([]byte(tokenInfo[0]["token"].(string)), &tokenInfo2); err != nil { - panic(err.Error()) - } - token = tokenInfo2["accessToken"].(string) - } - ElmAPI = elmapi.NewELMAPI(token, elmAppKey, elmSecret, SugarLogger, elmIsProd) -} - -func initDB() { - // set default database - orm.RegisterDataBase("default", "mysql", "root:WebServer@1@tcp(127.0.0.1:3306)/jx-callback?charset=utf8&loc=Local", 30) - - // register model - orm.RegisterModel(new(models.Jdorder)) - orm.RegisterModel(new(elmmodels.ELMOrder)) - - // create table - orm.RunSyncdb("default", false, true) } diff --git a/globals/globals2/globals2.go b/globals/globals2/globals2.go new file mode 100644 index 000000000..d33a05bb7 --- /dev/null +++ b/globals/globals2/globals2.go @@ -0,0 +1,105 @@ +package globals2 + +import ( + "git.rosy.net.cn/baseapi/platform/elmapi" + "git.rosy.net.cn/baseapi/platform/jdapi" + "git.rosy.net.cn/baseapi/platform/mtpsapi" + "git.rosy.net.cn/baseapi/utils" + elmmodels "git.rosy.net.cn/jx-callback/business/elm/models" + "git.rosy.net.cn/jx-callback/business/freshfood" + "git.rosy.net.cn/jx-callback/business/jd/models" + "github.com/astaxie/beego/orm" + _ "github.com/go-sql-driver/mysql" // import your used driver +) + +const ( + freshFoodServerURL = "http://test.jxc4.com" + // freshFoodServerURL = "http://portal.jingxicaishi.com" +) + +const ( + // 京东西安账号 + jdToken = "c8854ef2-f80a-45ee-aceb-dc8014d646f8" + jdAppKey = "06692746f7224695ad4788ce340bc854" + jdSecret = "d6b42a35a7414a5490d811654d745c84" + + // 京东全国账号 + // jdToken = "91633f2a-c5f5-4982-a925-a220d19095c3" + // jdAppKey = "1dba76d40cac446ca500c0391a0b6c9d" + // jdSecret = "a88d031a1e7b462cb1579f12e97fe7f4" +) + +const ( + // 饿了么生产 + // elmIsProd = true + // elmToken = "" //"bab2a27f99562f394b411dbb9a6214da" + // elmAppKey = "KLRDcOZGrk" + // elmSecret = "1fc221f8265506531da36fb613d5f5ad673f2e9a" + + elmIsProd = false + elmToken = "2d2b583447b04b6bba5a6f3faed3559b" + elmAppKey = "RwT214gAsS" + elmSecret = "56afff4b9ebd8a7eb532d18fa33f17be57f9b9db" +) + +const ( + // mtpsAppKey = "25e816550bc9484480642f19a95f13fd" + // mtpsSecret = "r4$HqrKx9~=7?2Jfo,$Z~a7%~k!Au&pEdI2)oPJvSbH2ao@2N0[8wSIvtuumh_J^" + mtpsAppKey = "3c0a05d464c247c19d7ec13accc78605" + mtpsSecret = "b1M}9?:sTbsB[OF2gNORnN(|(iy9rB8(`7]|[wGLnbmt`evfM>E:A90DjHAW:UPE" +) + +const ( + dbConnectStr = "root:WebServer@1@tcp(127.0.0.1:3306)/jx-callback?charset=utf8&loc=Local" +) + +const ( + ErrStrAccessDB = "Error when access DB" +) + +var ( + FreshFoodAPI *freshfood.FreshFoodAPI + + Jdapi *jdapi.JDAPI + ElmAPI *elmapi.ELMAPI + MtpsAPI *mtpsapi.MTPSAPI +) + +func init() { + initDB() + FreshFoodAPI = freshfood.NewFreshFoodAPI(freshFoodServerURL) + Jdapi = jdapi.NewJDAPI(jdToken, jdAppKey, jdSecret) + initElm() + MtpsAPI = mtpsapi.NewMTPSAPI(mtpsAppKey, mtpsSecret) +} + +func initElm() { + token := elmToken + if token == "" { + db := orm.NewOrm() + var tokenInfo []orm.Params + num, err := db.Raw("SELECT * FROM thirdpartytoken WHERE thirdparty='eleme'").Values(&tokenInfo) + if err != nil || num != 1 { + panic(err.Error()) + } + + var tokenInfo2 map[string]interface{} + if err := utils.UnmarshalUseNumber([]byte(tokenInfo[0]["token"].(string)), &tokenInfo2); err != nil { + panic(err.Error()) + } + token = tokenInfo2["accessToken"].(string) + } + ElmAPI = elmapi.NewELMAPI(token, elmAppKey, elmSecret, elmIsProd) +} + +func initDB() { + // set default database + orm.RegisterDataBase("default", "mysql", dbConnectStr, 30) + + // register model + orm.RegisterModel(new(models.Jdorder)) + orm.RegisterModel(new(elmmodels.ELMOrder)) + + // create table + orm.RunSyncdb("default", false, true) +}