package cn.ksource.web.facade.message;
|
|
import java.io.File;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletRequest;
|
|
import cn.ksource.web.service.message.MessageRunable;
|
import org.apache.commons.lang.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import cn.ksource.beans.GG_MESSAGE;
|
import cn.ksource.core.dao.BaseDao;
|
import cn.ksource.core.dao.SqlParameter;
|
import cn.ksource.core.page.PageInfo;
|
import cn.ksource.core.util.ConvertUtil;
|
import cn.ksource.core.util.DateUtil;
|
import cn.ksource.core.util.FileUtil;
|
import cn.ksource.core.util.MyFileUploadException;
|
import cn.ksource.core.util.ParamsMapUtil;
|
import cn.ksource.core.util.StringUtil;
|
import cn.ksource.core.util.ZipUtil;
|
import cn.ksource.core.web.LoginUser;
|
import cn.ksource.core.web.WebUtil;
|
import cn.ksource.web.entity.message.CmsNews;
|
import cn.ksource.web.service.colunm.ColunmService;
|
import cn.ksource.web.service.file.FileService;
|
import cn.ksource.web.service.message.MessageService;
|
|
@Service("messageFacade")
|
@SuppressWarnings("unchecked")
|
public class MessageFacadeImpl implements MessageFacade {
|
|
@Resource(name="messageService")
|
private MessageService messageService;
|
|
@Resource(name="colunmService")
|
private ColunmService colunmService;
|
|
@Resource(name="fileService")
|
private FileService fileService;
|
|
@Autowired
|
private BaseDao baseDao;
|
|
@Override
|
public List<Map> queryMeunListById() {
|
return messageService.queryMeunListById();
|
}
|
|
@Override
|
public boolean isShowAddButton(String categoryId) {
|
//判断是否需要展示添加按钮
|
//如果此分类是列表展示,则显示添加按钮,如果此分类是单信息,则查询该分类下有无数据,如果有一条数据,则不显示添加按钮,如果无数据,则显示添加按钮
|
//通过分类id查询分类详情
|
Map colunmMap = colunmService.queryColunmById(categoryId);
|
//判断该分类的类型
|
String type = ConvertUtil.obj2StrBlank(colunmMap.get("SHOW_TYPE"));
|
boolean b = false;
|
if(type.equals("1")) {
|
b = true;
|
} else if(type.equals("2")) {
|
//查询该分类下有无信息
|
int count = messageService.queryMessageCountByCategoryId(categoryId);
|
if(count==0) {
|
b = true;
|
}
|
}
|
return b;
|
}
|
|
|
/**
|
* 保存信息内容
|
*/
|
@Override
|
public boolean save(CmsNews cmsNews, HttpServletRequest request) {
|
String[] allowType = new String[]{"gif","jpg","jpeg","png"};
|
int categoryId = cmsNews.getCategoryId();
|
Map colunm = colunmService.queryColunmById(ConvertUtil.obj2StrBlank(categoryId));
|
|
cmsNews.setShenpiStatus(1);
|
|
//判断是否需要标题图片
|
int titleimage = ConvertUtil.obj2Int(colunm.get("TITLEIMAGE"));
|
|
|
String uploadUrl = new String();
|
if(titleimage==1) {
|
try {
|
uploadUrl = FileUtil.uploadFile4SpringMVC(request, "titleimage" ,"/upload/classify"+categoryId,allowType);
|
//判断是否需要生成缩略图
|
int thumbnail = ConvertUtil.obj2Int(colunm.get("THUMBNAIL"));
|
if(thumbnail!=1){
|
//获得生成的缩略图的等比或者强制宽和高
|
String widthStr = ConvertUtil.obj2StrBlank(colunm.get("TITLEIMAGE_WIDTH"));
|
String heightStr = ConvertUtil.obj2StrBlank(colunm.get("TITLEIMAGE_HEIGHT"));
|
if(!widthStr.equals("") && !heightStr.equals("") && !widthStr.equals("0") && !heightStr.equals("0")) {
|
int width = ConvertUtil.obj2Int(widthStr);
|
int height = ConvertUtil.obj2Int(heightStr);
|
String pathPix = request.getSession().getServletContext().getRealPath("/");
|
boolean b = false;
|
if(thumbnail==3) {
|
b = true;
|
}
|
String newName = FileUtil.resizeForEqualImg(new File(pathPix+uploadUrl), width, height, b);
|
uploadUrl = uploadUrl.replace(uploadUrl.substring(uploadUrl.lastIndexOf("/")+1), newName);
|
}
|
}
|
cmsNews.setTitleimageurl(uploadUrl);
|
|
} catch (MyFileUploadException e) {
|
return false;
|
}
|
}
|
|
messageService.saveMessage(cmsNews,request);
|
|
return true;
|
}
|
|
|
// private CmsNews dealUploadFiles(HttpServletRequest request,CmsNews cmsNews) throws MyFileUploadException {
|
//
|
// List<FileUtil.FileInfo> infos =FileUtil.uploadFiles(request, "/upload/attachment/", null);
|
// List<SqlParameter> attachMentList = new ArrayList<SqlParameter>();
|
// for(FileUtil.FileInfo fileInfo:infos){
|
// if(fileInfo.getFilePath()==null){
|
// continue;
|
// }
|
// if(fileInfo.getFieldName().equals("infoFile")) {
|
// SqlParameter map = new SqlParameter();
|
// map.put("FILENAME", fileInfo.getOriginalFilename());
|
// map.put("FILEPATH", fileInfo.getFilePath());
|
// map.put("FILETYPE", fileInfo.getExtName());
|
// map.put("FILESIZE", fileInfo.getFileSize());
|
// attachMentList.add(map);
|
// }
|
// }
|
// cmsNews.setListAttachMents(attachMentList);
|
//
|
// return cmsNews;
|
// }
|
//
|
/**
|
* 查询指定分类下的所有信息列表
|
*/
|
@Override
|
public Map queryMessageListJson(String categoryId, int page, int pageSize) {
|
return messageService.queryMessageListJson(categoryId,page,pageSize);
|
}
|
|
/**
|
* 删除指定id的信息
|
*/
|
@Override
|
public void deleteMessage(String id) {
|
messageService.deleteMessage(id);
|
}
|
|
/**
|
* 通过信息id查询信息详情
|
*/
|
@Override
|
public Map queryMessageById(String messageId) {
|
return messageService.queryMessageById(messageId);
|
}
|
|
/**
|
* 修改信息
|
*/
|
@Override
|
public boolean updateMessage(CmsNews cmsNews, HttpServletRequest request) {
|
String[] allowType = new String[]{"gif","jpg","jpeg","png"};
|
int categoryId = cmsNews.getCategoryId();
|
Map colunm = colunmService.queryColunmById(ConvertUtil.obj2StrBlank(categoryId));
|
//判断是否需要标题图片
|
int titleimage = ConvertUtil.obj2Int(colunm.get("TITLEIMAGE"));
|
|
|
String uploadUrl = new String();
|
if(titleimage==1) {
|
try {
|
uploadUrl = FileUtil.uploadFile4SpringMVC(request, "titleimage" ,"/upload/classify"+categoryId,allowType);
|
if(null!=uploadUrl) {
|
//判断是否需要生成缩略图
|
int thumbnail = ConvertUtil.obj2Int(colunm.get("THUMBNAIL"));
|
if(thumbnail!=1){
|
//获得生成的缩略图的等比或者强制宽和高
|
String widthStr = ConvertUtil.obj2StrBlank(colunm.get("TITLEIMAGE_WIDTH"));
|
String heightStr = ConvertUtil.obj2StrBlank(colunm.get("TITLEIMAGE_HEIGHT"));
|
if(!widthStr.equals("") && !heightStr.equals("") && !widthStr.equals("0") && !heightStr.equals("0")) {
|
int width = ConvertUtil.obj2Int(widthStr);
|
int height = ConvertUtil.obj2Int(heightStr);
|
String pathPix = request.getSession().getServletContext().getRealPath("/");
|
boolean b = false;
|
if(thumbnail==3) {
|
b = true;
|
}
|
String newName = FileUtil.resizeForEqualImg(new File(pathPix+uploadUrl), width, height, b);
|
uploadUrl = uploadUrl.replace(uploadUrl.substring(uploadUrl.lastIndexOf("/")+1), newName);
|
}
|
}
|
cmsNews.setTitleimageurl(uploadUrl);
|
}
|
|
} catch (MyFileUploadException e) {
|
return false;
|
}
|
}
|
//上传附件
|
// try {
|
// cmsNews = dealUploadFiles(request, cmsNews);
|
// } catch (MyFileUploadException e) {
|
// return false;
|
// }
|
|
messageService.updateMessage(cmsNews);
|
//上传附件
|
LoginUser loginUser = WebUtil.getLoginUser(request);
|
String createUserId = String.valueOf(loginUser.getLoginUser().get("ID"));
|
String createUserName = String.valueOf(loginUser.getLoginUser().get("LOGINNAME"));
|
Map<String,String> params = ParamsMapUtil.getParameterMap(request);
|
params.put("business_id", ConvertUtil.obj2Str(cmsNews.getId()));
|
params.put("userId", createUserId);
|
params.put("userName", createUserName);
|
fileService.uploadFile(params);
|
return true;
|
}
|
|
/**
|
* 查询附件信息
|
*/
|
@Override
|
public List queryAttachment(String messageId) {
|
return messageService.queryAttachment(messageId);
|
}
|
|
|
@Override
|
public String saveZip(HttpServletRequest request) {
|
String uploadUrl = new String();
|
String indexPath = new String();
|
//定义zip路径
|
/*String zipPackage = "/upload/zippackage";
|
try {
|
uploadUrl = FileUtil.uploadFile4SpringMVC(request, "zippackage" ,zipPackage,new String[]{"zip"});
|
String pathPix = request.getSession().getServletContext().getRealPath("/");
|
try {
|
//ZipUtil.decompress(pathPix+zipPackage,pathPix+uploadUrl);
|
String unzipPath = ZipUtil.unzip(pathPix+uploadUrl,pathPix+zipPackage,"index.html");
|
String pathSuf = uploadUrl.substring(uploadUrl.lastIndexOf("/"),uploadUrl.lastIndexOf("."));
|
indexPath = zipPackage+pathSuf+"/"+unzipPath;
|
|
} catch (Exception e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}
|
} catch (MyFileUploadException e) {
|
return "";
|
}*/
|
//fileService.uploadFile(request, "12345689789");
|
return indexPath;
|
}
|
|
@Override
|
public void saveNum(List list) {
|
String sql = "UPDATE CMS_NEWS SET SHOW_NUM = :SHOW_NUM WHERE ID = :ID";
|
baseDao.executeBatch(sql, list);
|
}
|
|
@Override
|
public int querymessageCount(String categoryId) {
|
StringBuilder builder = new StringBuilder("SELECT COUNT(ID) FROM CMS_NEWS WHERE CATEGORY_ID = :categoryId ");
|
Map paramMap = new HashMap();
|
paramMap.put("categoryId", categoryId);
|
|
|
int count = baseDao.queryForInteger(builder.toString(), paramMap);
|
|
return count;
|
}
|
|
@Override
|
public PageInfo querymessageData(PageInfo pageInfo,String categoryId) {
|
StringBuilder builder = new StringBuilder("SELECT * FROM CMS_NEWS WHERE CATEGORY_ID = :categoryId ");
|
Map paramMap = new HashMap();
|
paramMap.put("categoryId", categoryId);
|
|
builder.append(" ORDER BY THETOP ASC,SHOW_NUM ASC ");
|
|
PageInfo info = baseDao.queryforSplitPageInfo(pageInfo, builder.toString(), paramMap);
|
|
return info;
|
}
|
|
@Override
|
public List getMyMessageTitle(String messageType,String userId) {
|
StringBuilder sql = new StringBuilder();
|
sql.append(" select m.title,m.WEB_URL url,r.id receiveId from gg_message m inner join gg_message_receiver r ");
|
sql.append(" on m.id = r.message_Id where r.receiver_id = :userId and state = 1 ");
|
SqlParameter param = new SqlParameter();
|
if(StringUtil.isNotBlank(messageType)){
|
sql.append(" and m.type = :messageType");
|
param.addValue("messageType", messageType);
|
}
|
param.addValue("userId", userId);
|
sql.append(" order by m.send_time desc LIMIT 3 ");
|
return baseDao.queryForList(sql.toString(), param);
|
}
|
|
|
|
|
|
@Override
|
public void doSendMessage(GG_MESSAGE message, List<Map> receiverList) {
|
if(message!=null){
|
message.insertOrUpdate();
|
if(receiverList!=null&&receiverList.size()>0){
|
String sql = "insert into gg_message_receiver " +
|
" (id,receiver_id,receiver_name,message_id,state) values " +
|
" (:id,:USER_ID,:USER_NAME,:messageId,:state)";
|
List<SqlParameter> list = new ArrayList<SqlParameter>();
|
String messageId = message.getId();
|
for(Map map:receiverList){
|
SqlParameter param = new SqlParameter();
|
map.put("id", StringUtil.getUUID());
|
map.put("state",1);
|
map.put("messageId", messageId);
|
param.setSource(map);
|
list.add(param);
|
}
|
baseDao.executeBatch(sql,list);
|
// messageService.sendMessage(message);
|
}
|
List<Map> msgs=getRoleLinkEmails(message);
|
if(msgs!=null && msgs.size()>0) {
|
Thread thread = new Thread(new MessageRunable(message,msgs));
|
thread.start();
|
}
|
}
|
}
|
|
public List<Map> getRoleLinkEmails(GG_MESSAGE message) {
|
String msgId = message.getId();
|
String selectSql = "SELECT B.ISWECHAT,B.ISPHONE,B.ISEMAIL,B.SJHM,B.EMAIL,B.OPEN_ID,B.REMIND_TYPE,B.ID AS USER_ID FROM GG_MESSAGE_RECEIVER A,GG_USER B WHERE A.RECEIVER_ID = B.ID AND B.ZT = 1 AND A.MESSAGE_ID = :msgId ";
|
List<Map> msgs = baseDao.queryForList(selectSql,new SqlParameter("msgId",msgId));
|
return msgs;
|
}
|
|
@Override
|
public void sendMessage(GG_MESSAGE message, List<Map> receiverList) {
|
if(message!=null){
|
message.insertOrUpdate();
|
if(receiverList!=null&&receiverList.size()>0){
|
String sql = "INSERT INTO GG_MESSAGE_RECEIVER " +
|
" (ID,RECEIVER_ID,RECEIVER_NAME,MESSAGE_ID,STATE,WX_URL) values " +
|
" (:id,:USER_ID,:USER_NAME,:messageId,:state,:wx_url)";
|
List<SqlParameter> list = new ArrayList<SqlParameter>();
|
String messageId = message.getId();
|
for(Map map:receiverList){
|
SqlParameter param = new SqlParameter();
|
map.put("id", StringUtil.getUUID());
|
map.put("state",1);
|
map.put("messageId", messageId);
|
param.setSource(map);
|
list.add(param);
|
}
|
baseDao.executeBatch(sql,list);
|
messageService.sendNoticeMessage(message);
|
}
|
}
|
|
}
|
|
|
@Override
|
public List getMyMessage(HttpServletRequest request,GG_MESSAGE message,String userId,String state) {
|
StringBuilder sql = new StringBuilder();
|
SqlParameter param = new SqlParameter();
|
param.addValue("userId", userId);
|
sql.append(" select m.*,r.state,r.id receiveId from gg_message m inner join gg_message_receiver r ");
|
sql.append(" on m.id = r.message_Id where r.receiver_id = :userId ");
|
//根据标题查找标题
|
if(StringUtil.isNotBlank(message.getTitle())){
|
sql.append(" and m.title like :title ");
|
param.addValue("title","%"+ message.getTitle() +"%");
|
}
|
//根据内容查找标题
|
if(StringUtil.isNotBlank(message.getContent())){
|
sql.append(" and m.content like :content ");
|
param.addValue("content","%"+ message.getContent() +"%");
|
}
|
//根据类型查找
|
if(message.getType()!=null){
|
sql.append(" and type = :type ");
|
param.addValue("type",message.getType());
|
}
|
//根据状态查找
|
if(StringUtil.isNotBlank(state)){
|
sql.append(" and r.state = :state ");
|
param.addValue("state",state);
|
}
|
sql.append(" order by m.send_time desc ");
|
return baseDao.queryforSplitPage(request,sql.toString(),param);
|
}
|
|
@Override
|
public Integer getMyMessageCount(GG_MESSAGE message,String userId,String state) {
|
|
StringBuilder sql = new StringBuilder();
|
SqlParameter param = new SqlParameter();
|
param.addValue("userId", userId);
|
sql.append(" select count(m.id) from gg_message m inner join gg_message_receiver r ");
|
sql.append(" on m.id = r.message_Id where r.receiver_id = :userId ");
|
//根据标题查找标题
|
if(StringUtil.isNotBlank(message.getTitle())){
|
sql.append(" and m.title like :title ");
|
param.addValue("title","%"+ message.getTitle() +"%");
|
}
|
//根据内容查找标题
|
if(StringUtil.isNotBlank(message.getContent())){
|
sql.append(" and m.content like :content ");
|
param.addValue("content","%"+ message.getContent() +"%");
|
}
|
//根据类型查找
|
if(message.getType()!=null){
|
sql.append(" and m.type = :type ");
|
param.addValue("type",message.getType());
|
}
|
//根据状态查找
|
if(StringUtil.isNotBlank(state)){
|
sql.append(" and r.state = :state ");
|
param.addValue("state",state);
|
}
|
return baseDao.queryForInteger(sql.toString(),param);
|
}
|
|
|
|
|
|
@Override
|
public void doReadMessage(String businessId, String receiverId) {
|
String sql = "update gg_message m inner join gg_message_receiver r on m.id = r.message_id set state=2, READ_TIME=:curDate where "+
|
" m.BUSINESS_ID=:businessId and r.RECEIVER_ID=:receviceId";
|
Long curDate = DateUtil.getCurrentDate14();
|
SqlParameter param = new SqlParameter();
|
|
param.addValue("businessId", businessId)
|
.addValue("receviceId", receiverId)
|
.addValue("curDate", curDate);
|
baseDao.execute(sql, param);
|
}
|
|
|
|
|
|
@Override
|
public int getMyMessageCount(String messageType, String userId) {
|
StringBuilder sql = new StringBuilder();
|
sql.append(" select count(m.id) from gg_message m inner join gg_message_receiver r ");
|
sql.append(" on m.id = r.message_Id where r.receiver_id = :userId and state = 1 ");
|
SqlParameter param = new SqlParameter();
|
if(StringUtil.isNotBlank(messageType)){
|
sql.append(" and m.type = :messageType");
|
param.addValue("messageType", messageType);
|
}
|
param.addValue("userId", userId);
|
sql.append(" order by m.send_time asc LIMIT 5 ");
|
return baseDao.queryForInteger(sql.toString(), param);
|
}
|
}
|