package visual_remark import ( "context" "errors" "github.com/gogf/gf/v2/frame/g" "github.com/tiger1103/gfast/v3/api/v1/system" ct "github.com/tiger1103/gfast/v3/internal/app/system/logic/context" "github.com/tiger1103/gfast/v3/internal/app/system/service" ) // 列表请求 func (v VisualRemark) ListRemarks(ctx context.Context, req *ListRemarksReq) (res *ListRemarksRes, err error) { res = &ListRemarksRes{} err = g.Model("visual_progress_remark AS remark").Ctx(ctx). Fields("remark.*,visual.title AS visualProgressTitle, user.user_nickname AS Username, cuser.head_icon AS Avatar"). // 连表查询形象进度表得到形象进度标题 LeftJoin("visual_progress AS visual", "visual.id = remark.visual_progress_id"). // 连表查询评论人的名字(暂未确定是哪张用户表,需要联查) LeftJoin("sys_user AS user on user.id = remark.user_id"). // 头像需要从另外一张表查询出来 LeftJoin("bus_construction_user AS cuser on cuser.phone = user.mobile"). Where("visual.id = ? AND cuser.deleted_at is null", req.VisualID). Scan(&res.VisualProgressRemarks) g.Dump(res.VisualProgressRemarks) if err != nil { return nil, err } return res, nil } // 获取详情 func (v VisualRemark) GetRemarkDetail(ctx context.Context, req *GetRemarkDetailReq) (res *GetRemarkDetailRes, err error) { res = &GetRemarkDetailRes{} err = g.Model("visual_progress_remark AS remark").Ctx(ctx). Fields("remark.*,visual.title AS visualProgressTitle, user.user_nickname AS Username, user.avatar AS Avatar"). // 连表查询形象进度表得到形象进度标题 LeftJoin("visual_progress AS visual on visual.id = remark.visual_progress_id"). // 连表查询评论人的名字 LeftJoin("sys_user AS user on user.id = remark.user_id"). Where("remark.id = ? AND cuser.deleted_at is null", req.ID). Scan(&res.VisualProgressRemark) if err != nil { return nil, err } return res, nil } // 新增形象进度 func (v VisualRemark) CreateRemark(ctx context.Context, req *CreateRemarkReq) (res *CreateRemarkRes, err error) { res = &CreateRemarkRes{} _, err = g.Model("visual_progress_remark").Ctx(ctx).Data(g.Map{ "visual_progress_id": req.VisualProgressID, "comment": req.Comment, "user_id": req.UserID, }).Insert() if err != nil { return nil, err } var VisualProgressVo struct { ProjectId int `json:"projectId"` ReporterId int `json:"reporterId"` } // 根据形象进度ID查询项目ID、发布者ID g.Model("visual_progress").Fields("project_id AS ProjectId", "reporter_id AS ReporterId"). Where("id", req.VisualProgressID).Scan(&VisualProgressVo) // 新增之后通知对应的发起人 param := &system.CommentListAddReq{ ProjectId: VisualProgressVo.ProjectId, Receiver: VisualProgressVo.ReporterId, Content: req.Comment, Sender: req.UserID, } service.CommentList().Add(ctx, param) return res, nil } // 更新形象备注 func (v VisualRemark) UpdateRemark(ctx context.Context, req *UpdateRemarkReq) (res *UpdateRemarkRes, err error) { res = &UpdateRemarkRes{} _, err = g.Model("visual_progress_remark").Ctx(ctx).Data(g.Map{ "visual_progress_id": req.VisualProgressID, "comment": req.Comment, "user_id": req.UserID, }).Where("id", req.ID).Update() if err != nil { return nil, err } return res, nil } // 删除形象备注 func (v VisualRemark) DeleteRemark(ctx context.Context, req *DeleteRemarkReq) (res *DeleteRemarkRes, err error) { userID := ct.New().GetUserId(ctx) var VisualProgressRemarkVo struct { ID int `json:"id"` UserID uint64 `json:"userId"` } g.Model("visual_progress_remark").Ctx(ctx).Where("id", req.ID).Scan(&VisualProgressRemarkVo) // 当前用户等于评论的发起人才可以删除自己的评论 if userID == VisualProgressRemarkVo.UserID { res = &DeleteRemarkRes{} _, err = g.Model("visual_progress_remark").Ctx(ctx).Where("id", req.ID).Delete() if err != nil { return nil, err } } else { return nil, errors.New("只能删除自己的评论信息") } return }