129 lines
3.5 KiB
Go
129 lines
3.5 KiB
Go
package advice
|
|
|
|
import (
|
|
"ai_scheduler/internal/biz"
|
|
"ai_scheduler/internal/config"
|
|
errorcode "ai_scheduler/internal/data/error"
|
|
"ai_scheduler/internal/entitys"
|
|
"ai_scheduler/internal/pkg"
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
)
|
|
|
|
// ProjectService 数据处理
|
|
type ProjectService struct {
|
|
adviceProjectBiz *biz.AdviceProjectBiz
|
|
cfg *config.Config
|
|
}
|
|
|
|
// NewProjectService
|
|
func NewProjectService(
|
|
adviceProjectBiz *biz.AdviceProjectBiz,
|
|
cfg *config.Config,
|
|
) *ProjectService {
|
|
return &ProjectService{
|
|
adviceProjectBiz: adviceProjectBiz,
|
|
cfg: cfg,
|
|
}
|
|
}
|
|
|
|
func (d *ProjectService) BaseInit(c *fiber.Ctx) error {
|
|
req := &entitys.AdvicerProjectBaseAddReq{}
|
|
if err := c.BodyParser(req); err != nil {
|
|
return err
|
|
}
|
|
add, err := d.adviceProjectBiz.BaseAdd(c.UserContext(), req)
|
|
return pkg.HandleResponse(c, add, err)
|
|
}
|
|
|
|
func (d *ProjectService) BaseUpdate(c *fiber.Ctx) error {
|
|
req := &entitys.AdvicerProjectBaseUpdateReq{}
|
|
if err := c.BodyParser(req); err != nil {
|
|
return err
|
|
}
|
|
if req.ProjectId == 0 {
|
|
return errorcode.ParamErr("projectId is empty")
|
|
}
|
|
return d.adviceProjectBiz.BaseUpdate(c.UserContext(), req)
|
|
}
|
|
|
|
func (d *ProjectService) Add(c *fiber.Ctx) error {
|
|
req := &entitys.AdvicerProjectAddReq{}
|
|
if err := c.BodyParser(req); err != nil {
|
|
return err
|
|
}
|
|
id, err := d.adviceProjectBiz.Add(c.UserContext(), req)
|
|
return pkg.HandleResponse(c, id, err)
|
|
}
|
|
|
|
func (d *ProjectService) Update(c *fiber.Ctx) error {
|
|
req := &entitys.AdvicerrProjectUpdateReq{}
|
|
if err := c.BodyParser(req); err != nil {
|
|
return err
|
|
}
|
|
return d.adviceProjectBiz.Update(c.UserContext(), req)
|
|
}
|
|
|
|
func (d *ProjectService) Info(c *fiber.Ctx) error {
|
|
req := &entitys.AdvicerProjectInfoReq{}
|
|
if err := c.BodyParser(req); err != nil {
|
|
return err
|
|
}
|
|
list, err := d.adviceProjectBiz.Info(c.UserContext(), req)
|
|
return pkg.HandleResponse(c, list, err)
|
|
}
|
|
|
|
// List 项目分页列表
|
|
func (d *ProjectService) List(c *fiber.Ctx) error {
|
|
req := &entitys.AdvicerProjectListReq{}
|
|
if err := c.BodyParser(req); err != nil {
|
|
return err
|
|
}
|
|
list, total, err := d.adviceProjectBiz.List(c.UserContext(), req)
|
|
return pkg.SuccessWithPageMsg(c, list, total, req.Page, req.PageSize, err)
|
|
}
|
|
|
|
// TemplateCopy 重新复制行业模板到项目(覆盖项目模板字段)
|
|
func (d *ProjectService) TemplateCopy(c *fiber.Ctx) error {
|
|
req := &entitys.AdvicerProjectTemplateCopyReq{}
|
|
if err := c.BodyParser(req); err != nil {
|
|
return err
|
|
}
|
|
err := d.adviceProjectBiz.TemplateCopy(c.UserContext(), req)
|
|
return pkg.HandleResponse(c, nil, err)
|
|
}
|
|
|
|
// ProjectDataLoad 加载项目资料(新表)
|
|
func (d *ProjectService) ProjectDataLoad(c *fiber.Ctx) error {
|
|
req := &entitys.AdvicerProjectInfoReq{}
|
|
if err := c.BodyParser(req); err != nil {
|
|
return err
|
|
}
|
|
info, err := d.adviceProjectBiz.ProjectDataLoad(c.UserContext(), req.ProjectId)
|
|
if err != nil {
|
|
return pkg.HandleResponse(c, nil, err)
|
|
}
|
|
// 响应展平:栏目数据直接作为顶层字段
|
|
resp := map[string]interface{}{
|
|
"projectId": info.ProjectId,
|
|
"lastUpdateTime": info.LastUpdateTime,
|
|
}
|
|
for k, v := range info.Data {
|
|
resp[k] = v
|
|
}
|
|
return pkg.HandleResponse(c, resp, nil)
|
|
}
|
|
|
|
// ProjectDataSave 保存项目资料(新表)
|
|
func (d *ProjectService) ProjectDataSave(c *fiber.Ctx) error {
|
|
req := &entitys.AdvicerProjectDataSaveReq{}
|
|
if err := c.BodyParser(req); err != nil {
|
|
return err
|
|
}
|
|
if req.ProjectId == 0 {
|
|
return errorcode.ParamErr("projectId is empty")
|
|
}
|
|
err := d.adviceProjectBiz.ProjectDataSave(c.UserContext(), req)
|
|
return pkg.HandleResponse(c, nil, err)
|
|
}
|