diff --git a/server/api/devproject.api b/server/api/devproject.api index e69de29b..23637ff1 100644 --- a/server/api/devproject.api +++ b/server/api/devproject.api @@ -0,0 +1,50 @@ +// 数据模型定义:对应表字段结构 +type DevProject { + Id int64 `json:"id"` // 基地开放项目ID(主键) + BasicDevProjectManagementSystem string `json:"basic_dev_project_management_system"` // 基础开发项目管理制度(markdown) + BasicDevProjectInitiationResult string `json:"basic_dev_project_initiation_result"` // 基础开发项目立项结果(markdown) + BasicDevProjectMidtermInspection string `json:"basic_dev_project_midterm_inspection"` // 基础开发项目中期检查(markdown) + BasicDevProjectAchievements string `json:"basic_dev_project_achievements"` // 基础开发项目成果(markdown) +} + +// 新增/修改请求参数(ID存在则更新,不存在则新增) +type SaveDevProjectReq { + Id int64 `json:"id,omitempty"` // 可选:更新时需传入ID + BasicDevProjectManagementSystem string `json:"basic_dev_project_management_system"` // 基础开发项目管理制度 + BasicDevProjectInitiationResult string `json:"basic_dev_project_initiation_result"` // 基础开发项目立项结果 + BasicDevProjectMidtermInspection string `json:"basic_dev_project_midterm_inspection"` // 基础开发项目中期检查 + BasicDevProjectAchievements string `json:"basic_dev_project_achievements"` // 基础开发项目成果 +} + +// 新增/修改响应结果 +type SaveDevProjectResp { + Success bool `json:"success"` // 操作是否成功 + Msg string `json:"message"` // 提示信息 + Id int64 `json:"id,omitempty"` // 新增时返回生成的ID +} + +// 查询请求参数(按ID查询) +type GetDevProjectReq { + Id int64 `json:"id" form:"id" validate:"required"` // 基地开放项目ID(必传) +} + +// 查询响应结果 +type GetDevProjectResp { + DevProject DevProject `json:"dev_project"` // 项目详情 + Msg string `json:"message"` // 提示信息 +} + +@server ( + group: devproject // 接口分组:基地开放项目 + prefix: /api/devproject +) +service devproject-api { + // 新增或修改项目(POST请求,支持新增和更新) + @handler SaveDevProjectHandler + post /devproject/save (SaveDevProjectReq) returns (SaveDevProjectResp) + + // 查询项目详情(GET请求,按ID查询) + @handler GetDevProjectHandler + get /devproject/get (GetDevProjectReq) returns (GetDevProjectResp) +} + diff --git a/server/go.mod b/server/go.mod index e84343c2..6326aa2f 100644 --- a/server/go.mod +++ b/server/go.mod @@ -29,6 +29,10 @@ require ( github.com/go-sql-driver/mysql v1.9.0 // indirect github.com/goccy/go-json v0.10.5 // indirect github.com/goccy/go-yaml v1.18.0 // indirect + github.com/golang-jwt/jwt/v4 v4.5.2 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/grafana/pyroscope-go v1.2.7 // indirect + github.com/grafana/pyroscope-go/godeltaprof v0.1.9 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/compress v1.17.11 // indirect diff --git a/server/go.sum b/server/go.sum index 5804aadd..acc0b6b3 100644 --- a/server/go.sum +++ b/server/go.sum @@ -48,11 +48,17 @@ github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/goccy/go-yaml v1.18.0 h1:8W7wMFS12Pcas7KU+VVkaiCng+kG8QiFeFwzFb+rwuw= github.com/goccy/go-yaml v1.18.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= +github.com/golang-jwt/jwt/v4 v4.5.2 h1:YtQM7lnr8iZ+j5q71MGKkNw9Mn7AjHM68uc9g5fXeUI= +github.com/golang-jwt/jwt/v4 v4.5.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= 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/grafana/pyroscope-go v1.2.7 h1:VWBBlqxjyR0Cwk2W6UrE8CdcdD80GOFNutj0Kb1T8ac= +github.com/grafana/pyroscope-go v1.2.7/go.mod h1:o/bpSLiJYYP6HQtvcoVKiE9s5RiNgjYTj1DhiddP2Pc= +github.com/grafana/pyroscope-go/godeltaprof v0.1.9 h1:c1Us8i6eSmkW+Ez05d3co8kasnuOY813tbMN8i/a3Og= +github.com/grafana/pyroscope-go/godeltaprof v0.1.9/go.mod h1:2+l7K7twW49Ct4wFluZD3tZ6e0SjanjcUUBPVD/UuGU= github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0= github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k= github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542 h1:2VTzZjLZBgl62/EtslCrtky5vbi9dd7HrQPQIx6wqiw= diff --git a/server/internal/devproject/etc/devproject-api.yaml b/server/internal/devproject/etc/devproject-api.yaml new file mode 100644 index 00000000..f5648757 --- /dev/null +++ b/server/internal/devproject/etc/devproject-api.yaml @@ -0,0 +1,3 @@ +Name: devproject-api +Host: 0.0.0.0 +Port: 8888 diff --git a/server/internal/devproject/internal/config/config.go b/server/internal/devproject/internal/config/config.go new file mode 100644 index 00000000..9b36470a --- /dev/null +++ b/server/internal/devproject/internal/config/config.go @@ -0,0 +1,10 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package config + +import "github.com/zeromicro/go-zero/rest" + +type Config struct { + rest.RestConf +} diff --git a/server/internal/devproject/internal/handler/devproject/getdevprojecthandler.go b/server/internal/devproject/internal/handler/devproject/getdevprojecthandler.go new file mode 100644 index 00000000..833d9686 --- /dev/null +++ b/server/internal/devproject/internal/handler/devproject/getdevprojecthandler.go @@ -0,0 +1,31 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package devproject + +import ( + "net/http" + + "github.com/JACKYMYPERSON/hldrCenter/internal/devproject/internal/logic/devproject" + "github.com/JACKYMYPERSON/hldrCenter/internal/devproject/internal/svc" + "github.com/JACKYMYPERSON/hldrCenter/internal/devproject/internal/types" + "github.com/zeromicro/go-zero/rest/httpx" +) + +func GetDevProjectHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.GetDevProjectReq + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := devproject.NewGetDevProjectLogic(r.Context(), svcCtx) + resp, err := l.GetDevProject(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/server/internal/devproject/internal/handler/devproject/savedevprojecthandler.go b/server/internal/devproject/internal/handler/devproject/savedevprojecthandler.go new file mode 100644 index 00000000..5eb6f94c --- /dev/null +++ b/server/internal/devproject/internal/handler/devproject/savedevprojecthandler.go @@ -0,0 +1,31 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package devproject + +import ( + "net/http" + + "github.com/JACKYMYPERSON/hldrCenter/internal/devproject/internal/logic/devproject" + "github.com/JACKYMYPERSON/hldrCenter/internal/devproject/internal/svc" + "github.com/JACKYMYPERSON/hldrCenter/internal/devproject/internal/types" + "github.com/zeromicro/go-zero/rest/httpx" +) + +func SaveDevProjectHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.SaveDevProjectReq + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := devproject.NewSaveDevProjectLogic(r.Context(), svcCtx) + resp, err := l.SaveDevProject(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/server/internal/devproject/internal/handler/routes.go b/server/internal/devproject/internal/handler/routes.go new file mode 100644 index 00000000..726dcacb --- /dev/null +++ b/server/internal/devproject/internal/handler/routes.go @@ -0,0 +1,31 @@ +// Code generated by goctl. DO NOT EDIT. +// goctl 1.9.2 + +package handler + +import ( + "net/http" + + devproject "github.com/JACKYMYPERSON/hldrCenter/internal/devproject/internal/handler/devproject" + "github.com/JACKYMYPERSON/hldrCenter/internal/devproject/internal/svc" + + "github.com/zeromicro/go-zero/rest" +) + +func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) { + server.AddRoutes( + []rest.Route{ + { + Method: http.MethodGet, + Path: "/devproject/get", + Handler: devproject.GetDevProjectHandler(serverCtx), + }, + { + Method: http.MethodPost, + Path: "/devproject/save", + Handler: devproject.SaveDevProjectHandler(serverCtx), + }, + }, + rest.WithPrefix("/api/devproject"), + ) +} diff --git a/server/internal/devproject/internal/logic/devproject/getdevprojectlogic.go b/server/internal/devproject/internal/logic/devproject/getdevprojectlogic.go new file mode 100644 index 00000000..ed67ae47 --- /dev/null +++ b/server/internal/devproject/internal/logic/devproject/getdevprojectlogic.go @@ -0,0 +1,33 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package devproject + +import ( + "context" + + "github.com/JACKYMYPERSON/hldrCenter/internal/devproject/internal/svc" + "github.com/JACKYMYPERSON/hldrCenter/internal/devproject/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type GetDevProjectLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewGetDevProjectLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetDevProjectLogic { + return &GetDevProjectLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *GetDevProjectLogic) GetDevProject(req *types.GetDevProjectReq) (resp *types.GetDevProjectResp, err error) { + // todo: add your logic here and delete this line + + return +} diff --git a/server/internal/devproject/internal/logic/devproject/savedevprojectlogic.go b/server/internal/devproject/internal/logic/devproject/savedevprojectlogic.go new file mode 100644 index 00000000..da982a7a --- /dev/null +++ b/server/internal/devproject/internal/logic/devproject/savedevprojectlogic.go @@ -0,0 +1,33 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package devproject + +import ( + "context" + + "github.com/JACKYMYPERSON/hldrCenter/internal/devproject/internal/svc" + "github.com/JACKYMYPERSON/hldrCenter/internal/devproject/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type SaveDevProjectLogic struct { + logx.Logger + ctx context.Context + svcCtx *svc.ServiceContext +} + +func NewSaveDevProjectLogic(ctx context.Context, svcCtx *svc.ServiceContext) *SaveDevProjectLogic { + return &SaveDevProjectLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + svcCtx: svcCtx, + } +} + +func (l *SaveDevProjectLogic) SaveDevProject(req *types.SaveDevProjectReq) (resp *types.SaveDevProjectResp, err error) { + // todo: add your logic here and delete this line + + return +} diff --git a/server/internal/devproject/internal/svc/servicecontext.go b/server/internal/devproject/internal/svc/servicecontext.go new file mode 100644 index 00000000..19253b83 --- /dev/null +++ b/server/internal/devproject/internal/svc/servicecontext.go @@ -0,0 +1,18 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package svc + +import ( + "github.com/JACKYMYPERSON/hldrCenter/internal/devproject/internal/config" +) + +type ServiceContext struct { + Config config.Config +} + +func NewServiceContext(c config.Config) *ServiceContext { + return &ServiceContext{ + Config: c, + } +} diff --git a/server/internal/devproject/internal/types/types.go b/server/internal/devproject/internal/types/types.go new file mode 100644 index 00000000..69eed916 --- /dev/null +++ b/server/internal/devproject/internal/types/types.go @@ -0,0 +1,35 @@ +// Code generated by goctl. DO NOT EDIT. +// goctl 1.9.2 + +package types + +type DevProject struct { + Id int64 `json:"id"` // 基地开放项目ID(主键) + BasicDevProjectManagementSystem string `json:"basic_dev_project_management_system"` // 基础开发项目管理制度(markdown) + BasicDevProjectInitiationResult string `json:"basic_dev_project_initiation_result"` // 基础开发项目立项结果(markdown) + BasicDevProjectMidtermInspection string `json:"basic_dev_project_midterm_inspection"` // 基础开发项目中期检查(markdown) + BasicDevProjectAchievements string `json:"basic_dev_project_achievements"` // 基础开发项目成果(markdown) +} + +type GetDevProjectReq struct { + Id int64 `json:"id" form:"id" validate:"required"` // 基地开放项目ID(必传) +} + +type GetDevProjectResp struct { + DevProject DevProject `json:"dev_project"` // 项目详情 + Msg string `json:"message"` // 提示信息 +} + +type SaveDevProjectReq struct { + Id int64 `json:"id,omitempty"` // 可选:更新时需传入ID + BasicDevProjectManagementSystem string `json:"basic_dev_project_management_system"` // 基础开发项目管理制度 + BasicDevProjectInitiationResult string `json:"basic_dev_project_initiation_result"` // 基础开发项目立项结果 + BasicDevProjectMidtermInspection string `json:"basic_dev_project_midterm_inspection"` // 基础开发项目中期检查 + BasicDevProjectAchievements string `json:"basic_dev_project_achievements"` // 基础开发项目成果 +} + +type SaveDevProjectResp struct { + Success bool `json:"success"` // 操作是否成功 + Msg string `json:"message"` // 提示信息 + Id int64 `json:"id,omitempty"` // 新增时返回生成的ID +} diff --git a/server/sql/devproject.sql b/server/sql/devproject.sql new file mode 100644 index 00000000..e69de29b