package com.espeed.action; import java.io.IOException; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.Arrays; import java.util.Enumeration; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.regex.Pattern; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.apache.commons.lang.StringUtils; import org.apache.struts2.ServletActionContext; import com.espeed.reading.util.ConfigPath; import com.espeed.reading.util.ConstantUtil; import com.espeed.reading.util.DBUtil; import com.espeed.reading.util.DateFormat; import com.espeed.reading.util.HttpUtil; import com.espeed.reading.util.NetworkUtil; import com.espeed.reading.util.TrackServiceUtil; import com.espeed.reading.util.TrackUtil; import com.espeed.reading.util.WebmailDBUtil; import com.espeed.ua.UserAgent; import com.opensymphony.xwork2.ActionSupport; /** * * @项目名称: 邮件跟踪系统 * @版权所有: 深圳市科飞时速网络技术有限公司(0755-88843776) * @技术支持: info@21gmail.com * @单元名称: 邮件跟踪系统action * @开始时间: 2018-6-1 * @开发人员: 杨志钊 */ public class TrackAction extends ActionSupport { private static final long serialVersionUID = 1L; private Object responseData; private static final Pattern ipPattern = Pattern.compile("[\\d\\.]*"); private static final String defaultToUrl = ConfigPath.getDefaultToUrl(); private static final String allowIp = ConfigPath.getAllowIp(); private static String cloudServiceUrl = ConfigPath.getCloudServiceUrl(); private static final String controlCentreUrl = ConfigPath .getControlCentreUrl(); // 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待 private static ExecutorService fixedThreadPool = Executors .newFixedThreadPool(3); private static final Pattern emailPattern = Pattern.compile(ConfigPath .getEmailPattern()); HttpServletRequest request = ServletActionContext.getRequest(); HttpServletResponse response = ServletActionContext.getResponse(); public void recordFromMail2() { fixedThreadPool.execute(new Runnable() { public void run() { try { System.out.println("in"); TrackUtil.test(request, response); } catch (Exception e) { e.printStackTrace(); } } }); } @SuppressWarnings("unchecked") private JSONObject initParam() { JSONObject param = new JSONObject(); Map<String, String[]> map = request.getParameterMap(); if (map != null && map.size() > 0) { for (Entry<String, String[]> entry : map.entrySet()) { if (entry.getValue() == null || entry.getValue().length == 0) { continue; } if (entry.getValue().length > 1) { param.put(entry.getKey(), StringUtils.join(entry.getValue(), ",")); } else { param.put(entry.getKey(), entry.getValue()[0].trim()); } } } Enumeration<String> enums = request.getAttributeNames(); if (enums != null) { while (enums.hasMoreElements()) { String name = (String) enums.nextElement(); param.put(name, request.getAttribute("name")); } } return param; } public void recordFromMail() { String ywxTo = request.getParameter("ywxTo"); String ywxType = request.getParameter("ywxType"); if (ywxTo == null || ywxTo.trim().isEmpty() || ywxTo.trim().equalsIgnoreCase("null")) { ywxTo = defaultToUrl; } else { if (ywxType != null) { // 受访问资源类型,0营销邮邮件、1营销邮邮件HTML页面、2易外销用户站点、3和9(sale100.com独立)营销邮邮件里需要跟踪的超链、4营销邮邮件HTML页面里需要跟踪的超链、5易外销邮件、6易外销邮件里需要跟踪的超链、7询盘、8社交帖子 if (ywxType == "8") { TrackUtil.recordFromHtmlInfo(request, response); } else { String uid = null; final List<String> emails = new ArrayList<String>(); String toMail = null; if (StringUtils.isNotEmpty(request.getParameter("ywxMail"))) { // 点读地址 try { toMail = (request.getParameter("ywxMail") != null && request .getParameter("ywxMail").startsWith("3D")) ? URLDecoder.decode(request .getParameter("ywxMail").replaceFirst("3D", ""), "UTF-8") : URLDecoder.decode(request.getParameter("ywxMail"), "UTF-8"); } catch (UnsupportedEncodingException e2) { e2.printStackTrace(); } } Cookie[] cookies = request.getCookies(); if (cookies != null && cookies.length > 0) { for (Cookie cookie : cookies) { if (ConstantUtil.USER_IDENTITY_COOKIE.equals(cookie .getName())) { uid = cookie.getValue(); } if (cookie.getName().startsWith( ConstantUtil.EMAIL_IDENTITY_COOKIE)) { if (cookie.getValue() != null && emailPattern.matcher(cookie.getValue()) .matches()) { emails.add(cookie.getValue()); } } } } // 设置cookie String serverDomain = request.getServerName(); int len = 0; if (!ipPattern.matcher(serverDomain).matches()) { String[] domains = serverDomain.split("\\."); len = domains.length; if (len > 2) { serverDomain = domains[len - 2] + "." + domains[len - 1]; } } Cookie cookie = new Cookie(ConstantUtil.USER_IDENTITY_COOKIE, uid); cookie.setMaxAge(ConstantUtil.HALF_CENTURY); cookie.setDomain(serverDomain); response.addCookie(cookie); len = emails.size(); for (int i = 0; i < len; i++) { cookie = new Cookie(ConstantUtil.EMAIL_IDENTITY_COOKIE + "_" + i, emails.get(i)); cookie.setMaxAge(ConstantUtil.HALF_CENTURY); cookie.setDomain(serverDomain); response.addCookie(cookie); } if (toMail != null && !emails.contains(toMail)) { emails.contains(toMail); } final JSONObject param = this.initParam(); param.put("uid", uid); String jsessionId = request.getSession().getId(); param.put("jsessionId", jsessionId); String ip = "unknown"; try { ip = NetworkUtil.getIpAddress(request); } catch (IOException e1) { e1.printStackTrace(); } param.put("ip", ip); String agentString = request.getHeader("User-Agent"); String referer = request.getParameter("ywxReferrer"); param.put("agentString", agentString); param.put("referer", referer); String language = request.getLocale().getLanguage(); param.put("language", language); param.put("country", request.getLocale().getCountry()); if (Arrays.asList("3", "6", "9").contains(ywxType)) { try { fixedThreadPool.execute(new Runnable() { public void run() { try { TrackUtil.recordFromOriginalMailInfo(param, emails); } catch (Exception e) { e.printStackTrace(); } } }); } catch (Exception e) { e.printStackTrace(); } } else if (ywxType.equals("2") || ywxType.equals("4")) { fixedThreadPool.execute(new Runnable() { public void run() { try { TrackUtil.recordFromHtmlInfo2(param, emails); } catch (Exception e) { e.printStackTrace(); } } }); } } } } try { ywxTo = URLDecoder.decode(ywxTo, "UTF-8"); if (ywxTo.contains("?")) { ywxTo = ywxTo + "&ywxMark=true"; } else { ywxTo = ywxTo + "?ywxMark=true"; } if (ywxTo.toLowerCase().startsWith("http://") || ywxTo.toLowerCase().startsWith("https://")) { response.sendRedirect(ywxTo); } else { request.setAttribute("ywxTo", ywxTo); request.getRequestDispatcher("dispatcher.jsp").forward(request, response); } } catch (Exception e) { e.printStackTrace(); } } public String recordFromHTML() { responseData = "SUCCESS"; String ywxType = request.getParameter("ywxType"); // 受访问资源类型,0营销邮邮件、1营销邮邮件HTML页面、2易外销用户站点、3营销邮邮件里需要跟踪的超链、4营销邮邮件HTML页面里需要跟踪的超链、5易外销邮件、6易外销邮件里需要跟踪的超链、7询盘 if (ywxType != null && (Arrays.asList("1", "2", "7", "8").contains(ywxType))) { TrackUtil.recordFromHtmlInfo(request, response); } return SUCCESS; } public String getCustomers() { Map<String, Object> result = TrackUtil.getUserId(request .getParameter("token")); if (!result.get("code").equals(200)) { responseData = result; return SUCCESS; } String userIds = request.getParameter("userIds"); Integer currentPage = request.getParameter("currentPage") == null ? null : Integer.valueOf(request.getParameter("currentPage")); Integer pageSize = request.getParameter("pageSize") == null ? null : Integer.valueOf(request.getParameter("pageSize")); Integer sortType = request.getParameter("sortType") == null ? null : Integer.valueOf(request.getParameter("sortType")); String searchWord = request.getParameter("searchWord"); responseData = TrackServiceUtil.getCustomers(userIds, currentPage, pageSize, sortType, searchWord); return SUCCESS; } public String getRecords() { Map<String, Object> result = TrackUtil.getUserId(request .getParameter("token")); if (!result.get("code").equals(200)) { responseData = result; return SUCCESS; } String userIds = request.getParameter("userIds"); Integer currentPage = request.getParameter("currentPage") == null ? null : Integer.valueOf(request.getParameter("currentPage")); Integer pageSize = request.getParameter("pageSize") == null ? null : Integer.valueOf(request.getParameter("pageSize")); Integer sortType = request.getParameter("sortType") == null ? null : Integer.valueOf(request.getParameter("sortType")); String value = request.getParameter("value"); responseData = TrackServiceUtil.getRecords(userIds, currentPage, pageSize, value, sortType); return SUCCESS; } public String changeStatus() { Map<String, Object> result = TrackUtil.getUserId(request .getParameter("token")); if (!result.get("code").equals(200)) { responseData = result; return SUCCESS; } String ids = request.getParameter("ids"); Integer status = request.getParameter("status") == null ? null : Integer.valueOf(request.getParameter("status")); responseData = TrackUtil.changeStatus(ids, status); return SUCCESS; } public String updateCustomerIds() { Map<String, Object> result = TrackUtil.getUserId(request .getParameter("token")); if (!result.get("code").equals(200)) { responseData = result; return SUCCESS; } Long id = request.getParameter("id") == null ? null : Long .valueOf(request.getParameter("id")); Integer customerId = request.getParameter("customerId") == null ? null : Integer.valueOf(request.getParameter("customerId")); responseData = TrackUtil.updateCustomerIds(id, customerId); return SUCCESS; } public String countLink() { Integer userId = request.getParameter("userId") == null ? null : Integer.valueOf(request.getParameter("userId")); String mailUid = request.getParameter("mailUid") == null ? null : request.getParameter("mailUid"); responseData = TrackServiceUtil.countLink(userId, mailUid); return SUCCESS; } public String getCountLinks() { Integer userId = request.getParameter("userId") == null ? null : Integer.valueOf(request.getParameter("userId")); String mailUid = request.getParameter("mailUid") == null ? null : request.getParameter("mailUid"); Integer currentPage = request.getParameter("currentPage") == null ? null : Integer.valueOf(request.getParameter("currentPage")); Integer pageSize = request.getParameter("pageSize") == null ? null : Integer.valueOf(request.getParameter("pageSize")); responseData = TrackServiceUtil.getCountLinks(userId, mailUid, currentPage, pageSize); return SUCCESS; } public void getRecordInfos() { PrintWriter writer = null; try { String ip = NetworkUtil.getIpAddress(request); if (allowIp.contains(ip)) { Long id = request.getParameter("id") == null ? null : Long .valueOf(request.getParameter("id")); responseData = TrackUtil.getRecordInfos(id); } else { responseData = new ArrayList<Object>(); } response.setCharacterEncoding("UTF-8"); response.setContentType("application/json;charset=UTF-8"); writer = response.getWriter(); writer.println(JSONArray.fromObject(responseData).toString()); writer.flush(); } catch (IOException e) { e.printStackTrace(); } finally { if (writer != null) { writer.close(); } } } public String getLinkTracks() { Map<String, Object> result = TrackUtil.getUserId(request .getParameter("token")); if (!result.get("code").equals(200)) { responseData = result; return SUCCESS; } Integer userId = request.getParameter("userId") == null ? Integer .valueOf(result.get("data").toString()) : Integer .valueOf(request.getParameter("userId")); Integer sortType = request.getParameter("sortType") == null ? null : Integer.valueOf(request.getParameter("sortType")); Integer companyId = request.getParameter("companyId") == null ? null : Integer.valueOf(request.getParameter("companyId")); String mailUid = request.getParameter("mailUid"); responseData = TrackServiceUtil.getLinkTracks(userId, companyId, mailUid, sortType); return SUCCESS; } public String checkIp() { Map<String, Object> result = TrackUtil.getUserId(request .getParameter("token")); if (!result.get("code").equals(200)) { responseData = result; return SUCCESS; } Long id = request.getParameter("id") == null ? null : Long .valueOf(request.getParameter("id")); Integer type = request.getParameter("type") == null ? null : Integer .valueOf(request.getParameter("type")); String ip = request.getParameter("ip"); responseData = TrackServiceUtil.checkIp(type, id, ip); return SUCCESS; } public String getEmailRecords() { Map<String, Object> result = TrackUtil.getUserId(request .getParameter("token")); if (!result.get("code").equals(200)) { responseData = result; return SUCCESS; } Integer currentPage = request.getParameter("currentPage") == null ? null : Integer.valueOf(request.getParameter("currentPage")); Integer pageSize = request.getParameter("pageSize") == null ? null : Integer.valueOf(request.getParameter("pageSize")); Integer sortType = request.getParameter("sortType") == null ? null : Integer.valueOf(request.getParameter("sortType")); Integer companyId = request.getParameter("companyId") == null ? null : Integer.valueOf(request.getParameter("companyId")); String email = request.getParameter("email"); responseData = TrackServiceUtil.getEmailRecords(companyId, email, currentPage, pageSize, sortType); return SUCCESS; } public void downloadTrackFile() { String trackId = request.getParameter("trackId"); String token = request.getParameter("token"); // 下载类型:0追踪文件,1分享文件 int type = 0; if (trackId != null) { try { trackId = Long.valueOf(trackId).toString(); } catch (Exception e) { trackId = null; } } else { type = 1; } if (trackId != null) { final long id = Long.valueOf(trackId); // 异步计算下载数 fixedThreadPool.execute(new Runnable() { public void run() { countDownloadNum(id); } }); } String url = cloudServiceUrl + "/file/download?type=" + type + "&accessTokens=" + token; try { response.sendRedirect(url); } catch (IOException e) { e.printStackTrace(); } } private void countDownloadNum(Long trackId) { Connection conn = null; PreparedStatement ps = null; // 结果集对象 ResultSet rs = null; String sql = null; try { conn = DBUtil.getConnection(); sql = "update ts_file_track set is_download = 1, download_count = download_count + 1 where id = ?"; ps = conn.prepareStatement(sql); ps.setObject(1, trackId); ps.executeUpdate(); conn.commit(); } catch (Exception e) { System.out.println("计算追踪附件下载数异常:" + e.getClass().getName() + "-->" + e.getMessage()); } finally { DBUtil.close(rs, ps, conn); } } public String recordTrackFile() { Integer userId = request.getParameter("userId") == null ? null : Integer.valueOf(request.getParameter("userId")); Integer companyId = request.getParameter("companyId") == null ? null : Integer.valueOf(request.getParameter("companyId")); Integer pageNumber = request.getParameter("pageNumber") == null ? null : Integer.valueOf(request.getParameter("pageNumber")); Long accessTime = request.getParameter("accessTime") == null ? null : Long.valueOf(request.getParameter("accessTime")); String to = request.getParameter("to"); String trackId = request.getParameter("trackId"); System.out.println("开始记录附件浏览记录:to=" + to + ",userId=" + userId + ",companyId=" + companyId + ",pageNumber=" + pageNumber + ",accessTime=" + accessTime + ",trackId=" + trackId); Map<String, Object> result = new HashMap<String, Object>(); if (userId == null) { result.put("code", 400); result.put("success", false); result.put("msg", "参数缺失,未指定用户ID"); System.err.println("参数缺失,未指定用户ID"); responseData = result; return SUCCESS; } if (companyId == null) { result.put("code", 400); result.put("success", false); result.put("msg", "参数缺失,未指定企业ID"); System.err.println("参数缺失,未指定企业ID"); responseData = result; return SUCCESS; } if (pageNumber == null) { result.put("code", 400); result.put("success", false); result.put("msg", "参数缺失,未指定页数"); System.err.println("参数缺失,未指定页数"); responseData = result; return SUCCESS; } if (accessTime == null) { result.put("code", 400); result.put("success", false); result.put("msg", "参数缺失,未指定访问时长"); System.err.println("参数缺失,未指定访问时长"); responseData = result; return SUCCESS; } if (to == null) { result.put("code", 400); result.put("success", false); result.put("msg", "参数缺失,未指定邮箱"); System.err.println("参数缺失,未指定邮箱"); responseData = result; return SUCCESS; } if (trackId == null) { result.put("code", 400); result.put("success", false); result.put("msg", "参数缺失,未指定追踪ID"); System.err.println("参数缺失,未指定追踪ID"); responseData = result; return SUCCESS; } to = to.trim(); if (!emailPattern.matcher(to).matches()) { result.put("code", 400); result.put("success", false); result.put("msg", "邮箱格式错误:" + to); System.err.println("邮箱格式错误:" + to); responseData = result; return SUCCESS; } Connection conn = null; PreparedStatement ps = null; // 结果集对象 ResultSet rs = null; String sql = null; try { String ip = NetworkUtil.getIpAddress(request); if (ip == null || ip.equalsIgnoreCase("unknown") || ip.equalsIgnoreCase("null")) { result.put("code", 400); result.put("success", false); result.put("msg", "无法获取ip"); System.err.println("无法获取ip"); responseData = result; return SUCCESS; } // 解析ip String url = controlCentreUrl + "/webservice/ip"; Map<String, Object> params = new HashMap<String, Object>(); params.put("ip", ip); String continent = null; String country = null; String province = null; String city = null; String address = null; String netProvider = null; Map<String, Object> resp = HttpUtil.doGet(url, params); if (resp.get("code").equals(200)) { Object data = resp.get("data"); JSONObject json = JSONObject.fromObject(data); if (json.getInt("code") == 200) { json = JSONObject.fromObject(json.get("result")); netProvider = json.getString("isp"); continent = json.getString("land"); country = json.getString("country"); province = json.getString("prov"); city = json.getString("city"); address = json.getString("dist"); } else { System.err.println("ip解析失败:" + json.get("result")); } } else { System.err.println("ip解析失败:" + resp.get("msg")); } conn = DBUtil.getConnection(); String agentString = request.getHeader("User-Agent"); UserAgent userAgent = UserAgent.parseUserAgentString(agentString); String language = request.getLocale().getLanguage(); if (request.getLocale().getCountry() != null && !request.getLocale().getCountry().trim().isEmpty()) { language += "-" + request.getLocale().getCountry(); } sql = "insert into ts_file_access(user_id,company_id,file_track_id,page_number,ip,jsession_id,continent,country,province,city,address,device_type,browser_name,language,net_provider,user_agent,access_time,access_email,create_time,os,customer_id) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; ps = conn.prepareStatement(sql); ps.setObject(1, userId);// 用户id ps.setObject(2, companyId);// 企业id ps.setObject(3, trackId);// 追踪id ps.setObject(4, pageNumber);// 访问页数 ps.setObject(5, ip);// 客户端ip ps.setObject(6, request.getSession().getId());// 回话id ps.setObject(7, continent);// 访问者所属洲 ps.setObject(8, country);// 访问者所属国际 ps.setObject(9, province);// 访问者所属省份 ps.setObject(10, city);// 访问者所属城市 ps.setObject(11, address);// 访问者所属详细地址 ps.setObject(12, TrackUtil.getDeviceType(userAgent));// 设备类型 ps.setObject(13, userAgent.getBrowser().getName());// 浏览器名称 ps.setObject(14, language);// 浏览器设置的语言 ps.setObject(15, netProvider);// 网络接入商 ps.setObject(16, agentString);// 浏览器ua ps.setObject(17, accessTime);// 访问时长,单位秒 ps.setObject(18, to);// 客户邮箱 ps.setObject(19, DateFormat.getNowDate());// 创建时间 ps.setObject(20, userAgent.getOperatingSystem().getName());// 操作系统名称 ps.setObject(21, WebmailDBUtil.getCustomerId(userId, to));// 客户id ps.executeUpdate(); sql = "select mail_uid from ts_file_track where id = ?"; ps = conn.prepareStatement(sql); ps.setObject(1, trackId); String mailUid = null; rs = ps.executeQuery(); if (rs.first()) { mailUid = rs.getString(1); } if (mailUid != null) { Connection conn2 = null; PreparedStatement ps2 = null; ResultSet rs2 = null; int tryCount = 0; while (conn2 == null && tryCount < 3) { tryCount++; try { conn2 = WebmailDBUtil.getConnection(); } catch (Exception e) { e.printStackTrace(); try { Thread.sleep(5000); } catch (InterruptedException ex) { ex.printStackTrace(); } } } sql = "select id from attr_link_count where mail_uid = ?"; ps2 = conn2.prepareStatement(sql); ps2.setObject(1, mailUid); rs2 = ps2.executeQuery(); if (rs2.first()) {//已存在 int cou = rs2.getInt(1); rs2.close(); ps2.close(); sql = "update attr_link_count set file_count = file_count + 1 where id = ?"; ps2 = conn2.prepareStatement(sql); ps2.setObject(1, cou); ps2.executeUpdate(); } else {//未存在 rs2.close(); ps2.close(); sql = "insert into attr_link_count(mail_uid,file_count,link_count) values(?,?,?)"; ps2 = conn2.prepareStatement(sql); ps2.setObject(1, mailUid); ps2.setObject(2, 1); ps2.setObject(3, 0); ps2.executeUpdate(); } //conn2.commit(); WebmailDBUtil.close(rs2, ps2, conn2); } conn.commit(); } catch (Exception e) { System.err.println("记录附件浏览记录异常:" + e.getClass().getName() + "-->" + e.getMessage()); } finally { DBUtil.close(rs, ps, conn); } return SUCCESS; } public String getFileTracks() { Map<String, Object> result = TrackUtil.getUserId(request .getParameter("token")); if (!result.get("code").equals(200)) { responseData = result; return SUCCESS; } Integer userId = request.getParameter("userId") == null ? Integer .valueOf(result.get("data").toString()) : Integer .valueOf(request.getParameter("userId")); Integer sortType = request.getParameter("sortType") == null ? null : Integer.valueOf(request.getParameter("sortType")); Integer companyId = request.getParameter("companyId") == null ? null : Integer.valueOf(request.getParameter("companyId")); String mailUid = request.getParameter("mailUid"); responseData = TrackServiceUtil.getFileTracks(userId, companyId, mailUid, sortType); return SUCCESS; } public String countLinkTracks() { Map<String, Object> result = TrackUtil.getUserId(request .getParameter("token")); if (!result.get("code").equals(200)) { responseData = result; return SUCCESS; } Integer userId = request.getParameter("userId") == null ? Integer .valueOf(result.get("data").toString()) : Integer .valueOf(request.getParameter("userId")); Integer companyId = request.getParameter("companyId") == null ? null : Integer.valueOf(request.getParameter("companyId")); String mailUid = request.getParameter("mailUid"); responseData = TrackServiceUtil.countLinkTracks(userId, companyId, mailUid); return SUCCESS; } public String countFileTracks() { Map<String, Object> result = TrackUtil.getUserId(request .getParameter("token")); if (!result.get("code").equals(200)) { responseData = result; return SUCCESS; } Integer userId = request.getParameter("userId") == null ? Integer .valueOf(result.get("data").toString()) : Integer .valueOf(request.getParameter("userId")); Integer companyId = request.getParameter("companyId") == null ? null : Integer.valueOf(request.getParameter("companyId")); String mailUid = request.getParameter("mailUid"); responseData = TrackServiceUtil.countFileTracks(userId, companyId, mailUid); return SUCCESS; } public String countEmailTracks() { Map<String, Object> result = TrackUtil.getUserId(request .getParameter("token")); if (!result.get("code").equals(200)) { responseData = result; return SUCCESS; } Integer userId = request.getParameter("userId") == null ? null : Integer.valueOf(request.getParameter("userId")); Integer companyId = request.getParameter("companyId") == null ? null : Integer.valueOf(request.getParameter("companyId")); Integer type = request.getParameter("type") == null ? null : Integer .valueOf(request.getParameter("type")); String mailUid = request.getParameter("mailUid"); responseData = TrackServiceUtil.countEmailTracks(type, userId, companyId, mailUid); return SUCCESS; } public String getDocRecords() { Map<String, Object> result = TrackUtil.getUserId(request .getParameter("token")); if (!result.get("code").equals(200)) { responseData = result; return SUCCESS; } Integer userId = request.getParameter("userId") == null ? Integer .valueOf(result.get("data").toString()) : Integer .valueOf(request.getParameter("userId")); Integer currentPage = request.getParameter("currentPage") == null ? null : Integer.valueOf(request.getParameter("currentPage")); Integer pageSize = request.getParameter("pageSize") == null ? null : Integer.valueOf(request.getParameter("pageSize")); Integer sortType = request.getParameter("sortType") == null ? null : Integer.valueOf(request.getParameter("sortType")); Integer companyId = request.getParameter("companyId") == null ? null : Integer.valueOf(request.getParameter("companyId")); String email = request.getParameter("email"); Integer pageNumber = request.getParameter("pageNumber") == null ? null : Integer.valueOf(request.getParameter("pageNumber")); Long trackId = request.getParameter("trackId") == null ? null : Long .valueOf(request.getParameter("trackId")); responseData = TrackServiceUtil.getDocRecords(userId, companyId, pageNumber, trackId, email, currentPage, pageSize, sortType); return SUCCESS; } public Object getResponseData() { return responseData; } public void setResponseData(Object responseData) { this.responseData = responseData; } }