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 }