From 96df6afc0b4a6066204d8a2d792b0fa44168402f Mon Sep 17 00:00:00 2001 From: maziyang Date: Tue, 24 Jun 2025 10:49:06 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E6=8A=95=E7=A5=A8=E5=90=8D?= =?UTF-8?q?=E5=8D=95=E4=B8=AA=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/vote_record/v1/vote_record.go | 5 ++++- api/vote_record/vote_record.go | 2 +- .../vote_record/vote_record_v1_get_vote_detail.go | 2 +- internal/logic/vote_record/get_vote_detail.go | 19 +++++++++++++------ internal/service/vote_record.go | 2 +- 5 files changed, 20 insertions(+), 10 deletions(-) diff --git a/api/vote_record/v1/vote_record.go b/api/vote_record/v1/vote_record.go index 602fcb1..af81911 100644 --- a/api/vote_record/v1/vote_record.go +++ b/api/vote_record/v1/vote_record.go @@ -5,6 +5,10 @@ import ( "github.com/gogf/gf/v2/os/gtime" ) +type GetVoteDetailListRes struct { + VoteList []*GetVoteDetailRes `json:"voteList"` + TotalCount int `json:"totalCount"` +} type GetVoteDetailReq struct { g.Meta `path:"/getAllVoteDetail" method:"get" tags:"获取投票名单列表"` VoteId int `p:"voteId" v:"required" dc:"投票活动ID"` @@ -22,7 +26,6 @@ type GetVoteDetailRes struct { //ArticleTitle string `json:"articleTitle" dc:"文章/视频标题"` OptionContents string `json:"optionContents" dc:"选项名称"` CreateTime *gtime.Time `json:"createTime" dc:"投票时间"` - TotalCount int `json:"totalCount" dc:""` } type GetVoteReq struct { g.Meta `path:"/getVote" method:"get" tags:"<获取文章及投票活动>"` diff --git a/api/vote_record/vote_record.go b/api/vote_record/vote_record.go index e9ade0a..7e9e2bc 100644 --- a/api/vote_record/vote_record.go +++ b/api/vote_record/vote_record.go @@ -11,7 +11,7 @@ import ( ) type IVoteRecordV1 interface { - GetVoteDetail(ctx context.Context, req *v1.GetVoteDetailReq) (res []*v1.GetVoteDetailRes, err error) + GetVoteDetail(ctx context.Context, req *v1.GetVoteDetailReq) (res *v1.GetVoteDetailListRes, err error) GetVote(ctx context.Context, req *v1.GetVoteReq) (res *v1.GetVoteRes, err error) GetIndex(ctx context.Context, req *v1.GetIndexReq) (res *v1.GetIndexRes, err error) AddRecord(ctx context.Context, req *v1.AddRecordReq) (res *v1.AddRecordRes, err error) diff --git a/internal/controller/vote_record/vote_record_v1_get_vote_detail.go b/internal/controller/vote_record/vote_record_v1_get_vote_detail.go index 66a8177..5d4d326 100644 --- a/internal/controller/vote_record/vote_record_v1_get_vote_detail.go +++ b/internal/controller/vote_record/vote_record_v1_get_vote_detail.go @@ -7,6 +7,6 @@ import ( "practice_ArticleVote_Go/api/vote_record/v1" ) -func (c *ControllerV1) GetVoteDetail(ctx context.Context, req *v1.GetVoteDetailReq) (res []*v1.GetVoteDetailRes, err error) { +func (c *ControllerV1) GetVoteDetail(ctx context.Context, req *v1.GetVoteDetailReq) (res *v1.GetVoteDetailListRes, err error) { return service.NewVoteRecordService().GetVoteDetail(ctx, req) } diff --git a/internal/logic/vote_record/get_vote_detail.go b/internal/logic/vote_record/get_vote_detail.go index 3769447..8afdd34 100644 --- a/internal/logic/vote_record/get_vote_detail.go +++ b/internal/logic/vote_record/get_vote_detail.go @@ -2,11 +2,12 @@ package vote_record import ( "context" + "fmt" "github.com/gogf/gf/v2/frame/g" v1 "practice_ArticleVote_Go/api/vote_record/v1" ) -func (l *VoteRecordLogic) GetVoteDetail(ctx context.Context, req *v1.GetVoteDetailReq) (res []*v1.GetVoteDetailRes, err error) { +func (l *VoteRecordLogic) GetVoteDetail(ctx context.Context, req *v1.GetVoteDetailReq) (res *v1.GetVoteDetailListRes, err error) { //query := ` // SELECT // u.username, @@ -79,17 +80,23 @@ func (l *VoteRecordLogic) GetVoteDetail(ctx context.Context, req *v1.GetVoteDeta query += " AND u.account LIKE ?" conditions = append(conditions, "%"+req.Account+"%") } - - query += " ORDER BY uv.create_time DESC " - query += " LIMIT ?, ? " + countQuery := "SELECT COUNT(*) AS cnt FROM ( " + query + " ) AS subquery" + var cntResult struct{ Cnt int } + err = g.DB().Ctx(ctx).Raw(countQuery, conditions...).Scan(&cntResult) + fmt.Println(cntResult.Cnt) + res = &v1.GetVoteDetailListRes{ + TotalCount: cntResult.Cnt, + } + query += " ORDER BY uv.create_time DESC LIMIT ?, ?" offset := (req.Page - 1) * req.Size conditions = append(conditions, offset, req.Size) - + var voteList []*v1.GetVoteDetailRes err = g.DB().Ctx(ctx). Raw(query, conditions...). - Scan(&res) + Scan(&voteList) if err != nil { return nil, err } + res.VoteList = voteList return res, nil } diff --git a/internal/service/vote_record.go b/internal/service/vote_record.go index ce59462..339b602 100644 --- a/internal/service/vote_record.go +++ b/internal/service/vote_record.go @@ -10,7 +10,7 @@ type IVoteRecord interface { GetIndex(ctx context.Context, req *v1.GetIndexReq) (res *v1.GetIndexRes, err error) AddRecord(ctx context.Context, req *v1.AddRecordReq) (res *v1.AddRecordRes, err error) GetVote(ctx context.Context, req *v1.GetVoteReq) (res *v1.GetVoteRes, err error) - GetVoteDetail(ctx context.Context, req *v1.GetVoteDetailReq) (res []*v1.GetVoteDetailRes, err error) + GetVoteDetail(ctx context.Context, req *v1.GetVoteDetailReq) (res *v1.GetVoteDetailListRes, err error) } func NewVoteRecordService() IVoteRecord {