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

标记为已读

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