侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

go+beego框架中使用无极限原理数据处理实现详情页评论展示功能

Go  /  管理员 发布于 3年前   490

在百度搜了一下好像很少有这类的教程文章,因为有刚好有个项目功能用到无极限查子孙树,所以记录一下

无极限查子孙树 自定义函数之前我有文章写过,有兴趣的点下面链接查阅:

https://www.zongscan.com/demo333/88231.html

我用我的博客详情页评论展示做测试demo (线上可能没那么快更新)

http://go.zongscan.com/


详情页控制器 

\gblog\controllers\art.go

package controllers

import (
"fmt"
"gblog/models"
"strconv"
"time"

"github.com/astaxie/beego/orm"
)

type ArtController struct {
BaseController
}

type comm struct {
Comment_id  int
Fcomment_id int
Art_id      int
User_id     int
Username    string
Face        string
Comment     string
Pubtime     string
Zan         int
Children    []comm
}

//文章详情页
func (c *ArtController) Detail() {
idStr := c.Ctx.Input.Param(":id")
id, _ := strconv.Atoi(idStr)

o := orm.NewOrm()

//文章
art := models.Art{}
o.Raw("SELECT * FROM art WHERE art_id = ?", id).QueryRow(&art)
c.Data["art"] = art

//更新view 自增
art.Art_id = id
art.View = art.View + 1
models.EditArt(&art)

c.Data["title"] = art.Title + "-侯体宗的博客"
c.Data["keywords"] = art.Title
c.Data["description"] = art.Title


//评论
var commdates []orm.Params
commdatessql := `select * from comment where art_id = ?`
o.Raw(commdatessql, art.Art_id).Values(&commdates)
c.Data["commdates"] = commdates

//无极限评论测试数据
// arrs := []comm{
// {Comment_id: 1, Fcomment_id: 0, Art_id: 11, user_id: 11, Username: "11", face: "11", comment: "11", pubtime: "11"},
// {Comment_id: 2, Fcomment_id: 0, Art_id: 22, user_id: 22, Username: "22", face: "22", comment: "22", pubtime: "22"},
// {Comment_id: 3, Fcomment_id: 2, Art_id: 33, user_id: 33, Username: "我是2的子级", face: "33", comment: "33", pubtime: "33"},
// }

//初始化orm数据集 - 统一类型 - 结构体
s := []comm{}

for _, v := range commdates {
comment_id, _ := strconv.Atoi(v["comment_id"].(string))
fcomment_id, _ := strconv.Atoi(v["fcomment_id"].(string))
art_id, _ := strconv.Atoi(v["art_id"].(string))
zan, _ := strconv.Atoi(v["zan"].(string))
node := comm{
Comment_id:  comment_id,
Fcomment_id: fcomment_id,
Art_id:      art_id,
Username:    v["username"].(string),
Comment:     v["comment"].(string),
Pubtime:     v["pubtime"].(string),
Zan:         zan,
}
s = append(s, node)
}
fmt.Println(s)

//无极限处理评论数据
list := SonsTree(s, 0)
fmt.Println(list)
c.Data["list"] = list

//c.Data["json"] = list
//c.ServeJSON()
//c.StopRun()


c.TplName = "detail.html"
}

打印一下数据:

无极限.png


详情页视图:

\gblog\views\detail.html


(省略其他代码,只留评论展示代码)


...
<div class="h-clear"></div>
<p class="h-block"><strong>请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!</strong>
<form class="h-block" method="post" action="comment" role="form">
<div class="form-group">
<input type="hidden" name="_token" value="qqWUCyhG5gaS2nyi2JsZ73KeGxUXLtSvJD0zdcH8">
<input type="hidden" name="art_id" value="{{.art.Art_id}}">
<textarea name="comment" class="form-control" rows="3" style="overflow: hidden; overflow-wrap: break-word; resize: none;"></textarea>
</div>
<button type="submit" class="btn btn-default">评论</button>
</form>
</p>
<div class="h-clear"></div>
{{range $ind, $elem := .list}}
<div class="media h-block">
<a href="#" class="pull-left"><img src="{{$elem.Face}}" class="media-object" width="30"/></a>
<div class="media-body">
<h4 class="media-heading">{{$elem.Username}} <small>{{FormatDate $elem.Pubtime}} </small></h4><p>{{str2html $elem.Comment}} </p>
<form method="post" action="comment">
<input type="hidden" name="fcomment_id" value="{{$elem.Comment_id}}">
<input type="hidden" name="art_id" value="{{$elem.Art_id}}">
<input class="h-block repcomment{{$elem.Comment_id}}"  required="" type="text" name="comment" placeholder="请输入..." style="width: 80%">
<button style="padding: .78571429em 1.5em;border: none;background-color: #00a0e9;color: #fff;" type="submit">评论</button>
</form>
{{if $elem.Children}}
 {{range $k, $v := $elem.Children}}
<div class="media h-block">
<a href="#" class="pull-left"><img src="{{$v.Face}}" class="media-object" width="30"/></a>
<div class="media-body">
<h4 class="media-heading">{{$v.Username}} <small>{{FormatDate $v.Pubtime}}</small></h4><p>{{str2html $v.Comment}}</p>
<a href="javascript:;" title="为此评论点赞" style="color:#ada5a5;font-size: 16px;" onclick="dianzan(this,{{$v.Comment_id}},'')"><i class="icon ion-thumbsup"></i> <span class="rezan">{{$v.Zan}}</span></a>
<a href="javascript:;" title="回复 {{$v.Username}}" style="color:#ada5a5;font-size: 16px;" onclick="$('.repcomment{{$elem.Comment_id}}').val('@'+'{{$v.Username}}# ');$('.repcomment{{$elem.Comment_id}}').focus();"><i class="icon ion-ios-undo"></i></a>
</div>
</div>
 {{end}}
{{end}}
<div class="h-clear"></div>
<a href="javascript:;" title="为此评论点赞" style="color:#ada5a5;font-size: 16px;" onclick="alert('未开发')"><i class="icon ion-thumbsup"></i> <span class="rezan">{{$elem.Zan}}</span></a>
</div>
</div>
{{end}}

...

来自视图展示效果图:

评论展示.png



  • 上一条:
    Laravel5.5+基于reset机制实现分布式事务,了解一下laravel-reset-transaction
    下一条:
    laravel框架中安装inertia.js + vue3版本的流程步骤
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • 近期文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2017-09
    • 2020-03
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-12
    • 2021-01
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-03
    • 2022-04
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    • 2024-05
    • 2024-06
    • 2024-07
    • 2024-08
    • 2024-11
    • 2025-02
    • 2025-04
    • 2025-05
    • 2025-06
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客