diff --git a/business/jxcallback/auto_delivery/auto_delivery.go b/business/jxcallback/auto_delivery/auto_delivery.go index 19a386d42..2b6b4be6f 100644 --- a/business/jxcallback/auto_delivery/auto_delivery.go +++ b/business/jxcallback/auto_delivery/auto_delivery.go @@ -130,8 +130,6 @@ func AutoSettingFakeDelivery() { return } } - globals.SugarLogger.Debug("==========%s,%d", riderKey, len(riderListInfo[riderKey])) - globals.SugarLogger.Debug("==========%s", utils.Format4Output(riderListInfo[riderKey], false)) randNumber, _ := rand.Int(rand.Reader, big.NewInt(int64(len(riderListInfo[riderKey])))) randTime := randNumber.Int64() if randTime < 0 { diff --git a/business/model/api_config.go b/business/model/api_config.go index 298283ac0..6bace924a 100644 --- a/business/model/api_config.go +++ b/business/model/api_config.go @@ -33,6 +33,7 @@ const ( VendorIDFengNiao = 103 // 蜂鸟配送 //VendorIDDYPS = 104 // 抖音配送 VendorIDUUPT = 105 //uu跑腿 + VendorIDSFPS = 106 //顺丰派送 VendorJXFakeWL = 300 // 京西假物流 VendorIDJDWL = 401 // 京东物流 VendorIDTotalWl = 402 // (综合物流[京东,圆通,申通....]) diff --git a/business/partner/delivery/rider.go b/business/partner/delivery/rider.go index 3bddf1f27..276df3f78 100644 --- a/business/partner/delivery/rider.go +++ b/business/partner/delivery/rider.go @@ -109,10 +109,10 @@ func GetOrderRiderInfoToPlatform(orderId string, wayBillStatus int) { riderInfo := &mtpsapi.RiderInfo{} if handlerInfo := partner.GetDeliveryPlatformFromVendorID(v.WaybillVendorID); handlerInfo != nil { - if v.WaybillVendorID == model.VendorIDDada || v.WaybillVendorID == model.VendorIDFengNiao || v.WaybillVendorID == model.VendorIDUUPT { + if v.WaybillVendorID == model.VendorIDDada || v.WaybillVendorID == model.VendorIDFengNiao || v.WaybillVendorID == model.VendorIDUUPT || v.WaybillVendorID == model.VendorIDSFPS { riderInfo, err = handlerInfo.Handler.GetRiderInfo(v.VendorOrderID, 0, v.VendorWaybillID) if err != nil { - globals.SugarLogger.Debug("Get Order waybill rider info err FN/DADA/DYPS :%v", err) + globals.SugarLogger.Debug("Get Order waybill rider info err FN/DADA/SFPS :%v", err) } } else if v.WaybillVendorID == model.VendorIDMTPS { if v.VendorWaybillID != "" { diff --git a/business/partner/delivery/sfps/waybill.go b/business/partner/delivery/sfps/waybill.go new file mode 100644 index 000000000..5c41db29e --- /dev/null +++ b/business/partner/delivery/sfps/waybill.go @@ -0,0 +1,401 @@ +package sfps + +import ( + "errors" + "fmt" + "time" + + "git.rosy.net.cn/jx-callback/globals" + + "git.rosy.net.cn/jx-callback/business/partner/delivery" + + "git.rosy.net.cn/jx-callback/business/jxutils" + + "git.rosy.net.cn/baseapi/platformapi/mtpsapi" + "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" + "git.rosy.net.cn/jx-callback/globals/api" + + "git.rosy.net.cn/baseapi/utils" + "git.rosy.net.cn/jx-callback/business/model/dao" + "git.rosy.net.cn/jx-callback/business/partner" + + "git.rosy.net.cn/baseapi/platformapi/sfps2" + "git.rosy.net.cn/jx-callback/business/model" +) + +type DeliveryHandler struct { +} + +var ( + curDeliveryHandler *DeliveryHandler +) + +func init() { + if api.SfPsAPI != nil { + curDeliveryHandler = new(DeliveryHandler) + partner.RegisterDeliveryPlatform(curDeliveryHandler, true) + } +} + +func (d DeliveryHandler) GetVendorID() int { + return model.VendorIDSFPS +} + +func (d DeliveryHandler) CreateStore(ctx *jxcontext.Context, storeDetail *dao.StoreDetail2) (vendorStoreID string, status int, err error) { + return "", 0, fmt.Errorf("顺丰派送暂不支持此操作") +} + +func (d DeliveryHandler) GetStore(ctx *jxcontext.Context, storeID int, vendorStoreID string) (storeDetail *dao.StoreDetail2, err error) { + store, err := dao.GetStoreDetail(dao.GetDB(), utils.Str2Int(vendorStoreID), model.VendorIDSFPS, "") + if err == nil { + storeDetail = &dao.StoreDetail2{ + Store: model.Store{ + Name: store.Name, + Tel1: store.Tel1, + Address: store.Address, + Lat: store.Lat, + Lng: store.Lng, + }, + VendorID: model.VendorIDSFPS, + VendorStoreID: utils.Int2Str(storeID), + CourierStatus: model.StoreStatusOpened, + } + } + return storeDetail, err +} + +func (d DeliveryHandler) IsErrStoreNotExist(err error) bool { + return false +} + +func (d DeliveryHandler) IsErrStoreExist(err error) bool { + return false +} + +func (d DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee int64) (bill *model.Waybill, err error) { + vendorOrgCode, err := dao.GetVendorOrgCode(dao.GetDB(), model.VendorIDSFPS, "", model.VendorOrgTypeDelivery) + if err != nil { + return nil, err + } + if len(vendorOrgCode) > 0 && vendorOrgCode[0].IsOpen == model.YES { + return nil, fmt.Errorf("此平台配送已被系统关闭,暂不发配送 [%v]", vendorOrgCode[0].Comment) + } + + store, err := dao.GetStoreDetail(dao.GetDB(), getReallyStoreID(order.StoreID, order.JxStoreID), 0, "") + if err != nil { + return nil, err + } + + var ( + weight int + productDetail []*sfps2.ProductDetail + ) + if order.Weight >= 49500 { + weight = 49500 + } else { + weight = order.Weight + } + + param := &sfps2.CreateOrderReq{ + ShopId: sfps2.SFShopStoreID, + ShopOrderId: order.VendorOrderID, + OrderSource: GetVendorSource(order.VendorID), + OrderTime: order.CreatedAt.Unix(), + Receive: &sfps2.ReceiveAddress{ + UserName: order.ConsigneeName, + UserPhone: order.ConsigneeMobile, + UserAddress: order.ConsigneeAddress, + UserLat: utils.Float64ToStr(jxutils.IntCoordinate2Standard(order.ConsigneeLat)), + UserLng: utils.Float64ToStr(jxutils.IntCoordinate2Standard(order.ConsigneeLng)), + }, + Shop: &sfps2.SfShopInfo{ + ShopName: order.StoreName, + ShopPhone: store.Tel1, + ShopAddress: store.Address, + ShopLat: utils.Float64ToStr(jxutils.IntCoordinate2Standard(store.Lat)), + ShopLng: utils.Float64ToStr(jxutils.IntCoordinate2Standard(store.Lng)), + }, + OrderDetail: &sfps2.OrderDetail{ + TotalPrice: order.ActualPayPrice, + ProductType: sfps2.ProductTypeFresh, + WeightGram: int64(weight), + ProductNum: int64(order.GoodsCount), + ProductTypeNum: int64(order.SkuCount), + }, + } + + for _, v := range order.Skus { + productDetail = append(productDetail, &sfps2.ProductDetail{ + ProductName: v.SkuName, + ProductNum: int64(v.Count), + }) + } + param.OrderDetail.ProductDetail = productDetail + + sfOrderID, sfBillID, sfTotalPrice, err := api.SfPsAPI.CreateOrder(param) + if err != nil { + return nil, err + } + + bill = &model.Waybill{ + VendorOrderID: order.VendorOrderID, + OrderVendorID: order.VendorID, + VendorWaybillID: sfOrderID, + VendorWaybillID2: sfBillID, + WaybillVendorID: model.VendorIDFengNiao, + DesiredFee: int64(sfTotalPrice), + } + delivery.OnWaybillCreated(bill) + return bill, err +} + +func (d DeliveryHandler) CancelWaybill(bill *model.Waybill, cancelReasonID int, cancelReason string) (err error) { + if err = api.SfPsAPI.CancelOrder(bill.VendorWaybillID); err != nil { + return err + } + bill.Status = model.WaybillStatusCanceled + bill.Remark = cancelReason + partner.CurOrderManager.OnWaybillStatusChanged(bill) + return nil +} + +func (d DeliveryHandler) GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInfo *partner.WaybillFeeInfo, err error) { + var ( + weight int + //productDetail []*sfps2.ProductDetail + ) + if order.Weight >= 49500 { + weight = 49500 + } else { + weight = order.Weight + } + store, err := dao.GetStoreDetail(dao.GetDB(), getReallyStoreID(order.StoreID, order.JxStoreID), 0, "") + if err != nil { + return nil, err + } + param := &sfps2.PreCreateOrderReq{ + ShopId: sfps2.SFShopStoreID, + UserLng: utils.Float64ToStr(jxutils.IntCoordinate2Standard(order.ConsigneeLng)), + UserLat: utils.Float64ToStr(jxutils.IntCoordinate2Standard(order.ConsigneeLat)), + UserAddress: order.ConsigneeAddress, + Weight: int64(weight), + ProductType: sfps2.ProductTypeFresh, + Shop: &sfps2.SfShopInfo{ + ShopName: order.StoreName, + ShopPhone: store.Tel1, + ShopAddress: store.Address, + ShopLat: utils.Float64ToStr(jxutils.IntCoordinate2Standard(store.Lat)), + ShopLng: utils.Float64ToStr(jxutils.IntCoordinate2Standard(store.Lng)), + }, + } + deliveryFeeInfo = &partner.WaybillFeeInfo{} + price, err := api.SfPsAPI.PreCreateOrder(param) + deliveryFeeInfo.DeliveryFee = jxutils.StandardPrice2Int(price) + return deliveryFeeInfo, err +} + +func (d DeliveryHandler) ComplaintRider(bill *model.Waybill, resonID int, resonContent string) (err error) { + return nil +} + +func (d DeliveryHandler) GetRiderInfo(orderId string, deliveryId int64, mtPeisongId string) (rider *mtpsapi.RiderInfo, err error) { + order, err := dao.GetWaybills(dao.GetDB(), orderId) + if len(order) == 0 || err != nil { + return nil, errors.New("顺丰 订单id无效,请检查") + } + //获取顺丰运单详情 + sfOrder, err := api.SfPsAPI.GetOrderStatus(order[0].VendorWaybillID) + //获取顺丰骑手实时位置 + sfRider, err := api.SfPsAPI.GetRiderLatestPosition(sfOrder.OrderID) + + result := &mtpsapi.RiderInfo{ + OrderId: orderId, + ThirdCarrierOrderId: sfOrder.OrderID, + CourierName: sfOrder.RiderName, + CourierPhone: sfOrder.RiderPhone, + LogisticsProviderCode: mtpsapi.SFPSCode, + LogisticsStatus: utils.Float64TwoInt(sfOrder.OrderStatus), // 默认正在配送中 + Latitude: sfRider.RiderLat, + Longitude: sfRider.RiderLng, + } + + switch sfOrder.OrderStatus { + case sfps2.OrderStatusNewOrder: + result.LogisticsStatus = model.WaybillStatusNew + result.LogisticsContext = model.RiderWaitRider + case sfps2.OrderStatusTakeOrder: + result.LogisticsStatus = model.WaybillStatusCourierAssigned + result.LogisticsContext = model.RiderGetOrder + case sfps2.OrderStatusArrivedStore: + result.LogisticsStatus = model.WaybillStatusCourierArrived + result.LogisticsContext = model.RiderToStore + case sfps2.OrderStatusRiderArriving: + result.LogisticsStatus = model.WaybillStatusDelivering + result.LogisticsContext = model.RiderGetOrderDelivering + case sfps2.OrderStatusFinished: + result.LogisticsStatus = model.WaybillStatusDelivered + result.LogisticsContext = model.RiderGetOrderDelivered + case sfps2.OrderStatusOrderCancel: + result.LogisticsStatus = model.WaybillStatusCanceled + result.LogisticsContext = model.RiderGetOrderCanceled + case sfps2.OrderStatusError: + result.LogisticsStatus = model.WaybillStatusDeliverFailed + result.LogisticsContext = model.RiderGetOrderDeliverFailed + default: + result.LogisticsStatus = 0 + result.LogisticsContext = model.RiderGetOrderDeliverOther + } + return result, nil +} + +// OnWaybillMsg 配送状态更改回调 +func OnWaybillMsg(msg *sfps2.RiderStatus) (resp *sfps2.CallbackResponse) { + + order := &model.Waybill{ + VendorWaybillID: msg.SFOrderID, + WaybillVendorID: model.VendorIDSFPS, + VendorOrderID: msg.ShopOrderID, + CourierName: msg.OperatorName, + CourierMobile: msg.OperatorPhone, + VendorStatus: utils.Int2Str(msg.OrderStatus), + StatusTime: utils.Timestamp2Time(int64(msg.PushTime)), + Remark: msg.StatusDesc, + } + if msg.PushTime == 0 { + order.StatusTime = time.Now() + } + //获取实时订单信息 + sfOrder, err := api.SfPsAPI.GetOrderStatus(msg.SFOrderID) + if err != nil { + return sfps2.Err2CallbackResponse(err) + } + var good *model.GoodsOrder + sql := `SELECT * FROM goods_order WHERE vendor_order_id = ? ORDER BY order_created_at DESC LIMIT 1 OFFSET 0` + sqlParams := []interface{}{msg.ShopOrderID} + dao.GetRow(dao.GetDB(), &good, sql, sqlParams) + order.OrderVendorID = good.VendorID + + orderStatus := utils.Str2Int64(order.VendorStatus) + switch orderStatus { + case sfps2.OrderStatusNewOrder: //1:订单创建 + order.DesiredFee = jxutils.StandardPrice2Int(sfOrder.TotalPrice) + order.Status = model.WaybillStatusNew //5 带调度 + case sfps2.OrderStatusTakeOrder: //10:配送员接单 + order.DesiredFee = jxutils.StandardPrice2Int(sfOrder.TotalPrice) + order.Status = model.WaybillStatusCourierAssigned //12 + order.Remark = order.CourierName + "," + order.CourierMobile + case sfps2.OrderStatusArrivedStore: + order.DesiredFee = jxutils.StandardPrice2Int(sfOrder.TotalPrice) + order.Status = model.WaybillStatusCourierArrived + case sfps2.OrderStatusRiderArriving: + order.DesiredFee = jxutils.StandardPrice2Int(sfOrder.TotalPrice) + order.Status = model.WaybillStatusDelivering + case sfps2.OrderStatusFinished: + order.DesiredFee = jxutils.StandardPrice2Int(sfOrder.TotalPrice) + order.Status = model.WaybillStatusDelivered + case sfps2.OrderStatusOrderCancel: + order.Status = model.WaybillStatusCanceled + case sfps2.OrderStatusError: + order.Status = model.WaybillStatusDeliverFailed // 22 + default: + globals.SugarLogger.Warnf("onWaybillMsg unknown msg:%v", msg) + } + + if err := partner.CurOrderManager.OnWaybillStatusChanged(order); err != nil { + return sfps2.Err2CallbackResponse(err) + } + + if order.OrderVendorID == model.VendorIDDD { + result := &mtpsapi.RiderInfo{ + OrderId: order.VendorOrderID, + ThirdCarrierOrderId: order.VendorOrderID, + CourierName: order.CourierName, + CourierPhone: order.CourierMobile, + LogisticsProviderCode: "10002", + LogisticsStatus: order.Status, + OpCode: "", + } + switch orderStatus { + case sfps2.OrderStatusNewOrder: + result.LogisticsStatus = model.WaybillStatusNew + result.LogisticsContext = model.RiderWaitRider + case sfps2.OrderStatusTakeOrder: + result.LogisticsStatus = model.WaybillStatusCourierAssigned // 分配骑手 + result.LogisticsContext = model.RiderWaitGetGoods + case sfps2.OrderStatusRiderArriving: + result.LogisticsStatus = model.WaybillStatusDelivering + result.LogisticsContext = model.RiderGetOrderDelivering + case sfps2.OrderStatusFinished: + result.LogisticsStatus = model.WaybillStatusDelivered + result.LogisticsContext = model.RiderGetOrderDelivered + case sfps2.OrderStatusOrderCancel: + result.LogisticsStatus = model.WaybillStatusCanceled + result.LogisticsContext = model.RiderGetOrderCanceled + case sfps2.OrderStatusError: + result.LogisticsStatus = model.WaybillStatusDeliverFailed + result.LogisticsContext = model.RiderGetOrderDeliverFailed + case sfps2.OrderStatusArrivedStore: + result.LogisticsStatus = model.WaybillStatusCourierArrived + result.LogisticsContext = model.RiderToStore + default: + result.LogisticsStatus = 0 + result.LogisticsContext = model.RiderGetOrderDeliverOther + } + delivery.PullTiktokRiderInfo(result) + } + + defer delivery.GetOrderRiderInfoToPlatform(order.VendorOrderID, order.Status) // 骑手位置更新 + return sfps2.Err2CallbackResponse(nil) +} + +// OnWaybillExceptSF 异常报备 +func OnWaybillExceptSF(msg *sfps2.RiderException) (retVal *sfps2.CallbackResponse) { + jxutils.CallMsgHandler(func() { + order := &model.Waybill{ + VendorWaybillID: msg.SFOrderID, + VendorWaybillID2: utils.Int2Str(msg.ExID), + WaybillVendorID: model.VendorIDSFPS, + CourierName: msg.OperatorName, + CourierMobile: "", + Status: model.WaybillStatusUnknown, // todo 这里要再确定一下是否只要收到订单异常消息就只简单当成一个消息 + VendorStatus: utils.Int2Str(msg.OrderStatus), + StatusTime: utils.Timestamp2Time(int64(msg.PushTime)), + } + order.VendorOrderID, order.OrderVendorID = jxutils.SplitUniversalOrderID(msg.ShopOrderID) + retVal = sfps2.Err2CallbackResponse(partner.CurOrderManager.OnWaybillStatusChanged(order)) + }, jxutils.ComposeUniversalOrderID(msg.ShopOrderID, model.VendorIDSFPS)) + return retVal +} + +// GetVendorSource 辅助函数 +//获取订单来源标识符 +func GetVendorSource(vendorID int) (source string) { + switch vendorID { + case model.VendorIDMTWM: + source = sfps2.OrderSourceMt + case model.VendorIDELM: + source = sfps2.OrderSourceELM + case model.VendorIDEBAI: + source = sfps2.OrderSourceEBAI + case model.VendorIDDD: + source = "抖音" + case model.VendorIDJD: + source = "京东" + case model.VendorIDJX: + source = "京西" + default: + source = "其他" + } + return source +} + +func getReallyStoreID(storeID, jxStoreID int) int { + if storeID == 0 && jxStoreID == 0 { + return 0 + } + if storeID == 0 { + return jxStoreID + } else { + return storeID + } +} diff --git a/business/partner/delivery/uupt/waybill.go b/business/partner/delivery/uupt/waybill.go index a2f0cadfc..00bc25026 100644 --- a/business/partner/delivery/uupt/waybill.go +++ b/business/partner/delivery/uupt/waybill.go @@ -320,11 +320,8 @@ func OnWaybillMsg(req *uuptapi.WaybillCallbackParam) (resp *uuptapi.CallbackResp case uuptapi.StateArrivedStore: param.Status = model.WaybillStatusCourierArrived param.DesiredFee = reallyPrice - case uuptapi.StatePickUp: - param.Status = model.WaybillStatusUuPickUp - param.DesiredFee = reallyPrice - case uuptapi.StateArrivedDestination: - param.Status = model.WaybillStatusUuArrivedDestination + case uuptapi.StatePickUp, uuptapi.StateArrivedDestination: + param.Status = model.WaybillStatusDelivering param.DesiredFee = reallyPrice case uuptapi.StateReceiverGetGoods: param.Status = model.WaybillStatusDelivered @@ -358,12 +355,9 @@ func OnWaybillMsg(req *uuptapi.WaybillCallbackParam) (resp *uuptapi.CallbackResp case uuptapi.StateArrivedStore: //骑手到店 result.LogisticsStatus = model.WaybillStatusCourierArrived result.LogisticsContext = model.RiderToStore - case uuptapi.StatePickUp: //已取件 - result.LogisticsStatus = model.WaybillStatusUuPickUp + case uuptapi.StatePickUp, uuptapi.StateArrivedDestination: //已取件 + result.LogisticsStatus = model.WaybillStatusDelivering result.LogisticsContext = model.RiderPickUp - case uuptapi.StateArrivedDestination: //到达取件人地址处 - result.LogisticsStatus = model.WaybillStatusUuArrivedDestination - result.LogisticsContext = model.RiderArrivedDestination case uuptapi.StateReceiverGetGoods: //取件人收货 result.LogisticsStatus = model.WaybillStatusDelivered result.LogisticsContext = model.RiderGetOrderDelivered diff --git a/controllers/sfps_callback.go b/controllers/sfps_callback.go new file mode 100644 index 000000000..0aa9e9739 --- /dev/null +++ b/controllers/sfps_callback.go @@ -0,0 +1,49 @@ +package controllers + +import ( + "net/http" + + "git.rosy.net.cn/jx-callback/business/partner/delivery/sfps" + + "git.rosy.net.cn/jx-callback/globals/api" + "github.com/astaxie/beego/server/web" +) + +type SFPSController struct { + web.Controller +} + +func (c *SFPSController) SfOrder() { + if c.Ctx.Input.Method() == http.MethodPost { + msg, callbackResponse := api.SfPsAPI.GetRiderStatusCallback(c.Ctx.Request) + if callbackResponse.ErrorCode == -1 { + c.Data["error_code"] = -1 + c.ServeJSON() + return + } + // 订单回调 + callbackResponse = sfps.OnWaybillMsg(msg) + c.Data["error_code"] = callbackResponse + c.ServeJSON() + } else { + c.Abort("404") + } +} + +// SfAbnormal 异常回调 +func (c *FnController) SfAbnormal() { + if c.Ctx.Input.Method() == http.MethodPost { + msg, callbackResponse := api.SfPsAPI.GetRiderExceptionCallback(c.Ctx.Request) + if callbackResponse.ErrorCode == -1 { + c.Data["error_code"] = -1 + c.ServeJSON() + return + } + + callbackResponse = sfps.OnWaybillExceptSF(msg) + c.Data["error_code"] = callbackResponse + c.ServeJSON() + } else { + c.Abort("404") + } +} diff --git a/globals/api/api.go b/globals/api/api.go index a682ce751..746cd3f02 100644 --- a/globals/api/api.go +++ b/globals/api/api.go @@ -6,6 +6,7 @@ import ( "git.rosy.net.cn/baseapi/platformapi/jxprintapi" "git.rosy.net.cn/baseapi/platformapi/kuaishou_mini" "git.rosy.net.cn/baseapi/platformapi/qywxapi" + "git.rosy.net.cn/baseapi/platformapi/sfps2" "git.rosy.net.cn/baseapi/platformapi/tiktok" tiktokShop "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api" "git.rosy.net.cn/baseapi/platformapi/trenditapi" @@ -91,6 +92,7 @@ var ( TLpayAPI *tonglianpayapi.API //通联收银宝api FnAPI *fnpsapi.API //蜂鸟配送api UuAPI *uuptapi.API //uu跑腿api + SfPsAPI *sfps2.API //顺丰派送api YinBaoAPI *yinbaoapi.API //银豹平台api WeixinPageAPI *weixinapi.API // 用户微信扫码登录 diff --git a/globals/beegodb/beegodb.go b/globals/beegodb/beegodb.go index b2b3d56a8..d2590df44 100644 --- a/globals/beegodb/beegodb.go +++ b/globals/beegodb/beegodb.go @@ -6,25 +6,24 @@ import ( "git.rosy.net.cn/jx-callback/business/model/legacymodel" "git.rosy.net.cn/jx-callback/globals" "github.com/astaxie/beego/client/orm" - "github.com/astaxie/beego/server/web" ) func Init() { // set default database // orm.RegisterDataBase(aliasName, driverName, dataSource, params) //正式服务器 - orm.RegisterDataBase("default", "mysql", web.AppConfig.DefaultString("dbConnectStr", "")) - orm.RegisterDataBase("c4beta", "mysql", "ubuntu:WebServer@1@tcp(111.231.218.230:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") - orm.RegisterDataBase("api", "mysql", "root:WebServer@1@tcp(127.0.0.1:3306)/api?charset=utf8mb4&loc=Local&parseTime=true") + //orm.RegisterDataBase("default", "mysql", web.AppConfig.DefaultString("dbConnectStr", "")) + //orm.RegisterDataBase("c4beta", "mysql", "ubuntu:WebServer@1@tcp(111.231.218.230:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") + //orm.RegisterDataBase("api", "mysql", "root:WebServer@1@tcp(127.0.0.1:3306)/api?charset=utf8mb4&loc=Local&parseTime=true") // 本地测试服调试 // orm.RegisterDataBase("default", "mysql", web.AppConfig.DefaultString("dbConnectStr", "")) //orm.RegisterDataBase("api", "mysql", "root:WebServer@1@tcp(127.0.0.1:3306)/api?charset=utf8mb4&loc=Local&parseTime=true") //orm.RegisterDataBase("c4beta", "mysql", "ubuntu:WebServer@1@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") //本地服务器测试用 -ysq - //orm.RegisterDataBase("default", "mysql", "root:123456@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") - //orm.RegisterDataBase("c4beta", "mysql", "root:123456@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") - //orm.RegisterDataBase("api", "mysql", "root:123456@tcp(127.0.0.1:3306)/api?charset=utf8mb4&loc=Local&parseTime=true") + orm.RegisterDataBase("default", "mysql", "root:123456@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") + orm.RegisterDataBase("c4beta", "mysql", "root:123456@tcp(127.0.0.1:3306)/jxd_dev_0?charset=utf8mb4&loc=Local&parseTime=true") + orm.RegisterDataBase("api", "mysql", "root:123456@tcp(127.0.0.1:3306)/api?charset=utf8mb4&loc=Local&parseTime=true") // 开启sql打印 //orm.Debug = true diff --git a/routers/router.go b/routers/router.go index 2554e47ab..3915eb8e2 100644 --- a/routers/router.go +++ b/routers/router.go @@ -189,6 +189,7 @@ func init() { web.AutoRouter(&controllers.JdsController{}) web.AutoRouter(&controllers.FnController{}) web.AutoRouter(&controllers.UuPtController{}) + web.AutoRouter(&controllers.SFPSController{}) web.AutoRouter(&controllers.KnowUploadController{}) web.AutoRouter(&controllers.AliApiController{}) web.AutoRouter(&controllers.TicTocController{})