Commit 6ea651d4 authored by 刘可心's avatar 刘可心

标记为已读

parent ebe4b2d6
package com.archser.aserver.controller;
import com.archser.aserver.util.FinalStringUtil;
import org.apache.commons.io.IOUtils;
import org.apache.log4j.Logger;
import com.alibaba.fastjson.JSON;
import com.archser.aserver.interceptor.JwtInterceptor;
import com.archser.aserver.model.Message;
import com.archser.aserver.service.LogService;
import com.archser.aserver.service.MessageService;
import com.archser.aserver.websocket.MessageRefreshTrigger;
import com.jfinal.aop.Clear;
import com.jfinal.aop.Inject;
import com.jfinal.core.Controller;
import com.jfinal.kit.Ret;
import com.jfinal.kit.StrKit;
import com.jfinal.plugin.activerecord.Page;
/**
* 消息相关
*
* @author dgq
*
*/
public class MessageController extends Controller {
@Inject
LogService logService;
@Inject
MessageService messageService;
private static final Logger logger = Logger.getLogger(MessageController.class);
/**
* 获取未读消息数量
*/
public void count() {
String username = this.getAttr("username");
Long count = messageService.getCountByRead(null, username);
this.renderJson(Ret.ok("count", count));
}
/**
* menu unread:未读,readed:已读,其他;查询所有
*/
public void getMessagePageData() {
int pageNumber = this.getParaToInt("pageNumber");
int pageSize = this.getParaToInt("pageSize");
String username = this.getAttr("username");
String menu = this.getPara("menu");
/** 2020年7月1日 添加模糊查询 yangchengwu YZJ-3915*/
String likeVal = this.getPara("likeVal");
Page<Message> page = messageService.getMessagePageData(pageNumber, pageSize, username, menu,likeVal);
if (page != null) {
renderJson(Ret.ok("page", page));
} else {
renderJson(Ret.fail("msg", "获取消息列表失败"));
}
}
/**
* 标记为已读
*/
public void markRead() {
int id = this.getParaToInt("id");
boolean markRead = this.messageService.markRead(id);
renderJson(markRead ? Ret.ok(): Ret.fail());
}
/**
* 删除消息
*/
public void deleteMessage() {
String ids = this.getPara("ids");
if (ids.length() == 0) {
renderJson(Ret.fail());
}
boolean deleted = this.messageService.deleteMessage(ids.split(","));
if (deleted) {
renderJson(Ret.ok());
logService.saveAsLog("operate", "个人首页-消息中心-删除消息-" + "-已删除了"+ids.split(",").length+"个消息", FinalStringUtil.DELETE);
}else {
renderJson(Ret.fail());
logService.saveAsLog("operate", "个人首页-消息中心-删除消息-删除消息失败",FinalStringUtil.DELETE);
}
}
/**
* 根据指定用户更新websocket的消息
*/
@Clear(JwtInterceptor.class)
public void refreshMessage() {
try {
String userId = this.getPara("userId");
if (StrKit.isBlank(userId)) {
userId = IOUtils.toString(this.getRequest().getInputStream());
userId = JSON.parseObject(userId).getString("userId");
}
logger.error("接受到消息刷新" + userId);
if (StrKit.notBlank(userId)) {
boolean refrashed = MessageRefreshTrigger.refresh(userId);
renderJson(Ret.ok("refrashed", refrashed));
} else {
renderJson(Ret.fail("msg", "userId为null或userId不是一个数字"));
}
} catch (Exception e) {
logger.error("刷新消息出错", e);
renderJson(Ret.fail("msg", "刷新消息出错"));
}
}
}
package com.archser.aserver.controller;
import com.archser.aserver.util.FinalStringUtil;
import org.apache.commons.io.IOUtils;
import org.apache.log4j.Logger;
import com.alibaba.fastjson.JSON;
import com.archser.aserver.interceptor.JwtInterceptor;
import com.archser.aserver.model.Message;
import com.archser.aserver.service.LogService;
import com.archser.aserver.service.MessageService;
import com.archser.aserver.websocket.MessageRefreshTrigger;
import com.jfinal.aop.Clear;
import com.jfinal.aop.Inject;
import com.jfinal.core.Controller;
import com.jfinal.kit.Ret;
import com.jfinal.kit.StrKit;
import com.jfinal.plugin.activerecord.Page;
/**
* 消息相关
*
* @author dgq
*
*/
public class MessageController extends Controller {
@Inject
LogService logService;
@Inject
MessageService messageService;
private static final Logger logger = Logger.getLogger(MessageController.class);
/**
* 获取未读消息数量
*/
public void count() {
String username = this.getAttr("username");
Long count = messageService.getCountByRead(null, username);
this.renderJson(Ret.ok("count", count));
}
/**
* menu unread:未读,readed:已读,其他;查询所有
*/
public void getMessagePageData() {
int pageNumber = this.getParaToInt("pageNumber");
int pageSize = this.getParaToInt("pageSize");
String username = this.getAttr("username");
String menu = this.getPara("menu");
/** 2020年7月1日 添加模糊查询 yangchengwu YZJ-3915*/
String likeVal = this.getPara("likeVal");
Page<Message> page = messageService.getMessagePageData(pageNumber, pageSize, username, menu,likeVal);
if (page != null) {
renderJson(Ret.ok("page", page));
} else {
renderJson(Ret.fail("msg", "获取消息列表失败"));
}
}
/**
* 标记为已读
*/
public void markRead() {
int id = this.getParaToInt("id");
boolean markRead = this.messageService.markRead(id);
renderJson(markRead ? Ret.ok(): Ret.fail());
}
/**
* 删除消息
*/
public void deleteMessage() {
String ids = this.getPara("ids");
if (ids.length() == 0) {
renderJson(Ret.fail());
}
boolean deleted = this.messageService.deleteMessage(ids.split(","));
if (deleted) {
renderJson(Ret.ok());
logService.saveAsLog("operate", "个人首页-消息中心-删除消息-" + "-已删除了"+ids.split(",").length+"个消息", FinalStringUtil.DELETE);
}else {
renderJson(Ret.fail());
logService.saveAsLog("operate", "个人首页-消息中心-删除消息-删除消息失败",FinalStringUtil.DELETE);
}
}
/**
* 根据指定用户更新websocket的消息
*/
@Clear(JwtInterceptor.class)
public void refreshMessage() {
try {
String userId = this.getPara("userId");
if (StrKit.isBlank(userId)) {
userId = IOUtils.toString(this.getRequest().getInputStream());
userId = JSON.parseObject(userId).getString("userId");
}
logger.error("接受到消息刷新" + userId);
if (StrKit.notBlank(userId)) {
boolean refrashed = MessageRefreshTrigger.refresh(userId);
renderJson(Ret.ok("refrashed", refrashed));
} else {
renderJson(Ret.fail("msg", "userId为null或userId不是一个数字"));
}
} catch (Exception e) {
logger.error("刷新消息出错", e);
renderJson(Ret.fail("msg", "刷新消息出错"));
}
}
/**
* LiuKexin 20210402 批量标记为已读,且将通知性消息标为已读,下载或跳转的消息不批量已读
*/
public void allMsgReaded() {
String username = this.getAttr("username");
Ret allMsgReaded = messageService.allMsgReaded(username);
renderJson(allMsgReaded);
}
}
#namespace("message")
#sql("getMessagePageData")
select t.id, t.sender_id,t.send_to_id,t.title,t.content,t.system_id,
t.path,t.params,t.operate,t.read,t.send_time,
su.name as sender, ru.name as receive, asys.title as system
from as_message t
left join as_user su
on su.id = t.sender_id
left join as_user ru
on ru.id = t.send_to_id
left join as_system asys
on asys.id = t.system_id
where t.send_to_id = #para(send_to_id)
#if(menu == 'unread')
and read is null
#else if(menu == 'readed')
and read = 'Y'
#end
#if(likeVal)
and (
t.title like '%#(likeVal)%'
or su.name like '%#(likeVal)%'
or ru.name like '%#(likeVal)%'
or asys.title like '%#(likeVal)%'
or t.operate like '%#(likeVal)%'
)
#end
order by t.send_time desc
#end
#sql("markRead")
update as_message t set t.read = 'Y'
where t.id = #para(id)
#end
#sql("deleteMessage")
delete as_message t
where t.id in (
#for(item : ids)
#(for.index==0 ? "" : ",") #(item)
#end
)
#end
#sql("getCountByRead")
select count(t.id) as count
from as_message t
where t.send_to_id is not null and t.send_to_id = (
select id from as_user u where u.username = #para(username)
)
#if(read)
and t.read = #para(read)
#else
and t.read is null
#end
#end
#end
#namespace("message")
#sql("getMessageInUnread")
select t.id, t.sender_id,t.send_to_id,t.title,t.content,t.system_id,
t.path,t.params,t.operate,t.read,t.send_time,
su.name as sender, ru.name as receive, asys.title as system
from as_message t
left join as_user su
on su.id = t.sender_id
left join as_user ru
on ru.id = t.send_to_id
left join as_system asys
on asys.id = t.system_id
where t.send_to_id = #para(send_to_id) and read is null
order by id desc
#end
#sql("getMessagePageData")
select t.id, t.sender_id,t.send_to_id,t.title,t.content,t.system_id,
t.path,t.params,t.operate,t.read,t.send_time,
su.name as sender, ru.name as receive, asys.title as system
from as_message t
left join as_user su
on su.id = t.sender_id
left join as_user ru
on ru.id = t.send_to_id
left join as_system asys
on asys.id = t.system_id
where t.send_to_id = #para(send_to_id)
#if(menu == 'unread')
and read is null
#else if(menu == 'readed')
and read = 'Y'
#end
#if(likeVal)
and (
t.title like '%#(likeVal)%'
or su.name like '%#(likeVal)%'
or ru.name like '%#(likeVal)%'
or asys.title like '%#(likeVal)%'
or t.operate like '%#(likeVal)%'
)
#end
order by t.send_time desc
#end
#sql("markRead")
update as_message t set t.read = 'Y'
where t.id = #para(id)
#end
#sql("deleteMessage")
delete as_message t
where t.id in (
#for(item : ids)
#(for.index==0 ? "" : ",") #(item)
#end
)
#end
#sql("getCountByRead")
select count(t.id) as count
from as_message t
where t.send_to_id is not null and t.send_to_id = (
select id from as_user u where u.username = #para(username)
)
#if(read)
and t.read = #para(read)
#else
and t.read is null
#end
#end
#end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment