1、前端页面参考千百回项目的(message/add.ftl)
2、Controller层代码的保存。这里分为部分用户和全部用户,选择不同保存的时候添加到消息推送表中的用户id是不一样的,当选择全部用户的时候就需要把当前的消息推送给所有的用户;当选择部分用户的时候需要把添加的该条消息推送给选择的用户。在消息推送表中只要用户id和消息的id。
Controller层的代码:
/**消息实体和用户的id
* 保存
*/
@RequestMapping(value = "/save", method = RequestMethod.POST)
public String save(Message message, RedirectAttributes redirectAttributes,String userId) {
messageService.savePushMsg(message, userId);
addFlashMessage(redirectAttributes, SUCCESS_MESSAGE);
return "redirect:list.jhtml";
}
Service层代码:
public void savePushMsg(Message message, String userId);
ServiceImpl层代码:
@Override
public void savePushMsg(Message message, String userId) {
message.setType(Message.Type.System);
//保存的是当前添加的该条消息
messageDao.insert(message);
//如果选择的是全部用户 ,就把当前用户的所有id存储到消息推送表中
if(message.getPushObj() == Message.PushObj.All) {
messageDao.pushToAll(message.getId());
}else {
//当前用户的id是String类型
String[] userIds = userId.split(",");
messageDao.pushToPart(message.getId(), userIds);
}
}
dao层代码:
public long pushToAll(Long id);
public long pushToPart(@Param("id")Long id, @Param("userIds")String[] userIds);
xml文件代码:
<insert id="pushToAll">
insert into t_message_push(user_id,message_id)
select id user_id,#{id} message_id from t_app_user where status=1
</insert>
<insert id="pushToPart">
insert into t_message_push(user_id,message_id)
values
<foreach collection="userIds" separator="," item="userId" index="index">
(#{userId},#{id})
</foreach>
</insert>
版权声明:本文为weixin_40214184原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。