短信发送

来源:互联网 发布:思派网络 编辑:程序博客网 时间:2024/06/01 09:01
package com.chinasoft.biz.applicant.controller;


import java.io.IOException;


import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;


import com.chinasoft.biz.applicant.service.SendMessageService;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;


@Controller
@RequestMapping("/sendMessage")
public class SendMessageController {

@Resource
SendMessageService sendMessageServer;
Gson gson = new GsonBuilder().create(); 

@RequestMapping(value ="/send",method = RequestMethod.POST)
@ResponseBody
public void saveRegister(String phoneList ,String sendContent, HttpServletResponse response )
{
String[] result = sendMessageServer.sendMessage(phoneList,sendContent);
try {
response.getWriter().print(gson.toJson(result));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}



package com.chinasoft.biz.applicant.service;


public interface SendMessageService {
public String[]  sendMessage(String phoneList ,String sendContent);
}


package com.chinasoft.biz.applicant.service.impl;


import java.util.Map;


import org.springframework.stereotype.Service;


import com.chinasoft.biz.applicant.service.SendMessageService;
import com.chinasoft.util.MessageUtil;


@Service("sendMessageServer")
public class SendMessageServiceImpl implements SendMessageService {


@Override
public String[] sendMessage(String phoneList, String sendContent) {
// TODO Auto-generated method stub
Map<String, String>  map = MessageUtil.sendMessage(phoneList, sendContent);
String[] result = new String[]{map.get("result"),map.get("message")};
return result;
}
}




package com.chinasoft.util;


import java.io.InputStream;
import java.util.Map;
import java.util.Properties;


import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;


import com.google.common.collect.Maps;


public class MessageUtil {
    public static String nameSpace="http://tempuri.org/";
    public static String url = "http://www.chinaweimei.com/smsapi/Service.asmx?wsdl";
    public static String getBalanceName="GetBalance";
    public static String sendSMSName="SendSMS";
    
    /**
     * 发送短信 
     * @param phones  手机号,多个手机号以,逗号隔开
     * @param contents 短信内容
     * @return map  key(result; message) result: 1 true/0 false; message:"xxxxxx"
     */
    public static Map<String, String> sendMessage(String phones, String contents) { 
          Map<String, String> resultMap = Maps.newHashMap();
          try {  
            Options options = new Options();  
            // 指定调用WebService的URL  
            EndpointReference targetEPR = new EndpointReference(url);  
            options.setTo(targetEPR);  
            options.setAction(nameSpace + sendSMSName);  
        
            ServiceClient sender = new ServiceClient();  
            sender.setOptions(options);  
              
            OMFactory fac = OMAbstractFactory.getOMFactory();  
            String tns = nameSpace;
            // 命名空间,有时命名空间不增加没事,不过最好加上,因为有时有事,你懂的  
            OMNamespace omNs = fac.createOMNamespace(tns, "");  
        
            OMElement method = fac.createOMElement(sendSMSName, omNs);  
            OMElement user = fac.createOMElement("user", omNs);
            OMElement pass = fac.createOMElement("pass", omNs);
            OMElement moblie = fac.createOMElement("moblie", omNs);
            OMElement content = fac.createOMElement("content", omNs);
            String userName = getProValueFromName("sysTemConfig.properties", "sendMessage.user");
            String userPass = getProValueFromName("sysTemConfig.properties", "sendMessage.pass");
            user.setText(userName);
            pass.setText(userPass);
            moblie.setText(phones);
            content.setText(contents);
            method.addChild(user);
            method.addChild(pass);  
            method.addChild(moblie);  
            method.addChild(content);  
            method.build();  
            OMElement resultOME = sender.sendReceive(method);  
            String s = resultOME.getFirstElement().getText();
//            String[] result = s.split(new String("\\|"));
            resultMap.put("result", s.substring(0, 1));
            resultMap.put("message", s.substring(2, s.length()));
          } catch (AxisFault axisFault) {  
            axisFault.printStackTrace(); 
            resultMap.put("result", "0");
            resultMap.put("message", "短信发送异常");
          }  
          return resultMap;
    }  
    
    /**
     * 获得该短信接口还能发送的短信条数
     */
    public static  Map<String, String> getMessageCount() {  
        Map<String, String> resultMap = Maps.newHashMap();
        try {  
          Options options = new Options();  
          // 指定调用WebService的URL  
          EndpointReference targetEPR = new EndpointReference(url);  
          options.setTo(targetEPR);  
          options.setAction(nameSpace + getBalanceName);  
      
          ServiceClient sender = new ServiceClient();  
          sender.setOptions(options);  
            
          OMFactory fac = OMAbstractFactory.getOMFactory();  
          String tns = nameSpace;
          // 命名空间,有时命名空间不增加没事,不过最好加上,因为有时有事,你懂的  
          OMNamespace omNs = fac.createOMNamespace(tns, "");  
      
          OMElement method = fac.createOMElement(getBalanceName, omNs);  
          OMElement user = fac.createOMElement("user", omNs);
          OMElement pass = fac.createOMElement("pass", omNs);
          String userName = getProValueFromName("sysTemConfig.properties", "sendMessage.user");
          String userPass = getProValueFromName("sysTemConfig.properties", "sendMessage.pass");
          user.setText(userName);
          pass.setText(userPass);
          method.addChild(user);
          method.addChild(pass);  
          method.build();  
            
          OMElement resultOME = sender.sendReceive(method);  
          String s = resultOME.getFirstElement().getText();
//          String[] result = s.split("\\|");
          resultMap.put("result", s.substring(0, 1));
          resultMap.put("message", s.substring(2, s.length()));
        } catch (AxisFault axisFault) {  
          axisFault.printStackTrace(); 
          resultMap.put("result", "0");
          resultMap.put("message", "短信发送异常");
        }
        return resultMap;
     }
    
    
    @SuppressWarnings("static-access")
    public static String getProValueFromName(String fileName,String rootName){
        String key = "";
        try {
            InputStream inStream = MessageUtil.class.getClassLoader().getResourceAsStream(fileName);
            Properties prop = new Properties();  
            prop.load(inStream);  
            key = prop.getProperty(rootName);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
        
        return key;
    }
    
    public static void main(String[] args) {
//         System.out.println(getMessageCount());
         System.out.println(sendMessage("131221", "招聘通知:同学您好,中软国际重庆邮电大学专场招聘行程安排已发送到您网申预留邮箱,感谢您的关注。我司将于10月20日 本周五晚19:00于重邮2216教室开展招聘宣讲会,欢迎参加。"));
    }
    
}



//发送短信
function sendMessage()
{
var ids = $("#new_candiadates_answer").jqGrid('getGridParam','selarrrow');
var sendUsers = [];
var phoneList = "";
$.each(ids, function(index, id){
var rowData = $("#new_candiadates_answer").jqGrid("getRowData", id);
var sendUser = {};
sendUser.name = rowData.examineName;
sendUser.phone = rowData.examineAccount;

phoneList += rowData.phone+",";
sendUsers.push(sendUser);
});
var phones = phoneList.substr(0, phoneList.length-1);
var html = "";
html += "<div><div style='max-height:300px;width: 400px;overflow:auto;'>" +
"<table class='userInfo table' cellspacing='0' cellpadding='0' style='width: 100%;color:#666;font-size: 14px;'><tr><td>姓名</td>&nbsp;&nbsp;&nbsp;<td>手机号码</td></tr>" ;
$.each(sendUsers, function(i, sendUser){
html +="<tr><td>"+sendUser.name+"</td>&nbsp;&nbsp;&nbsp;<td>"+sendUser.phone+"</td></tr>";
});
html += "<tr><td>总条数:</td><td>"+sendUsers.length+"</td></tr>";
html += "</table></div>";
html += "<div>";
html += "<textarea  type='text' id= 'sendText' class='userInfoText'  maxlength='200' placeholder='请输入发送信息内容,限200以内!' tabindex='1'" +
" onblur='checkText()' onfocus='checktips()' ></textarea><span id='sendTextError' style='color: red'></span>";
html += "</div>";
html += "</div>";
if(sendUsers.length==0){
zeroModal.error("您没有选择发送消息的人,请重新选择");
return false;
}
$(html).dialog({
title : "用户信息显示",
modal: true,
closeOnClickOutside : false,
clickDefaultButtonOnEnter: false,
buttons : {
"确定" : function() {
if(checkText()){
$.ajax({          
        url: basePath + 'sendMessage/send?random=' + Math.random(),
        type: "POST",  
//         dataType: "json",  
        data: {
         "phoneList" : phones.toString(),
         "sendContent":$("#sendText").val().toString()
        },  
        success: function (data) {
         data = JSON.parse(data);
         if(data[0]==1){
         zeroModal.success("短信已成功发送");
         CommUpdateSengMsg(ids,"1");
         }else if(data[0]==0){
         zeroModal.error(data[1]);
         }
     }
    });
}else {
return false;
}
},
"取消" : function() {
$(this).dialog("close"); 
}
}
});
}

原创粉丝点击