重构消息中心

This commit is contained in:
qimingjin 2021-06-30 23:03:50 +08:00
parent e4f8b10308
commit 033c7f4aef
3 changed files with 96 additions and 117 deletions

View File

@ -1,11 +1,13 @@
package com.snow.web.controller.system;
import cn.hutool.core.collection.CollectionUtil;
import com.google.common.collect.Lists;
import com.snow.common.annotation.Log;
import com.snow.common.annotation.RepeatSubmit;
import com.snow.common.core.controller.BaseController;
import com.snow.common.core.domain.AjaxResult;
import com.snow.common.core.page.TableDataInfo;
import com.snow.common.core.text.Convert;
import com.snow.common.enums.BusinessType;
import com.snow.common.enums.MessageEventType;
import com.snow.common.utils.poi.ExcelUtil;
@ -25,7 +27,7 @@ import java.util.List;
import java.util.stream.Collectors;
/**
* 消息模板Controller
* 消息中心
*
* @author qimingjin
* @date 2021-02-27
@ -72,6 +74,12 @@ public class SysMessageCenterController extends BaseController
return prefix + "/messageCenter";
}
/**
* 前端消息中心
* @param sysMessageTransition
* @param mmap
* @return
*/
@GetMapping("/website")
public String websiteMessageCenter(SysMessageTransition sysMessageTransition,ModelMap mmap)
{
@ -79,7 +87,7 @@ public class SysMessageCenterController extends BaseController
SysUser sysUser = ShiroUtils.getSysUser();
sysMessageTransition.setConsumerId(String.valueOf(sysUser.getUserId()));
sysMessageTransition.setMessageShow(1);
sysMessageTransition.setOrderBy("update_time desc");
sysMessageTransition.setOrderBy("create_time desc");
List<SysMessageTransition> list = sysMessageTransitionService.selectSysMessageTransitionList(sysMessageTransition);
TableDataInfo rspData = new TableDataInfo();
rspData.setCode(0);
@ -88,4 +96,27 @@ public class SysMessageCenterController extends BaseController
mmap.put("dataTable",dataTable);
return "front/message/message_center";
}
/**
* 标记为已读
* @param id
* @return
*/
@PostMapping( "/remarkRead")
@ResponseBody
public AjaxResult remarkRead(Long id)
{
SysMessageTransition oldSysMessageTransition = sysMessageTransitionService.selectSysMessageTransitionById(id);
if(oldSysMessageTransition.getMessageReadStatus()==1){
return AjaxResult.success();
}
SysUser sysUser = ShiroUtils.getSysUser();
SysMessageTransition sysMessageTransition=new SysMessageTransition();
sysMessageTransition.setId(id);
sysMessageTransition.setMessageReadStatus(1L);
sysMessageTransition.setUpdateBy(String.valueOf(sysUser.getUserId()));
int i = sysMessageTransitionService.updateSysMessageTransition(sysMessageTransition);
return AjaxResult.success(i);
}
}

View File

@ -63,9 +63,9 @@
品牌,网络应用,<br/>
和用户界面<br/>
我们是SNOW工作室</h1>
<p>SNOW管理主题是具有平面设计理念的高级管理信息板模板。</p>
<p>Snow社区致力于Java学习目前包括DingFlow系统和SonwBlog博客</p>
<p>
<a class="btn btn-lg btn-primary" href="#" role="button">阅读更多</a>
<a class="btn btn-lg btn-primary" href="https://gitee.com/qimingjin" target="_blank" role="button">阅读更多</a>
<a class="caption-link" href="#" role="button">灵感主题</a>
</p>
</div>
@ -80,9 +80,9 @@
<div class="item">
<div class="container">
<div class="carousel-caption blank">
<h1>我们创造有意义 <br/> 启发的界面</h1>
<p>INSPINIA管理主题是具有平面设计理念的高级管理信息板模板</p>
<p><a class="btn btn-lg btn-primary" href="#" role="button">学到更多</a></p>
<h1>我们致力于 <br/>中小企业快速数字化转型</h1>
<p>借助钉钉,致力于流程,让流程更简单</p>
<p><a class="btn btn-lg btn-primary" href="http://snowblog.shop.csj361.com" role="button">学到更多</a></p>
</div>
</div>
<!-- Set background for slide in css -->
@ -103,22 +103,31 @@
<section id="features" class="container services">
<div class="row">
<div class="col-sm-3">
<h2>完全响应</h2>
<p>INSPINIA管理主题是具有平面设计理念的高级管理信息板模板。它是完全响应的管理信息板模板使用Bootstrap 3+ FrameworkHTML5和CSS3Media查询构建。它具有可重复使用的UI组件的大量集合并与最新的jQuery插件集成。</p>
<h2>系统模块</h2>
<p> 用户管理:用户是系统操作者,该功能主要完成系统用户配置并能实现钉钉用户数据同步。</p>
<p> 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限并能实现钉钉部门数据同步。</p>
<p> 岗位管理:配置系统用户所属担任职务。</p>
<p> 菜单管理:配置系统菜单,操作权限,按钮权限标识等。</p>
<p> 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。</p>
<p> 字典管理:对系统中经常使用的一些较为固定的数据进行维护。</p>
<p><a class="navy-link" href="#" role="button">细节 &raquo;</a></p>
</div>
<div class="col-sm-3">
<h2>LESS / SASS文件</h2>
<p>INSPINIA管理主题是具有平面设计理念的高级管理信息板模板。它是完全响应的管理信息板模板使用Bootstrap 3+ FrameworkHTML5和CSS3Media查询构建。它具有可重复使用的UI组件的大量集合并与最新的jQuery插件集成。</p>
<h2>流程模块</h2>
<p>流程模型集成flowable流程设计器在线一键发布</p>
<p>流程消息管理:通过邮件、钉钉发送待办,已办,办结节点信息</p>
<p>流程组管理:结合系统角色,设计流程节点代办人</p>
<p>采购流程:主子表设计,结合导入功能融合流程使整个采购流程透明化</p>
<p><a class="navy-link" href="#" role="button">细节 &raquo;</a></p>
</div>
<div class="col-sm-3">
<h2>超强图表</h2>
<p>INSPINIA管理主题是具有平面设计理念的高级管理信息板模板。它是完全响应的管理信息板模板使用Bootstrap 3+ FrameworkHTML5和CSS3Media查询构建。它具有可重复使用的UI组件的大量集合并与最新的jQuery插件集成。</p>
<h2>钉钉模块</h2>
<p></p>
<p><a class="navy-link" href="#" role="button">细节 &raquo;</a></p>
</div>
<div class="col-sm-3">
<h2>高级表格</h2>
<h2>消息模块</h2>
<p>INSPINIA管理主题是具有平面设计理念的高级管理信息板模板。它是完全响应的管理信息板模板使用Bootstrap 3+ FrameworkHTML5和CSS3Media查询构建。它具有可重复使用的UI组件的大量集合并与最新的jQuery插件集成。</p>
<p><a class="navy-link" href="#" role="button">细节 &raquo;</a></p>
</div>
@ -364,13 +373,13 @@
<div class="col-lg-12 text-center">
<div class="navy-line"></div>
<h1>我们的合作伙伴说</h1>
<p>描述描述</p>
<p>数十家于DingFlow系统合作后都给予高度认可和评价</p>
</div>
</div>
<div class="row features-block">
<div class="col-lg-4">
<div class="bubble">
"超级企鹅克隆公司"
"借助钉钉,致力于流程,让流程更简单"
</div>
<div class="comments-avatar">
<a href="" class="pull-left">
@ -387,7 +396,7 @@
<div class="col-lg-4">
<div class="bubble">
"超级企鹅克隆公司"
"我们将能助您一臂之力彰显您的企业价值和社会责任,赢得更多客户的认同和员工的信赖。"
</div>
<div class="comments-avatar">
<a href="" class="pull-left">
@ -404,7 +413,7 @@
<div class="col-lg-4">
<div class="bubble">
"超级企鹅克隆公司"
"借助钉钉,致力于流程,让流程更简单"
</div>
<div class="comments-avatar">
<a href="" class="pull-left">
@ -431,35 +440,35 @@
<div class="col-lg-12 text-center">
<div class="navy-line"></div>
<h1>越来越多的超大功能</h1>
<p>描述描述 </p>
<p>经过团队日夜敲打设计DingFlow系统日趋完善 </p>
</div>
</div>
<div class="row">
<div class="col-lg-5 col-lg-offset-1 features-text">
<small>INSPINIA</small>
<h2>完美设计 </h2>
<small>DingFlow</small>
<h2>智能报表 </h2>
<i class="fa fa-bar-chart big-icon pull-right"></i>
<p>INSPINIA管理主题是具有平面设计理念的高级管理信息板模板。它是完全响应的管理信息板模板使用Bootstrap 3+ FrameworkHTML5和CSS3Media查询构建。它具有可重复使用的UI组件和集成的巨大收藏</p>
<p>DingFlow系统集成积木报表可在线设计企业日常需求报销报表工资报表各种柱状图树状图圆饼图等</p>
</div>
<div class="col-lg-5 features-text">
<small>INSPINIA</small>
<h2>完美设计 </h2>
<small>DingFlow</small>
<h2>工单管理 </h2>
<i class="fa fa-bolt big-icon pull-right"></i>
<p>INSPINIA管理主题是具有平面设计理念的高级管理信息板模板。它是完全响应的管理信息板模板使用Bootstrap 3+ FrameworkHTML5和CSS3Media查询构建。它具有可重复使用的UI组件和集成的巨大收藏</p>
<p>DingFlow依托前端官网产品针对售后反馈设计智能工单系统。由用户登录官网前台提交工单经过DingFlow流程自动化分配及时高效处理问题</p>
</div>
</div>
<div class="row">
<div class="col-lg-5 col-lg-offset-1 features-text">
<small>INSPINIA</small>
<h2>完美设计 </h2>
<small>DingFlow</small>
<h2>财务管理 </h2>
<i class="fa fa-clock-o big-icon pull-right"></i>
<p>INSPINIA管理主题是具有平面设计理念的高级管理信息板模板。它是完全响应的管理信息板模板使用Bootstrap 3+ FrameworkHTML5和CSS3Media查询构建。它具有可重复使用的UI组件和集成的巨大收藏。</p>
<p>针对日常消费账单DingFlow系统支持支付宝和微信原模板一件导入智能分析日常消费</p>
</div>
<div class="col-lg-5 features-text">
<small>INSPINIA</small>
<h2>完美设计 </h2>
<small>DingFlow</small>
<h2>流程管理 </h2>
<i class="fa fa-users big-icon pull-right"></i>
<p>INSPINIA管理主题是具有平面设计理念的高级管理信息板模板。它是完全响应的管理信息板模板使用Bootstrap 3+ FrameworkHTML5和CSS3Media查询构建。它具有可重复使用的UI组件和集成的巨大收藏</p>
<p>DingFlow自带流程管理系统支持流程组动态化配置同时集成DingTlak流程</p>
</div>
</div>
</div>
@ -471,7 +480,7 @@
<div class="col-lg-12 text-center">
<div class="navy-line"></div>
<h1>软件定价</h1>
<p>软件定价描述</p>
<p>DingFlow系统是作者在若依框架的基础上结合中小企业现状改造的一款小型企业内部管理系统针对不同用户需求可联系作者做定制化开发</p>
</div>
</div>
<div class="row">
@ -484,7 +493,7 @@
基础版描述
</li>
<li class="pricing-price">
<span>$16</span> / 月
<span>16</span> / 月
</li>
<li>
主页
@ -516,7 +525,7 @@
标注版描述
</li>
<li class="pricing-price">
<span>$22</span> / 月
<span>22</span> / 月
</li>
<li>
主页
@ -551,7 +560,7 @@
企业版描述
</li>
<li class="pricing-price">
<span>$160</span> / 月
<span>160</span> / 月
</li>
<li>
主页
@ -589,24 +598,30 @@
<div class="col-lg-12 text-center">
<div class="navy-line"></div>
<h1>联系我们</h1>
<p>联系我们描述</p>
</div>
</div>
<div class="row m-b-lg">
<div class="col-lg-3 col-lg-offset-3">
<address>
<strong><span class="navy">企鹅公司</span></strong><br/>
北京市东城区某街道<br/>
北京, 100000<br/>
<abbr title="Phone">电话:</abbr> (86) 1234-5678
<strong><span class="navy">启明文化创意有限公司</span></strong><br/>
<!-- 北京市东城区某街道<br/>
北京, 100000<br/>-->
<abbr title="QQ群"> <i class="fa fa-qq" aria-hidden="true"></i></abbr> <span> 577813338</span><br/>
<abbr title="邮箱"> <i class="fa fa-envelope" aria-hidden="true"></i></abbr> qimingjin@126.com
</address>
</div>
<div class="col-lg-4">
<p class="text-color">
INSPINIA管理主题是具有平面设计理念的高级管理信息板模板。它是完全响应的管理信息板模板使用Bootstrap 3+ FrameworkHTML5和CSS3Media查询构建。它具有可重复使用的UI组件的大量集合并与最新的jQuery插件集成
DingFlow取其DingTalk和Flowable的前四个单词组成。寓意着构建钉钉工作流一体化。该管理系统致力于和钉钉数据打通企业即可通过钉钉移动化办公也可通过系统开发满足自身不同需求
</p>
</div>
</div>
<div class="row">
<div class="col-lg-12 text-center">
<img src="https://qimetons.oss-cn-beijing.aliyuncs.com/0f39a32c5ffd44069dcbc8c1861bfe54.jpg" width="250px" height="250px" class="btn btn-primary"/>
</div>
</div>
<br/>
<div class="row">
<div class="col-lg-12 text-center">
<a href="mailto:test@email.com" class="btn btn-primary">寄给我们邮件</a>
@ -625,7 +640,7 @@
</div>
<div class="row">
<div class="col-lg-8 col-lg-offset-2 text-center m-t-lg m-b-lg">
<p><strong>&copy; 公司名称</strong><br/></p>
<p><strong>&copy; 启明文化创意有限公司</strong><br/></p>
</div>
</div>
</div>

View File

@ -44,7 +44,7 @@
<div class="row">
<div class="col-md-8">
<a data-toggle="collapse" th:href="'faq.html#'+${sysMessageTransition.id}" class="faq-question" ><span th:text="${iterStat.index+1}"></span>、[[${sysMessageTransition.sysMessageTemplate.templateName}]]</a>
<a data-toggle="collapse" th:href="'faq.html#'+${sysMessageTransition.id}" class="faq-question" th:onclick="markRead([[${sysMessageTransition.id}]])" ><span th:text="${iterStat.index+1}"></span>、[[${sysMessageTransition.sysMessageTemplate.templateName}]]</a>
</div>
@ -57,8 +57,8 @@
</div>
<div class="col-md-1 text-right">
<label th:switch="${sysMessageTransition.messageReadStatus}">
<h4 class="faq-question-status badge badge-danger" th:case="0">未读</h4>
<h4 class="faq-question-status badge badge-primary" th:case="0">已读</h4>
<h4 class="messageReadStatus badge badge-danger" th:case="0">未读</h4>
<h4 class="messageReadStatus badge badge-primary" th:case="1">已读</h4>
</label>
</div>
</div>
@ -83,33 +83,6 @@
</div>
<div id="footPage" style="text-align: center;"></div>
<div class="modal fade" id="isAdoptAnswer" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel">
<div class="modal-dialog">
<div class="modal-content animated fadeIn">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
<h4 class="modal-title text-primary">采纳打分</h4>
</div>
<div class="modal-body">
<div class="form-group">
<label for="faqNo" class="control-label">编号:</label>
<input type="text" class="form-control " id="faqNo" name="faqNo" readonly>
</div>
<input type="hidden" class="form-control" id="answerId" name="id">
<div class="form-group">
<label for="faqNo" class="control-label">打分:</label>
<input type="text" class="js-range-answerFraction" name="answerFraction" value="0" />
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-white" data-dismiss="modal">关闭</button>
<button type="button" class="btn btn-primary" onclick="saveAnswerFraction()">打分</button>
</div>
</div>
</div>
</div>
</div>
</div>
<script th:src="@{/js/jquery.min.js}"></script>
@ -131,28 +104,7 @@
simpleLoad(btn,true);
simpleLoad(btn,false)
});
$(".js-range-answerFraction").ionRangeSlider({
type: "single",
min: 0,
max: 10,
step:1, //步长,也可以设置为小数
postfix:"分",
onStart: function (data) {//回调
},
onChange: function (data) {
},
onFinish: function (data) { //拖动结束回调
$(".js-range-answerFraction").val(data.fromNumber);
console.log('onFinish'+JSON.stringify(data))
},
onUpdate: function (data) {
console.log('onUpdate'+JSON.stringify(data))
}
});
});
function simpleLoad(btn,state){
if(state){
btn.children().addClass("fa-spin");btn.contents().last().replaceWith("Loading")
@ -160,41 +112,23 @@
setTimeout(function(){btn.children().removeClass("fa-spin");btn.contents().last().replaceWith(" Refresh")},2000)
}
};
$('#isAdoptAnswer').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget) // 触发事件的按钮
var faqNo = button.data('whatever')
var id = button.data('id')
$("#answerId").val(id);
$("#faqNo").val(faqNo);
});
function saveAnswerFraction(){
var answerFraction= $(".js-range-answerFraction").val();
var faqNo= $("#faqNo").val();
var id=$("#answerId").val();
if(answerFraction=="0"){
$.modal.msgWarning("请先拖动打分滑块进行打分后再提交!");
return false;
}
function markRead(id){
var config = {
url: "/front/faq/answerFraction",
url: "/system/messageCenter/remarkRead",
type: "post",
dataType: "json",
data: {
"answerFraction": parseFloat(answerFraction),
"faqNo":faqNo,
"id":id
},
beforeSend: function () {
$.modal.loading("正在处理中,请稍后...");
},
success: function(result) {
if (typeof callback == "function") {
callback(result);
}
if (result.code == web_status.SUCCESS) {
$.modal.alertSuccess(result.msg);
location.reload();
$(".messageReadStatus badge badge-primary").show();
$(".messageReadStatus badge badge-danger").hide();
} else if (result.code == web_status.WARNING) {
$.modal.alertWarning(result.msg)
} else {
@ -205,7 +139,6 @@
};
$.ajax(config)
}
layui.use('laypage', function(){
var laypage = layui.laypage;
laypage.render({