[ADD]数据源
This commit is contained in:
parent
e7468ab608
commit
ef49bdf01b
|
@ -1,6 +1,8 @@
|
||||||
package basic
|
package basic
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"github.com/Unknwon/com"
|
||||||
|
"github.com/astaxie/beego/validation"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"github.com/viletyy/potato/models/basic"
|
"github.com/viletyy/potato/models/basic"
|
||||||
_ "github.com/viletyy/potato/models/basic"
|
_ "github.com/viletyy/potato/models/basic"
|
||||||
|
@ -36,4 +38,202 @@ func GetMetaDatabases(c *gin.Context) {
|
||||||
"msg": e.GetMsg(code),
|
"msg": e.GetMsg(code),
|
||||||
"basic": data,
|
"basic": data,
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Summary 新增数据源
|
||||||
|
// @Tags meta_databases
|
||||||
|
// @Description
|
||||||
|
// @Accept mpfd
|
||||||
|
// @Produce json
|
||||||
|
// @Param name formData string true "数据源 名称"
|
||||||
|
// @Param host formData string true "数据源 地址"
|
||||||
|
// @Param port formData int true "数据源 端口号"
|
||||||
|
// @Param db_name formData string true "数据源 数据库名称"
|
||||||
|
// @Param username formData string true "数据源 用户名"
|
||||||
|
// @Param password formData string true "数据源 密码"
|
||||||
|
// @Param comment formData string false "数据源 备注"
|
||||||
|
// @Param vendor_id formData int true "系统厂商 id"
|
||||||
|
// @Param business_id formData int true "业务系统 id"
|
||||||
|
// @Success 200 {string} json "{"code": 200, data: {}, "msg" : "ok"}"
|
||||||
|
// @Router /v1/meta_databases [post]
|
||||||
|
func AddMetaDatabase(c *gin.Context) {
|
||||||
|
name := c.PostForm("name")
|
||||||
|
host := c.PostForm("host")
|
||||||
|
port := com.StrTo(c.PostForm("port")).MustInt()
|
||||||
|
dbName := c.PostForm("db_name")
|
||||||
|
username := c.PostForm("username")
|
||||||
|
password := c.PostForm("password")
|
||||||
|
comment := c.PostForm("comment")
|
||||||
|
vendorId := com.StrTo(c.PostForm("vendor_id")).MustInt()
|
||||||
|
businessId := com.StrTo(c.PostForm("business_id")).MustInt()
|
||||||
|
|
||||||
|
valid := validation.Validation{}
|
||||||
|
valid.Required(name, "name").Message("名称不能为空")
|
||||||
|
valid.Required(host, "host").Message("地址不能为空")
|
||||||
|
valid.Required(port, "port").Message("端口号不能为空")
|
||||||
|
valid.Required(dbName, "db_name").Message("数据库名称不能为空")
|
||||||
|
valid.Required(username, "username").Message("用户名不能为空")
|
||||||
|
valid.Required(password, "password").Message("密码不能为空")
|
||||||
|
valid.Min(vendorId, 1,"vendor_id").Message("必须是有效的系统厂商ID")
|
||||||
|
valid.Min(businessId, 1,"business_id").Message("必须是有效的业务系统ID")
|
||||||
|
|
||||||
|
data := make(map[string]interface{})
|
||||||
|
code := e.INVALID_PARAMS
|
||||||
|
|
||||||
|
if ! basic.ExistVendorById(vendorId) {
|
||||||
|
code = e.ERROR_NOT_EXIST_VENDOR
|
||||||
|
}
|
||||||
|
|
||||||
|
if ! basic.ExistBusinessById(businessId) {
|
||||||
|
code = e.ERROR_NOT_EXIST_BUSINESS
|
||||||
|
}
|
||||||
|
|
||||||
|
if ! valid.HasErrors() {
|
||||||
|
if ! basic.ExistMetaDatabaseByName(name) {
|
||||||
|
data["Name"] = name
|
||||||
|
data["Host"] = host
|
||||||
|
data["Port"] = port
|
||||||
|
data["DbName"] = dbName
|
||||||
|
data["Username"] = username
|
||||||
|
data["Password"] = password
|
||||||
|
data["Comment"] = comment
|
||||||
|
data["VendorId"] = vendorId
|
||||||
|
data["BusinessId"] = businessId
|
||||||
|
code = e.SUCCESS
|
||||||
|
} else {
|
||||||
|
code = e.ERROR_EXIST_META_DATABASE
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if code == 200 {
|
||||||
|
basic.AddMetaDatabase(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
c.JSON(http.StatusOK, gin.H{
|
||||||
|
"code" : code,
|
||||||
|
"msg" : e.GetMsg(code),
|
||||||
|
"data" : data,
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Summary 修改数据源
|
||||||
|
// @Tags meta_databases
|
||||||
|
// @Description
|
||||||
|
// @Accept mpfd
|
||||||
|
// @Produce json
|
||||||
|
// @Param id path int true "数据源 ID"
|
||||||
|
// @Param name formData string false "数据源 名称"
|
||||||
|
// @Param host formData string false "数据源 地址"
|
||||||
|
// @Param port formData int false "数据源 端口号"
|
||||||
|
// @Param db_name formData string false "数据源 数据库名称"
|
||||||
|
// @Param username formData string false "数据源 用户名"
|
||||||
|
// @Param password formData string false "数据源 密码"
|
||||||
|
// @Param comment formData string false "数据源 备注"
|
||||||
|
// @Param vendor_id formData int false "系统厂商 id"
|
||||||
|
// @Param business_id formData int false "业务系统 id"
|
||||||
|
// @Success 200 {string} json "{"code" : 200, "msg" : "ok"}"
|
||||||
|
// @Router /v1/meta_databases/{id} [patch]
|
||||||
|
func EditMetaDatabase(c *gin.Context) {
|
||||||
|
id := com.StrTo(c.Param("id")).MustInt()
|
||||||
|
name := c.PostForm("name")
|
||||||
|
host := c.PostForm("host")
|
||||||
|
port := com.StrTo(c.PostForm("port")).MustInt()
|
||||||
|
dbName := c.PostForm("db_name")
|
||||||
|
username := c.PostForm("username")
|
||||||
|
password := c.PostForm("password")
|
||||||
|
comment := c.PostForm("comment")
|
||||||
|
vendorId := com.StrTo(c.PostForm("vendor_id")).MustInt()
|
||||||
|
businessId := com.StrTo(c.PostForm("business_id")).MustInt()
|
||||||
|
|
||||||
|
valid := validation.Validation{}
|
||||||
|
valid.Min(id, 1, "id").Message("必须是有效的数据源id")
|
||||||
|
|
||||||
|
data := make(map[string]interface{})
|
||||||
|
code := e.INVALID_PARAMS
|
||||||
|
|
||||||
|
if ! valid.HasErrors() {
|
||||||
|
if basic.ExistMetaDatabaseById(id) {
|
||||||
|
code = e.SUCCESS
|
||||||
|
if name != "" {
|
||||||
|
data["name"] = name
|
||||||
|
}
|
||||||
|
if host != "" {
|
||||||
|
data["host"] = host
|
||||||
|
}
|
||||||
|
if port != 0 {
|
||||||
|
data["port"] = port
|
||||||
|
}
|
||||||
|
if dbName != "" {
|
||||||
|
data["db_name"] = dbName
|
||||||
|
}
|
||||||
|
if username != "" {
|
||||||
|
data["username"] = username
|
||||||
|
}
|
||||||
|
if password != "" {
|
||||||
|
data["password"] = password
|
||||||
|
}
|
||||||
|
if comment != "" {
|
||||||
|
data["comment"] = comment
|
||||||
|
}
|
||||||
|
if vendorId != 0 {
|
||||||
|
if basic.ExistVendorById(vendorId) {
|
||||||
|
data["vendor_id"] = vendorId
|
||||||
|
} else {
|
||||||
|
code = e.ERROR_NOT_EXIST_VENDOR
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if businessId != 0 {
|
||||||
|
if basic.ExistBusinessById(businessId) {
|
||||||
|
data["business_id"] = businessId
|
||||||
|
} else {
|
||||||
|
code = e.ERROR_NOT_EXIST_BUSINESS
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
code = e.ERROR_NOT_EXIST_META_DATABASE
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if code == 200 {
|
||||||
|
basic.EditMetaDatabase(id, data)
|
||||||
|
}
|
||||||
|
|
||||||
|
c.JSON(http.StatusOK, gin.H{
|
||||||
|
"code" : code,
|
||||||
|
"msg" : e.GetMsg(code),
|
||||||
|
"data" : data,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Summary 删除数据源
|
||||||
|
// @Tags meta_databases
|
||||||
|
// @Description
|
||||||
|
// @Accept json
|
||||||
|
// @Produce json
|
||||||
|
// @Param id path int true "数据源 ID"
|
||||||
|
// @Success 200 {string} json "{"code" : 200, "msg" : "ok"}"
|
||||||
|
// @Router /v1/meta_databases/{id} [delete]
|
||||||
|
func DeleteMetaDatabase(c *gin.Context) {
|
||||||
|
id := com.StrTo(c.Param("id")).MustInt()
|
||||||
|
|
||||||
|
valid := validation.Validation{}
|
||||||
|
valid.Min(id, 1, "id").Message("必须是有效的数据源ID")
|
||||||
|
|
||||||
|
code := e.INVALID_PARAMS
|
||||||
|
if ! valid.HasErrors() {
|
||||||
|
if basic.ExistMetaDatabaseById(id) {
|
||||||
|
code = e.SUCCESS
|
||||||
|
} else {
|
||||||
|
code = e.ERROR_NOT_EXIST_META_DATABASE
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if code == 200 {
|
||||||
|
basic.DeleteMetaDatabase(id)
|
||||||
|
}
|
||||||
|
|
||||||
|
c.JSON(http.StatusOK, gin.H{
|
||||||
|
"code" : code,
|
||||||
|
"msg" : e.GetMsg(code),
|
||||||
|
})
|
||||||
}
|
}
|
|
@ -139,6 +139,5 @@ func DeleteVendor(c *gin.Context) {
|
||||||
c.JSON(http.StatusOK, gin.H{
|
c.JSON(http.StatusOK, gin.H{
|
||||||
"code" : code,
|
"code" : code,
|
||||||
"msg" : e.GetMsg(code),
|
"msg" : e.GetMsg(code),
|
||||||
"data" : make(map[string]string),
|
|
||||||
})
|
})
|
||||||
}
|
}
|
200
docs/docs.go
200
docs/docs.go
|
@ -1,6 +1,6 @@
|
||||||
// GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
|
// GENERATED BY THE COMMAND ABOVE; DO NOT EDIT
|
||||||
// This file was generated by swaggo/swag at
|
// This file was generated by swaggo/swag at
|
||||||
// 2019-08-11 15:32:17.412899 +0800 CST m=+0.054203802
|
// 2019-08-12 01:35:45.643682 +0800 CST m=+0.068783392
|
||||||
|
|
||||||
package docs
|
package docs
|
||||||
|
|
||||||
|
@ -187,6 +187,204 @@ var doc = `{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"post": {
|
||||||
|
"consumes": [
|
||||||
|
"multipart/form-data"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"meta_databases"
|
||||||
|
],
|
||||||
|
"summary": "新增数据源",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "数据源 名称",
|
||||||
|
"name": "name",
|
||||||
|
"in": "formData",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "数据源 地址",
|
||||||
|
"name": "host",
|
||||||
|
"in": "formData",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"description": "数据源 端口号",
|
||||||
|
"name": "port",
|
||||||
|
"in": "formData",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "数据源 数据库名称",
|
||||||
|
"name": "db_name",
|
||||||
|
"in": "formData",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "数据源 用户名",
|
||||||
|
"name": "username",
|
||||||
|
"in": "formData",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "数据源 密码",
|
||||||
|
"name": "password",
|
||||||
|
"in": "formData",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "数据源 备注",
|
||||||
|
"name": "comment",
|
||||||
|
"in": "formData"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"description": "系统厂商 id",
|
||||||
|
"name": "vendor_id",
|
||||||
|
"in": "formData",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"description": "业务系统 id",
|
||||||
|
"name": "business_id",
|
||||||
|
"in": "formData",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "{\"code\": 200, data: {}, \"msg\" : \"ok\"}",
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/v1/meta_databases/{id}": {
|
||||||
|
"delete": {
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"meta_databases"
|
||||||
|
],
|
||||||
|
"summary": "删除数据源",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"description": "数据源 ID",
|
||||||
|
"name": "id",
|
||||||
|
"in": "path",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "{\"code\" : 200, \"msg\" : \"ok\"}",
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"patch": {
|
||||||
|
"consumes": [
|
||||||
|
"multipart/form-data"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"meta_databases"
|
||||||
|
],
|
||||||
|
"summary": "修改数据源",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"description": "数据源 ID",
|
||||||
|
"name": "id",
|
||||||
|
"in": "path",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "数据源 名称",
|
||||||
|
"name": "name",
|
||||||
|
"in": "formData"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "数据源 地址",
|
||||||
|
"name": "host",
|
||||||
|
"in": "formData"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"description": "数据源 端口号",
|
||||||
|
"name": "port",
|
||||||
|
"in": "formData"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "数据源 数据库名称",
|
||||||
|
"name": "db_name",
|
||||||
|
"in": "formData"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "数据源 用户名",
|
||||||
|
"name": "username",
|
||||||
|
"in": "formData"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "数据源 密码",
|
||||||
|
"name": "password",
|
||||||
|
"in": "formData"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "数据源 备注",
|
||||||
|
"name": "comment",
|
||||||
|
"in": "formData"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"description": "系统厂商 id",
|
||||||
|
"name": "vendor_id",
|
||||||
|
"in": "formData"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"description": "业务系统 id",
|
||||||
|
"name": "business_id",
|
||||||
|
"in": "formData"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "{\"code\" : 200, \"msg\" : \"ok\"}",
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"/v1/meta_databases/{id}/meta_tables": {
|
"/v1/meta_databases/{id}/meta_tables": {
|
||||||
|
|
|
@ -170,6 +170,204 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"post": {
|
||||||
|
"consumes": [
|
||||||
|
"multipart/form-data"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"meta_databases"
|
||||||
|
],
|
||||||
|
"summary": "新增数据源",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "数据源 名称",
|
||||||
|
"name": "name",
|
||||||
|
"in": "formData",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "数据源 地址",
|
||||||
|
"name": "host",
|
||||||
|
"in": "formData",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"description": "数据源 端口号",
|
||||||
|
"name": "port",
|
||||||
|
"in": "formData",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "数据源 数据库名称",
|
||||||
|
"name": "db_name",
|
||||||
|
"in": "formData",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "数据源 用户名",
|
||||||
|
"name": "username",
|
||||||
|
"in": "formData",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "数据源 密码",
|
||||||
|
"name": "password",
|
||||||
|
"in": "formData",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "数据源 备注",
|
||||||
|
"name": "comment",
|
||||||
|
"in": "formData"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"description": "系统厂商 id",
|
||||||
|
"name": "vendor_id",
|
||||||
|
"in": "formData",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"description": "业务系统 id",
|
||||||
|
"name": "business_id",
|
||||||
|
"in": "formData",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "{\"code\": 200, data: {}, \"msg\" : \"ok\"}",
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/v1/meta_databases/{id}": {
|
||||||
|
"delete": {
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"meta_databases"
|
||||||
|
],
|
||||||
|
"summary": "删除数据源",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"description": "数据源 ID",
|
||||||
|
"name": "id",
|
||||||
|
"in": "path",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "{\"code\" : 200, \"msg\" : \"ok\"}",
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"patch": {
|
||||||
|
"consumes": [
|
||||||
|
"multipart/form-data"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"meta_databases"
|
||||||
|
],
|
||||||
|
"summary": "修改数据源",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"description": "数据源 ID",
|
||||||
|
"name": "id",
|
||||||
|
"in": "path",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "数据源 名称",
|
||||||
|
"name": "name",
|
||||||
|
"in": "formData"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "数据源 地址",
|
||||||
|
"name": "host",
|
||||||
|
"in": "formData"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"description": "数据源 端口号",
|
||||||
|
"name": "port",
|
||||||
|
"in": "formData"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "数据源 数据库名称",
|
||||||
|
"name": "db_name",
|
||||||
|
"in": "formData"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "数据源 用户名",
|
||||||
|
"name": "username",
|
||||||
|
"in": "formData"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "数据源 密码",
|
||||||
|
"name": "password",
|
||||||
|
"in": "formData"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string",
|
||||||
|
"description": "数据源 备注",
|
||||||
|
"name": "comment",
|
||||||
|
"in": "formData"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"description": "系统厂商 id",
|
||||||
|
"name": "vendor_id",
|
||||||
|
"in": "formData"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"description": "业务系统 id",
|
||||||
|
"name": "business_id",
|
||||||
|
"in": "formData"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "{\"code\" : 200, \"msg\" : \"ok\"}",
|
||||||
|
"schema": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"/v1/meta_databases/{id}/meta_tables": {
|
"/v1/meta_databases/{id}/meta_tables": {
|
||||||
|
|
|
@ -112,6 +112,139 @@ paths:
|
||||||
summary: 数据源列表
|
summary: 数据源列表
|
||||||
tags:
|
tags:
|
||||||
- meta_databases
|
- meta_databases
|
||||||
|
post:
|
||||||
|
consumes:
|
||||||
|
- multipart/form-data
|
||||||
|
parameters:
|
||||||
|
- description: 数据源 名称
|
||||||
|
in: formData
|
||||||
|
name: name
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
- description: 数据源 地址
|
||||||
|
in: formData
|
||||||
|
name: host
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
- description: 数据源 端口号
|
||||||
|
in: formData
|
||||||
|
name: port
|
||||||
|
required: true
|
||||||
|
type: integer
|
||||||
|
- description: 数据源 数据库名称
|
||||||
|
in: formData
|
||||||
|
name: db_name
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
- description: 数据源 用户名
|
||||||
|
in: formData
|
||||||
|
name: username
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
- description: 数据源 密码
|
||||||
|
in: formData
|
||||||
|
name: password
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
- description: 数据源 备注
|
||||||
|
in: formData
|
||||||
|
name: comment
|
||||||
|
type: string
|
||||||
|
- description: 系统厂商 id
|
||||||
|
in: formData
|
||||||
|
name: vendor_id
|
||||||
|
required: true
|
||||||
|
type: integer
|
||||||
|
- description: 业务系统 id
|
||||||
|
in: formData
|
||||||
|
name: business_id
|
||||||
|
required: true
|
||||||
|
type: integer
|
||||||
|
produces:
|
||||||
|
- application/json
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: '{"code": 200, data: {}, "msg" : "ok"}'
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
summary: 新增数据源
|
||||||
|
tags:
|
||||||
|
- meta_databases
|
||||||
|
/v1/meta_databases/{id}:
|
||||||
|
delete:
|
||||||
|
consumes:
|
||||||
|
- application/json
|
||||||
|
parameters:
|
||||||
|
- description: 数据源 ID
|
||||||
|
in: path
|
||||||
|
name: id
|
||||||
|
required: true
|
||||||
|
type: integer
|
||||||
|
produces:
|
||||||
|
- application/json
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: '{"code" : 200, "msg" : "ok"}'
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
summary: 删除数据源
|
||||||
|
tags:
|
||||||
|
- meta_databases
|
||||||
|
patch:
|
||||||
|
consumes:
|
||||||
|
- multipart/form-data
|
||||||
|
parameters:
|
||||||
|
- description: 数据源 ID
|
||||||
|
in: path
|
||||||
|
name: id
|
||||||
|
required: true
|
||||||
|
type: integer
|
||||||
|
- description: 数据源 名称
|
||||||
|
in: formData
|
||||||
|
name: name
|
||||||
|
type: string
|
||||||
|
- description: 数据源 地址
|
||||||
|
in: formData
|
||||||
|
name: host
|
||||||
|
type: string
|
||||||
|
- description: 数据源 端口号
|
||||||
|
in: formData
|
||||||
|
name: port
|
||||||
|
type: integer
|
||||||
|
- description: 数据源 数据库名称
|
||||||
|
in: formData
|
||||||
|
name: db_name
|
||||||
|
type: string
|
||||||
|
- description: 数据源 用户名
|
||||||
|
in: formData
|
||||||
|
name: username
|
||||||
|
type: string
|
||||||
|
- description: 数据源 密码
|
||||||
|
in: formData
|
||||||
|
name: password
|
||||||
|
type: string
|
||||||
|
- description: 数据源 备注
|
||||||
|
in: formData
|
||||||
|
name: comment
|
||||||
|
type: string
|
||||||
|
- description: 系统厂商 id
|
||||||
|
in: formData
|
||||||
|
name: vendor_id
|
||||||
|
type: integer
|
||||||
|
- description: 业务系统 id
|
||||||
|
in: formData
|
||||||
|
name: business_id
|
||||||
|
type: integer
|
||||||
|
produces:
|
||||||
|
- application/json
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: '{"code" : 200, "msg" : "ok"}'
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
summary: 修改数据源
|
||||||
|
tags:
|
||||||
|
- meta_databases
|
||||||
/v1/meta_databases/{id}/meta_tables:
|
/v1/meta_databases/{id}/meta_tables:
|
||||||
get:
|
get:
|
||||||
consumes:
|
consumes:
|
||||||
|
|
|
@ -2,6 +2,7 @@ package basic
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/viletyy/potato/pkg/util"
|
"github.com/viletyy/potato/pkg/util"
|
||||||
|
"log"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -32,3 +33,44 @@ func GetMetaDatabaseTotal(maps interface{}) (count int) {
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ExistMetaDatabaseByName(name string) bool {
|
||||||
|
var metaDatabase MetaDatabase
|
||||||
|
util.DB.Select("id").Where("name = ?", name).First(&metaDatabase)
|
||||||
|
if metaDatabase.ID > 0 {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func ExistMetaDatabaseById(id int) bool {
|
||||||
|
var metaDatabase MetaDatabase
|
||||||
|
util.DB.Select("id").Where("id = ?", id).First(&metaDatabase)
|
||||||
|
if metaDatabase.ID > 0 {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func AddMetaDatabase(data map[string]interface{}) bool {
|
||||||
|
metaDatabase := &MetaDatabase{}
|
||||||
|
error := util.FillStruct(data, metaDatabase)
|
||||||
|
if error != nil {
|
||||||
|
log.Printf("Fill Struct is Fail")
|
||||||
|
}
|
||||||
|
util.DB.Create(metaDatabase)
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
func EditMetaDatabase(id int, data interface{}) bool {
|
||||||
|
util.DB.Model(&MetaDatabase{}).Where("id = ?", id).Update(data)
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
func DeleteMetaDatabase(id int) bool {
|
||||||
|
util.DB.Where("id = ?", id).Delete(&MetaDatabase{})
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
|
@ -1,6 +1,8 @@
|
||||||
package basic
|
package basic
|
||||||
|
|
||||||
import "github.com/viletyy/potato/pkg/util"
|
import (
|
||||||
|
"github.com/viletyy/potato/pkg/util"
|
||||||
|
)
|
||||||
|
|
||||||
type Vendor struct {
|
type Vendor struct {
|
||||||
util.Model
|
util.Model
|
||||||
|
|
|
@ -9,6 +9,10 @@ const (
|
||||||
ERROR_NOT_EXIST_VENDOR = 10012
|
ERROR_NOT_EXIST_VENDOR = 10012
|
||||||
ERROR_EXIST_BUSINESS = 10021
|
ERROR_EXIST_BUSINESS = 10021
|
||||||
ERROR_NOT_EXIST_BUSINESS = 10022
|
ERROR_NOT_EXIST_BUSINESS = 10022
|
||||||
|
ERROR_EXIST_META_DATABASE = 10031
|
||||||
|
ERROR_NOT_EXIST_META_DATABASE = 10032
|
||||||
|
ERROR_EXIST_META_TABLE = 10041
|
||||||
|
ERROR_NOT_EXIST_META_TABLE = 10042
|
||||||
|
|
||||||
ERROR_AUTH_CHECK_TOKEN_FAIL = 20001
|
ERROR_AUTH_CHECK_TOKEN_FAIL = 20001
|
||||||
ERROR_AUTH_CHECK_TOKEN_TIMEOUT = 20002
|
ERROR_AUTH_CHECK_TOKEN_TIMEOUT = 20002
|
||||||
|
|
|
@ -8,6 +8,10 @@ var MsgFlags = map[int]string {
|
||||||
ERROR_NOT_EXIST_VENDOR : "该系统厂商不存在",
|
ERROR_NOT_EXIST_VENDOR : "该系统厂商不存在",
|
||||||
ERROR_EXIST_BUSINESS : "已存在该业务系统",
|
ERROR_EXIST_BUSINESS : "已存在该业务系统",
|
||||||
ERROR_NOT_EXIST_BUSINESS : "该业务系统不存在",
|
ERROR_NOT_EXIST_BUSINESS : "该业务系统不存在",
|
||||||
|
ERROR_EXIST_META_DATABASE : "已存在该数据源",
|
||||||
|
ERROR_NOT_EXIST_META_DATABASE : "该数据源不存在",
|
||||||
|
ERROR_EXIST_META_TABLE : "已存在该元数据",
|
||||||
|
ERROR_NOT_EXIST_META_TABLE : "该元数据不存在",
|
||||||
|
|
||||||
ERROR_AUTH_CHECK_TOKEN_FAIL : "Token鉴权失败",
|
ERROR_AUTH_CHECK_TOKEN_FAIL : "Token鉴权失败",
|
||||||
ERROR_AUTH_CHECK_TOKEN_TIMEOUT : "Token已超时",
|
ERROR_AUTH_CHECK_TOKEN_TIMEOUT : "Token已超时",
|
||||||
|
|
|
@ -1,12 +1,15 @@
|
||||||
package util
|
package util
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/go-redis/redis"
|
"github.com/go-redis/redis"
|
||||||
"github.com/jinzhu/gorm"
|
"github.com/jinzhu/gorm"
|
||||||
_ "github.com/jinzhu/gorm/dialects/postgres"
|
_ "github.com/jinzhu/gorm/dialects/postgres"
|
||||||
"github.com/viletyy/potato/pkg/logging"
|
"github.com/viletyy/potato/pkg/logging"
|
||||||
"github.com/viletyy/potato/pkg/setting"
|
"github.com/viletyy/potato/pkg/setting"
|
||||||
|
"reflect"
|
||||||
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -90,3 +93,68 @@ func InitRedis() {
|
||||||
logging.Fatal("redis连接失败!", err)
|
logging.Fatal("redis连接失败!", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func FillStruct(data map[string]interface{}, obj interface{}) error {
|
||||||
|
for k, v := range data {
|
||||||
|
err := SetField(obj, k, v)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func SetField(obj interface{}, name string, value interface{}) error {
|
||||||
|
structValue := reflect.ValueOf(obj).Elem()
|
||||||
|
structFieldValue := structValue.FieldByName(name)
|
||||||
|
if !structFieldValue.IsValid() {
|
||||||
|
return fmt.Errorf("No such field: %s in obj", name)
|
||||||
|
}
|
||||||
|
if !structFieldValue.CanSet() {
|
||||||
|
return fmt.Errorf("Cannot set %s field value", name)
|
||||||
|
}
|
||||||
|
|
||||||
|
structFieldType := structFieldValue.Type() //结构体的类型
|
||||||
|
val := reflect.ValueOf(value) //map值的反射值
|
||||||
|
var err error
|
||||||
|
if structFieldType != val.Type() {
|
||||||
|
val, err = TypeConversion(fmt.Sprintf("%v", value), structFieldValue.Type().Name()) //类型转换
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
structFieldValue.Set(val)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func TypeConversion(value string, ntype string) (reflect.Value, error) {
|
||||||
|
if ntype == "string" {
|
||||||
|
return reflect.ValueOf(value), nil
|
||||||
|
} else if ntype == "time.Time" {
|
||||||
|
t, err := time.ParseInLocation("2006-01-02 15:04:05", value, time.Local)
|
||||||
|
return reflect.ValueOf(t), err
|
||||||
|
} else if ntype == "Time" {
|
||||||
|
t, err := time.ParseInLocation("2006-01-02 15:04:05", value, time.Local)
|
||||||
|
return reflect.ValueOf(t), err
|
||||||
|
} else if ntype == "int" {
|
||||||
|
i, err := strconv.Atoi(value)
|
||||||
|
return reflect.ValueOf(i), err
|
||||||
|
} else if ntype == "int8" {
|
||||||
|
i, err := strconv.ParseInt(value, 10, 64)
|
||||||
|
return reflect.ValueOf(int8(i)), err
|
||||||
|
} else if ntype == "int32" {
|
||||||
|
i, err := strconv.ParseInt(value, 10, 64)
|
||||||
|
return reflect.ValueOf(int64(i)), err
|
||||||
|
} else if ntype == "int64" {
|
||||||
|
i, err := strconv.ParseInt(value, 10, 64)
|
||||||
|
return reflect.ValueOf(i), err
|
||||||
|
} else if ntype == "float32" {
|
||||||
|
i, err := strconv.ParseFloat(value, 64)
|
||||||
|
return reflect.ValueOf(float32(i)), err
|
||||||
|
} else if ntype == "float64" {
|
||||||
|
i, err := strconv.ParseFloat(value, 64)
|
||||||
|
return reflect.ValueOf(i), err
|
||||||
|
}
|
||||||
|
//else if .......增加其他一些类型的转换
|
||||||
|
return reflect.ValueOf(value), errors.New("未知的类型:" + ntype)
|
||||||
|
}
|
||||||
|
|
|
@ -8,6 +8,9 @@ func V1InitBasicRouter() {
|
||||||
metaDatabases := V1RouterGroup.Group("/meta_databases")
|
metaDatabases := V1RouterGroup.Group("/meta_databases")
|
||||||
{
|
{
|
||||||
metaDatabases.GET("", basic.GetMetaDatabases)
|
metaDatabases.GET("", basic.GetMetaDatabases)
|
||||||
|
metaDatabases.POST("", basic.AddMetaDatabase)
|
||||||
|
metaDatabases.PATCH("/:id", basic.EditMetaDatabase)
|
||||||
|
metaDatabases.DELETE("/:id", basic.DeleteMetaDatabase)
|
||||||
metaDatabases.GET("/:id/meta_tables", basic.GetMetaTables)
|
metaDatabases.GET("/:id/meta_tables", basic.GetMetaTables)
|
||||||
}
|
}
|
||||||
vendors := V1RouterGroup.Group("/vendors")
|
vendors := V1RouterGroup.Group("/vendors")
|
||||||
|
|
Loading…
Reference in New Issue