116 lines
4.0 KiB
Go
116 lines
4.0 KiB
Go
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
|
|
}
|