diff --git a/server/.idea/data_source_mapping.xml b/server/.idea/data_source_mapping.xml index 91e5379e..82176b25 100644 --- a/server/.idea/data_source_mapping.xml +++ b/server/.idea/data_source_mapping.xml @@ -2,6 +2,5 @@ - \ No newline at end of file diff --git a/server/api/baseoverview.api b/server/api/baseoverview.api new file mode 100644 index 00000000..860d93cd --- /dev/null +++ b/server/api/baseoverview.api @@ -0,0 +1,53 @@ +type ( + // BaseOverview 基础结构(完全映射数据表字段) + BaseOverview { + Introduction string `json:"introduction"` // 基地简介 + Regulations string `json:"regulations"` // 规章制度 + Address string `json:"address"` // 联系地址 + Phone string `json:"phone"` // 联系电话 + Email string `json:"email"` // 联系邮箱 + Website string `json:"website"` // 官方网站 + Director string `json:"director"` // 主任姓名 + DeputyDirector string `json:"deputy_director"` // 副主任姓名 + Researchers string `json:"researchers"` // 研究人员(逗号分隔) + } + // 获取基地概况详情:请求(无参数,因只有一条核心记录) + GetBaseOverviewReq {} + // 获取基地概况详情:响应 + GetBaseOverviewResp { + Data BaseOverview `json:"data"` // 基地概况详情 + Success bool `json:"success"` // 操作是否成功 + } + // 部分更新基地概况:请求(支持按需更新部分字段) + UpdateBaseOverviewPartialReq { + Introduction string `json:"introduction,optional"` // 可选更新 + Regulations string `json:"regulations,optional"` // 可选更新 + Address string `json:"address,optional"` // 可选更新 + Phone string `json:"phone,optional"` // 可选更新 + Email string `json:"email,optional"` // 可选更新 + Website string `json:"website,optional"` // 可选更新 + Director string `json:"director,optional"` // 可选更新 + DeputyDirector string `json:"deputy_director,optional"` // 可选更新 + Researchers string `json:"researchers,optional"` // 可选更新 + } + // 部分更新基地概况:响应 + UpdateBaseOverviewPartialResp { + Success bool `json:"success"` + Msg string `json:"msg,omitempty"` + } +) + +@server ( + group: baseOverview + prefix: /api/base-overview +) +// 修改这里:将 base-overview-api 改为 base_overview_api 或 baseoverviewapi +service base_overview_api { + @handler GetBaseOverviewHandler + get / (GetBaseOverviewReq) returns (GetBaseOverviewResp) + + // 部分更新基地概况(PATCH,按需更新部分字段,更符合 REST 规范) + @handler UpdateBaseOverviewPartialHandler + patch / (UpdateBaseOverviewPartialReq) returns (UpdateBaseOverviewPartialResp) +} + diff --git a/server/internal/baseoverview/handler/baseOverview/getbaseoverviewhandler.go b/server/internal/baseoverview/handler/baseOverview/getbaseoverviewhandler.go new file mode 100644 index 00000000..8b224d39 --- /dev/null +++ b/server/internal/baseoverview/handler/baseOverview/getbaseoverviewhandler.go @@ -0,0 +1,31 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package baseOverview + +import ( + "net/http" + + "github.com/JACKYMYPERSON/hldrCenter/config" + "github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/logic/baseOverview" + "github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/types" + "github.com/zeromicro/go-zero/rest/httpx" +) + +func GetBaseOverviewHandler(cfg *config.Config) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.GetBaseOverviewReq + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := baseOverview.NewGetBaseOverviewLogic(r.Context(), cfg) + resp, err := l.GetBaseOverview(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/server/internal/baseoverview/handler/baseOverview/updatebaseoverviewpartialhandler.go b/server/internal/baseoverview/handler/baseOverview/updatebaseoverviewpartialhandler.go new file mode 100644 index 00000000..f938dec2 --- /dev/null +++ b/server/internal/baseoverview/handler/baseOverview/updatebaseoverviewpartialhandler.go @@ -0,0 +1,31 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package baseOverview + +import ( + "net/http" + + "github.com/JACKYMYPERSON/hldrCenter/config" + "github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/logic/baseOverview" + "github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/types" + "github.com/zeromicro/go-zero/rest/httpx" +) + +func UpdateBaseOverviewPartialHandler(cfg *config.Config) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.UpdateBaseOverviewPartialReq + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := baseOverview.NewUpdateBaseOverviewPartialLogic(r.Context(), cfg) + resp, err := l.UpdateBaseOverviewPartial(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/server/internal/baseoverview/internal/handler/baseOverview/getbaseoverviewhandler.go b/server/internal/baseoverview/internal/handler/baseOverview/getbaseoverviewhandler.go new file mode 100644 index 00000000..8b224d39 --- /dev/null +++ b/server/internal/baseoverview/internal/handler/baseOverview/getbaseoverviewhandler.go @@ -0,0 +1,31 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package baseOverview + +import ( + "net/http" + + "github.com/JACKYMYPERSON/hldrCenter/config" + "github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/logic/baseOverview" + "github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/types" + "github.com/zeromicro/go-zero/rest/httpx" +) + +func GetBaseOverviewHandler(cfg *config.Config) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.GetBaseOverviewReq + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := baseOverview.NewGetBaseOverviewLogic(r.Context(), cfg) + resp, err := l.GetBaseOverview(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/server/internal/baseoverview/internal/handler/baseOverview/updatebaseoverviewpartialhandler.go b/server/internal/baseoverview/internal/handler/baseOverview/updatebaseoverviewpartialhandler.go new file mode 100644 index 00000000..f938dec2 --- /dev/null +++ b/server/internal/baseoverview/internal/handler/baseOverview/updatebaseoverviewpartialhandler.go @@ -0,0 +1,31 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package baseOverview + +import ( + "net/http" + + "github.com/JACKYMYPERSON/hldrCenter/config" + "github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/logic/baseOverview" + "github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/types" + "github.com/zeromicro/go-zero/rest/httpx" +) + +func UpdateBaseOverviewPartialHandler(cfg *config.Config) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req types.UpdateBaseOverviewPartialReq + if err := httpx.Parse(r, &req); err != nil { + httpx.ErrorCtx(r.Context(), w, err) + return + } + + l := baseOverview.NewUpdateBaseOverviewPartialLogic(r.Context(), cfg) + resp, err := l.UpdateBaseOverviewPartial(&req) + if err != nil { + httpx.ErrorCtx(r.Context(), w, err) + } else { + httpx.OkJsonCtx(r.Context(), w, resp) + } + } +} diff --git a/server/internal/baseoverview/internal/logic/baseOverview/getbaseoverviewlogic.go b/server/internal/baseoverview/internal/logic/baseOverview/getbaseoverviewlogic.go new file mode 100644 index 00000000..95dbebb1 --- /dev/null +++ b/server/internal/baseoverview/internal/logic/baseOverview/getbaseoverviewlogic.go @@ -0,0 +1,33 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package baseOverview + +import ( + "context" + + "github.com/JACKYMYPERSON/hldrCenter/config" + "github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type GetBaseOverviewLogic struct { + logx.Logger + ctx context.Context + cfg *config.Config +} + +func NewGetBaseOverviewLogic(ctx context.Context, cfg *config.Config) *GetBaseOverviewLogic { + return &GetBaseOverviewLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + cfg: cfg, + } +} + +func (l *GetBaseOverviewLogic) GetBaseOverview(req *types.GetBaseOverviewReq) (resp *types.GetBaseOverviewResp, err error) { + // todo: add your logic here and delete this line + + return +} diff --git a/server/internal/baseoverview/internal/logic/baseOverview/updatebaseoverviewpartiallogic.go b/server/internal/baseoverview/internal/logic/baseOverview/updatebaseoverviewpartiallogic.go new file mode 100644 index 00000000..a00744f1 --- /dev/null +++ b/server/internal/baseoverview/internal/logic/baseOverview/updatebaseoverviewpartiallogic.go @@ -0,0 +1,33 @@ +// Code scaffolded by goctl. Safe to edit. +// goctl 1.9.2 + +package baseOverview + +import ( + "context" + + "github.com/JACKYMYPERSON/hldrCenter/config" + "github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/types" + + "github.com/zeromicro/go-zero/core/logx" +) + +type UpdateBaseOverviewPartialLogic struct { + logx.Logger + ctx context.Context + cfg *config.Config +} + +func NewUpdateBaseOverviewPartialLogic(ctx context.Context, cfg *config.Config) *UpdateBaseOverviewPartialLogic { + return &UpdateBaseOverviewPartialLogic{ + Logger: logx.WithContext(ctx), + ctx: ctx, + cfg: cfg, + } +} + +func (l *UpdateBaseOverviewPartialLogic) UpdateBaseOverviewPartial(req *types.UpdateBaseOverviewPartialReq) (resp *types.UpdateBaseOverviewPartialResp, err error) { + // todo: add your logic here and delete this line + + return +} diff --git a/server/internal/baseoverview/internal/model/baseoverviewmodel.go b/server/internal/baseoverview/internal/model/baseoverviewmodel.go new file mode 100644 index 00000000..ef3dfede --- /dev/null +++ b/server/internal/baseoverview/internal/model/baseoverviewmodel.go @@ -0,0 +1,29 @@ +package model + +import "github.com/zeromicro/go-zero/core/stores/sqlx" + +var _ BaseoverviewModel = (*customBaseoverviewModel)(nil) + +type ( + // BaseoverviewModel is an interface to be customized, add more methods here, + // and implement the added methods in customBaseoverviewModel. + BaseoverviewModel interface { + baseoverviewModel + withSession(session sqlx.Session) BaseoverviewModel + } + + customBaseoverviewModel struct { + *defaultBaseoverviewModel + } +) + +// NewBaseoverviewModel returns a model for the database table. +func NewBaseoverviewModel(conn sqlx.SqlConn) BaseoverviewModel { + return &customBaseoverviewModel{ + defaultBaseoverviewModel: newBaseoverviewModel(conn), + } +} + +func (m *customBaseoverviewModel) withSession(session sqlx.Session) BaseoverviewModel { + return NewBaseoverviewModel(sqlx.NewSqlConnFromSession(session)) +} diff --git a/server/internal/baseoverview/internal/model/baseoverviewmodel_gen.go b/server/internal/baseoverview/internal/model/baseoverviewmodel_gen.go new file mode 100644 index 00000000..be381b95 --- /dev/null +++ b/server/internal/baseoverview/internal/model/baseoverviewmodel_gen.go @@ -0,0 +1,93 @@ +// Code generated by goctl. DO NOT EDIT. +// versions: +// goctl version: 1.9.2 + +package model + +import ( + "context" + "database/sql" + "fmt" + "strings" + + "github.com/zeromicro/go-zero/core/stores/builder" + "github.com/zeromicro/go-zero/core/stores/sqlx" + "github.com/zeromicro/go-zero/core/stringx" +) + +var ( + baseoverviewFieldNames = builder.RawFieldNames(&Baseoverview{}) + baseoverviewRows = strings.Join(baseoverviewFieldNames, ",") + baseoverviewRowsExpectAutoSet = strings.Join(stringx.Remove(baseoverviewFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), ",") + baseoverviewRowsWithPlaceHolder = strings.Join(stringx.Remove(baseoverviewFieldNames, "`id`", "`create_at`", "`create_time`", "`created_at`", "`update_at`", "`update_time`", "`updated_at`"), "=?,") + "=?" +) + +type ( + baseoverviewModel interface { + Insert(ctx context.Context, data *Baseoverview) (sql.Result, error) + FindOne(ctx context.Context, id int64) (*Baseoverview, error) + Update(ctx context.Context, data *Baseoverview) error + Delete(ctx context.Context, id int64) error + } + + defaultBaseoverviewModel struct { + conn sqlx.SqlConn + table string + } + + Baseoverview struct { + Id int64 `db:"id"` + Introduction sql.NullString `db:"introduction"` + Regulations sql.NullString `db:"regulations"` + Address sql.NullString `db:"address"` + Phone sql.NullString `db:"phone"` + Email sql.NullString `db:"email"` + Website sql.NullString `db:"website"` + Director sql.NullString `db:"director"` + DeputyDirector sql.NullString `db:"deputy_director"` + Researchers sql.NullString `db:"researchers"` + } +) + +func newBaseoverviewModel(conn sqlx.SqlConn) *defaultBaseoverviewModel { + return &defaultBaseoverviewModel{ + conn: conn, + table: "`baseoverview`", + } +} + +func (m *defaultBaseoverviewModel) Delete(ctx context.Context, id int64) error { + query := fmt.Sprintf("delete from %s where `id` = ?", m.table) + _, err := m.conn.ExecCtx(ctx, query, id) + return err +} + +func (m *defaultBaseoverviewModel) FindOne(ctx context.Context, id int64) (*Baseoverview, error) { + query := fmt.Sprintf("select %s from %s where `id` = ? limit 1", baseoverviewRows, m.table) + var resp Baseoverview + err := m.conn.QueryRowCtx(ctx, &resp, query, id) + switch err { + case nil: + return &resp, nil + case sqlx.ErrNotFound: + return nil, ErrNotFound + default: + return nil, err + } +} + +func (m *defaultBaseoverviewModel) Insert(ctx context.Context, data *Baseoverview) (sql.Result, error) { + query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, baseoverviewRowsExpectAutoSet) + ret, err := m.conn.ExecCtx(ctx, query, data.Introduction, data.Regulations, data.Address, data.Phone, data.Email, data.Website, data.Director, data.DeputyDirector, data.Researchers) + return ret, err +} + +func (m *defaultBaseoverviewModel) Update(ctx context.Context, data *Baseoverview) error { + query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, baseoverviewRowsWithPlaceHolder) + _, err := m.conn.ExecCtx(ctx, query, data.Introduction, data.Regulations, data.Address, data.Phone, data.Email, data.Website, data.Director, data.DeputyDirector, data.Researchers, data.Id) + return err +} + +func (m *defaultBaseoverviewModel) tableName() string { + return m.table +} diff --git a/server/internal/baseoverview/internal/model/vars.go b/server/internal/baseoverview/internal/model/vars.go new file mode 100644 index 00000000..69ca814e --- /dev/null +++ b/server/internal/baseoverview/internal/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/server/internal/baseoverview/internal/types/types.go b/server/internal/baseoverview/internal/types/types.go new file mode 100644 index 00000000..0756daee --- /dev/null +++ b/server/internal/baseoverview/internal/types/types.go @@ -0,0 +1,43 @@ +// Code generated by goctl. DO NOT EDIT. +// goctl 1.9.2 + +package types + +type BaseOverview struct { + Id int64 `json:"id"` + Introduction string `json:"introduction"` // 基地简介 + Regulations string `json:"regulations"` // 规章制度 + Address string `json:"address"` // 联系地址 + Phone string `json:"phone"` // 联系电话 + Email string `json:"email"` // 联系邮箱 + Website string `json:"website"` // 官方网站 + Director string `json:"director"` // 主任姓名 + DeputyDirector string `json:"deputy_director"` // 副主任姓名 + Researchers string `json:"researchers"` // 研究人员(逗号分隔) +} + +type GetBaseOverviewReq struct { +} + +type GetBaseOverviewResp struct { + Data BaseOverview `json:"data"` // 基地概况详情 + Success bool `json:"success"` // 操作是否成功 +} + +type UpdateBaseOverviewPartialReq struct { + Id int64 `json:"id"` + Introduction string `json:"introduction,optional"` // 可选更新 + Regulations string `json:"regulations,optional"` // 可选更新 + Address string `json:"address,optional"` // 可选更新 + Phone string `json:"phone,optional"` // 可选更新 + Email string `json:"email,optional"` // 可选更新 + Website string `json:"website,optional"` // 可选更新 + Director string `json:"director,optional"` // 可选更新 + DeputyDirector string `json:"deputy_director,optional"` // 可选更新 + Researchers string `json:"researchers,optional"` // 可选更新 +} + +type UpdateBaseOverviewPartialResp struct { + Success bool `json:"success"` + Msg string `json:"msg,omitempty"` +} diff --git a/server/sql/baseoverview.sql b/server/sql/baseoverview.sql new file mode 100644 index 00000000..db518aab --- /dev/null +++ b/server/sql/baseoverview.sql @@ -0,0 +1,13 @@ +CREATE TABLE baseoverview ( + id INT NOT NULL AUTO_INCREMENT, + introduction longtext, + regulations longtext, + address varchar(255), + phone varchar(20), + email varchar(100), + website varchar(100), + director varchar(255), + deputy_director varchar(255), + researchers varchar(255), + PRIMARY KEY (id) +); \ No newline at end of file