群组概括信息页面:

/GroupBrief

需要展示有关群组的概括信息,包括群组的组成占比,群组数量,不同群组的数量,均可视化展示

群组有六个种类

Public
Work
Meeting
AVChatRoom
Community
Private

使用一个一维数组存储其每一个的数量

数据库中有关表为创建群组表create与注销群组表destroyed

每个表都包含以下信息

CallbackCommand String 回调命令
GroupId String 操作的群 ID
Operator_Account String 发起创建群组请求的操作者 UserID
Owner_Account String 请求创建的群的群主 UserID
Type String 请求创建的 群组类型介绍,例如 Public
Name String 请求创建的群组的名称
MemberList Array 请求创建的群组的初始化成员列表

所以需要查询在create表中而不在destroy表中的记录

select a.type,count(*) count from
(select distinct callbackaftercreategroup.groupId,callbackaftercreategroup.type from
callbackaftercreategroup left join callbackaftergroupdestroyed
on callbackaftercreategroup.groupId=callbackaftergroupdestroyed.groupId
where callbackaftergroupdestroyed.groupId is null)a
group by a.type

执行后使用数组存储

int[] type= new int[6];//0-Public,1-Work,2-Meeting,3-AVChatRoom,4-Community,5-Privatewhile (rs.next()){switch (rs.getString("type")){case "Public" :type[0]=rs.getInt("count");break;case "Work" :type[1]=rs.getInt("count");break;case "Meeting" :type[2]=rs.getInt("count");break;case "AVChatRoom" :type[3]=rs.getInt("count");break;case "Community" :type[4]=rs.getInt("count");break;case "Private" :type[5]=rs.getInt("count");break;}}

前端通过Highlights渲染图表

html与js

 <div class="layui-col-md4"><div id="container2" style="height: 400px"></div></div><div class="layui-col-md4"><div id="container" style="height: 400px"></div><script>var chart = Highcharts.chart('container',{chart: {type: 'column'},title: {text: '群组数量'},subtitle: {text: ''},xAxis: {categories: ['陌生人社交群','好友工作群','临时会议群','直播群','社群','私有群'],crosshair: true},yAxis: {min: 0,title: {text: '数量'}},plotOptions: {column: {borderWidth: 0}},series: [{name:"群组数量",data: [${publicNum},${workNum},${meetingNum},${AVChatRoomNum},${communityNum},${privateNum}]}]});var chart = Highcharts.chart('container2', {chart: {type: 'pie',plotBackgroundColor: null,plotBorderWidth: null,plotShadow: false,},title: {text: '群组占比数量'},subtitle: {text: ''},tooltip: {pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'},plotOptions: {pie: {allowPointSelect: true,cursor: 'pointer',dataLabels: {enabled: false},showInLegend: true}},series: [{name: '占比',colorByPoint: true,data: [{name: '陌生人社交群',y: ${publicNum*100/total},sliced: true,selected: true}, {name: '好友工作群',y: ${workNum*100/total}}, {name: '临时会议群',y: ${meetingNum*100/total}}, {name: '直播群',y: ${AVChatRoomNum*100/total}}, {name: '社群',y: ${communityNum*100/total}}, {name: '私有群',y: ${privateNum*100/total}}]}]});</script></div>

呈现结果

页面整体效果

群组表格页面

获取每个群组与上述数据库相同,获取在create表而不在destroy表中的数据

而搜索功能需要根据对应的列进行搜索,通过获取find数据确定搜索类型,搜索和data有关的数据

var url="${group.groupId}";
var res=encodeURIComponent(url);
document.getElementById("${group.groupId}").innerHTML="<a href=/GroupDetail?groupId="+res+">查看</a>"
switch (find){case "groupId":glist= dao.GroupListById(data);break;case "operator_Account":glist=dao.GroupListByOperator(data);break;case "owner_Account":glist=dao.GroupListByOwner(data);break;case "name":glist=dao.GroupListByName(data);break;default:break;}

以groupId为例进行搜索,支持模糊搜索,sql为

"select * from callbackaftercreategroup\n" +"where callbackaftercreategroup.groupId\n" +"          not in (select groupId from callbackaftergroupdestroyed)\n" +"    and callbackaftercreategroup.groupId like \'%"+Id+"%\'\n" +"group by callbackaftercreategroup.groupId"

页面展示

群组详细信息页面

需要获取群组内的成员,群组内成员活跃度,群组内最近发送的消息

对于成员,需要包含creat表中包含的成员、join表的成员与不在exit表中的成员

以@TGS#1INCWHDIF为例

select * from user
where user.userid in(select a.member_Account from callbackaftercreategroup a where groupId='@TGS#1INCWHDIF'unionselect b.member_Account from callbackafternewmemberjoin b where groupId='@TGS#1INCWHDIF')and user.userid not in(select callbackaftermemberexit.member_Account from callbackaftermemberexit where groupId='@TGS#1INCWHDIF')

获取最近的消息,包括发言人,时间,文本信息

需要在text表中查询,用一维数组msg[4]存储

 String sql = "select * from(select * from callbackaftersendmsggrouptext where\n" +"        groupId=\'"+groupId+"\'\n" +"order by msgTime desc limit 9999\n" +") a\n" +"group by a.from_Account";
String[] type= new String[4];//0-recent speaker nums,1-last msg time,2-las meg text,3-last speakerint nums = 0;if(rs.next()) {nums++;Timestamp time = rs.getTimestamp("msgTime");type[1] = time.toString();type[2] = rs.getString("text");type[3] = rs.getString("from_Account");}while (rs.next()){nums++;}type[0]=""+nums;return type;

活跃度为群内最近发言人数与总人数比,总人数用获取到userList.length()

前端展示

 <div class="layui-col-md4"><ul class="layui-timeline"><li class="layui-timeline-item"><i class="layui-icon layui-timeline-axis"></i><div class="layui-timeline-content layui-text"><h1 style="color: #009688" class="layui-timeline-title">最近发言时间</h1><p>${lastMsgTime}</p></div></li><li class="layui-timeline-item"><i class="layui-icon layui-timeline-axis"></i><div class="layui-timeline-content layui-text"><h1 style="color: #009688" class="layui-timeline-title">最近发言人</h1><p>${lastSpeaker}</p></div></li><li class="layui-timeline-item"><i class="layui-icon layui-timeline-axis"></i><div class="layui-timeline-content layui-text"><h1 style="color: #009688" class="layui-timeline-title">最近发言内容</h1><p>${lastMsgText}</p></div></li></ul></div>

页面展示

飞讯管理员端群组部分完整版实现相关推荐

  1. 飞讯管理员端的主页设计

    首先创建一个web项目,由于需要使用react,则使用npm安装react与antd npm i react react-dom 然后在目录中可见 此两个文件夹 之后使用react需要将jsx翻译为j ...

  2. 飞讯管理员端签到部分设计

    签到分为发布与签到两个部分 发布需要由飞讯注册用户发布 发布的实体的属性 private Integer Id;public String userid;public String signLeade ...

  3. 飞讯管理员端的问卷方面功能

    数据库方面设计 问卷主体表: varchar questionnaireId 自增主键,问卷的唯一标识 varchar userid  发布问卷的用户 varchar name 问卷名称 varcha ...

  4. 飞讯管理员端的后端数据表格展现

    首先想到的是用layui自带的动态表格进行加载,实例 table.render({elem: '#demo',height: 312,url: '/demo/table/user/' //数据接口,p ...

  5. 这才叫大数据!腾讯首次公布微信数据(完整版)

     这才叫大数据!腾讯首次公布微信数据(完整版) 留言将由公众号筛选后显示,对所有人可见. 提交 我的留言 加载中 已留言 642 微信号 ugo642 功能介绍 6-4-2系统@动到不能动为止! ...

  6. 腾讯新推出群组社交APP:Q次元

    腾讯最近推出了一款名为 Q Dimension 的应用.据官方介绍,Q Dimension是一个为年轻人量身打造的一站式多群社区. Q Dimension有不同的群组,用户可以在对应的群组下建立自己的 ...

  7. Hadoop之——基于3台服务器搭建Hadoop3.x集群(实测完整版)

    转载请注明出处:https://blog.csdn.net/l1028386804/article/details/93892479 一.  服务器规划 二.Hadoop集群环境的准备 搭建Hadoo ...

  8. 基于kubeadm快速部署kubernetes K8S V1.17.4集群-无坑完整版

    基于kubeadm快速部署kubernetes K8S V1.17.4集群,并部署Dashboard Web页面,实现可视化查看Kubernetes资源 主机配置规划 服务器名称(hostname) ...

  9. Hadoop分布式集群搭建(完整版)

    一.前期准备工作 VMware和Centos7下载安装教程: https://blog.csdn.net/m0_59209350/article/details/117793482 XShell和Xf ...

最新文章

  1. block(六)循环引用-b
  2. python脚本语言采用声音作为手段_python 利用pyttsx3文字转语音过程详解
  3. 逆波兰计算器android源码简书,汪都能理解的逆波兰计算器(C++实现)
  4. FireMonkey 源码学习(5)
  5. mysql中的rm语句用法_SQLMap部分命令用法详解
  6. 【数据结构-栈】C语言实现顺序栈基本操作
  7. 搜狗批量提交工具(2021)
  8. 【分享】如何写出好的品牌故事?
  9. hotmail手机端_如何在安卓手机上设置Hotmail?
  10. 水平仪算公式计算机,水准仪的使用及计算方法
  11. 胡瑜 简介中科院计算机所,胡瑜--中科院计算所计算机体系结构国家重点实验室...
  12. Occupancy Map(Occupancy Grid)的更新
  13. SU Podium 渲染插件学用笔记
  14. 六成大学生认为自己毕业10年内会年入百万!
  15. html 原始数据类型,JS原始数据类型-String
  16. 【Unity】如何接入广告(技术及设计)
  17. edge浏览器如何将网页转换为pdf
  18. 小议JAVA数据类型间的相互转换
  19. 求职简历申请表-Word简历可编辑下载
  20. 酷狗音乐播放器2014 v7.6.1.0 官方免费版

热门文章

  1. KWS Water System Standard Rendering 教程
  2. (docker 容器)服务器搭建selenium-grid平台并构建jenkins job全过程
  3. Win10开发环境搭建笔记(过审阉割版)
  4. oppo机器如何没Root激活Xposed框架的方法
  5. xampp安装php源码教程,XAMPP的安装图文教程
  6. 设计模式分类(创建型模式、结构型模式、行为型模式 及其区别)
  7. 基于 gma 绘制古代洛阳 5 大都城遗址空间分布地图
  8. Sentinel微服务限流、熔断、降级介绍(一)
  9. c语言程序while,C语言之while循环
  10. 使用pyspark 进行向量计算