Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
apaas-meshproxy
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
gzga-jzapi
apaas-meshproxy
Commits
2c8f8424
Commit
2c8f8424
authored
Jun 18, 2020
by
张宇迪
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update
parent
a7d0b388
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
565 additions
and
6 deletions
+565
-6
go.mod
go.mod
+3
-0
go.sum
go.sum
+7
-0
src/config/conf.go
src/config/conf.go
+8
-0
src/logger/logger.go
src/logger/logger.go
+35
-0
src/model/request/service_field.go
src/model/request/service_field.go
+16
-0
src/model/tables/user.go
src/model/tables/user.go
+40
-0
src/service/field.go
src/service/field.go
+20
-6
src/tools/dataconvertutil/dataconvertutil.go
src/tools/dataconvertutil/dataconvertutil.go
+212
-0
src/tools/public.go
src/tools/public.go
+224
-0
No files found.
go.mod
View file @
2c8f8424
...
@@ -3,6 +3,7 @@ module gitlab.wodcloud.com/apaas/apaas-meshproxy
...
@@ -3,6 +3,7 @@ module gitlab.wodcloud.com/apaas/apaas-meshproxy
go 1.12
go 1.12
require (
require (
github.com/Chain-Zhang/pinyin v0.1.3
github.com/Chronokeeper/anyxml v0.0.0-20160530174208-54457d8e98c6 // indirect
github.com/Chronokeeper/anyxml v0.0.0-20160530174208-54457d8e98c6 // indirect
github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53 // indirect
github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53 // indirect
github.com/CloudyKit/jet v2.1.2+incompatible // indirect
github.com/CloudyKit/jet v2.1.2+incompatible // indirect
...
@@ -17,6 +18,7 @@ require (
...
@@ -17,6 +18,7 @@ require (
github.com/go-sql-driver/mysql v1.5.0
github.com/go-sql-driver/mysql v1.5.0
github.com/lib/pq v1.4.0
github.com/lib/pq v1.4.0
github.com/mattn/go-isatty v0.0.8 // indirect
github.com/mattn/go-isatty v0.0.8 // indirect
github.com/natefinch/lumberjack v2.0.0+incompatible
github.com/onsi/ginkgo v1.10.2 // indirect
github.com/onsi/ginkgo v1.10.2 // indirect
github.com/onsi/gomega v1.7.0 // indirect
github.com/onsi/gomega v1.7.0 // indirect
github.com/sirupsen/logrus v1.4.2
github.com/sirupsen/logrus v1.4.2
...
@@ -27,5 +29,6 @@ require (
...
@@ -27,5 +29,6 @@ require (
github.com/xormplus/core v0.0.0-20200308074340-f3bce19d5f31
github.com/xormplus/core v0.0.0-20200308074340-f3bce19d5f31
github.com/xormplus/xorm v0.0.0-20200410045938-f6b4c1cd3b8b
github.com/xormplus/xorm v0.0.0-20200410045938-f6b4c1cd3b8b
gopkg.in/flosch/pongo2.v3 v3.0.0-20141028000813-5e81b817a0c4 // indirect
gopkg.in/flosch/pongo2.v3 v3.0.0-20141028000813-5e81b817a0c4 // indirect
gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect
xorm.io/cmd v0.0.0-20200427014343-9ccdb0ebedf7 // indirect
xorm.io/cmd v0.0.0-20200427014343-9ccdb0ebedf7 // indirect
)
)
go.sum
View file @
2c8f8424
...
@@ -3,7 +3,10 @@ cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT
...
@@ -3,7 +3,10 @@ cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT
cloud.google.com/go v0.37.4/go.mod h1:NHPJ89PdicEuT9hdPXMROBD91xc5uRDxsMtSB16k7hw=
cloud.google.com/go v0.37.4/go.mod h1:NHPJ89PdicEuT9hdPXMROBD91xc5uRDxsMtSB16k7hw=
gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a h1:lSA0F4e9A2NcQSqGqTOXqu2aRi/XEQxDCBwM8yJtE6s=
gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a h1:lSA0F4e9A2NcQSqGqTOXqu2aRi/XEQxDCBwM8yJtE6s=
gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:EXuID2Zs0pAQhH8yz+DNjUbjppKQzKFAn28TMYPB6IU=
gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:EXuID2Zs0pAQhH8yz+DNjUbjppKQzKFAn28TMYPB6IU=
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/Chain-Zhang/pinyin v0.1.3 h1:RzErNyNwVa8z2sOLCuXSOtVdY/AsARb8mBzI2p2qtnE=
github.com/Chain-Zhang/pinyin v0.1.3/go.mod h1:5iHpt9p4znrnaP59/hfPMnAojajkDxQaP9io+tRMPho=
github.com/Chronokeeper/anyxml v0.0.0-20160530174208-54457d8e98c6 h1:Etfj2lhXyrYemgmWzEtEQQb1kezeEXc8jVjkQUyJnWI=
github.com/Chronokeeper/anyxml v0.0.0-20160530174208-54457d8e98c6 h1:Etfj2lhXyrYemgmWzEtEQQb1kezeEXc8jVjkQUyJnWI=
github.com/Chronokeeper/anyxml v0.0.0-20160530174208-54457d8e98c6/go.mod h1:YzuYAe2hrrwKXkM9kqjbkTLlkbA+/xw2MA46f1+ENxc=
github.com/Chronokeeper/anyxml v0.0.0-20160530174208-54457d8e98c6/go.mod h1:YzuYAe2hrrwKXkM9kqjbkTLlkbA+/xw2MA46f1+ENxc=
github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53 h1:sR+/8Yb4slttB4vD+b9btVEnWgL3Q00OBTzVT8B9C0c=
github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53 h1:sR+/8Yb4slttB4vD+b9btVEnWgL3Q00OBTzVT8B9C0c=
...
@@ -115,6 +118,8 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJ
...
@@ -115,6 +118,8 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJ
github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI=
github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI=
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
github.com/natefinch/lumberjack v2.0.0+incompatible h1:4QJd3OLAMgj7ph+yZTuX13Ld4UpgHp07nNdFX7mqFfM=
github.com/natefinch/lumberjack v2.0.0+incompatible/go.mod h1:Wi9p2TTF5DG5oU+6YfsmYQpsTIOm0B1VNzQg9Mw6nPk=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.10.2 h1:uqH7bpe+ERSiDa34FDOF7RikN6RzXgduUF8yarlZp94=
github.com/onsi/ginkgo v1.10.2 h1:uqH7bpe+ERSiDa34FDOF7RikN6RzXgduUF8yarlZp94=
...
@@ -233,6 +238,8 @@ gopkg.in/go-playground/assert.v1 v1.2.1 h1:xoYuJVE7KT85PYWrN730RguIQO0ePzVRfFMXa
...
@@ -233,6 +238,8 @@ gopkg.in/go-playground/assert.v1 v1.2.1 h1:xoYuJVE7KT85PYWrN730RguIQO0ePzVRfFMXa
gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE=
gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE=
gopkg.in/go-playground/validator.v8 v8.18.2 h1:lFB4DoMU6B626w8ny76MV7VX6W2VHct2GVOI3xgiMrQ=
gopkg.in/go-playground/validator.v8 v8.18.2 h1:lFB4DoMU6B626w8ny76MV7VX6W2VHct2GVOI3xgiMrQ=
gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y=
gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y=
gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8=
gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
gopkg.in/yaml.v2 v2.2.1 h1:mUhvW9EsL+naU5Q3cakzfE91YhliOondGd6ZrsDBHQE=
gopkg.in/yaml.v2 v2.2.1 h1:mUhvW9EsL+naU5Q3cakzfE91YhliOondGd6ZrsDBHQE=
...
...
src/config/conf.go
View file @
2c8f8424
...
@@ -29,3 +29,11 @@ const LocalDateTimeFormat string = "2006-01-02 15:04:05"
...
@@ -29,3 +29,11 @@ const LocalDateTimeFormat string = "2006-01-02 15:04:05"
const
LocalDateTimeFormatStr
string
=
"20060102150405"
const
LocalDateTimeFormatStr
string
=
"20060102150405"
const
LocalTimeFormat
string
=
"15:04"
const
LocalTimeFormat
string
=
"15:04"
const
LocalDateFormat
string
=
"2006-01-02"
const
LocalDateFormat
string
=
"2006-01-02"
const
(
TIME_FORMAT
=
"2006-01-02 15:04:05"
TIME_FORMAT_ONE
=
"2006.01.02"
TIME_FORMAT_TWO
=
"20060102150405"
COOKIE_APAAS_NAME
=
"bgToken"
CLUSTER_TOKEN
=
"7176d48e4e66ddb3557a82f2dd316a93"
)
src/logger/logger.go
0 → 100644
View file @
2c8f8424
package
logger
import
(
"github.com/natefinch/lumberjack"
"github.com/sirupsen/logrus"
"io"
"os"
)
var
Logger
*
logrus
.
Logger
func
Init
(
level
logrus
.
Level
,
logfile
string
)
{
if
Logger
==
nil
{
Logger
=
logrus
.
New
()
Logger
.
Level
=
level
Logger
.
Formatter
=
&
logrus
.
JSONFormatter
{}
Logger
.
Out
=
GetWriter
(
logfile
)
}
}
func
GetWriter
(
logfile
string
)
io
.
Writer
{
if
len
(
logfile
)
==
0
{
return
os
.
Stdout
}
else
{
return
&
lumberjack
.
Logger
{
Filename
:
logfile
,
MaxSize
:
500
,
MaxAge
:
1
,
MaxBackups
:
5
,
LocalTime
:
true
,
Compress
:
true
,
}
}
}
src/model/request/service_field.go
0 → 100644
View file @
2c8f8424
package
request
//服务字段
type
ServiceField
struct
{
Name
string
`json:"name" vd:"regexp('^\\w*$');msg:'字段编码格式错误'"`
// string 字符串 object 对象 int 整数 float 浮点数 array 数组 boolean 布尔型 file 文件二进制类型
Type
string
`json:"field_type" vd:"($=='file' || $=='string'||$=='object'||$=='int'||$=='float'||$=='array'||$=='boolean');msg:sprintf('%s字段类型有误%s',(Name)$,$)"`
ShowType
string
`json:"show_type"`
Label
string
`json:"label" vd:"len($)>0 || (Name)$ =='' ;msg:sprintf('%s的字段名称未填写',(Name)$)"`
Descript
string
`json:"descript"`
//vd:"len($)>0;msg:sprintf('%s的字段说明未填写',(Name)$)"
IsSensituve
int
`json:"is_sensituve"`
//是否为敏感字段
Selected
int
`json:"selected"`
//是否勾选
Example
string
`json:"example"`
//示例值
IsMust
int
`json:"is_must"`
//是否必须
Children
[]
ServiceField
`json:"children"`
}
src/model/tables/user.go
0 → 100644
View file @
2c8f8424
/*
@Time : 2020/4/23 18:19
@Author : gaoshiyao
@File : user
@Software: GoLand
@Des:
*/
package
tables
import
"time"
type
User
struct
{
UserId
string
`json:"user_id" xorm:"not null pk VARCHAR(50)"`
UserName
string
`json:"user_name" xorm:"VARCHAR(100)"`
Password
string
`json:"password" xorm:"VARCHAR(100)"`
Phone
string
`json:"phone" xorm:"VARCHAR(11)"`
Email
string
`json:"email" xorm:"VARCHAR(30)"`
Oid
string
`json:"oid" xorm:"VARCHAR(50)"`
CreateUser
string
`json:"create_user" xorm:"VARCHAR(50)"`
CreateDate
time
.
Time
`json:"create_date" xorm:"DATETIME"`
IsAdmin
int
`json:"is_admin" xorm:"SMALLINT"`
State
int
`json:"state" xorm:"SMALLINT"`
Position
string
`json:"position" xorm:"VARCHAR(100)"`
Description
string
`json:"description" xorm:"VARCHAR(100)"`
Wechat
string
`json:"wechat" xorm:"VARCHAR(50)"`
Qq
string
`json:"qq" xorm:"VARCHAR(50)"`
PicturePath
string
`json:"picture_path" xorm:"VARCHAR(500)"`
}
func
(
*
User
)
TableName
()
string
{
return
"bg_user"
}
//简洁的用户信息
type
BriefUserInfo
struct
{
UserName
string
`json:"user_name"`
Phone
string
`json:"phone"`
Oid
string
`json:"oid"`
//组织ID
DepartmentName
string
`json:"department_name"`
//组织名称
}
src/service/field.go
View file @
2c8f8424
...
@@ -15,7 +15,9 @@ import (
...
@@ -15,7 +15,9 @@ import (
"gitlab.wodcloud.com/apaas/apaas-meshproxy/src/config"
"gitlab.wodcloud.com/apaas/apaas-meshproxy/src/config"
"gitlab.wodcloud.com/apaas/apaas-meshproxy/src/dao"
"gitlab.wodcloud.com/apaas/apaas-meshproxy/src/dao"
"gitlab.wodcloud.com/apaas/apaas-meshproxy/src/model"
"gitlab.wodcloud.com/apaas/apaas-meshproxy/src/model"
"gitlab.wodcloud.com/apaas/apaas-meshproxy/src/model/request"
"gitlab.wodcloud.com/apaas/apaas-meshproxy/src/tools"
"gitlab.wodcloud.com/apaas/apaas-meshproxy/src/tools"
"gitlab.wodcloud.com/apaas/apaas-meshproxy/src/tools/dataconvertutil"
"strconv"
"strconv"
"time"
"time"
)
)
...
@@ -154,11 +156,17 @@ func CallCounts(proxyData model.ProxyData) (err error) {
...
@@ -154,11 +156,17 @@ func CallCounts(proxyData model.ProxyData) (err error) {
//过滤返回字段
//过滤返回字段
func
FiledFilter
(
proxyData
model
.
ProxyData
,
respbody
[]
byte
)
interface
{}
{
func
FiledFilter
(
proxyData
model
.
ProxyData
,
respbody
[]
byte
)
interface
{}
{
model
:=
make
(
map
[
string
]
interface
{})
fields
:=
[]
request
.
ServiceField
{}
fields
=
dataconvertutil
.
GetResponseField
(
proxyData
.
ResFields
)
model
,
arrmodel
:=
dataconvertutil
.
ConvertJson
(
fields
)
realData
:=
make
(
map
[
string
]
interface
{})
realData
:=
make
(
map
[
string
]
interface
{})
json
.
Unmarshal
([]
byte
(
proxyData
.
ResFields
),
&
model
)
json
.
Unmarshal
(
respbody
,
&
realData
)
json
.
Unmarshal
(
respbody
,
&
realData
)
return
Change
(
model
,
realData
)
if
model
!=
nil
{
return
Change
(
model
,
realData
)
}
else
if
arrmodel
!=
nil
{
return
Change
(
model
,
realData
)
}
return
nil
}
}
//返回申请字段
//返回申请字段
...
@@ -235,9 +243,15 @@ func UpdateCallsCount(applyId string) (err error) {
...
@@ -235,9 +243,15 @@ func UpdateCallsCount(applyId string) (err error) {
//返回过滤后的敏感字段
//返回过滤后的敏感字段
func
SensitiveFilter
(
proxyData
model
.
ProxyData
,
res
interface
{})
interface
{}
{
func
SensitiveFilter
(
proxyData
model
.
ProxyData
,
res
interface
{})
interface
{}
{
Sensituve_word
:=
make
(
map
[
string
]
interface
{})
fields
:=
[]
request
.
ServiceField
{}
json
.
Unmarshal
([]
byte
(
proxyData
.
Sensituve_word
),
&
Sensituve_word
)
fields
=
dataconvertutil
.
GetResponseField
(
proxyData
.
Sensituve_word
)
return
FilterSensituveField
(
Sensituve_word
,
res
)
Sensituve_word
,
arrSensituve_word
:=
dataconvertutil
.
ConvertJson
(
fields
)
if
Sensituve_word
!=
nil
{
return
FilterSensituveField
(
Sensituve_word
,
res
)
}
else
if
arrSensituve_word
!=
nil
{
return
FilterSensituveField
(
arrSensituve_word
,
res
)
}
return
nil
}
}
// 过滤敏感字段
// 过滤敏感字段
...
...
src/tools/dataconvertutil/dataconvertutil.go
0 → 100644
View file @
2c8f8424
package
dataconvertutil
import
(
"encoding/json"
"gitlab.wodcloud.com/apaas/apaas-meshproxy/src/logger"
"gitlab.wodcloud.com/apaas/apaas-meshproxy/src/model/request"
"gitlab.wodcloud.com/apaas/apaas-meshproxy/src/tools"
)
//字段结构 转json
func
ConvertJson
(
fields
[]
request
.
ServiceField
)
(
map
[
string
]
interface
{},
[]
interface
{})
{
m
:=
map
[
string
]
interface
{}{}
var
n
[]
interface
{}
if
fields
==
nil
{
return
m
,
n
}
for
_
,
field
:=
range
fields
{
if
field
.
Selected
==
1
&&
field
.
Type
==
"object"
{
if
field
.
Name
==
""
{
mm
,
nn
:=
ConvertJson
(
field
.
Children
)
if
len
(
nn
)
!=
0
{
n
=
append
(
n
,
nn
)
}
else
{
n
=
append
(
n
,
mm
)
}
}
else
{
mm
,
nn
:=
ConvertJson
(
field
.
Children
)
if
len
(
nn
)
!=
0
{
m
[
field
.
Name
]
=
nn
}
else
{
m
[
field
.
Name
]
=
mm
}
}
}
else
if
field
.
Selected
==
1
&&
field
.
Type
==
"array"
{
if
len
(
field
.
Children
)
>
0
{
//判断第一个元素是否为对象 如果为对象则名称必定为空
//第一个元素 要么为对象,要么为基本类型 要么为数组
if
field
.
Children
[
0
]
.
Type
==
"object"
||
field
.
Children
[
0
]
.
Type
==
"array"
{
mm
,
nn
:=
ConvertJson
(
field
.
Children
[
0
]
.
Children
)
if
field
.
Name
==
""
{
if
len
(
nn
)
!=
0
{
n
=
append
(
n
,
nn
)
}
else
{
n
=
append
(
n
,
mm
)
}
}
else
{
if
len
(
nn
)
!=
0
{
m
[
field
.
Name
]
=
nn
}
else
{
m
[
field
.
Name
]
=
mm
}
}
}
else
{
if
field
.
Name
!=
""
{
var
aaa
[]
interface
{}
m
[
field
.
Name
]
=
aaa
}
else
{
if
len
(
field
.
Children
)
>
0
{
switch
field
.
Children
[
0
]
.
Type
{
case
"string"
,
"text"
,
"file"
:
n
=
append
(
n
,
field
.
Children
[
0
]
.
Example
)
case
"int"
:
n
=
append
(
n
,
tools
.
ParseInt
(
field
.
Children
[
0
]
.
Example
,
0
))
case
"float"
:
n
=
append
(
n
,
tools
.
ParseFloat64
(
field
.
Children
[
0
]
.
Example
,
1.00
))
case
"boolean"
:
n
=
append
(
n
,
true
)
case
"array"
:
n
=
append
(
n
,
[]
interface
{}{
field
.
Children
[
0
]
.
Example
})
default
:
var
cc
interface
{}
n
=
append
(
n
,
cc
)
}
}
else
{
var
cc
interface
{}
n
=
append
(
n
,
cc
)
}
}
}
}
else
{
if
field
.
Name
!=
""
{
m
[
field
.
Name
]
=
[]
interface
{}{
field
.
Example
}
}
else
{
var
cc
interface
{}
n
=
append
(
n
,
cc
)
}
}
}
else
if
field
.
Selected
==
1
{
m
[
field
.
Name
]
=
field
.
Example
}
}
return
m
,
n
}
//字段结构 转json
func
ConvertJsonAll
(
fields
[]
request
.
ServiceField
)
(
map
[
string
]
interface
{},
[]
interface
{})
{
m
:=
map
[
string
]
interface
{}{}
var
n
[]
interface
{}
if
fields
==
nil
{
return
m
,
n
}
for
_
,
field
:=
range
fields
{
if
field
.
Type
==
"object"
{
if
field
.
Name
==
""
{
mm
,
nn
:=
ConvertJsonAll
(
field
.
Children
)
if
len
(
nn
)
!=
0
{
n
=
append
(
n
,
nn
)
}
else
{
n
=
append
(
n
,
mm
)
}
}
else
{
mm
,
nn
:=
ConvertJsonAll
(
field
.
Children
)
if
len
(
nn
)
!=
0
{
m
[
field
.
Name
]
=
nn
}
else
{
m
[
field
.
Name
]
=
mm
}
}
}
else
if
field
.
Type
==
"array"
{
if
len
(
field
.
Children
)
>
0
{
//判断第一个元素是否为对象 如果为对象则名称必定为空
//第一个元素 要么为对象,要么为基本类型 要么为数组
if
field
.
Children
[
0
]
.
Type
==
"object"
||
field
.
Children
[
0
]
.
Type
==
"array"
{
mm
,
nn
:=
ConvertJsonAll
(
field
.
Children
[
0
]
.
Children
)
if
field
.
Name
==
""
{
if
len
(
nn
)
!=
0
{
n
=
append
(
n
,
nn
)
}
else
{
n
=
append
(
n
,
mm
)
}
}
else
{
if
len
(
nn
)
!=
0
{
m
[
field
.
Name
]
=
nn
}
else
{
m
[
field
.
Name
]
=
mm
}
}
}
else
{
if
field
.
Name
!=
""
{
var
aaa
[]
interface
{}
m
[
field
.
Name
]
=
aaa
}
else
{
if
len
(
field
.
Children
)
>
0
{
switch
field
.
Children
[
0
]
.
Type
{
case
"string"
,
"text"
,
"file"
:
n
=
append
(
n
,
field
.
Children
[
0
]
.
Example
)
case
"int"
:
n
=
append
(
n
,
tools
.
ParseInt
(
field
.
Children
[
0
]
.
Example
,
0
))
case
"float"
:
n
=
append
(
n
,
tools
.
ParseFloat64
(
field
.
Children
[
0
]
.
Example
,
1.00
))
case
"boolean"
:
n
=
append
(
n
,
true
)
case
"array"
:
n
=
append
(
n
,
[]
interface
{}{
field
.
Children
[
0
]
.
Example
})
default
:
var
cc
interface
{}
n
=
append
(
n
,
cc
)
}
}
else
{
var
cc
interface
{}
n
=
append
(
n
,
cc
)
}
}
}
}
else
{
if
field
.
Name
!=
""
{
m
[
field
.
Name
]
=
[]
interface
{}{
field
.
Example
}
}
else
{
var
cc
interface
{}
n
=
append
(
n
,
cc
)
}
}
}
else
if
field
.
Type
==
"string"
||
field
.
Type
==
"file"
{
m
[
field
.
Name
]
=
field
.
Example
}
else
if
field
.
Type
==
"int"
{
m
[
field
.
Name
]
=
tools
.
ParseInt
(
field
.
Example
,
0
)
}
else
if
field
.
Type
==
"float"
{
m
[
field
.
Name
]
=
tools
.
ParseFloat64
(
field
.
Example
,
0.0
)
}
else
if
field
.
Type
==
"bool"
{
m
[
field
.
Name
]
=
true
}
}
return
m
,
n
}
func
GetResponseField
(
jsonstr
string
)
[]
request
.
ServiceField
{
var
res
[]
request
.
ServiceField
if
err
:=
json
.
Unmarshal
([]
byte
(
jsonstr
),
&
res
);
err
!=
nil
{
logger
.
Logger
.
Fatal
(
err
)
}
return
res
}
src/tools/public.go
0 → 100644
View file @
2c8f8424
package
tools
import
(
"bytes"
"crypto/md5"
"encoding/json"
"fmt"
"github.com/Chain-Zhang/pinyin"
"github.com/gin-gonic/gin"
"gitlab.wodcloud.com/apaas/apaas-meshproxy/src/config"
"gitlab.wodcloud.com/apaas/apaas-meshproxy/src/model/tables"
"io"
"strconv"
"strings"
"time"
)
// , http请求
//func ProxySend(sendType string, url string, body string, header map[string]string) (result *http.Response, err error) {
// if err != nil {
// return result, err
// }
// client := &http.Client{}
// var reqest *http.Request
// if sendType == "GET" || sendType == "DELETE" {
// reqest, _ = http.NewRequest(sendType, url, nil)
// } else if sendType == "POST" || sendType == "PUT" {
// reqest, _ = http.NewRequest(sendType, url, strings.NewReader(body))
// }
// if header == nil {
// header = make(map[string]string)
// }
// header["Accept"] = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
// header["Accept-Language"] = "ja,zh-CN;q=0.8,zh;q=0.6"
// header["Connection"] = "keep-alive"
// for k, v := range header {
// reqest.Header.Set(k, v)
// }
// response, errc := client.Do(reqest)
// return response, errc
// //fmt.Println("StatusCode:", response.StatusCode)
// //fmt.Println(response.Request.URL)
// //if errc != nil {
// // return nil, errc
// //} else {
// // defer response.Body.Close()
// // body, erra := ioutil.ReadAll(response.Body)
// // return body, erra
// //}
//}
//ProxySend , http请求
//func ProxySendRes(sendType string, url string, body string, header map[string]string) (result []byte, err error) {
// if err != nil {
// return result, err
// }
// client := &http.Client{}
// var reqest *http.Request
// if sendType == "GET" || sendType == "DELETE" {
// reqest, _ = http.NewRequest(sendType, url, nil)
// } else if sendType == "POST" || sendType == "PUT" {
// reqest, _ = http.NewRequest(sendType, url, strings.NewReader(body))
// }
// if header == nil {
// header = make(map[string]string)
// }
// header["Accept"] = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
// header["Accept-Language"] = "ja,zh-CN;q=0.8,zh;q=0.6"
// header["Connection"] = "keep-alive"
// for k, v := range header {
// reqest.Header.Set(k, v)
// }
// response, errc := client.Do(reqest)
// if errc != nil {
// return nil, errc
// } else {
// defer response.Body.Close()
// body, erra := ioutil.ReadAll(response.Body)
// if response.StatusCode >= 400 {
// err = errors.New(string(body))
// return
// }
// return body, erra
// }
//}
//GetCookieStr , 获取cookie字符串
//func GetCookieStr(req *http.Request) (str string, err error) {
// cookies := req.Cookies()
// for _, v := range cookies {
// str += v.Name + "=" + v.Value + ";"
// }
// return str, nil
//}
/**
GB单位转换
*/
func
Sizeformat
(
bytesize
float64
)
(
float64
,
string
)
{
arr
:=
[]
string
{
"Bytes"
,
"KiB"
,
"MiB"
,
"GiB"
,
"TiB"
}
i
:=
0
for
bytesize
>=
1024
{
bytesize
=
bytesize
/
1024
i
++
}
return
bytesize
,
arr
[
i
]
}
func
FormatBytes
(
data
string
)
(
res
int
)
{
arr
:=
[]
string
{
"T"
,
"G"
,
"M"
,
"K"
,
"Byte"
}
var
flag
bool
for
_
,
v
:=
range
arr
{
if
strings
.
Contains
(
data
,
v
)
{
flag
=
true
res
,
_
=
strconv
.
Atoi
(
strings
.
Split
(
data
,
v
)[
0
])
continue
}
if
flag
{
fmt
.
Println
(
"========="
)
res
=
res
*
1024
}
}
return
}
// float 保留两位小数
func
FloatSave2
(
value
float64
)
float64
{
value
,
_
=
strconv
.
ParseFloat
(
fmt
.
Sprintf
(
"%.2f"
,
value
),
64
)
return
value
}
func
HasValue
(
arr
[]
string
,
str
string
)
bool
{
for
_
,
v
:=
range
arr
{
if
v
==
str
{
return
true
}
}
return
false
}
// 生成流水号
func
CreateLsh
(
name
string
,
t
string
)
string
{
// namespace-unix-class
// 6位随机数 fmt.Sprintf("%06v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(1000000))
lsh
:=
fmt
.
Sprintf
(
"%s-%s-%s"
,
name
,
time
.
Now
()
.
Format
(
config
.
TIME_FORMAT_TWO
),
t
)
return
lsh
}
func
Md5Pwd
(
str
string
)
string
{
w
:=
md5
.
New
()
io
.
WriteString
(
w
,
str
)
md5str
:=
fmt
.
Sprintf
(
"%x"
,
w
.
Sum
(
nil
))
return
md5str
}
func
PyFirst
(
py
string
)
string
{
if
py
==
""
{
return
""
}
py
,
_
=
pinyin
.
New
(
py
)
.
Mode
(
pinyin
.
InitialsInCapitals
)
.
Split
(
""
)
.
Convert
()
return
strings
.
ToUpper
(
string
([]
rune
(
py
)[
0
]))
}
//获取上下文用户信息
func
GetContextUser
(
c
*
gin
.
Context
)
*
tables
.
User
{
if
value
,
exists
:=
c
.
Get
(
"user_info"
);
exists
{
if
user
,
ok
:=
value
.
(
tables
.
User
);
ok
{
return
&
user
}
}
return
nil
}
//获取上线文header信息
func
GetContextHeader
(
c
*
gin
.
Context
)
map
[
string
]
string
{
if
value
,
exists
:=
c
.
Get
(
"header"
);
exists
{
if
header
,
ok
:=
value
.
(
map
[
string
]
string
);
ok
{
return
header
}
}
return
nil
}
//获取上线文 COOKIE_APAAS_NAME 内容
func
GetContextApaasToken
(
c
*
gin
.
Context
)
string
{
if
value
,
exists
:=
c
.
Get
(
config
.
COOKIE_APAAS_NAME
);
exists
{
if
apaasToken
,
ok
:=
value
.
(
string
);
ok
{
return
apaasToken
}
}
return
""
}
func
ParseInt
(
val
string
,
defaultVal
int
)
int
{
if
v
,
err
:=
strconv
.
Atoi
(
val
);
err
!=
nil
{
return
defaultVal
}
else
{
return
v
}
}
func
ParseInt64
(
val
string
,
defaultVal
int64
)
int64
{
if
v
,
err
:=
strconv
.
ParseInt
(
val
,
10
,
64
);
err
!=
nil
{
return
defaultVal
}
else
{
return
v
}
}
func
ParseFloat64
(
val
string
,
defaultVal
float64
)
float64
{
if
float
,
err
:=
strconv
.
ParseFloat
(
val
,
64
);
err
!=
nil
{
return
defaultVal
}
else
{
return
float
}
}
//格式化打印json
func
FormatPrintJson
(
name
string
,
jsons
[]
byte
)
{
var
str
bytes
.
Buffer
_
=
json
.
Indent
(
&
str
,
jsons
,
""
,
" "
)
fmt
.
Println
(
"
\n\n\n
======="
,
name
,
"=========
\n\n\n
"
,
str
.
String
())
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment