Browse Source

2026-02-02 14:00

上传第一版
master
majun 3 weeks ago
commit
dae23f28eb
  1. 1
      .gitattributes
  2. 19
      .gitignore
  3. 7
      Makefile
  4. 4
      README.MD
  5. 10
      api/v1/cover.go
  6. 26
      api/v1/member.go
  7. 32
      go.mod
  8. 108
      go.sum
  9. 18
      hack/config.yaml
  10. 20
      hack/hack-cli.mk
  11. 75
      hack/hack.mk
  12. 35
      internal/cmd/cmd.go
  13. 1
      internal/consts/consts.go
  14. 36
      internal/controller/cover.go
  15. 64
      internal/controller/member.go
  16. 0
      internal/dao/.gitkeep
  17. 27
      internal/dao/cover_img.go
  18. 81
      internal/dao/internal/cover_img.go
  19. 95
      internal/dao/internal/member_info.go
  20. 27
      internal/dao/member_info.go
  21. 0
      internal/logic/.gitkeep
  22. 38
      internal/logic/cover/cover.go
  23. 11
      internal/logic/logic.go
  24. 69
      internal/logic/member/member.go
  25. 22
      internal/logic/middleware/middleware.go
  26. 0
      internal/model/.gitkeep
  27. 0
      internal/model/do/.gitkeep
  28. 20
      internal/model/do/cover_img.go
  29. 27
      internal/model/do/member_info.go
  30. 0
      internal/model/entity/.gitkeep
  31. 18
      internal/model/entity/cover_img.go
  32. 25
      internal/model/entity/member_info.go
  33. 1
      internal/packed/packed.go
  34. 0
      internal/service/.gitkeep
  35. 25
      internal/service/cover.go
  36. 30
      internal/service/member.go
  37. 31
      internal/service/middleware.go
  38. 17
      main.go
  39. 21
      manifest/deploy/kustomize/base/deployment.yaml
  40. 8
      manifest/deploy/kustomize/base/kustomization.yaml
  41. 12
      manifest/deploy/kustomize/base/service.yaml
  42. 14
      manifest/deploy/kustomize/overlays/develop/configmap.yaml
  43. 10
      manifest/deploy/kustomize/overlays/develop/deployment.yaml
  44. 14
      manifest/deploy/kustomize/overlays/develop/kustomization.yaml
  45. 16
      manifest/docker/Dockerfile
  46. 8
      manifest/docker/docker.sh
  47. 0
      manifest/i18n/.gitkeep
  48. 0
      manifest/protobuf/.keep-if-necessary
  49. 0
      resource/public/html/.gitkeep
  50. 0
      resource/public/plugin/.gitkeep
  51. 0
      resource/public/resource/css/.gitkeep
  52. 0
      resource/public/resource/image/.gitkeep
  53. 0
      resource/public/resource/js/.gitkeep
  54. 0
      resource/template/.gitkeep
  55. 0
      utility/.gitkeep
  56. 39
      utility/response/response.go

1
.gitattributes

@ -0,0 +1 @@
* linguist-language=GO

19
.gitignore

@ -0,0 +1,19 @@
.buildpath
.hgignore.swp
.project
.orig
.swp
.idea/
.settings/
.vscode/
bin/
**/.DS_Store
gf
main
main.exe
output/
manifest/output/
temp/
temp.yaml
bin
**/config/config.yaml

7
Makefile

@ -0,0 +1,7 @@
ROOT_DIR = $(shell pwd)
NAMESPACE = "default"
DEPLOY_NAME = "template-single"
DOCKER_NAME = "template-single"
include ./hack/hack-cli.mk
include ./hack/hack.mk

4
README.MD

@ -0,0 +1,4 @@
# GoFrame Template For SingleRepo
Quick Start:
- https://goframe.org/quick

10
api/v1/cover.go

@ -0,0 +1,10 @@
package v1
type GetCoverImageReq struct {
Id int `json:"id" v:"required"`
}
type UpdateCoverImageReq struct {
Id int `json:"id" v:"required"`
Url string `json:"url" v:"required"`
}

26
api/v1/member.go

@ -0,0 +1,26 @@
package v1
type InsertMemberReq struct {
Name string `json:"name" v:"required#姓名不可为空!"`
Code string `json:"code" v:"required#国家/地区代码不可为空!"`
Tel string `json:"tel" v:"required#电话号码不可为空!"`
Type int `json:"type"`
Url string `json:"url"`
WeChat string `json:"weChat" v:"required#微信ID不可为空!"`
Email string `json:"email" v:"required#邮箱号不可为空!"`
}
type GetMemberListReq struct {
Page int `p:"page" d:"1"`
PageSize int `p:"page_size" d:"20"`
}
type UpdateStateReq struct {
Id int `json:"id" v:"required"`
State int `json:"state" v:"required|integer|in:0,1"`
}
type EditNoteReq struct {
Id int `json:"id" v:"required"`
Note string `json:"note"`
}

32
go.mod

@ -0,0 +1,32 @@
module UserRegister
go 1.18
require (
github.com/gogf/gf/contrib/drivers/mysql/v2 v2.4.1
github.com/gogf/gf/v2 v2.7.1
)
require (
github.com/BurntSushi/toml v1.3.2 // indirect
github.com/clbanning/mxj/v2 v2.7.0 // indirect
github.com/fatih/color v1.16.0 // indirect
github.com/fsnotify/fsnotify v1.7.0 // indirect
github.com/go-logr/logr v1.2.3 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-sql-driver/mysql v1.6.0 // indirect
github.com/gorilla/websocket v1.5.1 // indirect
github.com/grokify/html-strip-tags-go v0.1.0 // indirect
github.com/magiconair/properties v1.8.7 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mattn/go-runewidth v0.0.9 // indirect
github.com/olekukonko/tablewriter v0.0.5 // indirect
go.opentelemetry.io/otel v1.14.0 // indirect
go.opentelemetry.io/otel/sdk v1.14.0 // indirect
go.opentelemetry.io/otel/trace v1.14.0 // indirect
golang.org/x/net v0.24.0 // indirect
golang.org/x/sys v0.19.0 // indirect
golang.org/x/text v0.14.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)

108
go.sum

@ -0,0 +1,108 @@
github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8=
github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
github.com/clbanning/mxj/v2 v2.5.5/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s=
github.com/clbanning/mxj/v2 v2.7.0 h1:WA/La7UGCanFe5NpHF0Q3DNtnCsVoxbPKuyBNHWRyME=
github.com/clbanning/mxj/v2 v2.7.0/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s=
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/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
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/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU=
github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0=
github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
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.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
github.com/gogf/gf/contrib/drivers/mysql/v2 v2.4.1 h1:ra6aO6+KUufCg9eK52oj6Q2SnCdrmkSZF9pd32EIivQ=
github.com/gogf/gf/contrib/drivers/mysql/v2 v2.4.1/go.mod h1:xubKxCvgbPt9r4yD3ecJoP3DC3sHqcJoMyS0eX837Zg=
github.com/gogf/gf/v2 v2.4.1/go.mod h1:tsbmtwcAl2chcYoq/fP9W2FZf06aw4i89X34nbSHo9Y=
github.com/gogf/gf/v2 v2.7.1 h1:Ukp7vzwh6VKnivEEx/xiMc61dL1HVZqCCHl//3GBRxc=
github.com/gogf/gf/v2 v2.7.1/go.mod h1:3oyGjyLHtSSo8kQ57Nj1TPdUNc0e2HS0A2J+KkXoW+I=
github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE=
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY=
github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY=
github.com/grokify/html-strip-tags-go v0.0.1/go.mod h1:2Su6romC5/1VXOQMaWL2yb618ARB8iVo6/DR99A6d78=
github.com/grokify/html-strip-tags-go v0.1.0 h1:03UrQLjAny8xci+R+qjCce/MYnpNXCtgzltlQbOBae4=
github.com/grokify/html-strip-tags-go v0.1.0/go.mod h1:ZdzgfHEzAfz9X6Xe5eBLVblWIxXfYSQ40S/VKrAOGpc=
github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
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.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
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/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0=
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
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/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8=
github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
go.opentelemetry.io/otel v1.7.0/go.mod h1:5BdUoMIz5WEs0vt0CUEMtSSaTSHBBVwrhnz7+nrD5xk=
go.opentelemetry.io/otel v1.14.0 h1:/79Huy8wbf5DnIPhemGB+zEPVwnN6fuQybr/SRXa6hM=
go.opentelemetry.io/otel v1.14.0/go.mod h1:o4buv+dJzx8rohcUeRmWUZhqupFvzWis188WlggnNeU=
go.opentelemetry.io/otel/sdk v1.7.0/go.mod h1:uTEOTwaqIVuTGiJN7ii13Ibp75wJmYUDe374q6cZwUU=
go.opentelemetry.io/otel/sdk v1.14.0 h1:PDCppFRDq8A1jL9v6KMI6dYesaq+DFcDZvjsoGvxGzY=
go.opentelemetry.io/otel/sdk v1.14.0/go.mod h1:bwIC5TjrNG6QDCHNWvW4HLHtUQ4I+VQDsnjhvyZCALM=
go.opentelemetry.io/otel/trace v1.7.0/go.mod h1:fzLSB9nqR2eXzxPXb2JW9IKE+ScyXA48yyE4TNvoHqU=
go.opentelemetry.io/otel/trace v1.14.0 h1:wp2Mmvj41tDsyAJXiWDWpfNsOiIyd38fy85pyKcFq/M=
go.opentelemetry.io/otel/trace v1.14.0/go.mod h1:8avnQLK+CG77yNLUae4ea2JDQ6iT+gozhnZjy/rw9G8=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w=
golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
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.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.8-0.20211105212822-18b340fc7af2/go.mod h1:EFNZuWvGYxIRUEX+K8UmCFwYmZjqcrnq15ZuVldZkZ0=
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/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/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=

18
hack/config.yaml

@ -0,0 +1,18 @@
# CLI tool, only in development environment.
# https://goframe.org/pages/viewpage.action?pageId=3673173
gfcli:
# 工具编译配置
build:
name: "UserRegister"
path: "./bin"
arch: "amd64"
system: "linux"
packSrc: "manifest/i18n"
# dao生成
gen:
dao:
- link: "mysql:hcdbqb:xrZthbSyNpcseEsN@tcp(54.255.212.181:3306)/hcdbqb"
descriptionTag: true
noModelComment: true

20
hack/hack-cli.mk

@ -0,0 +1,20 @@
# Install/Update to the latest CLI tool.
.PHONY: cli
cli:
@set -e; \
wget -O gf \
https://github.com/gogf/gf/releases/latest/download/gf_$(shell go env GOOS)_$(shell go env GOARCH) && \
chmod +x gf && \
./gf install -y && \
rm ./gf
# Check and install CLI tool.
.PHONY: cli.install
cli.install:
@set -e; \
gf -v > /dev/null 2>&1 || if [[ "$?" -ne "0" ]]; then \
echo "GoFame CLI is not installed, start proceeding auto installation..."; \
make cli; \
fi;

75
hack/hack.mk

@ -0,0 +1,75 @@
.DEFAULT_GOAL := build
# Update GoFrame and its CLI to latest stable version.
.PHONY: up
up: cli.install
@gf up -a
# Build binary using configuration from hack/config.yaml.
.PHONY: build
build: cli.install
@gf build -ew
# Parse api and generate controller/sdk.
.PHONY: ctrl
ctrl: cli.install
@gf gen ctrl
# Generate Go files for DAO/DO/Entity.
.PHONY: dao
dao: cli.install
@gf gen dao
# Parse current project go files and generate enums go file.
.PHONY: enums
enums: cli.install
@gf gen enums
# Generate Go files for Service.
.PHONY: service
service: cli.install
@gf gen service
# Build docker image.
.PHONY: image
image: cli.install
$(eval _TAG = $(shell git rev-parse --short HEAD))
ifneq (, $(shell git status --porcelain 2>/dev/null))
$(eval _TAG = $(_TAG).dirty)
endif
$(eval _TAG = $(if ${TAG}, ${TAG}, $(_TAG)))
$(eval _PUSH = $(if ${PUSH}, ${PUSH}, ))
@gf docker ${_PUSH} -tn $(DOCKER_NAME):${_TAG};
# Build docker image and automatically push to docker repo.
.PHONY: image.push
image.push: cli.install
@make image PUSH=-p;
# Deploy image and yaml to current kubectl environment.
.PHONY: deploy
deploy: cli.install
$(eval _TAG = $(if ${TAG}, ${TAG}, develop))
@set -e; \
mkdir -p $(ROOT_DIR)/temp/kustomize;\
cd $(ROOT_DIR)/manifest/deploy/kustomize/overlays/${_ENV};\
kustomize build > $(ROOT_DIR)/temp/kustomize.yaml;\
kubectl apply -f $(ROOT_DIR)/temp/kustomize.yaml; \
if [ $(DEPLOY_NAME) != "" ]; then \
kubectl patch -n $(NAMESPACE) deployment/$(DEPLOY_NAME) -p "{\"spec\":{\"template\":{\"metadata\":{\"labels\":{\"date\":\"$(shell date +%s)\"}}}}}"; \
fi;
# Parsing protobuf files and generating go files.
.PHONY: pb
pb: cli.install
@gf gen pb
# Generate protobuf files for database tables.
.PHONY: pbentity
pbentity: cli.install
@gf gen pbentity

35
internal/cmd/cmd.go

@ -0,0 +1,35 @@
package cmd
import (
"UserRegister/internal/controller"
"UserRegister/internal/service"
"context"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/ghttp"
"github.com/gogf/gf/v2/os/gcmd"
)
var (
Main = gcmd.Command{
Name: "main",
Usage: "main",
Brief: "start http server",
Func: func(ctx context.Context, parser *gcmd.Parser) (err error) {
s := g.Server()
s.Group("/api", func(group *ghttp.RouterGroup) {
group.Middleware(
service.Middleware().CORS,
)
group.POST("/member/getList", controller.Member.GetMmberList)
group.POST("/member/insert", controller.Member.InsertMember)
group.POST("/member/updateState", controller.Member.UpdateState)
group.POST("/member/editNote", controller.Member.EditNote)
group.POST("/cover/getImage", controller.Cover.GetCoverImage)
group.POST("/cover/updateImage", controller.Cover.UpdateCoverImage)
})
s.Run()
return nil
},
}
)

1
internal/consts/consts.go

@ -0,0 +1 @@
package consts

36
internal/controller/cover.go

@ -0,0 +1,36 @@
package controller
import (
v1 "UserRegister/api/v1"
"UserRegister/internal/service"
"UserRegister/utility/response"
"github.com/gogf/gf/v2/net/ghttp"
)
var Cover = cCover{}
type cCover struct{}
func (c *cCover) GetCoverImage(r *ghttp.Request) {
var req *v1.GetCoverImageReq
if err := r.Parse(&req); err != nil {
response.JsonExit(r, 400, err.Error())
}
res, err := service.Cover().GetCoverImage(req)
if err != nil {
response.JsonExit(r, 400, err.Error())
}
response.JsonExit(r, 200, "success", res)
}
func (c *cCover) UpdateCoverImage(r *ghttp.Request) {
var req *v1.UpdateCoverImageReq
if err := r.Parse(&req); err != nil {
response.JsonExit(r, 400, err.Error())
}
err := service.Cover().UpdateCoverImage(req)
if err != nil {
response.JsonExit(r, 400, err.Error())
}
response.JsonExit(r, 200, "success")
}

64
internal/controller/member.go

@ -0,0 +1,64 @@
package controller
import (
v1 "UserRegister/api/v1"
"UserRegister/internal/service"
"UserRegister/utility/response"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/ghttp"
)
var Member = cMember{}
type cMember struct{}
func (c *cMember) InsertMember(r *ghttp.Request) {
var req *v1.InsertMemberReq
if err := r.Parse(&req); err != nil {
response.JsonExit(r, 400, err.Error())
}
err := service.Member().InsertMember(req)
if err != nil {
response.JsonExit(r, 400, err.Error())
}
response.JsonExit(r, 200, "success")
}
func (c *cMember) GetMmberList(r *ghttp.Request) {
var req *v1.GetMemberListReq
if err := r.Parse(&req); err != nil {
response.JsonExit(r, 400, err.Error())
}
res, total, err := service.Member().GetMemberList(req)
if err != nil {
response.JsonExit(r, 400, err.Error())
}
response.JsonExit(r, 200, "success", g.Map{
"list": res,
"total": total,
})
}
func (c *cMember) UpdateState(r *ghttp.Request) {
var req *v1.UpdateStateReq
if err := r.Parse(&req); err != nil {
response.JsonExit(r, 400, err.Error())
}
err := service.Member().UpdateState(req)
if err != nil {
response.JsonExit(r, 400, err.Error())
}
response.JsonExit(r, 200, "success")
}
func (c *cMember) EditNote(r *ghttp.Request) {
var req *v1.EditNoteReq
if err := r.Parse(&req); err != nil {
response.JsonExit(r, 400, err.Error())
}
err := service.Member().EditNote(req)
if err != nil {
response.JsonExit(r, 400, err.Error())
}
response.JsonExit(r, 200, "success")
}

0
internal/dao/.gitkeep

27
internal/dao/cover_img.go

@ -0,0 +1,27 @@
// =================================================================================
// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish.
// =================================================================================
package dao
import (
"UserRegister/internal/dao/internal"
)
// internalCoverImgDao is internal type for wrapping internal DAO implements.
type internalCoverImgDao = *internal.CoverImgDao
// coverImgDao is the data access object for table cover_img.
// You can define custom methods on it to extend its functionality as you wish.
type coverImgDao struct {
internalCoverImgDao
}
var (
// CoverImg is globally public accessible object for table cover_img operations.
CoverImg = coverImgDao{
internal.NewCoverImgDao(),
}
)
// Fill with you ideas below.

81
internal/dao/internal/cover_img.go

@ -0,0 +1,81 @@
// ==========================================================================
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal
import (
"context"
"github.com/gogf/gf/v2/database/gdb"
"github.com/gogf/gf/v2/frame/g"
)
// CoverImgDao is the data access object for table cover_img.
type CoverImgDao struct {
table string // table is the underlying table name of the DAO.
group string // group is the database configuration group name of current DAO.
columns CoverImgColumns // columns contains all the column names of Table for convenient usage.
}
// CoverImgColumns defines and stores column names for table cover_img.
type CoverImgColumns struct {
Id string // 主键id
Name string // 图片名称
Url string // 图片链接
CreatedAt string // 添加时间
UpdatedAt string // 修改时间
}
// coverImgColumns holds the columns for table cover_img.
var coverImgColumns = CoverImgColumns{
Id: "id",
Name: "name",
Url: "url",
CreatedAt: "created_at",
UpdatedAt: "updated_at",
}
// NewCoverImgDao creates and returns a new DAO object for table data access.
func NewCoverImgDao() *CoverImgDao {
return &CoverImgDao{
group: "default",
table: "cover_img",
columns: coverImgColumns,
}
}
// DB retrieves and returns the underlying raw database management object of current DAO.
func (dao *CoverImgDao) DB() gdb.DB {
return g.DB(dao.group)
}
// Table returns the table name of current dao.
func (dao *CoverImgDao) Table() string {
return dao.table
}
// Columns returns all column names of current dao.
func (dao *CoverImgDao) Columns() CoverImgColumns {
return dao.columns
}
// Group returns the configuration group name of database of current dao.
func (dao *CoverImgDao) Group() string {
return dao.group
}
// Ctx creates and returns the Model for current DAO, It automatically sets the context for current operation.
func (dao *CoverImgDao) Ctx(ctx context.Context) *gdb.Model {
return dao.DB().Model(dao.table).Safe().Ctx(ctx)
}
// Transaction wraps the transaction logic using function f.
// It rollbacks the transaction and returns the error from function f if it returns non-nil error.
// It commits the transaction and returns nil if function f returns nil.
//
// Note that, you should not Commit or Rollback the transaction in function f
// as it is automatically handled by this function.
func (dao *CoverImgDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) {
return dao.Ctx(ctx).Transaction(ctx, f)
}

95
internal/dao/internal/member_info.go

@ -0,0 +1,95 @@
// ==========================================================================
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package internal
import (
"context"
"github.com/gogf/gf/v2/database/gdb"
"github.com/gogf/gf/v2/frame/g"
)
// MemberInfoDao is the data access object for table member_info.
type MemberInfoDao struct {
table string // table is the underlying table name of the DAO.
group string // group is the database configuration group name of current DAO.
columns MemberInfoColumns // columns contains all the column names of Table for convenient usage.
}
// MemberInfoColumns defines and stores column names for table member_info.
type MemberInfoColumns struct {
Id string // 主键id
Name string // 姓名
Code string // 国家/地区代码
Telephone string // 电话号码
Wechat string // 微信ID
Email string // 邮箱
CreatedAt string // 添加时间
Type string // 注册来源(0其他,1视频,2直播,3帖子)
Url string // 来源地址
UrlMd5 string // 来源地址(MD5加密)
IsRelated string // 是否联系
Note string // 备注
}
// memberInfoColumns holds the columns for table member_info.
var memberInfoColumns = MemberInfoColumns{
Id: "id",
Name: "name",
Code: "code",
Telephone: "telephone",
Wechat: "wechat",
Email: "email",
CreatedAt: "created_at",
Type: "type",
Url: "url",
UrlMd5: "url_md5",
IsRelated: "is_related",
Note: "note",
}
// NewMemberInfoDao creates and returns a new DAO object for table data access.
func NewMemberInfoDao() *MemberInfoDao {
return &MemberInfoDao{
group: "default",
table: "member_info",
columns: memberInfoColumns,
}
}
// DB retrieves and returns the underlying raw database management object of current DAO.
func (dao *MemberInfoDao) DB() gdb.DB {
return g.DB(dao.group)
}
// Table returns the table name of current dao.
func (dao *MemberInfoDao) Table() string {
return dao.table
}
// Columns returns all column names of current dao.
func (dao *MemberInfoDao) Columns() MemberInfoColumns {
return dao.columns
}
// Group returns the configuration group name of database of current dao.
func (dao *MemberInfoDao) Group() string {
return dao.group
}
// Ctx creates and returns the Model for current DAO, It automatically sets the context for current operation.
func (dao *MemberInfoDao) Ctx(ctx context.Context) *gdb.Model {
return dao.DB().Model(dao.table).Safe().Ctx(ctx)
}
// Transaction wraps the transaction logic using function f.
// It rollbacks the transaction and returns the error from function f if it returns non-nil error.
// It commits the transaction and returns nil if function f returns nil.
//
// Note that, you should not Commit or Rollback the transaction in function f
// as it is automatically handled by this function.
func (dao *MemberInfoDao) Transaction(ctx context.Context, f func(ctx context.Context, tx gdb.TX) error) (err error) {
return dao.Ctx(ctx).Transaction(ctx, f)
}

27
internal/dao/member_info.go

@ -0,0 +1,27 @@
// =================================================================================
// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish.
// =================================================================================
package dao
import (
"UserRegister/internal/dao/internal"
)
// internalMemberInfoDao is internal type for wrapping internal DAO implements.
type internalMemberInfoDao = *internal.MemberInfoDao
// memberInfoDao is the data access object for table member_info.
// You can define custom methods on it to extend its functionality as you wish.
type memberInfoDao struct {
internalMemberInfoDao
}
var (
// MemberInfo is globally public accessible object for table member_info operations.
MemberInfo = memberInfoDao{
internal.NewMemberInfoDao(),
}
)
// Fill with you ideas below.

0
internal/logic/.gitkeep

38
internal/logic/cover/cover.go

@ -0,0 +1,38 @@
package cover
import (
v1 "UserRegister/api/v1"
"UserRegister/internal/service"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/util/gconv"
)
type sCover struct{}
func init() {
service.RegisterCover(NewCover())
}
func NewCover() *sCover {
return &sCover{}
}
func (s *sCover) GetCoverImage(req *v1.GetCoverImageReq) (res string, err error) {
result, err := g.Model("cover_img").Fields("url").
WherePri(req.Id).Value()
if err != nil {
return
}
res = gconv.String(result)
return
}
func (s *sCover) UpdateCoverImage(req *v1.UpdateCoverImageReq) (err error) {
_, err = g.Model("cover_img").Data(g.Map{
"url": req.Url,
}).WherePri(req.Id).Update()
if err != nil {
return
}
return
}

11
internal/logic/logic.go

@ -0,0 +1,11 @@
// ==========================================================================
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// ==========================================================================
package logic
import (
_ "UserRegister/internal/logic/cover"
_ "UserRegister/internal/logic/member"
_ "UserRegister/internal/logic/middleware"
)

69
internal/logic/member/member.go

@ -0,0 +1,69 @@
package member
import (
v1 "UserRegister/api/v1"
"UserRegister/internal/model/entity"
"UserRegister/internal/service"
"crypto/md5"
"fmt"
"github.com/gogf/gf/v2/frame/g"
)
type sMember struct{}
func init() {
service.RegisterMember(NewMember())
}
func NewMember() *sMember {
return &sMember{}
}
func (s *sMember) InsertMember(req *v1.InsertMemberReq) (err error) {
_, err = g.Model("member_info").Data(g.Map{
"name": req.Name,
"code": req.Code,
"telephone": req.Tel,
"type": req.Type,
"url": req.Url,
"url_md5": fmt.Sprintf("%x", md5.Sum([]byte(req.Url))),
"wechat": req.WeChat,
"email": req.Email,
}).Insert()
if err != nil {
return
}
return
}
func (s *sMember) GetMemberList(req *v1.GetMemberListReq) (res []entity.MemberInfo, total int, err error) {
err = g.Model("member_info").OrderDesc("created_at").
Page(req.Page, req.PageSize).ScanAndCount(&res, &total, false)
if err != nil {
return
}
if len(res) == 0 {
return []entity.MemberInfo{}, 0, nil
}
return
}
func (s *sMember) UpdateState(req *v1.UpdateStateReq) (err error) {
_, err = g.Model("member_info").Data(g.Map{
"is_related": req.State,
}).WherePri(req.Id).Update()
if err != nil {
return
}
return
}
func (s *sMember) EditNote(req *v1.EditNoteReq) (err error) {
_, err = g.Model("member_info").Data(g.Map{
"note": req.Note,
}).WherePri(req.Id).Update()
if err != nil {
return
}
return
}

22
internal/logic/middleware/middleware.go

@ -0,0 +1,22 @@
package middleware
import (
"UserRegister/internal/service"
"github.com/gogf/gf/v2/net/ghttp"
)
type sMiddleware struct{}
func init() {
service.RegisterMiddleware(New())
}
func New() *sMiddleware {
return &sMiddleware{}
}
func (s *sMiddleware) CORS(r *ghttp.Request) {
r.Response.CORSDefault()
r.Middleware.Next()
}

0
internal/model/.gitkeep

0
internal/model/do/.gitkeep

20
internal/model/do/cover_img.go

@ -0,0 +1,20 @@
// =================================================================================
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// =================================================================================
package do
import (
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gtime"
)
// CoverImg is the golang structure of table cover_img for DAO operations like Where/Data.
type CoverImg struct {
g.Meta `orm:"table:cover_img, do:true"`
Id interface{} // 主键id
Name interface{} // 图片名称
Url interface{} // 图片链接
CreatedAt *gtime.Time // 添加时间
UpdatedAt *gtime.Time // 修改时间
}

27
internal/model/do/member_info.go

@ -0,0 +1,27 @@
// =================================================================================
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// =================================================================================
package do
import (
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gtime"
)
// MemberInfo is the golang structure of table member_info for DAO operations like Where/Data.
type MemberInfo struct {
g.Meta `orm:"table:member_info, do:true"`
Id interface{} // 主键id
Name interface{} // 姓名
Code interface{} // 国家/地区代码
Telephone interface{} // 电话号码
Wechat interface{} // 微信ID
Email interface{} // 邮箱
CreatedAt *gtime.Time // 添加时间
Type interface{} // 注册来源(0其他,1视频,2直播,3帖子)
Url interface{} // 来源地址
UrlMd5 interface{} // 来源地址(MD5加密)
IsRelated interface{} // 是否联系
Note interface{} // 备注
}

0
internal/model/entity/.gitkeep

18
internal/model/entity/cover_img.go

@ -0,0 +1,18 @@
// =================================================================================
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// =================================================================================
package entity
import (
"github.com/gogf/gf/v2/os/gtime"
)
// CoverImg is the golang structure for table cover_img.
type CoverImg struct {
Id int `json:"id" orm:"id" description:"主键id"`
Name string `json:"name" orm:"name" description:"图片名称"`
Url string `json:"url" orm:"url" description:"图片链接"`
CreatedAt *gtime.Time `json:"createdAt" orm:"created_at" description:"添加时间"`
UpdatedAt *gtime.Time `json:"updatedAt" orm:"updated_at" description:"修改时间"`
}

25
internal/model/entity/member_info.go

@ -0,0 +1,25 @@
// =================================================================================
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// =================================================================================
package entity
import (
"github.com/gogf/gf/v2/os/gtime"
)
// MemberInfo is the golang structure for table member_info.
type MemberInfo struct {
Id int `json:"id" orm:"id" description:"主键id"`
Name string `json:"name" orm:"name" description:"姓名"`
Code string `json:"code" orm:"code" description:"国家/地区代码"`
Telephone string `json:"telephone" orm:"telephone" description:"电话号码"`
Wechat string `json:"wechat" orm:"wechat" description:"微信ID"`
Email string `json:"email" orm:"email" description:"邮箱"`
CreatedAt *gtime.Time `json:"createdAt" orm:"created_at" description:"添加时间"`
Type int `json:"type" orm:"type" description:"注册来源(0其他,1视频,2直播,3帖子)"`
Url string `json:"url" orm:"url" description:"来源地址"`
UrlMd5 string `json:"urlMd5" orm:"url_md5" description:"来源地址(MD5加密)"`
IsRelated int `json:"isRelated" orm:"is_related" description:"是否联系"`
Note string `json:"note" orm:"note" description:"备注"`
}

1
internal/packed/packed.go

@ -0,0 +1 @@
package packed

0
internal/service/.gitkeep

25
internal/service/cover.go

@ -0,0 +1,25 @@
package service
import v1 "UserRegister/api/v1"
type (
ICover interface {
GetCoverImage(req *v1.GetCoverImageReq) (res string, err error)
UpdateCoverImage(req *v1.UpdateCoverImageReq) (err error)
}
)
var (
localCover ICover
)
func Cover() ICover {
if localCover == nil {
panic("implement not found for interface ICover, forgot register?")
}
return localCover
}
func RegisterCover(i ICover) {
localCover = i
}

30
internal/service/member.go

@ -0,0 +1,30 @@
package service
import (
v1 "UserRegister/api/v1"
"UserRegister/internal/model/entity"
)
type (
IMember interface {
InsertMember(req *v1.InsertMemberReq) (err error)
GetMemberList(req *v1.GetMemberListReq) (res []entity.MemberInfo, total int, err error)
UpdateState(req *v1.UpdateStateReq) (err error)
EditNote(req *v1.EditNoteReq) (err error)
}
)
var (
localMember IMember
)
func Member() IMember {
if localMember == nil {
panic("implement not found for interface IMember, forgot register?")
}
return localMember
}
func RegisterMember(i IMember) {
localMember = i
}

31
internal/service/middleware.go

@ -0,0 +1,31 @@
// ================================================================================
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
// You can delete these comments if you wish manually maintain this interface file.
// ================================================================================
package service
import (
"github.com/gogf/gf/v2/net/ghttp"
)
type (
IMiddleware interface {
CORS(r *ghttp.Request)
}
)
var (
localMiddleware IMiddleware
)
func Middleware() IMiddleware {
if localMiddleware == nil {
panic("implement not found for interface IMiddleware, forgot register?")
}
return localMiddleware
}
func RegisterMiddleware(i IMiddleware) {
localMiddleware = i
}

17
main.go

@ -0,0 +1,17 @@
package main
import (
_ "UserRegister/internal/packed"
_ "UserRegister/internal/logic"
_ "github.com/gogf/gf/contrib/drivers/mysql/v2"
"github.com/gogf/gf/v2/os/gctx"
"UserRegister/internal/cmd"
)
func main() {
cmd.Main.Run(gctx.GetInitCtx())
}

21
manifest/deploy/kustomize/base/deployment.yaml

@ -0,0 +1,21 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: template-single
labels:
app: template-single
spec:
replicas: 1
selector:
matchLabels:
app: template-single
template:
metadata:
labels:
app: template-single
spec:
containers:
- name : main
image: template-single
imagePullPolicy: Always

8
manifest/deploy/kustomize/base/kustomization.yaml

@ -0,0 +1,8 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- deployment.yaml
- service.yaml

12
manifest/deploy/kustomize/base/service.yaml

@ -0,0 +1,12 @@
apiVersion: v1
kind: Service
metadata:
name: template-single
spec:
ports:
- port: 80
protocol: TCP
targetPort: 8000
selector:
app: template-single

14
manifest/deploy/kustomize/overlays/develop/configmap.yaml

@ -0,0 +1,14 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: template-single-configmap
data:
config.yaml: |
server:
address: ":8000"
openapiPath: "/api.json"
swaggerPath: "/swagger"
logger:
level : "all"
stdout: true

10
manifest/deploy/kustomize/overlays/develop/deployment.yaml

@ -0,0 +1,10 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: template-single
spec:
template:
spec:
containers:
- name : main
image: template-single:develop

14
manifest/deploy/kustomize/overlays/develop/kustomization.yaml

@ -0,0 +1,14 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../base
- configmap.yaml
patchesStrategicMerge:
- deployment.yaml
namespace: default

16
manifest/docker/Dockerfile

@ -0,0 +1,16 @@
FROM loads/alpine:3.8
###############################################################################
# INSTALLATION
###############################################################################
ENV WORKDIR /app
ADD resource $WORKDIR/
ADD ./temp/linux_amd64/main $WORKDIR/main
RUN chmod +x $WORKDIR/main
###############################################################################
# START
###############################################################################
WORKDIR $WORKDIR
CMD ./main

8
manifest/docker/docker.sh

@ -0,0 +1,8 @@
#!/bin/bash
# This shell is executed before docker build.

0
manifest/i18n/.gitkeep

0
manifest/protobuf/.keep-if-necessary

0
resource/public/html/.gitkeep

0
resource/public/plugin/.gitkeep

0
resource/public/resource/css/.gitkeep

0
resource/public/resource/image/.gitkeep

0
resource/public/resource/js/.gitkeep

0
resource/template/.gitkeep

0
utility/.gitkeep

39
utility/response/response.go

@ -0,0 +1,39 @@
package response
import (
"net/http"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/ghttp"
)
// JsonRes 数据返回通用JSON数据结构
type JsonRes struct {
Code int `json:"code"` // 错误码((0:成功, 1:失败, >1:错误码))
Message string `json:"msg"` // 提示信息
Data interface{} `json:"data"` // 返回数据(业务接口定义具体数据结构)
}
// Json 返回标准JSON数据。
func Json(r *ghttp.Request, code int, message string, data ...interface{}) {
var responseData interface{}
if len(data) > 0 {
responseData = data[0]
} else {
responseData = g.Map{}
}
r.Response.WriteJson(JsonRes{
Code: code,
Message: message,
Data: responseData,
})
}
// JsonExit 返回标准JSON数据并退出当前HTTP执行函数。
func JsonExit(r *ghttp.Request, code int, message string, data ...interface{}) {
if code == http.StatusBadRequest {
g.Log().Error(r.Context(), code, message)
}
Json(r, code, message, data...)
r.Exit()
}
Loading…
Cancel
Save