添加基地后端handler和logic
This commit is contained in:
1
server/.idea/data_source_mapping.xml
generated
1
server/.idea/data_source_mapping.xml
generated
@@ -2,6 +2,5 @@
|
||||
<project version="4">
|
||||
<component name="DataSourcePerFileMappings">
|
||||
<file url="file://$APPLICATION_CONFIG_DIR$/consoles/db/18f4a5e8-f31d-49fa-a902-41671f91f04b/console.sql" value="18f4a5e8-f31d-49fa-a902-41671f91f04b" />
|
||||
<file url="file://$APPLICATION_CONFIG_DIR$/consoles/db/18f4a5e8-f31d-49fa-a902-41671f91f04b/console_2.sql" value="18f4a5e8-f31d-49fa-a902-41671f91f04b" />
|
||||
</component>
|
||||
</project>
|
||||
53
server/api/baseoverview.api
Normal file
53
server/api/baseoverview.api
Normal file
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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))
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
5
server/internal/baseoverview/internal/model/vars.go
Normal file
5
server/internal/baseoverview/internal/model/vars.go
Normal file
@@ -0,0 +1,5 @@
|
||||
package model
|
||||
|
||||
import "github.com/zeromicro/go-zero/core/stores/sqlx"
|
||||
|
||||
var ErrNotFound = sqlx.ErrNotFound
|
||||
43
server/internal/baseoverview/internal/types/types.go
Normal file
43
server/internal/baseoverview/internal/types/types.go
Normal file
@@ -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"`
|
||||
}
|
||||
13
server/sql/baseoverview.sql
Normal file
13
server/sql/baseoverview.sql
Normal file
@@ -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)
|
||||
);
|
||||
Reference in New Issue
Block a user