完成基地概况部分
This commit is contained in:
6
server/.idea/data_source_mapping.xml
generated
6
server/.idea/data_source_mapping.xml
generated
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<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" />
|
||||
</component>
|
||||
</project>
|
||||
@@ -4,11 +4,14 @@
|
||||
package baseOverview
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
|
||||
"github.com/JACKYMYPERSON/hldrCenter/config"
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/logic/baseOverview"
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/model"
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/types"
|
||||
"github.com/zeromicro/go-zero/core/stores/sqlx"
|
||||
"github.com/zeromicro/go-zero/rest/httpx"
|
||||
)
|
||||
|
||||
@@ -20,7 +23,23 @@ func GetBaseOverviewHandler(cfg *config.Config) http.HandlerFunc {
|
||||
return
|
||||
}
|
||||
|
||||
l := baseOverview.NewGetBaseOverviewLogic(r.Context(), cfg)
|
||||
mysqlCfg := cfg.MySQL
|
||||
dsn := fmt.Sprintf(
|
||||
"%s:%s@tcp(%s:%d)/%s?charset=%s&parseTime=true&loc=Local",
|
||||
mysqlCfg.Username,
|
||||
mysqlCfg.Password,
|
||||
mysqlCfg.Host,
|
||||
mysqlCfg.Port,
|
||||
mysqlCfg.Database,
|
||||
mysqlCfg.Charset,
|
||||
)
|
||||
fmt.Println("接收到articlePost请求")
|
||||
|
||||
conn := sqlx.NewSqlConn("mysql", dsn)
|
||||
|
||||
baseModel := model.NewBaseoverviewModel(conn)
|
||||
|
||||
l := baseOverview.NewGetBaseOverviewLogic(r.Context(), cfg, baseModel)
|
||||
resp, err := l.GetBaseOverview(&req)
|
||||
if err != nil {
|
||||
httpx.ErrorCtx(r.Context(), w, err)
|
||||
|
||||
@@ -4,11 +4,14 @@
|
||||
package baseOverview
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
|
||||
"github.com/JACKYMYPERSON/hldrCenter/config"
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/logic/baseOverview"
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/model"
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/types"
|
||||
"github.com/zeromicro/go-zero/core/stores/sqlx"
|
||||
"github.com/zeromicro/go-zero/rest/httpx"
|
||||
)
|
||||
|
||||
@@ -20,7 +23,22 @@ func UpdateBaseOverviewPartialHandler(cfg *config.Config) http.HandlerFunc {
|
||||
return
|
||||
}
|
||||
|
||||
l := baseOverview.NewUpdateBaseOverviewPartialLogic(r.Context(), cfg)
|
||||
mysqlCfg := cfg.MySQL
|
||||
dsn := fmt.Sprintf(
|
||||
"%s:%s@tcp(%s:%d)/%s?charset=%s&parseTime=true&loc=Local",
|
||||
mysqlCfg.Username,
|
||||
mysqlCfg.Password,
|
||||
mysqlCfg.Host,
|
||||
mysqlCfg.Port,
|
||||
mysqlCfg.Database,
|
||||
mysqlCfg.Charset,
|
||||
)
|
||||
fmt.Println("接收到articlePost请求")
|
||||
|
||||
conn := sqlx.NewSqlConn("mysql", dsn)
|
||||
baseModel := model.NewBaseoverviewModel(conn)
|
||||
|
||||
l := baseOverview.NewUpdateBaseOverviewPartialLogic(r.Context(), cfg, baseModel)
|
||||
resp, err := l.UpdateBaseOverviewPartial(&req)
|
||||
if err != nil {
|
||||
httpx.ErrorCtx(r.Context(), w, err)
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
// 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)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,31 +0,0 @@
|
||||
// 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)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,7 @@ import (
|
||||
"context"
|
||||
|
||||
"github.com/JACKYMYPERSON/hldrCenter/config"
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/model"
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/types"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
@@ -14,20 +15,44 @@ import (
|
||||
|
||||
type GetBaseOverviewLogic struct {
|
||||
logx.Logger
|
||||
ctx context.Context
|
||||
cfg *config.Config
|
||||
ctx context.Context
|
||||
cfg *config.Config
|
||||
model model.BaseoverviewModel
|
||||
}
|
||||
|
||||
func NewGetBaseOverviewLogic(ctx context.Context, cfg *config.Config) *GetBaseOverviewLogic {
|
||||
func NewGetBaseOverviewLogic(ctx context.Context, cfg *config.Config, model model.BaseoverviewModel) *GetBaseOverviewLogic {
|
||||
return &GetBaseOverviewLogic{
|
||||
Logger: logx.WithContext(ctx),
|
||||
ctx: ctx,
|
||||
cfg: cfg,
|
||||
model: model,
|
||||
}
|
||||
}
|
||||
|
||||
func (l *GetBaseOverviewLogic) GetBaseOverview(req *types.GetBaseOverviewReq) (resp *types.GetBaseOverviewResp, err error) {
|
||||
// todo: add your logic here and delete this line
|
||||
result, err := l.model.FindOne(l.ctx, 1)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
baseOverview := types.BaseOverview{
|
||||
Id: result.Id, // 基地ID
|
||||
Introduction: result.Introduction.String,
|
||||
Regulations: result.Regulations.String,
|
||||
Address: result.Address.String,
|
||||
Phone: result.Phone.String,
|
||||
Email: result.Email.String,
|
||||
Website: result.Website.String,
|
||||
Director: result.Director.String,
|
||||
DeputyDirector: result.DeputyDirector.String,
|
||||
Researchers: result.Researchers.String,
|
||||
}
|
||||
|
||||
// 构造成功响应
|
||||
resp = &types.GetBaseOverviewResp{
|
||||
Data: baseOverview,
|
||||
Success: true, // 操作成功标识
|
||||
}
|
||||
return resp, nil
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
@@ -5,8 +5,10 @@ package baseOverview
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
|
||||
"github.com/JACKYMYPERSON/hldrCenter/config"
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/model"
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/types"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
@@ -14,20 +16,67 @@ import (
|
||||
|
||||
type UpdateBaseOverviewPartialLogic struct {
|
||||
logx.Logger
|
||||
ctx context.Context
|
||||
cfg *config.Config
|
||||
ctx context.Context
|
||||
cfg *config.Config
|
||||
model model.BaseoverviewModel
|
||||
}
|
||||
|
||||
func NewUpdateBaseOverviewPartialLogic(ctx context.Context, cfg *config.Config) *UpdateBaseOverviewPartialLogic {
|
||||
func NewUpdateBaseOverviewPartialLogic(ctx context.Context, cfg *config.Config, model model.BaseoverviewModel) *UpdateBaseOverviewPartialLogic {
|
||||
return &UpdateBaseOverviewPartialLogic{
|
||||
Logger: logx.WithContext(ctx),
|
||||
ctx: ctx,
|
||||
cfg: cfg,
|
||||
model: model,
|
||||
}
|
||||
}
|
||||
|
||||
func (l *UpdateBaseOverviewPartialLogic) UpdateBaseOverviewPartial(req *types.UpdateBaseOverviewPartialReq) (resp *types.UpdateBaseOverviewPartialResp, err error) {
|
||||
// todo: add your logic here and delete this line
|
||||
// 1. 先查询当前基地信息(根据ID)
|
||||
current, err := l.model.FindOne(l.ctx, req.Id)
|
||||
if err != nil {
|
||||
return nil, err // 查询失败(如ID不存在)返回错误
|
||||
}
|
||||
|
||||
// 2. 用请求中的非空字段更新当前数据(只更新传入了有效值的字段)
|
||||
// 注意:请求字段是 string 类型,非空字符串表示需要更新
|
||||
if req.Introduction != "" {
|
||||
current.Introduction = sql.NullString{String: req.Introduction, Valid: true}
|
||||
}
|
||||
if req.Regulations != "" {
|
||||
current.Regulations = sql.NullString{String: req.Regulations, Valid: true}
|
||||
}
|
||||
if req.Address != "" {
|
||||
current.Address = sql.NullString{String: req.Address, Valid: true}
|
||||
}
|
||||
if req.Phone != "" {
|
||||
current.Phone = sql.NullString{String: req.Phone, Valid: true}
|
||||
}
|
||||
if req.Email != "" {
|
||||
current.Email = sql.NullString{String: req.Email, Valid: true}
|
||||
}
|
||||
if req.Website != "" {
|
||||
current.Website = sql.NullString{String: req.Website, Valid: true}
|
||||
}
|
||||
if req.Director != "" {
|
||||
current.Director = sql.NullString{String: req.Director, Valid: true}
|
||||
}
|
||||
if req.DeputyDirector != "" {
|
||||
current.DeputyDirector = sql.NullString{String: req.DeputyDirector, Valid: true}
|
||||
}
|
||||
if req.Researchers != "" {
|
||||
current.Researchers = sql.NullString{String: req.Researchers, Valid: true}
|
||||
}
|
||||
|
||||
// 3. 调用模型的 Update 方法保存更新
|
||||
err = l.model.Update(l.ctx, current)
|
||||
if err != nil {
|
||||
return nil, err // 更新失败返回错误
|
||||
}
|
||||
|
||||
// 4. 构造响应
|
||||
return &types.UpdateBaseOverviewPartialResp{
|
||||
Success: true,
|
||||
Msg: "基地信息更新成功", // 可选:成功时也可省略 Msg(会被 omitempty 忽略)
|
||||
}, nil
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package router
|
||||
import (
|
||||
"github.com/JACKYMYPERSON/hldrCenter/config"
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/article/handler/article"
|
||||
"github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/handler/baseOverview"
|
||||
ping "github.com/JACKYMYPERSON/hldrCenter/internal/ping/handler/ping"
|
||||
uploadimg "github.com/JACKYMYPERSON/hldrCenter/internal/upload/handler/upload"
|
||||
"github.com/JACKYMYPERSON/hldrCenter/middleware"
|
||||
@@ -40,6 +41,14 @@ func SetupRouter(cfg *config.Config) *gin.Engine {
|
||||
// 5. 删除文章(DELETE /api/articles/:id)
|
||||
articles.DELETE("/:id", gin.WrapH(article.DeleteArticleHandler(cfg)))
|
||||
}
|
||||
|
||||
baseOverviewapi := api.Group("/base-overview") // 用资源路径区分,避免与根路径冲突
|
||||
{
|
||||
// 获取基地概况(对应 service 中的 GET /)
|
||||
baseOverviewapi.GET("", gin.WrapH(baseOverview.GetBaseOverviewHandler(cfg)))
|
||||
// 部分更新基地概况(对应 service 中的 PATCH /)
|
||||
baseOverviewapi.PATCH("", gin.WrapH(baseOverview.UpdateBaseOverviewPartialHandler(cfg)))
|
||||
}
|
||||
}
|
||||
|
||||
return r
|
||||
|
||||
Reference in New Issue
Block a user