Files
zmkgC/api/app/visual/service.go
2025-07-07 20:11:59 +08:00

97 lines
3.3 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package visual
import (
"context"
"github.com/gogf/gf/v2/frame/g"
)
// 新增形象进度
func (v Visual) CreateVisualProgress(ctx context.Context, req *CreateVisualProgressReq) (res *CreateVisualProgressRes, err error) {
res = &CreateVisualProgressRes{}
_, err = g.Model("visual_progress").Ctx(ctx).Data(g.Map{
"project_id": req.ProjectID,
"reporter_id": req.ReporterID,
"report_time": req.ReportTime,
"title": req.Title,
"progress_desc": req.ProgressDesc,
"attachment_url": req.AttachmentURL,
}).Insert()
if err != nil {
return nil, err
}
return res, nil
}
// 形象进度列表
func (v Visual) GetVisualProgress(ctx context.Context, req *ReadVisualProgressReq) (res *ReadVisualProgressRes, err error) {
res = &ReadVisualProgressRes{}
offset := (req.Page - 1) * req.PageSize
count, err := g.Model("visual_progress").Ctx(ctx).Count()
if err != nil {
return nil, err
}
err = g.Model("visual_progress").Ctx(ctx).
Fields("sys_project.id, sys_project.project_name, user.user_nickname AS reporterName, visual_progress.*").
// 连表查询项目ID、项目名称
LeftJoin("sys_project on visual_progress.project_id = sys_project.id").
LeftJoin("sys_user AS user on user.id = visual_progress.reporter_id").
Where("visual_progress.project_id = ?", req.ProjectID).
Where("visual_progress.title LIKE ?", "%"+req.Title+"%").
Offset(int(offset)).Limit(int(req.PageSize)).
Order("visual_progress.report_time DESC").
Scan(&res.ProgressList)
if err != nil {
return nil, err
}
res.Total = int64(count)
return res, nil
}
// 更新形象进度
func (v Visual) UpdateVisualProgress(ctx context.Context, req *UpdateVisualProgressReq) (res *UpdateVisualProgressRes, err error) {
res = &UpdateVisualProgressRes{}
_, err = g.Model("visual_progress").Ctx(ctx).Data(g.Map{
"project_id": req.ProjectID,
"reporter_id": req.ReporterID,
"title": req.Title,
"progress_desc": req.ProgressDesc,
"attachment_url": req.AttachmentURL,
}).Where("id", req.ID).Update()
if err != nil {
return nil, err
}
return res, nil
}
// 删除形象进度
func (v Visual) DeleteVisualProgress(ctx context.Context, req *DeleteVisualProgressReq) (res *DeleteVisualProgressRes, err error) {
res = &DeleteVisualProgressRes{}
// 删除之前调用一个方法获取当前登录用户的ID如果是自己才可以删除
_, err = g.Model("visual_progress").Ctx(ctx).Where("id", req.ID).Delete()
if err != nil {
return nil, err
}
return res, nil
}
// 根据ID查询形象进度详情
func (v Visual) GetVisualProgressDetail(ctx context.Context, req *GetVisualProgressDetailReq) (res *GetVisualProgressDetailRes, err error) {
res = &GetVisualProgressDetailRes{}
// 查询项目基本信息
err = g.Model("visual_progress").Ctx(ctx).
Fields("sys_project.id, sys_project.project_name, user.user_nickname AS reporterName, visual_progress.*").
// 连表查询项目ID、项目名称
InnerJoin("sys_project on visual_progress.project_id = sys_project.id").
// 连表查询上报人名字(暂未确定是哪张用户表,需要联查)
InnerJoin("sys_user AS user on user.id = visual_progress.reporter_id").
Where("visual_progress.id = ?", req.ID).
Scan(&res.Detail)
// 查询备注列表信息
if err != nil {
return nil, err
}
return res, nil
}