SmsControl.java 5.61 KB
package com.sincere.haikang.control;

import com.sincere.haikang.bean.SmsBean;
import com.sincere.haikang.bean.StudentBean;
import com.sincere.haikang.utils.EncodeUtils;
import com.sincere.haikang.utils.FileUtils;
import com.sincere.haikang.utils.SmsHttpUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import org.springframework.boot.actuate.trace.http.HttpTrace;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.*;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.*;

@RestController
@Api("短信发送")
@RequestMapping(value = "sms/*")
public class SmsControl {


    @RequestMapping(value = "sendMsg", method = RequestMethod.GET,produces="application/json;charset=UTF-8")
    @ResponseBody
    @ApiImplicitParam(name = "ExtendAccessNum",required = false)
    public String sendMsg(@RequestParam("SpCode") String SpCode, @RequestParam("LoginName") String LoginName, @RequestParam("Password") String Password
            , @RequestParam("MessageContent") String MessageContent, @RequestParam("MessageType") String MessageType
            , @RequestParam("UserNumber") String UserNumber, @RequestParam("SerialNumber") String SerialNumber
            , @RequestParam("ScheduleTime") String ScheduleTime, String ExtendAccessNum
            , @RequestParam("f") String f) {
        System.out.println("接口请求");
        return sendSms(SpCode, LoginName, Password, MessageContent, MessageType, UserNumber, SerialNumber, ScheduleTime, ExtendAccessNum, f);
//        return "success";
    }

    @PostMapping(value = "sendMsgs")
    public String sendMags(@RequestBody SmsBean smsBean){
        System.out.println("接口请求POST:"+smsBean.toString());
        return sendSms(smsBean.getSpCode(), smsBean.getLoginName(), smsBean.getPassword(),
                smsBean.getMessageContent(), smsBean.getMessageType(), smsBean.getUserNumber(), smsBean.getSerialNumber(),
                smsBean.getScheduleTime(), "", smsBean.getF());

    }

//    @PostMapping(value = "sendMsg")
//    public String sendMsg(@RequestBody MultiValueMap<String,String> multiValueMap){
//
//        String SpCode = multiValueMap.
//
//
//    }


    private String sendSms(String spCode, String loginName, String password, String messageContent, String messageType, String userNumber, String serialNumber, String scheduleTime, String extendAccessNum, String f) {
        String url = "http://ytx.zj165.com:9098/api/send";
        Map<String, Object> params = initSmsParams(spCode, loginName, password, messageContent, messageType, userNumber, serialNumber, scheduleTime, extendAccessNum, f);
        String result = null;
        try {
            result = SmsHttpUtils.doGet(url, params);
        } catch (IOException e) {
            FileUtils.getInstance().writeLogs(String.format("GET短信发送的响应失败【%s】",e.toString()),FileUtils.liantong);
            e.printStackTrace();
        }
        System.out.println(String.format("GET短信发送的响应报文【%s】",result)+" messageContent:"+messageContent);

        FileUtils.getInstance().writeLogs(String.format("GET短信发送的响应报文【%s】",result),FileUtils.liantong);
        return result;
    }


    /**
     * 功能描述:初始化短信参数
     *
     * @param
     * @param spCode
     * @param loginName
     * @param password
     * @param messageContent
     * @param messageType
     * @param userNumber
     * @param serialNumber
     * @param scheduleTime
     * @param extendAccessNum
     * @param f
     * @return java.util.Map<java.lang.String , java.lang.Object>
     * @author uccp
     * @date 2019/3/22 23:09
     */
    private Map<String, Object> initSmsParams(String spCode, String loginName, String password, String messageContent, String messageType, String userNumber, String serialNumber, String scheduleTime, String extendAccessNum, String f) {

        Map<String, Object> params = new HashMap<>(9);
        //企业编号
        params.put("SpCode", spCode);
        //用户名称
        params.put("LoginName", loginName);
        //用户密码
        params.put("Password", password);
        //短信内容, 最大480个字(短信内容要求的编码为gbk)
            params.put("MessageContent",EncodeUtils.encodeStr(messageContent));
        //短信类型,1=验证码、2=通知、3=广告 (没传或者非1、2、3系统会默认为4=其他)
        params.put("MessageType", messageType);
        //手机号码(多个号码用”,”分隔),最多1000个号码
        params.put("UserNumber", userNumber);
        //流水号,20位数字,唯一 (规则自定义,建议时间格式精确到毫秒)
        params.put("SerialNumber", serialNumber);
        //预约发送时间,格式:yyyyMMddhhmmss,如‘20090901010101’
        params.put("ScheduleTime", scheduleTime);
        //接入号扩展号(默认不填,扩展号为数字,扩展位数由当前所配的接入号长度决定,整个接入号最长4位)
        if (extendAccessNum!=null)
        params.put("ExtendAccessNum", extendAccessNum);
        /*
         * 提交时检测方式
         * 为1时,提交号码中有效的号码仍正常发出短信,无效的号码在返回参数faillist中列出
         * 不为1或该参数不存在,提交号码中只要有无效的号码,那么所有的号码都不发出短信,所有的号码在返回参数faillist中列出
         */
        params.put("f", f);

        return params;
    }

    private int getThreeRandomNumbers() {
        return new java.util.Random().nextInt(900) + 100;
    }

}