commit e42ce84f99179a501fd39412f2c4bbe680a5e1df Author: dark <255317@qq.com> Date: Thu Mar 14 00:21:04 2024 +0800 init diff --git a/apifile/teThoroughlyRegister.api b/apifile/teThoroughlyRegister.api new file mode 100644 index 0000000..74b70c0 --- /dev/null +++ b/apifile/teThoroughlyRegister.api @@ -0,0 +1,66 @@ +syntax = "v1" + +type TestRequest { + // Id string `json:"id"` + PlanId string `json:"plan_id"` + Name string `json:"name"` + Sex string `json:"sex"` + CardType string `json:"card_type"` + IdCard string `json:"id_card"` + IdCardSensitive string `json:"id_card_sensitive"` + Birthday int64 `json:"birthday"` + Nation string `json:"nation,optional"` + Country string `json:"country,optional"` + State int64 `json:"state,optional"` + RegisteredResidence string `json:"registered_residence,optional"` + DistrictCode string `json:"district_code,optional"` + District string `json:"district,optional"` + StudentType string `json:"student_type,optional"` + Address string `json:"address,optional"` + RegisteredType string `json:"registered_type,optional"` + NoHouse string `json:"no_house,optional"` + FamilyStatus string `json:"family_status,optional"` + Year int64 `json:"year,optional"` + RegisterCode string `json:"register_code,optional"` + AccountId string `json:"account_id,optional"` + HouseType string `json:"house_type,optional"` + NativePlace string `json:"native_place,optional"` + Kindergarten string `json:"kindergarten,optional"` + SchoolId string `json:"school_id,optional"` + SchoolName string `json:"school_name,optional"` + HighwayId string `json:"highway_id,,optional"` + RoadNumberId string `json:"road_number_id,optional"` + BloodType string `json:"blood_type,optional"` + OnlyChild bool `json:"only_child,optional"` + BirthPlace string `json:"birth_place,optional"` + HealthCondition string `json:"health_condition,optional"` + Speciality string `json:"speciality,optional"` + FillSource string `json:"fill_source,optional"` + AreaId string `json:"area_id,optional"` + SingleParent bool `json:"single_parent,optional"` + HighwayName string `json:"highway_name,optional"` + RoadNumberName string `json:"road_number_name,optional"` + GuardianPermit1 int64 `json:"guardian_permit1,optional"` + GuardianPermit2 int64 `json:"guardian_permit2,optional"` + IdCardFile string `json:"id_card_file,optional"` + FillPhone string `json:"fill_phone,optional"` + LocationOther bool `json:"location_other,optional"` + CityHouse bool `json:"city_house,optional"` + IsWuming bool `json:"is_wuming,optional"` +} +// 通用api返回参数 +type TestResponse { + Success bool `json:"success,default=true"` // 是否成功 + Message string `json:"message,optional"` // 消息 + Result interface{} `json:"data,optional"` // 数据 + Total int64 `json:"total,optional"` // 总数 +} +service demo-api { + @doc( + summary: "测试接口", + ) + @handler TestingHandler + post /testing (TestRequest) returns (TestResponse) + + +} diff --git a/demo.api b/demo.api new file mode 100644 index 0000000..fb0dca9 --- /dev/null +++ b/demo.api @@ -0,0 +1,39 @@ +syntax = "v1" +import "/apifile/teThoroughlyRegister.api" + +type Request { + Name string `path:"name,options=you|me"` +} + +type EsQueryName { + Name string `json:"name"` +} + +// 通用api返回参数 +type Response { + Success bool `json:"success,default=true"` // 是否成功 + Message string `json:"message,optional"` // 消息 + Result interface{} `json:"data,optional"` // 数据 + Total int64 `json:"total,optional"` // 总数 +} + +service demo-api { + @doc( + summary: "获取系统状态", + ) + @handler PingHandler + post /ping returns (Response) + + @doc( + summary: "es 压测 demo", + ) + @handler EsPressureTestHandler + post /es/pressureTest(EsQueryName) returns (Response) + @doc( + summary: "es 业务压测 demo", + + ) + @handler EsBusinessPressureTestHandler + post /es/businessPressureTest returns (Response) + +} \ No newline at end of file diff --git a/demo.exe b/demo.exe new file mode 100644 index 0000000..b601023 Binary files /dev/null and b/demo.exe differ diff --git a/demo.go b/demo.go new file mode 100644 index 0000000..b9d8791 --- /dev/null +++ b/demo.go @@ -0,0 +1,31 @@ +package main + +import ( + "flag" + "fmt" + + "demo/internal/config" + "demo/internal/handler" + "demo/internal/svc" + + "github.com/zeromicro/go-zero/core/conf" + "github.com/zeromicro/go-zero/rest" +) + +var configFile = flag.String("f", "etc/demo-api.yaml", "the config file") + +func main() { + flag.Parse() + + var c config.Config + conf.MustLoad(*configFile, &c) + + server := rest.MustNewServer(c.RestConf) + defer server.Stop() + + ctx := svc.NewServiceContext(c) + handler.RegisterHandlers(server, ctx) + + fmt.Printf("Starting server at %s:%d...\n", c.Host, c.Port) + server.Start() +} diff --git a/etc/demo-api.yaml b/etc/demo-api.yaml new file mode 100644 index 0000000..dbb2484 --- /dev/null +++ b/etc/demo-api.yaml @@ -0,0 +1,11 @@ +Name: demo-api +Host: 0.0.0.0 +Port: 8888 + +Pg: +# postgresql 连接配置 + DataSource: postgres://postgres:123456@127.0.0.1:/postgres?sslmode=disable +CacheRedis: + - Host: 127.0.0.1:6379 + # Pass: $pass + Type: node diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..480a69b --- /dev/null +++ b/go.mod @@ -0,0 +1,59 @@ +module demo + +go 1.19 + +require ( + github.com/elastic/go-elasticsearch/v7 v7.17.10 + github.com/google/uuid v1.6.0 + github.com/jinzhu/copier v0.4.0 + github.com/json-iterator/go v1.1.12 + github.com/lib/pq v1.10.9 + github.com/zeromicro/go-zero v1.6.3 +) + +require ( + github.com/beorn7/perks v1.0.1 // indirect + github.com/cenkalti/backoff/v4 v4.2.1 // indirect + github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect + github.com/fatih/color v1.16.0 // indirect + github.com/go-logr/logr v1.3.0 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-sql-driver/mysql v1.7.1 // indirect + github.com/golang-jwt/jwt/v4 v4.5.0 // indirect + github.com/golang/protobuf v1.5.3 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/openzipkin/zipkin-go v0.4.2 // indirect + github.com/pelletier/go-toml/v2 v2.1.1 // indirect + github.com/prometheus/client_golang v1.18.0 // indirect + github.com/prometheus/client_model v0.5.0 // indirect + github.com/prometheus/common v0.45.0 // indirect + github.com/prometheus/procfs v0.12.0 // indirect + github.com/redis/go-redis/v9 v9.4.0 // indirect + github.com/spaolacci/murmur3 v1.1.0 // indirect + go.opentelemetry.io/otel v1.19.0 // indirect + go.opentelemetry.io/otel/exporters/jaeger v1.17.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.19.0 // indirect + go.opentelemetry.io/otel/exporters/zipkin v1.19.0 // indirect + go.opentelemetry.io/otel/metric v1.19.0 // indirect + go.opentelemetry.io/otel/sdk v1.19.0 // indirect + go.opentelemetry.io/otel/trace v1.19.0 // indirect + go.opentelemetry.io/proto/otlp v1.0.0 // indirect + go.uber.org/automaxprocs v1.5.3 // indirect + golang.org/x/net v0.21.0 // indirect + golang.org/x/sys v0.17.0 // indirect + golang.org/x/text v0.14.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect + google.golang.org/grpc v1.62.0 // indirect + google.golang.org/protobuf v1.32.0 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..fe08a73 --- /dev/null +++ b/go.sum @@ -0,0 +1,147 @@ +github.com/DATA-DOG/go-sqlmock v1.5.2 h1:OcvFkGmslmlZibjAjaHm3L//6LiuBgolP7OputlJIzU= +github.com/alicebob/gopher-json v0.0.0-20230218143504-906a9b012302 h1:uvdUDbHQHO85qeSydJtItA4T55Pw6BtAejd0APRJOCE= +github.com/alicebob/miniredis/v2 v2.31.1 h1:7XAt0uUg3DtwEKW5ZAGa+K7FZV2DdKQo5K/6TTnfX8Y= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs= +github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA= +github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= +github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= +github.com/elastic/go-elasticsearch/v7 v7.17.10 h1:TCQ8i4PmIJuBunvBS6bwT2ybzVFxxUhhltAs3Gyu1yo= +github.com/elastic/go-elasticsearch/v7 v7.17.10/go.mod h1:OJ4wdbtDNk5g503kvlHLyErCgQwwzmDtaFC4XyOxXA4= +github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= +github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= +github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= +github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= +github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 h1:RtRsiaGvWxcwd8y3BiRZxsylPT8hLWZ5SPcfI+3IDNk= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0/go.mod h1:TzP6duP4Py2pHLVPPQp42aoYI92+PCrVotyR5e8Vqlk= +github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542 h1:2VTzZjLZBgl62/EtslCrtky5vbi9dd7HrQPQIx6wqiw= +github.com/jinzhu/copier v0.4.0 h1:w3ciUoD19shMCRargcpm0cm91ytaBhDvuRpz1ODO/U8= +github.com/jinzhu/copier v0.4.0/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= +github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= +github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/openzipkin/zipkin-go v0.4.2 h1:zjqfqHjUpPmB3c1GlCvvgsM1G4LkvqQbBDueDOCg/jA= +github.com/openzipkin/zipkin-go v0.4.2/go.mod h1:ZeVkFjuuBiSy13y8vpSDCjMi9GoI3hPpCJSBx/EYFhY= +github.com/pelletier/go-toml/v2 v2.1.1 h1:LWAJwfNvjQZCFIDKWYQaM62NcYeYViCmWIwmOStowAI= +github.com/pelletier/go-toml/v2 v2.1.1/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= +github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= +github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= +github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= +github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= +github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM= +github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY= +github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= +github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= +github.com/redis/go-redis/v9 v9.4.0 h1:Yzoz33UZw9I/mFhx4MNrB6Fk+XHO1VukNcCa1+lwyKk= +github.com/redis/go-redis/v9 v9.4.0/go.mod h1:hdY0cQFCN4fnSYT6TkisLufl/4W5UIXyv0b/CLO2V2M= +github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= +github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/yuin/gopher-lua v1.1.0 h1:BojcDhfyDWgU2f2TOzYK/g5p2gxMrku8oupLDqlnSqE= +github.com/zeromicro/go-zero v1.6.3 h1:OL0NnHD5LdRNDolfcK9vUkJt7K8TcBE3RkzfM8poOVw= +github.com/zeromicro/go-zero v1.6.3/go.mod h1:XZL435ZxVi9MSXXtw2MRQhHgx6OoX3++MRMOE9xU70c= +go.opentelemetry.io/otel v1.19.0 h1:MuS/TNf4/j4IXsZuJegVzI1cwut7Qc00344rgH7p8bs= +go.opentelemetry.io/otel v1.19.0/go.mod h1:i0QyjOq3UPoTzff0PJB2N66fb4S0+rSbSB15/oyH9fY= +go.opentelemetry.io/otel/exporters/jaeger v1.17.0 h1:D7UpUy2Xc2wsi1Ras6V40q806WM07rqoCWzXu7Sqy+4= +go.opentelemetry.io/otel/exporters/jaeger v1.17.0/go.mod h1:nPCqOnEH9rNLKqH/+rrUjiMzHJdV1BlpKcTwRTyKkKI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 h1:Mne5On7VWdx7omSrSSZvM4Kw7cS7NQkOOmLcgscI51U= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0/go.mod h1:IPtUMKL4O3tH5y+iXVyAXqpAwMuzC1IrxVS81rummfE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0 h1:3d+S281UTjM+AbF31XSOYn1qXn3BgIdWl8HNEpx08Jk= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0/go.mod h1:0+KuTDyKL4gjKCF75pHOX4wuzYDUZYfAQdSu43o+Z2I= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0 h1:IeMeyr1aBvBiPVYihXIaeIZba6b8E1bYp7lbdxK8CQg= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0/go.mod h1:oVdCUtjq9MK9BlS7TtucsQwUcXcymNiEDjgDD2jMtZU= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.19.0 h1:Nw7Dv4lwvGrI68+wULbcq7su9K2cebeCUrDjVrUJHxM= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.19.0/go.mod h1:1MsF6Y7gTqosgoZvHlzcaaM8DIMNZgJh87ykokoNH7Y= +go.opentelemetry.io/otel/exporters/zipkin v1.19.0 h1:EGY0h5mGliP9o/nIkVuLI0vRiQqmsYOcbwCuotksO1o= +go.opentelemetry.io/otel/exporters/zipkin v1.19.0/go.mod h1:JQgTGJP11yi3o4GHzIWYodhPisxANdqxF1eHwDSnJrI= +go.opentelemetry.io/otel/metric v1.19.0 h1:aTzpGtV0ar9wlV4Sna9sdJyII5jTVJEvKETPiOKwvpE= +go.opentelemetry.io/otel/metric v1.19.0/go.mod h1:L5rUsV9kM1IxCj1MmSdS+JQAcVm319EUrDVLrt7jqt8= +go.opentelemetry.io/otel/sdk v1.19.0 h1:6USY6zH+L8uMH8L3t1enZPR3WFEmSTADlqldyHtJi3o= +go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A= +go.opentelemetry.io/otel/trace v1.19.0 h1:DFVQmlVbfVeOuBRrwdtaehRrWiL1JoVs9CPIQ1Dzxpg= +go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo= +go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= +go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= +go.uber.org/automaxprocs v1.5.3 h1:kWazyxZUrS3Gs4qUpbwo5kEIMGe/DAvi5Z4tl2NW4j8= +go.uber.org/automaxprocs v1.5.3/go.mod h1:eRbA25aqJrxAbsLO0xy5jVwPt7FQnRgjW+efnwa1WM0= +go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= +golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ= +google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 h1:Lj5rbfG876hIAYFjqiJnPHfhXbv+nzTWfm04Fg/XSVU= +google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 h1:AjyfHzEPEFp/NpvfN5g+KDla3EMojjhRVZc1i7cj+oM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s= +google.golang.org/grpc v1.62.0 h1:HQKZ/fa1bXkX1oFOvSjmZEUL8wLSaZTjCcLAlmZRtdk= +google.golang.org/grpc v1.62.0/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= +google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/h2non/gock.v1 v1.1.2 h1:jBbHXgGBK/AoPVfJh5x4r/WxIrElvbLel8TCZkkZJoY= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= diff --git a/internal/config/config.go b/internal/config/config.go new file mode 100644 index 0000000..2a6c8df --- /dev/null +++ b/internal/config/config.go @@ -0,0 +1,15 @@ +package config + +import ( + "github.com/zeromicro/go-zero/core/stores/cache" + "github.com/zeromicro/go-zero/rest" +) + +type Config struct { + rest.RestConf + Pg struct { + DataSource string + } + + CacheRedis cache.CacheConf +} diff --git a/internal/handler/demohandler.go b/internal/handler/demohandler.go new file mode 100644 index 0000000..35b3732 --- /dev/null +++ b/internal/handler/demohandler.go @@ -0,0 +1,28 @@ +package handler + +import ( + "net/http" + + "demo/internal/logic" + "demo/internal/svc" + "demo/internal/types" + "github.com/zeromicro/go-zero/rest/httpx" +) + +func DemoHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.Request + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := logic.NewDemoLogic(r.Context(), svcCtx) + resp, err := l.Demo(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/internal/handler/esbusinesspressuretesthandler.go b/internal/handler/esbusinesspressuretesthandler.go new file mode 100644 index 0000000..c6310f6 --- /dev/null +++ b/internal/handler/esbusinesspressuretesthandler.go @@ -0,0 +1,21 @@ +package handler + +import ( + "net/http" + + "demo/internal/logic" + "demo/internal/svc" + "github.com/zeromicro/go-zero/rest/httpx" +) + +func EsBusinessPressureTestHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + l := logic.NewEsBusinessPressureTestLogic(r.Context(), svcCtx) + resp, err := l.EsBusinessPressureTest() + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/internal/handler/espressuretesthandler.go b/internal/handler/espressuretesthandler.go new file mode 100644 index 0000000..90ab6b2 --- /dev/null +++ b/internal/handler/espressuretesthandler.go @@ -0,0 +1,28 @@ +package handler + +import ( + "net/http" + + "demo/internal/logic" + "demo/internal/svc" + "demo/internal/types" + "github.com/zeromicro/go-zero/rest/httpx" +) + +func EsPressureTestHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.EsQueryName + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := logic.NewEsPressureTestLogic(r.Context(), svcCtx) + resp, err := l.EsPressureTest(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/internal/handler/pinghandler.go b/internal/handler/pinghandler.go new file mode 100644 index 0000000..b6c6016 --- /dev/null +++ b/internal/handler/pinghandler.go @@ -0,0 +1,21 @@ +package handler + +import ( + "net/http" + + "demo/internal/logic" + "demo/internal/svc" + "github.com/zeromicro/go-zero/rest/httpx" +) + +func PingHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + l := logic.NewPingLogic(r.Context(), svcCtx) + resp, err := l.Ping() + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/internal/handler/routes.go b/internal/handler/routes.go new file mode 100644 index 0000000..982603b --- /dev/null +++ b/internal/handler/routes.go @@ -0,0 +1,42 @@ +// Code generated by goctl. DO NOT EDIT. +package handler + +import ( + "net/http" + + "demo/internal/svc" + + "github.com/zeromicro/go-zero/rest" +) + +func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) { + server.AddRoutes( + []rest.Route{ + { + Method: http.MethodPost, + Path: "/ping", + Handler: PingHandler(serverCtx), + }, + { + Method: http.MethodPost, + Path: "/es/pressureTest", + Handler: EsPressureTestHandler(serverCtx), + }, + { + Method: http.MethodPost, + Path: "/es/businessPressureTest", + Handler: EsBusinessPressureTestHandler(serverCtx), + }, + }, + ) + + server.AddRoutes( + []rest.Route{ + { + Method: http.MethodPost, + Path: "/testing", + Handler: TestingHandler(serverCtx), + }, + }, + ) +} diff --git a/internal/handler/testinghandler.go b/internal/handler/testinghandler.go new file mode 100644 index 0000000..d700dee --- /dev/null +++ b/internal/handler/testinghandler.go @@ -0,0 +1,28 @@ +package handler + +import ( + "net/http" + + "demo/internal/logic" + "demo/internal/svc" + "demo/internal/types" + "github.com/zeromicro/go-zero/rest/httpx" +) + +func TestingHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.TestRequest + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := logic.NewTestingLogic(r.Context(), svcCtx) + resp, err := l.Testing(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/internal/logic/demologic.go b/internal/logic/demologic.go new file mode 100644 index 0000000..d911037 --- /dev/null +++ b/internal/logic/demologic.go @@ -0,0 +1,30 @@ +package logic + +import ( + "context" + + "demo/internal/svc" + "demo/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type DemoLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewDemoLogic(ctx context.Context, svcCtx *svc.ServiceContext) *DemoLogic { + return &DemoLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *DemoLogic) Demo(req *types.Request) (resp *types.Response, err error) { + // todo: add your logic here and delete this line + + return +} diff --git a/internal/logic/esbusinesspressuretestlogic.go b/internal/logic/esbusinesspressuretestlogic.go new file mode 100644 index 0000000..ca0bfd3 --- /dev/null +++ b/internal/logic/esbusinesspressuretestlogic.go @@ -0,0 +1,30 @@ +package logic + +import ( + "context" + + "demo/internal/svc" + "demo/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type EsBusinessPressureTestLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewEsBusinessPressureTestLogic(ctx context.Context, svcCtx *svc.ServiceContext) *EsBusinessPressureTestLogic { + return &EsBusinessPressureTestLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *EsBusinessPressureTestLogic) EsBusinessPressureTest() (resp *types.Response, err error) { + // todo: add your logic here and delete this line + + return +} diff --git a/internal/logic/espressuretestlogic.go b/internal/logic/espressuretestlogic.go new file mode 100644 index 0000000..14a8bf7 --- /dev/null +++ b/internal/logic/espressuretestlogic.go @@ -0,0 +1,54 @@ +package logic + +import ( + "context" + "fmt" + + "demo/internal/svc" + "demo/internal/types" + "demo/model/es" + + "github.com/zeromicro/go-zero/core/logx" +) + +type EsPressureTestLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewEsPressureTestLogic(ctx context.Context, svcCtx *svc.ServiceContext) *EsPressureTestLogic { + return &EsPressureTestLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *EsPressureTestLogic) EsPressureTest(req *types.EsQueryName) (resp *types.Response, err error) { + // todo: add your logic here and delete this line + // todo: add your logic here and delete this line + esQuery := ` + { + "query": { + "match_phrase": { + "districtName": "%s" + } + + } + } + ` + + esQueryStr := fmt.Sprintf(esQuery, req.Name) + doc, err := es.EsServiceApp.EsSearchDocWithStr(l.ctx, esQueryStr, 0, 100) + if err != nil { + return nil, err + } + + return &types.Response{ + Success: true, + Message: "success", + Result: doc, + }, nil + +} diff --git a/internal/logic/pinglogic.go b/internal/logic/pinglogic.go new file mode 100644 index 0000000..e97d828 --- /dev/null +++ b/internal/logic/pinglogic.go @@ -0,0 +1,32 @@ +package logic + +import ( + "context" + + "demo/internal/svc" + "demo/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type PingLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewPingLogic(ctx context.Context, svcCtx *svc.ServiceContext) *PingLogic { + return &PingLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *PingLogic) Ping() (resp *types.Response, err error) { + // todo: add your logic here and delete this line + + return &types.Response{ + Message: "Pong", + }, nil +} diff --git a/internal/logic/testinglogic.go b/internal/logic/testinglogic.go new file mode 100644 index 0000000..205af10 --- /dev/null +++ b/internal/logic/testinglogic.go @@ -0,0 +1,55 @@ +package logic + +import ( + "context" + "time" + + "demo/internal/svc" + "demo/internal/types" + teThoroughlyRegisterModel "demo/model" + + "github.com/google/uuid" + "github.com/jinzhu/copier" + "github.com/zeromicro/go-zero/core/logx" +) + +type TestingLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewTestingLogic(ctx context.Context, svcCtx *svc.ServiceContext) *TestingLogic { + return &TestingLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *TestingLogic) Testing(req *types.TestRequest) (resp *types.TestResponse, err error) { + // 拷贝赋值 + insData := new(teThoroughlyRegisterModel.TeThoroughlyRegister) + copier.Copy(insData, req) + // 额外赋值 + insData.Id = uuid.New().String() + timeUnix := time.Now() + insData.CreatedAt = timeUnix + insData.UpdatedAt = timeUnix + insData.DeleteAt = 0 + insData.CreatedBy = "admin" + insData.UpdatedBy = "admin" + + // 插入数据 + _, err = l.svcCtx.DbModel.Insert(l.ctx, insData) + if err != nil { + // 返回错误 + return nil, err + } + // 返回数据 + return &types.TestResponse{ + Message: "success", + Success: true, + Result: insData, + }, nil +} diff --git a/internal/svc/servicecontext.go b/internal/svc/servicecontext.go new file mode 100644 index 0000000..063e862 --- /dev/null +++ b/internal/svc/servicecontext.go @@ -0,0 +1,22 @@ +package svc + +import ( + "demo/internal/config" + dbModel "demo/model" + + _ "github.com/lib/pq" + "github.com/zeromicro/go-zero/core/stores/sqlx" +) + +type ServiceContext struct { + Config config.Config + DbModel dbModel.TeThoroughlyRegisterModel +} + +func NewServiceContext(c config.Config) *ServiceContext { + conn := sqlx.NewSqlConn("postgres", c.Pg.DataSource) + return &ServiceContext{ + Config: c, + DbModel: dbModel.NewTeThoroughlyRegisterModel(conn), + } +} diff --git a/internal/types/types.go b/internal/types/types.go new file mode 100644 index 0000000..7521fbe --- /dev/null +++ b/internal/types/types.go @@ -0,0 +1,72 @@ +// Code generated by goctl. DO NOT EDIT. +package types + +type Request struct { + Name string `path:"name,options=you|me"` +} + +type EsQueryName struct { + Name string `json:"name"` +} + +type Response struct { + Success bool `json:"success,default=true"` // 是否成功 + Message string `json:"message,optional"` // 消息 + Result interface{} `json:"data,optional"` // 数据 + Total int64 `json:"total,optional"` // 总数 +} + +type TestRequest struct { + PlanId string `json:"plan_id"` + Name string `json:"name"` + Sex string `json:"sex"` + CardType string `json:"card_type"` + IdCard string `json:"id_card"` + IdCardSensitive string `json:"id_card_sensitive"` + Birthday int64 `json:"birthday"` + Nation string `json:"nation,optional"` + Country string `json:"country,optional"` + State int64 `json:"state,optional"` + RegisteredResidence string `json:"registered_residence,optional"` + DistrictCode string `json:"district_code,optional"` + District string `json:"district,optional"` + StudentType string `json:"student_type,optional"` + Address string `json:"address,optional"` + RegisteredType string `json:"registered_type,optional"` + NoHouse string `json:"no_house,optional"` + FamilyStatus string `json:"family_status,optional"` + Year int64 `json:"year,optional"` + RegisterCode string `json:"register_code,optional"` + AccountId string `json:"account_id,optional"` + HouseType string `json:"house_type,optional"` + NativePlace string `json:"native_place,optional"` + Kindergarten string `json:"kindergarten,optional"` + SchoolId string `json:"school_id,optional"` + SchoolName string `json:"school_name,optional"` + HighwayId string `json:"highway_id,,optional"` + RoadNumberId string `json:"road_number_id,optional"` + BloodType string `json:"blood_type,optional"` + OnlyChild bool `json:"only_child,optional"` + BirthPlace string `json:"birth_place,optional"` + HealthCondition string `json:"health_condition,optional"` + Speciality string `json:"speciality,optional"` + FillSource string `json:"fill_source,optional"` + AreaId string `json:"area_id,optional"` + SingleParent bool `json:"single_parent,optional"` + HighwayName string `json:"highway_name,optional"` + RoadNumberName string `json:"road_number_name,optional"` + GuardianPermit1 int64 `json:"guardian_permit1,optional"` + GuardianPermit2 int64 `json:"guardian_permit2,optional"` + IdCardFile string `json:"id_card_file,optional"` + FillPhone string `json:"fill_phone,optional"` + LocationOther bool `json:"location_other,optional"` + CityHouse bool `json:"city_house,optional"` + IsWuming bool `json:"is_wuming,optional"` +} + +type TestResponse struct { + Success bool `json:"success,default=true"` // 是否成功 + Message string `json:"message,optional"` // 消息 + Result interface{} `json:"data,optional"` // 数据 + Total int64 `json:"total,optional"` // 总数 +} diff --git a/model/es/esmodel.go b/model/es/esmodel.go new file mode 100644 index 0000000..873de4b --- /dev/null +++ b/model/es/esmodel.go @@ -0,0 +1,139 @@ +package es + +import ( + "bytes" + "context" + "encoding/json" + + esclient "github.com/elastic/go-elasticsearch/v7" + jsoniter "github.com/json-iterator/go" +) + +type ( + defaultEsService interface { + EsConnect() *esclient.Client + EsCreateIndex() + EsDeleteIndex() + EsAddDoc() + EsDeleteDoc() + EsUpdateDoc() + EsSearchDoc(index string, query map[string]interface{}, from int, size int) interface{} + } + EsService struct { + } +) + +var ( + EsServiceApp = new(EsService) + logIndex = "thoroughly_districts_xw" +) + +func (e *EsService) EsConnect() *esclient.Client { + cfg := esclient.Config{ + Addresses: []string{ + "http://10.1.1.124:9200", + }, + } + es, err := esclient.NewClient(cfg) + if err != nil { + panic(err) + } + return es +} + +// 创建索引 +func (e *EsService) EsCreateIndex() { + +} + +// 删除索引 +func (e *EsService) EsDeleteIndex() { + +} + +// 添加文档 +func (e *EsService) EsAddDoc() { + +} + +// 删除文档 +func (e *EsService) EsDeleteDoc() { + +} + +// 更新文档 +func (e *EsService) EsUpdateDoc() { + +} + +// 查询文档- map[string]interface{} +func (e *EsService) EsSearchDoc(ctx context.Context, query map[string]interface{}, from int, size int) (doc interface{}, err error) { + es := e.EsConnect() + // Build the request body. + var buf bytes.Buffer + if err := json.NewEncoder(&buf).Encode(query); err != nil { + // httpresult.ErrorResult("参数解析错误", err) + return nil, err + } + // Perform the search request. + res, err := es.Search( + es.Search.WithContext(context.Background()), + es.Search.WithIndex(logIndex), + es.Search.WithBody(&buf), + es.Search.WithTrackTotalHits(true), + es.Search.WithPretty(), + es.Search.WithFrom(from), + es.Search.WithSize(size), + // es.Search.WithSort("@timestamp:desc"), + ) + + if err != nil { + // httpresult.ErrorResult("查询失败", err) + return nil, err + } + defer res.Body.Close() + result := map[string]interface{}{} + jserr := jsoniter.NewDecoder(res.Body).Decode(&result) + if jserr != nil { + + return nil, jserr + } + return result, nil +} + +// 查询文档- muti string +func (e *EsService) EsSearchDocWithStr(ctx context.Context, query string, from int, size int) (doc interface{}, err error) { + es := e.EsConnect() + // Build the request body. + // var buf bytes.Buffer + // if err := json.NewEncoder(&buf).Encode(query); err != nil { + // httpresult.ErrorResult("参数解析错误", err) + // } + // Perform the search request. + // string query to io.Reader + // query = `{"query":{"match_all":{}}}` + var buf = bytes.NewBufferString(query) + res, err := es.Search( + es.Search.WithContext(context.Background()), + es.Search.WithIndex(logIndex), + es.Search.WithBody(buf), + es.Search.WithTrackTotalHits(true), + es.Search.WithPretty(), + es.Search.WithFrom(from), + es.Search.WithSize(size), + // es.Search.WithSort("@timestamp:desc"), + ) + + if err != nil { + // httpresult.ErrorResult("查询失败", err) + return nil, err + } + defer res.Body.Close() + result := map[string]interface{}{} + jserr := jsoniter.NewDecoder(res.Body).Decode(&result) + if jserr != nil { + + return nil, jserr + } + return result, nil +} diff --git a/model/tethoroughlyregistermodel.go b/model/tethoroughlyregistermodel.go new file mode 100644 index 0000000..c5e4ace --- /dev/null +++ b/model/tethoroughlyregistermodel.go @@ -0,0 +1,24 @@ +package model + +import "github.com/zeromicro/go-zero/core/stores/sqlx" + +var _ TeThoroughlyRegisterModel = (*customTeThoroughlyRegisterModel)(nil) + +type ( + // TeThoroughlyRegisterModel is an interface to be customized, add more methods here, + // and implement the added methods in customTeThoroughlyRegisterModel. + TeThoroughlyRegisterModel interface { + teThoroughlyRegisterModel + } + + customTeThoroughlyRegisterModel struct { + *defaultTeThoroughlyRegisterModel + } +) + +// NewTeThoroughlyRegisterModel returns a model for the database table. +func NewTeThoroughlyRegisterModel(conn sqlx.SqlConn) TeThoroughlyRegisterModel { + return &customTeThoroughlyRegisterModel{ + defaultTeThoroughlyRegisterModel: newTeThoroughlyRegisterModel(conn), + } +} diff --git a/model/tethoroughlyregistermodel_gen.go b/model/tethoroughlyregistermodel_gen.go new file mode 100644 index 0000000..013ed1e --- /dev/null +++ b/model/tethoroughlyregistermodel_gen.go @@ -0,0 +1,142 @@ +// Code generated by goctl. DO NOT EDIT. + +package model + +import ( + "context" + "database/sql" + "fmt" + "strings" + "time" + + "github.com/zeromicro/go-zero/core/stores/builder" + "github.com/zeromicro/go-zero/core/stores/sqlc" + "github.com/zeromicro/go-zero/core/stores/sqlx" + "github.com/zeromicro/go-zero/core/stringx" +) + +var ( + teThoroughlyRegisterFieldNames = builder.RawFieldNames(&TeThoroughlyRegister{}, true) + teThoroughlyRegisterRows = strings.Join(teThoroughlyRegisterFieldNames, ",") + teThoroughlyRegisterRowsExpectAutoSet = strings.Join(stringx.Remove(teThoroughlyRegisterFieldNames), ",") + teThoroughlyRegisterRowsWithPlaceHolder = builder.PostgreSqlJoin(stringx.Remove(teThoroughlyRegisterFieldNames, "id")) +) + +type ( + teThoroughlyRegisterModel interface { + Insert(ctx context.Context, data *TeThoroughlyRegister) (sql.Result, error) + FindOne(ctx context.Context, id string) (*TeThoroughlyRegister, error) + Update(ctx context.Context, data *TeThoroughlyRegister) error + Delete(ctx context.Context, id string) error + } + + defaultTeThoroughlyRegisterModel struct { + conn sqlx.SqlConn + table string + } + + TeThoroughlyRegister struct { + Id string `db:"id"` + PlanId string `db:"plan_id"` + Name string `db:"name"` + Sex string `db:"sex"` + CardType string `db:"card_type"` + IdCard string `db:"id_card"` + IdCardSensitive string `db:"id_card_sensitive"` + Birthday time.Time `db:"birthday"` + Nation string `db:"nation"` + Country string `db:"country"` + State int64 `db:"state"` + RegisteredResidence string `db:"registered_residence"` + DistrictCode string `db:"district_code"` + District string `db:"district"` + StudentType string `db:"student_type"` + Address string `db:"address"` + RegisteredType string `db:"registered_type"` + NoHouse string `db:"no_house"` + FamilyStatus string `db:"family_status"` + Year int64 `db:"year"` + RegisterCode string `db:"register_code"` + CreatedBy string `db:"created_by"` + CreatedAt time.Time `db:"created_at"` + UpdatedBy string `db:"updated_by"` + UpdatedAt time.Time `db:"updated_at"` + Deleted bool `db:"deleted"` + AccountId string `db:"account_id"` + HouseType string `db:"house_type"` + NativePlace string `db:"native_place"` + Kindergarten string `db:"kindergarten"` + SchoolId string `db:"school_id"` + SchoolName string `db:"school_name"` + HighwayId string `db:"highway_id"` + RoadNumberId string `db:"road_number_id"` + BloodType string `db:"blood_type"` + OnlyChild bool `db:"only_child"` + BirthPlace string `db:"birth_place"` + HealthCondition string `db:"health_condition"` + Speciality string `db:"speciality"` + FillSource string `db:"fill_source"` + AreaId string `db:"area_id"` + SingleParent bool `db:"single_parent"` + HighwayName string `db:"highway_name"` + RoadNumberName string `db:"road_number_name"` + GuardianPermit1 int64 `db:"guardian_permit1"` + GuardianPermit2 int64 `db:"guardian_permit2"` + IdCardFile string `db:"id_card_file"` + FillPhone string `db:"fill_phone"` + LocationOther bool `db:"location_other"` + CityHouse bool `db:"city_house"` + IsWuming bool `db:"is_wuming"` + DeleteAt int64 `db:"delete_at"` + } +) + +func newTeThoroughlyRegisterModel(conn sqlx.SqlConn) *defaultTeThoroughlyRegisterModel { + return &defaultTeThoroughlyRegisterModel{ + conn: conn, + table: `"public"."te_thoroughly_register"`, + } +} + +func (m *defaultTeThoroughlyRegisterModel) withSession(session sqlx.Session) *defaultTeThoroughlyRegisterModel { + return &defaultTeThoroughlyRegisterModel{ + conn: sqlx.NewSqlConnFromSession(session), + table: `"public"."te_thoroughly_register"`, + } +} + +func (m *defaultTeThoroughlyRegisterModel) Delete(ctx context.Context, id string) error { + query := fmt.Sprintf("delete from %s where id = $1", m.table) + _, err := m.conn.ExecCtx(ctx, query, id) + return err +} + +func (m *defaultTeThoroughlyRegisterModel) FindOne(ctx context.Context, id string) (*TeThoroughlyRegister, error) { + query := fmt.Sprintf("select %s from %s where id = $1 limit 1", teThoroughlyRegisterRows, m.table) + var resp TeThoroughlyRegister + err := m.conn.QueryRowCtx(ctx, &resp, query, id) + switch err { + case nil: + return &resp, nil + case sqlc.ErrNotFound: + return nil, ErrNotFound + default: + return nil, err + } +} + +func (m *defaultTeThoroughlyRegisterModel) Insert(ctx context.Context, data *TeThoroughlyRegister) (sql.Result, error) { + query := fmt.Sprintf("insert into %s (%s) values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, $24, $25, $26, $27, $28, $29, $30, $31, $32, $33, $34, $35, $36, $37, $38, $39, $40, $41, $42, $43, $44, $45, $46, $47, $48, $49, $50, $51, $52)", m.table, teThoroughlyRegisterRowsExpectAutoSet) + ret, err := m.conn.ExecCtx(ctx, query, data.Id, data.PlanId, data.Name, data.Sex, data.CardType, data.IdCard, data.IdCardSensitive, data.Birthday, data.Nation, data.Country, data.State, data.RegisteredResidence, data.DistrictCode, data.District, data.StudentType, data.Address, data.RegisteredType, data.NoHouse, data.FamilyStatus, data.Year, data.RegisterCode, data.CreatedBy, data.CreatedAt, data.UpdatedBy, data.UpdatedAt, data.Deleted, data.AccountId, data.HouseType, data.NativePlace, data.Kindergarten, data.SchoolId, data.SchoolName, data.HighwayId, data.RoadNumberId, data.BloodType, data.OnlyChild, data.BirthPlace, data.HealthCondition, data.Speciality, data.FillSource, data.AreaId, data.SingleParent, data.HighwayName, data.RoadNumberName, data.GuardianPermit1, data.GuardianPermit2, data.IdCardFile, data.FillPhone, data.LocationOther, data.CityHouse, data.IsWuming, data.DeleteAt) + return ret, err +} + +func (m *defaultTeThoroughlyRegisterModel) Update(ctx context.Context, data *TeThoroughlyRegister) error { + query := fmt.Sprintf("update %s set %s where id = $1", m.table, teThoroughlyRegisterRowsWithPlaceHolder) + _, err := m.conn.ExecCtx(ctx, query, data.Id, data.PlanId, data.Name, data.Sex, data.CardType, data.IdCard, data.IdCardSensitive, data.Birthday, data.Nation, data.Country, data.State, data.RegisteredResidence, data.DistrictCode, data.District, data.StudentType, data.Address, data.RegisteredType, data.NoHouse, data.FamilyStatus, data.Year, data.RegisterCode, data.CreatedBy, data.CreatedAt, data.UpdatedBy, data.UpdatedAt, data.Deleted, data.AccountId, data.HouseType, data.NativePlace, data.Kindergarten, data.SchoolId, data.SchoolName, data.HighwayId, data.RoadNumberId, data.BloodType, data.OnlyChild, data.BirthPlace, data.HealthCondition, data.Speciality, data.FillSource, data.AreaId, data.SingleParent, data.HighwayName, data.RoadNumberName, data.GuardianPermit1, data.GuardianPermit2, data.IdCardFile, data.FillPhone, data.LocationOther, data.CityHouse, data.IsWuming, data.DeleteAt) + return err +} + +func (m *defaultTeThoroughlyRegisterModel) tableName() string { + return m.table +} diff --git a/model/vars.go b/model/vars.go new file mode 100644 index 0000000..69ca814 --- /dev/null +++ b/model/vars.go @@ -0,0 +1,5 @@ +package model + +import "github.com/zeromicro/go-zero/core/stores/sqlx" + +var ErrNotFound = sqlx.ErrNotFound diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..6f78b1a --- /dev/null +++ b/readme.md @@ -0,0 +1,6 @@ +# 生产model +goctl model pg datasource --url="postgres://postgres:123456@10.0.1.36:5432/postgres?sslmode=disable" --table="te_thoroughly_register" -dir ./model +# 本机 +goctl model pg datasource --url="postgres://postgres:123456@127.0.0.1:5432/postgres?sslmode=disable" --table="te_thoroughly_register" -dir ./model +# api 生成 +goctl api go -api demo.api -dir . \ No newline at end of file