diff --git a/controllers/controller.go b/controllers/controller.go index c07010b..b36e2d8 100644 --- a/controllers/controller.go +++ b/controllers/controller.go @@ -5,6 +5,7 @@ import ( "fmt" "git.rosy.net.cn/jx-print/globals" "git.rosy.net.cn/jx-print/model" + "git.rosy.net.cn/jx-print/services" "git.rosy.net.cn/jx-print/utils" "github.com/dchest/captcha" "github.com/gin-gonic/gin" @@ -135,3 +136,23 @@ func buildErrJson(c *gin.Context, err error) { }) globals.SugarLogger.Debugf("End API :%s error:%v:", c.Request.URL, err) } + +func GetConfig(c *gin.Context) { + var ( + err error + param = &struct { + Type string `json:"type" form:"type" binding:"required"` + Key string `json:"key" form:"key" binding:"required"` + }{} + ) + if err = c.ShouldBind(¶m); err != nil { + buildErrJson(c, err) + return + } + if !callFunc(c, func() (retVal interface{}, errCode string, err error) { + retVal, err = services.GetConfig(c, param.Type, param.Key) + return retVal, "", err + }) { + return + } +} diff --git a/controllers/order_controller.go b/controllers/order_controller.go new file mode 100644 index 0000000..48d5cc1 --- /dev/null +++ b/controllers/order_controller.go @@ -0,0 +1,55 @@ +package controllers + +import ( + "git.rosy.net.cn/jx-print/model" + "github.com/gin-gonic/gin" +) + +func CreateOrder(c *gin.Context) { + var ( + err error + tokenInfo *model.TokenInfo + param = &struct { + OrderType string `json:"order_type" form:"order_type" binding:"required"` //订单类型,流量充值等 + Origin string `json:"origin" form:"origin" binding:"required"` //订单来源,小程序,开放后台 + ThingID string `json:"thing_id" form:"thing_id" binding:"required"` //订单充值项目ID,充流量就是iccid + TypeID string `json:"type_id" form:"type_id" binding:"required"` //类型ID,充流量就是套餐对应的id + }{} + ) + if err = c.ShouldBind(¶m); err != nil { + buildErrJson(c, err) + return + } + if tokenInfo = checkToken(c); tokenInfo == nil { + return + } + if !callFunc(c, func() (retVal interface{}, errCode string, err error) { + return retVal, "", err + }) { + return + } +} + +func Pay(c *gin.Context) { + var ( + err error + tokenInfo *model.TokenInfo + param = &struct { + OrderID string `json:"order_id" form:"order_id" binding:"required"` //订单号 + PayType string `json:"pay_type" form:"pay_type" binding:"required"` //支付类型 + VendorPayType string `json:"vendor_pay_type" form:"vendor_pay_type" binding:"required"` //支付方式 + }{} + ) + if err = c.ShouldBind(¶m); err != nil { + buildErrJson(c, err) + return + } + if tokenInfo = checkToken(c); tokenInfo == nil { + return + } + if !callFunc(c, func() (retVal interface{}, errCode string, err error) { + return retVal, "", err + }) { + return + } +} diff --git a/dao/config_dao.go b/dao/config_dao.go new file mode 100644 index 0000000..e71778b --- /dev/null +++ b/dao/config_dao.go @@ -0,0 +1,20 @@ +package dao + +import ( + "git.rosy.net.cn/jx-print/model" + "github.com/jmoiron/sqlx" +) + +func GetConfig(db *sqlx.DB, configType, key string) (config *model.NewConfig, err error) { + var ( + configs []*model.NewConfig + ) + sql := ` + SELECT * FROM new_config WHERE type = ? AND key = ? + ` + sqlParams := []interface{}{configType, key} + if err = db.Select(&configs, sql, sqlParams...); err == nil && len(configs) > 0 { + return configs[0], err + } + return config, err +} diff --git a/model/model.go b/model/model.go index 299fdcf..75219f4 100644 --- a/model/model.go +++ b/model/model.go @@ -36,6 +36,17 @@ const ( FieldID = "id" ) +const ( + OrderTypeFlow = "flow" + + OrderOriginWxMini = "weixinmini" + OrderOriginOpenAPI = "openAPI" +) + +const ( + ConfigTypeSys = "Sys" +) + var ( FieldNormalMap = map[string]string{ FieldDeletedAt: "删除时间", @@ -180,3 +191,32 @@ type SimFlowIncome struct { FlowUnit string `json:"flow_unit" db:"flow_unit"` //流量单位 IncomeType int `json:"income_type" db:"income_type"` //1 表示系统每月自动划转,2 表示商户自己冲的 } + +type PayOrder struct { + ID int `json:"id" db:"id"` + CreatedAt *time.Time `json:"created_at" db:"created_at"` + OrderID string `json:"order_id" db:"order_id"` //订单号 + UserID string `json:"user_id" db:"user_id"` //用户ID + OrderType string `json:"order_type" db:"order_type"` //订单类型,流量充值等 + Origin string `json:"origin"` //订单来源,小程序,开放后台 + Status int `json:"status"` //订单状态,待支付2,已支付5,支付成功110,支付失败115 + PayPrice int `json:"pay_price" db:"pay_price"` //支付金额 + TransactionID string `json:"transaction_id" db:"transaction_id"` // 支付成功后,支付方生成的事务ID + PayFinishedAt *time.Time `json:"pay_finished_at" db:"pay_finished_at"` + PrepayID string `json:"prepay_id" db:"prepay_id"` // 下单后,支付前,支付方生成的事务ID + OriginalData string `json:"original_data" db:"original_data"` + Comment string `json:"comment"` //备注 + ThingID string `json:"thing_id" db:"thing_id"` //订单充值项目ID + TypeID string `json:"type_id" db:"type_id"` //类型ID,充流量就是套餐对应的id +} + +type NewConfig struct { + ID int `json:"id" db:"id"` + CreatedAt *time.Time `json:"created_at" db:"created_at"` + UpdatedAt *time.Time `json:"updated_at" db:"updated_at"` + LastOperator string `json:"last_operator" db:"last_operator"` + DeletedAt *time.Time `json:"deleted_at" db:"deleted_at"` + Type string `json:"type"` + Key string `json:"key"` + Value string `json:"value"` +} diff --git a/routers/router.go b/routers/router.go index fb19245..ab47949 100644 --- a/routers/router.go +++ b/routers/router.go @@ -26,6 +26,10 @@ func Init(r *gin.Engine) { print.POST("/updatePrinter", controllers.UpdatePrinter) print.POST("/testPrint", controllers.TestPrint) print.GET("/getPrintMessages", controllers.GetPrintMessages) + //order + order := v2.Group("/order") + order.POST("/createOrder", controllers.CreateOrder) + order.POST("/pay", controllers.Pay) //v1是不需要token的 v1 := r.Group("v1") @@ -36,6 +40,10 @@ func Init(r *gin.Engine) { userw.GET("/getMenus", controllers.GetMenus) userw.GET("/getMenuDetail", controllers.GetMenuDetail) + //config + config := v1.Group("/config") + config.GET("/getConfig", controllers.GetConfig) + //自动路由 r.Any("/callback/*path", router.AutoRoute(&controllers.CallbackController{})) } diff --git a/services/config.go b/services/config.go new file mode 100644 index 0000000..bf7c476 --- /dev/null +++ b/services/config.go @@ -0,0 +1,12 @@ +package services + +import ( + "git.rosy.net.cn/jx-print/dao" + "git.rosy.net.cn/jx-print/globals" + "git.rosy.net.cn/jx-print/model" + "github.com/gin-gonic/gin" +) + +func GetConfig(c *gin.Context, configType, key string) (config *model.NewConfig, err error) { + return dao.GetConfig(globals.GetDB(), configType, key) +}