YxySendMailMasterServlet.java 5.7 KB
package com.espeed.servlet;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;

import java.io.IOException;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.alibaba.fastjson.JSONObject;
import com.espeed.pojo.YxySendMailMasterBase;
import com.espeed.service.YxySendMailMasterBaseService;
import com.espeed.service.YxySysParamaterService;
import com.espeed.tool.AnalysisYxyMail;
import com.espeed.tool.ConfigPath;

/**
 * 已发邮件servlet
 * @author 陈南巧
 */
public class YxySendMailMasterServlet extends HttpServlet
{
	private static final long serialVersionUID = 1L;
	private YxySendMailMasterBaseService yxysendmailmasterbaseservice;//邮件service
	private YxySysParamaterService yxysysparamaterservice;//控制参数service
	//执行的方法
	public void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		JSONObject object = new JSONObject();
		try{
			response.setHeader("Access-Control-Allow-Origin", "*");
			request.setCharacterEncoding("utf-8");  
	        response.setCharacterEncoding("utf-8"); 
	        response.setContentType("text/html;charset=utf-8");
	        String method = request.getParameter("method");
	        if(null==method || method.equals("")){
	        	object.put("result", "-1");
	        	object.put("reason", "方法不支持");
	        	response.getWriter().println(object);
	        	return;
	        }
	        if(method.equals("1")){//mailuid查询邮件信息
	        	String token = request.getParameter("token");
	        	if(null==token || token.equals("")){
	        		object.put("result", "-2");
		        	object.put("reason", "身份验证失败,token不能为空");
		        	response.getWriter().println(object);
		        	return;
	        	}
	        	//获取解析token的密钥
	    		String secretKey = ConfigPath.getSecretKey();
	    		//获取token-id
	    		String tokenId = ConfigPath.getTokenId();
	    		//获取token-subject
	    		String tokenSubject = ConfigPath.getTokenSubject();
	    		String loginid = "";
	    		String domain = "";
	    		try{
	    			Claims claims = Jwts.parser().setSigningKey(secretKey).parseClaimsJws(token).getBody();
	    			if(null == claims.getId() || !claims.getId().trim().equals(tokenId))
					{
	    				object.put("result", "-3");
		            	object.put("reason", "身份验证失败,token无效");
		            	response.getWriter().println(object);
		            	return;
					}
					if(null == claims.getSubject() || !claims.getSubject().trim().equals(tokenSubject))
					{
						object.put("result", "-3");
		            	object.put("reason", "身份验证失败,token无效");
		            	response.getWriter().println(object);
		            	return;
					}
					loginid = claims.get("loginid", String.class);
					domain = claims.get("domain", String.class);
	    		}catch (Exception e) {
	    			object.put("result", "-3");
	            	object.put("reason", "身份验证失败,token无效");
	            	response.getWriter().println(object);
	            	return;
				}
	    		String mailuid = request.getParameter("mailuid");
	        	if(null==mailuid || mailuid.equals("")){
	        		object.put("result", "-4");
		        	object.put("reason", "邮件uid不能为空");
		        	response.getWriter().println(object);
		        	return;
	        	}
	        	//获取bean
				WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());
		        //邮件bean
				yxysendmailmasterbaseservice = (YxySendMailMasterBaseService) wac.getBean("yxysendmailmasterbaseservice");
				//参数bean
				yxysysparamaterservice = (YxySysParamaterService) wac.getBean("yxysysparamaterservice");
				//查询邮件信息
				YxySendMailMasterBase masterbase = yxysendmailmasterbaseservice.findMasterBaseByUID(mailuid);
				String emlFilePath="";
				//查询控制参数(用户级)
				Map<String,String> usergraph=yxysysparamaterservice.findParamaterByLevel(4,loginid,domain);
				if(usergraph.size()>0){
					//用户级(用户eml文件存储路径)
					emlFilePath=usergraph.get("yxy_user_data_save_path").toString();
					if(emlFilePath==null||emlFilePath.equals("")){
						//查询控制参数(企业级)
						Map<String,String> domaingraph=yxysysparamaterservice.findParamaterByLevel(1, loginid,domain);
						//企业级(eml文件存放路径)
						emlFilePath=domaingraph.get("yxy_domain_save_path").toString();
					}
				}else{
					//查询控制参数(企业级)
					Map<String,String> domaingraph=yxysysparamaterservice.findParamaterByLevel(1, loginid,domain);
					emlFilePath=domaingraph.get("yxy_domain_save_path").toString();
				}
				//解析eml文件(传送钥匙)
				AnalysisYxyMail mehtod=new AnalysisYxyMail();
				String paxbody = mehtod.ParseEmlMethod(masterbase,emlFilePath).get(1).toString();
				paxbody = paxbody.replace("mailtempfile/", ConfigPath.getLocalWebUrl()+"/mailtempfile/");
				object.put("result", "1");
	        	object.put("reason", "获取邮件信息成功");
	        	object.put("masterbase", masterbase);
	        	object.put("paxbody", paxbody);
	        	response.getWriter().println(object);
	        	return;
	        }
	        object.put("result", "-1");
        	object.put("reason", "方法不支持");
        	response.getWriter().println(object);
        	return;
		}catch (Exception e) {
			object.put("result", "0");
        	object.put("reason", "访问失败,异常信息:"+e.getMessage());
        	response.getWriter().println(object);
        	return;
		}
	}
}