<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <c:set var="ctx" value="${pageContext.request.contextPath}" /> <jsp:include page="/jsp/common/header.jsp"></jsp:include> <script src="${ctx }/js/order/messageTemplate.js"></script> <table class="queryTable" > <tr> <td class="queryTitle" width="80px">短信模板:</td> <td class="queryContent" ><input class="inputText" type="text" id="messageTypeName" /></td> <td class="queryTitle" width="80px">状态:</td> <td class="queryContent" > <select id="ifStart" class="easyui-combobox" style="width: 100px" panelHeight="auto"> <option value="">全部</option> <option value="Y">启动</option> <option value="N">禁用</option> </select> <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-search" onclick="doQuery()">查 询</a> </td> </tr> </table> <table id="messageTemplateGrid"></table> <!-- 添加短信模板Div --> <div id="addMessageTemplateDiv" class="easyui-window" title="" iconCls="icon-edit" style="width:600px; height:200px;text-align:center; background: #fafafa;"> <div class="easyui-layout" fit="true"> <div region="center" border="false" style="background:#fff;border:1px solid #ccc;"> <form id="addForm" method="POST"> <table class="queryTable" width="100%" > <tr> <td class="queryTitle" width="100">短信类型</td> <td class="queryContent" > <input id="addMessageTypeId" class="easyui-combobox" style="width: 250px" panelHeight="auto" editable="false"> </td> </tr> <tr> <td class="queryTitle" width="100">内容</td> <td class="queryContent" > <textarea id="addContent" style="width: 250px; height: 50px;"> </textarea> </td> </tr> <tr> <td class="queryTitle" width="100"></td> <td class="queryContent" > <input type="checkbox" id="addIfStart" value="Y" onclick="clickInfo();"/> 启动 </td> </tr> </table> </form> </div> <div region="south" border="false" style="text-align:center;height:30px;line-height:30px;"> <a class="easyui-linkbutton" iconCls="icon-ok" href="javascript:void(0);" onclick="saveMessageTemplate('add');">确定</a> <a class="easyui-linkbutton" iconCls="icon-ok" href="javascript:void(0);" onclick="reset('add');">重置</a> <a class="easyui-linkbutton" iconCls="icon-cancel" href="javascript:void(0);" onclick="closeWin('addMessageTemplateDiv');">取消</a> </div> </div> </div> <!-- 编辑短信模板Div --> <div id="updMessageTemplateDiv" class="easyui-window" title="" iconCls="icon-edit" style="width:600px; height:200px;text-align:center; background: #fafafa;"> <div class="easyui-layout" fit="true"> <div region="center" border="false" style="background:#fff;border:1px solid #ccc;"> <form id="updForm" method="POST"> <input type="hidden" id="messageTemplateIdHidden" name="messageTemplateIdHidden" value="" /> <input type="hidden" id="messageTypeIdHidden" name="messageTypeIdHidden" value="" /> <input type="hidden" id="contentHidden" name="contentHidden" value="" /> <input type="hidden" id="ifStartHidden" name="ifStartHidden" value="" /> <table class="queryTable" width="100%" > <tr> <td class="queryTitle" width="100">短信类型</td> <td class="queryContent" > <input id="updMessageTypeId" class="easyui-combobox" style="width: 250px" panelHeight="auto" editable="false"> </td> </tr> <tr> <td class="queryTitle" width="100">内容</td> <td class="queryContent" > <textarea id="updContent" style="width: 250px; height: 50px;" maxlength="250"> </textarea> </td> </tr> <tr> <td class="queryTitle" width="100"></td> <td class="queryContent" > <input type="checkbox" id="updIfStart" value="Y" /> 启动 </td> </tr> </table> </form> </div> <div region="south" border="false" style="text-align:center;height:30px;line-height:30px;" id="updcontroldiv"> <a class="easyui-linkbutton" iconCls="icon-ok" href="javascript:void(0);" onclick="saveMessageTemplate('upd');">确定</a> <a class="easyui-linkbutton" iconCls="icon-ok" href="javascript:void(0);" onclick="reset('upd');">重置</a> <a class="easyui-linkbutton" iconCls="icon-cancel" href="javascript:void(0);" onclick="closeWin('updMessageTemplateDiv');">取消</a> </div> </div> <!-- 发送短信Div --> <div id="sendMessageDiv" class="easyui-window" title="" iconCls="icon-edit" style="width:800px; height:150px;text-align:center; background: #fafafa;"> <div class="easyui-layout" fit="true"> <div region="center" border="false" style="background:#fff;border:1px solid #ccc;"> <form id="sendForm" method="POST"> <table class="queryTable" width="100%" > <tr> <td class="queryTitle" width="100">号码:</td> <td class="queryContent" > <textarea id="phones" style="width: 700px; height: 50px;"> </textarea> </td> </tr> </table> </form> <div>多个号码之间使用逗号分割,例如:123,456,789 最后一个号码后不要逗号,发送错误,后续号码停止发送!</div> </div> <div region="south" border="false" style="text-align:center;height:30px;line-height:30px;"> <a class="easyui-linkbutton" iconCls="icon-ok" href="javascript:void(0);" onclick="sendMessage();">发送</a> <a class="easyui-linkbutton" iconCls="icon-cancel" href="javascript:void(0);" onclick="closeWin('sendMessageDiv');">取消</a> </div> </div> </div> </div>
$(function() { createParentHiddenDom("frameName"); $('#addMessageTemplateDiv').window('close'); $('#updMessageTemplateDiv').window('close'); $('#sendMessageDiv').window('close'); $("#messageTemplateGrid") .datagrid( { url : appPath + '/page/messageTemplateAct/getPage', height : 'full', striped : true, remoteSort : false, pagination : true, rownumbers : true, singleSelect : false, queryParams : getQueryParam(), frozenColumns : [ [ { field : 'ck', checkbox : true }, { field : 'opt', title : '操作', width : 100, align : 'center', formatter:function(value,rowData,rowIndex) { if (rowData.ifStart == "N") { var html="<img class='op-enable' src='"+appPath+"/js/lib/jquery-easyui/themes/icons/pencil.png' onClick='opreateMessageTemplate("+rowData.id+",\"edit\")' title='编辑'/>"; html +=" <img class='op-enable' src='"+appPath+"/js/lib/jquery-easyui/themes/icons/cancel.png' onclick='cancel("+rowData.id+")' title='删除' />"; html +=" <img class='op-enable' src='"+appPath+"/js/lib/jquery-easyui/themes/icons/ok.png' onClick='doOk("+rowData.id+ ",\"Y\")' title='启用'/>"; html +=" <img class='op-enable' src='"+appPath+"/js/lib/jquery-easyui/themes/icons/search.png' onClick='opreateMessageTemplate("+rowData.id+",\"show\")' title='查看'/>"; return html; } else { var html = " <img class='op-enable' src='" + appPath + "/js/lib/jquery-easyui/themes/icons/no.png' onClick='doOk("+rowData.id + ",\"N\")' title='禁用'/>"; html += " <img class='op-enable' src='" + appPath + "/js/lib/jquery-easyui/themes/icons/search.png' onClick='opreateMessageTemplate("+rowData.id+",\"show\")' title='查看'/>"; return html; } } } ] ], columns : [ [ { field : 'messageTypeName', title : '短信模板', width : 200, align : 'left', sortable : true }, { field : 'content', title : '短信模板内容', width : 400, align : 'left', sortable : true }, { field:'ifStart', title:'状态', width:150, align:'left', sortable:true, formatter:function(value){ if(value=="Y"){ return '启动'; }else if(value=="N"){ return '禁用'; } } }, { field : 'userName', title : '操作人', width : 100, align : 'left', sortable : true }, ] ], toolbar : [ { id : 'btnadd', text : '添加短信模板', iconCls : 'icon-add', handler : function() { // 清空表单 $('#addForm').form('clear'); getStartMessageTypes("add"); $('#addMessageTemplateDiv').window({ title : '添加短信模板', iconCls : 'icon-add', width : 450, height : 250, left : 550, top : 150, modal : true, shadow : true, collapsible : false, minimizable : false, maximizable : false }); } }, { id:'messageSend', text:'发送短信', iconCls:'icon-edit', handler:function(){ var selections = $("#messageTemplateGrid").datagrid('getSelections'); if (selections == null || selections == '') { $.messager.alert('提示信息', '没有短信模板,请选择模板后发送', ''); return; } else if(selections.length>1){ $.messager.alert('提示信息', '请选择一条短信模板', ''); return; } checkIfStart(selections[0].id); } }, { id:'messageSendHistory', text:'发送短信记录', iconCls:'icon-search', handler:function(){ queryMessageSendHistory(); } }] }); }); /** * 查询 */ function doQuery() { $("#messageTemplateGrid").datagrid('load', getQueryParam()); } /******************************************************************************* * 获得参数 */ function getQueryParam() { var MessageTemplate = new Object(); MessageTemplate.ifStart = $("#ifStart").combobox( "getValue"); if ($("#messageTypeName").val()) { MessageTemplate.messageTypeName = $("#messageTypeName").val(); } return MessageTemplate; } /******************************************************************************* * 查询已经开启的短信类型 * */ function getStartMessageTypes(type){ $("#"+type+"MessageTypeId").combobox({ url:appPath + "/page/messageTemplateAct/getStartMessageTypes", valueField:"id", textField:"name" }); } /******************************************************************************* * 显示短信模板 */ function opreateMessageTemplate(messageTemplateId,type) { getStartMessageTypes("upd"); doAjax({ url : appPath + '/page/messageTemplateAct/opreateMessageTemplate/' + messageTemplateId, type : 'post', dataType : "json", success : function(data) { // 短信模板Id $("#messageTemplateIdHidden").val(data.id); $("#messageTypeIdHidden").val(data.messageTypeId); $("#contentHidden").val(data.content); $("#ifStartHidden").val(data.ifStart); // 短信类型名称 $('#updMessageTypeId').combobox("select", data.messageTypeId); // 内容 $('#updContent').val(data.content); // 是否启动 if(data.ifStart=="Y"){ $('#updIfStart').attr('checked','true'); }else{ $('#updIfStart').removeAttr('checked'); } var title; if(type=="edit"){ title="修改短信模板"; }else{ title="查看短信模板"; } $('#updMessageTemplateDiv').window({ title : title, iconCls : 'icon-edit', width : 450, height : 250, left : 550, top : 150, modal : true, shadow : true, collapsible : false, minimizable : false, maximizable : false }); if(type=="show"){ $('#updcontroldiv').css('display','none'); $('#updIfStart').unbind("click"); }else{ $('#updIfStart').bind("click",function(){ if($("#updIfStart").is(":checked")){ $.messager.alert('提示信息', '确定后默认开启', 'info'); }else{ $.messager.alert('提示信息', '确定后默认不开启', 'info'); } }); $('#updcontroldiv').css('display','block'); } $('#updMessageTemplateDiv').window('open'); }, error : function(XMLHttpRequest, textStatus, errorThrown) { $.messager.alert('提示信息', '抱歉,显示失败,' + textStatus, 'error'); } }); } /** * 保存短信模板(添加、更新) */ function saveMessageTemplate(type) { //短信类型 var messageTypeId = $("#" + type + "MessageTypeId").combobox("getValue"); if(messageTypeId ==""){ $.messager.alert("提示", "请选择短信类型!", "info"); return; } if ($('#' + type + 'Content').val() == "") { $.messager.alert("提示", "请输入短信模板内容!", "info"); return; } // 短信模板内容 var content = $.trim($('#' + type + 'Content').val()); if(content.length>250){ $.messager.alert("提示", "短信模板内容不超过250个字符!", "info"); return; } // 是否启动 var ifStart; if($('#' + type + 'IfStart').is(":checked")){ ifStart = "Y"; }else{ ifStart = "N"; } var messageTemplate = new Object(); // 更新的场合,设置短信模板Id if (type == 'upd') { messageTemplate.id = $("#messageTemplateIdHidden").val(); } messageTemplate.content = content; messageTemplate.ifStart = ifStart; messageTemplate.messageTypeId = messageTypeId; $.messager.confirm('提示信息','确定保存该短信模板?',function(r){ if(r){ doAjax({ url : appPath + "/page/messageTemplateAct/saveOrUpdate", type : 'post', data : messageTemplate, success : function(data) { switch (data) { case "ok": if (type == 'add') { $.messager.alert('提示信息', '保存成功', 'info'); } else { $.messager.alert('提示信息', '更新成功', 'info'); } break; default: $.messager.alert('提示信息', '抱歉,失败了', 'error'); break; } $('#' + type + 'MessageTemplateDiv').window('close'); doQuery(); return; }, error : function(XMLHttpRequest, textStatus, errorThrown) { $.messager.alert('提示信息', '抱歉,保存失败,' + textStatus, 'error'); } }); } }); } /** * 启动或者禁用 * */ function doOk(messageTemplateId,ifStart){ var messageTemplate = new Object(); messageTemplate.id = messageTemplateId; messageTemplate.ifStart = ifStart; $.messager.defaults = { ok: "确定", cancel: "取消" }; var info; if(ifStart=='Y'){ info = "是否要启动现有的短信模板?"; }else{ info = "是否要禁用现有的短信模板?"; } $.messager.confirm('提示信息',info,function(r){ if(r){ doAjax({ url : appPath + "/page/messageTemplateAct/saveOrUpdate", type : 'post', data : messageTemplate, success : function(data) { switch (data) { case "ok": if (ifStart == 'Y') { $.messager.alert('提示信息', '启动成功', 'info'); } else { $.messager.alert('提示信息', '禁用成功', 'info'); } break; default: $.messager.alert('提示信息', '抱歉,失败了', 'error'); break; } doQuery(); return; }, error : function(XMLHttpRequest, textStatus, errorThrown) { $.messager.alert('提示信息', '抱歉,保存失败,' + textStatus, 'error'); } }); } }); } /** *删除 * */ function cancel(id){ var messageTemplate = new Object(); messageTemplate.id=id; messageTemplate.isDelete='Y'; $.messager.defaults = { ok: "确定", cancel: "取消" }; $.messager.confirm('提示信息','您确定要删除?',function(r){ if(r){ doAjax({ url : appPath + '/page/messageTemplateAct/saveOrUpdate', type : 'post', data : messageTemplate, success : function(data) { if (data=="ok") { $.messager.alert('提示信息', '删除成功', 'success'); doQuery(); } else { $.messager.alert('提示信息', data.msg + ',操作失败', 'error'); } }, error : function(XMLHttpRequest, textStatus, errorThrown) { $.messager.alert('提示信息', '操作未能完成' + textStatus, 'error'); } }); } }); } /** *重置 * */ function reset(type){ if(type=="upd"){//修改时候重置恢复编辑前内容 // 短信类型名称 $('#updMessageTypeId').combobox("select", $('#messageTypeIdHidden').val()); // 内容 $('#updContent').val($('#contentHidden').val()); // 是否启动 if($('#ifStartHidden').val()=="Y"){ $('#updIfStart').attr('checked','true'); }else{ $('#updIfStart').removeAttr('checked'); } }else{//新增时候重置清空 $("#" + type + "MessageTypeId").combobox("select", ""); $('#' + type + 'Content').val(''); $('#' + type +'IfStart').removeAttr('checked'); } } function clickInfo(){ if($('#addIfStart').is(":checked")){ $.messager.alert('提示信息', '确定后默认开启', 'info'); }else{ $.messager.alert('提示信息', '确定后默认不开启', 'info'); } } /** * 关闭窗口 */ function closeWin(dlg) { $('#' + dlg).window('close'); } /** * 判断短信模板以及短信类型是否开启 * * */ function checkIfStart(messageTemplateId){ doAjax({ url : appPath + "/page/messageTemplateAct/checkIfStart/"+messageTemplateId, type : 'post', dataType : "json", success : function(data) { if (data=="OK") { $('#sendForm').form('clear'); $('#sendMessageDiv').window({ title : '发送短信', iconCls : 'icon-add', width : 800, height : 150, left : 300, top : 150, modal : true, shadow : true, collapsible : false, minimizable : false, maximizable : false }); } else if(data=="TEMPLATE"){ $.messager.alert('提示信息', '短信模板已禁用', 'info'); }else if(data=="TYPE"){ $.messager.alert('提示信息', '短信类型已禁用', 'info'); } }, error : function(XMLHttpRequest, textStatus, errorThrown) { $.messager.alert('提示信息', '出错了', 'error'); } }); } /** * 发送短信 * * */ function sendMessage(){ // 手机号码 var phonesStr = $.trim($('#phones').val()); if(phonesStr.charAt(phonesStr.length-1)==","){ $.messager.alert('提示信息', '输入的号码有误,请重新输入', 'info'); return; } var phones = phonesStr.split(","); for(var i=0;i<phones.length;i++){ var partten = /^1[3,5,8]\d{9}$/; if(partten.test(phones[i])) { //是手机号码 continue; } else { //不是手机号码 $.messager.alert('提示信息', '输入的号码有误,请重新输入', 'info'); return; } } var selections = $("#messageTemplateGrid").datagrid('getSelections'); var messageTemplateId = selections[0].id; //发送短信 doAjax({ url : appPath + "/page/messageTemplateAct/sendMessage/"+phonesStr+"/"+messageTemplateId, type : 'post', dataType : "json", success : function(data) { if (data=="ok") { $.messager.alert('提示信息', '发送成功', 'success'); $('#sendMessageDiv').window('close'); } else { $.messager.alert('提示信息', '发送失败', 'error'); } }, error : function(XMLHttpRequest, textStatus, errorThrown) { $.messager.alert('提示信息', '发送失败', 'error'); } }); } /** * 发送短信记录查询 */ function queryMessageSendHistory(){ $(window.parent.document).find("#sendMessageFrameName").val($(self).attr("name")); parent.addTab("发送短信记录",appPath+"/jsp/order/message_history_query.jsp","icon icon-users",true,"sendMessageQueryFrame"); }
package com.founder.ec.order.action; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.Date; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.sf.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.founder.ec.common.service.SystemService; import com.founder.ec.common.utils.DateUtils; import com.founder.ec.common.utils.HttpSenderUtil; import com.founder.ec.common.utils.MD5; import com.founder.ec.order.model.MessageRecord; import com.founder.ec.order.model.MessageTemplate; import com.founder.ec.order.model.MessageType; import com.founder.ec.order.service.MessageRecordService; import com.founder.ec.order.service.MessageTemplateService; import com.founder.ec.order.service.MessageTypeService; import com.founder.ec.utils.PropertyConfigurer; @Controller @RequestMapping(value="/messageTemplateAct") public class MessageTemplateAction{ @Autowired private MessageTemplateService messageTemplateService; @Autowired private MessageTypeService messageTypeService; @Autowired private MessageRecordService messageRecordService; @Autowired private SystemService systemService; @RequestMapping(value="/getPage") @ResponseBody public Map<String,Object> getPage(HttpServletRequest request,MessageTemplate messageTemplate) { int pageSize=10,pageNo=1; pageNo = Integer.parseInt(request.getParameter("page")); pageSize= Integer.parseInt(request.getParameter("rows")); return messageTemplateService.getPage(messageTemplate, pageNo, pageSize); } /** * 根据Id获取短信模板 */ @RequestMapping(value = "/opreateMessageTemplate/{messageTemplateId}") public void opreateMessageTemplate(HttpServletResponse response, @PathVariable Long messageTemplateId) { MessageTemplate messageTemplate = messageTemplateService.getMessageTemplateById(messageTemplateId); try { response.getWriter().print(JSONObject.fromObject(messageTemplate)); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 保存或更新 * * */ @RequestMapping(value="/saveOrUpdate") @ResponseBody public String saveMessageTemplate(HttpServletRequest request,MessageTemplate messageTemplate){ Integer userId = (Integer)request.getSession().getAttribute("userId"); if (null == messageTemplate.getId()) { messageTemplate.setAddUserId(userId); messageTemplate.setAddTime(DateUtils.longToDateAll(System.currentTimeMillis())); messageTemplate.setEditUserId(userId); messageTemplate.setEditTime(DateUtils.longToDateAll(System.currentTimeMillis())); messageTemplateService.save(messageTemplate); }else{ messageTemplate.setEditUserId(userId); messageTemplate.setEditTime(DateUtils.longToDateAll(System.currentTimeMillis())); messageTemplateService.update(messageTemplate); } return "ok"; } /** * 查询所有已经开启的短信类型 * * */ @RequestMapping(value = "/getStartMessageTypes") public void getStartMessageTypes(HttpServletResponse response, HttpServletRequest request) throws IOException{ response.getWriter().print(net.sf.json.JSONArray.fromObject(messageTypeService.getStartMessageTypes())); } /** * 查询短信发送记录 * * */ @RequestMapping(value="/getMessageRecordPage") @ResponseBody public Map<String,Object> getMessageRecordPage(HttpServletRequest request,MessageRecord messageRecord) { int pageSize=10,pageNo=1; pageNo = Integer.parseInt(request.getParameter("page")); pageSize= Integer.parseInt(request.getParameter("rows")); return messageRecordService.getPage(messageRecord, pageNo, pageSize); } /** * 发送短信 * */ @RequestMapping(value = "/sendMessage/{phonesStr}/{messageTemplateId}") @ResponseBody public String sendMessage(HttpServletRequest request,HttpServletResponse response, @PathVariable String phonesStr, @PathVariable Long messageTemplateId){ Integer userId = (Integer)request.getSession().getAttribute("userId"); try { MessageTemplate messageTemplate = messageTemplateService.getMessageTemplateById(messageTemplateId); //发送的消息 String msg=messageTemplate.getContent(); //发送数据 long time = new Date().getTime(); msg = URLEncoder.encode(msg, "UTF-8"); String check="",param ="",NOTICE_ADDRESS ="",returnStr=""; String[] phones = phonesStr.split(","); for(int i=0;i<phones.length;i++){ check = MD5.getMD5(time + "www.j1.com"); param = "t=" + time + "&mobile="+phones[i]+"&msg=" + msg + "&check=" + check; NOTICE_ADDRESS=(String)PropertyConfigurer.getContextProperty("notice.address"); returnStr= HttpSenderUtil.sendPost(NOTICE_ADDRESS, param); //真实地址 System.out.println("returnStr:"+returnStr); } //将发送短信记录存进表message_record MessageRecord messageRecord = new MessageRecord(); messageRecord.setMessageTemplateId(messageTemplateId); messageRecord.setPhones(phonesStr); messageRecord.setUserId(userId); messageRecord.setSendTime(DateUtils.longToDateAll(System.currentTimeMillis())); messageRecordService.save(messageRecord); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return "ok"; } /** * 检查短信类型与短信模板是否开启 * * */ @RequestMapping(value = "/checkIfStart/{messageTemplateId}") @ResponseBody public String checkIfStart(HttpServletResponse response, @PathVariable Long messageTemplateId){ MessageTemplate messageTemplate = messageTemplateService.getMessageTemplateById(messageTemplateId); if("N".equals(messageTemplate.getIfStart())){ return "TEMPLATE"; }else{ MessageType messageType = messageTypeService.getMessageTypeById(messageTemplate.getMessageTypeId()); if("N".equals(messageType.getIfStart())){ return "TYPE"; }else{ return "OK"; } } } }
http://***/ec-order/page/messageTemplateAct/sendMessage/158***23367/26