提交 539676d2 编写于 作者: dong.an's avatar dong.an

短信验证码通道优化

上级 b65fb88d
流水线 #10237 已失败 于阶段
in 0 second
...@@ -8,6 +8,8 @@ public class Constants { ...@@ -8,6 +8,8 @@ public class Constants {
private Constants() {} private Constants() {}
public static final String SEND_MESSAGE = "/sms/send";
/** 批量短信url */ /** 批量短信url */
public static final String BATCH_SEND_MESSAGE = "/sms/send_batch_dif"; public static final String BATCH_SEND_MESSAGE = "/sms/send_batch_dif";
......
...@@ -5,21 +5,24 @@ import com.alibaba.fastjson.JSONObject; ...@@ -5,21 +5,24 @@ import com.alibaba.fastjson.JSONObject;
import com.pica.cloud.account.account.server.configuration.PropertiesConfiguration; import com.pica.cloud.account.account.server.configuration.PropertiesConfiguration;
import com.pica.cloud.account.account.server.constants.Constants; import com.pica.cloud.account.account.server.constants.Constants;
import com.pica.cloud.account.account.server.util.MobileSmsEntityContent; import com.pica.cloud.account.account.server.util.MobileSmsEntityContent;
import com.pica.cloud.account.account.server.util.PICAPSendMsgModel;
import com.pica.cloud.foundation.entity.PicaException; import com.pica.cloud.foundation.entity.PicaException;
import com.pica.cloud.foundation.entity.PicaResultCode; import com.pica.cloud.foundation.entity.PicaResultCode;
import com.pica.cloud.foundation.utils.constants.CommonConstants;
import com.pica.cloud.foundation.utils.constants.SysCode;
import com.pica.cloud.foundation.utils.controller.BaseController; import com.pica.cloud.foundation.utils.controller.BaseController;
import com.pica.cloud.foundation.utils.entity.PicaUser; import com.pica.cloud.foundation.utils.entity.PicaUser;
import com.pica.cloud.foundation.utils.utils.CommonUtil; import com.pica.cloud.foundation.utils.utils.CommonUtil;
import com.pica.cloud.foundation.utils.utils.HttpClientUtil; import com.pica.cloud.foundation.utils.utils.HttpClientUtil;
import com.pica.cloud.foundation.utils.utils.MD5Util;
import com.pica.cloud.foundation.utils.utils.json.Object2Map; import com.pica.cloud.foundation.utils.utils.json.Object2Map;
import com.sun.deploy.association.utility.AppConstants;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import java.util.Arrays;
import java.util.HashMap; import java.util.*;
import java.util.List;
import java.util.Map;
/** /**
* controller基类 * controller基类
...@@ -97,22 +100,29 @@ public abstract class AccountBaseController extends BaseController { ...@@ -97,22 +100,29 @@ public abstract class AccountBaseController extends BaseController {
} }
} }
String batchNo = CommonUtil.getBatchNo(sysCode); //短信批次号 String messageUrl = configuration.getMessageUrl() + Constants.SEND_MESSAGE;
Map<String,Object> batchMap = new HashMap(); //批量map PICAPSendMsgModel picapSendMsgModel = new PICAPSendMsgModel();
String sign = StringUtils.EMPTY; //获取消息发送的签名 picapSendMsgModel.setContent(content);
MobileSmsEntityContent smsEntity = new MobileSmsEntityContent(); picapSendMsgModel.setMobile(mobile);
smsEntity.setMobile(mobile); picapSendMsgModel.setUserId((int) senderId);
smsEntity.setSms_entity_id(0); ArrayList<String> params = new ArrayList();
smsEntity.setContent(content); params.add("");
List<MobileSmsEntityContent> list = Arrays.asList(smsEntity); params.add(String.valueOf(sysCode));
picapSendMsgModel.setParams(params);
picapSendMsgModel.setTmplId(17636);
picapSendMsgModel.setSign("");
picapSendMsgModel.setExt("");
picapSendMsgModel.setExtend("");
picapSendMsgModel.setSupplementFlag(true);
picapSendMsgModel.setSms_entity_id(0);
batchMap.put("mobileSmsEntityContentList", list); long currentTimeMillis = System.currentTimeMillis();
batchMap.put("sign", sign); picapSendMsgModel.setTime(String.valueOf(currentTimeMillis));
batchMap.put("userId", senderId); picapSendMsgModel.setKey(MD5Util.MD5("pica" + currentTimeMillis));
batchMap.put("batchNo", batchNo); picapSendMsgModel.setSysCode(SysCode.APP.sysCode());
picapSendMsgModel.setSysName(SysCode.APP.sysName());
String postData = JSON.toJSONString(batchMap); String postData = JSON.toJSONString(picapSendMsgModel);
String messageUrl = configuration.getMessageUrl() + Constants.BATCH_SEND_MESSAGE;
String jsonObj = HttpClientUtil.httpExecute(messageUrl, postData); String jsonObj = HttpClientUtil.httpExecute(messageUrl, postData);
if (StringUtils.isNotBlank(jsonObj)) { if (StringUtils.isNotBlank(jsonObj)) {
logger.info("发送短信成功,返回结果:{}", jsonObj); logger.info("发送短信成功,返回结果:{}", jsonObj);
......
package com.pica.cloud.account.account.server.util;
import java.io.Serializable;
/**
* 设备信息
* @author Victor
*/
public class PICAPDeviceInfo implements Serializable {
private static final long serialVersionUID = -2700102686964780189L;
private String device_brand; //终端品牌名称
private String device_model; //设备型号 1 android 2 ios
private Integer device_type = 0; //设备类型 2.android, 3.ioss
private String system_level; //android os版本的SDKlevel, iOS的系统版本号
private String device_ip; //IP地址
private String resolution_wh; //分辨率_宽度_高度
private String device_imei; //imei信息
private String device_ops; //运营商
private String device_net; //联网情况(wifi,3G.4G)
private String app_channel; //App下载来源:0-pc,1-iosappstore,2-yingyongbao,3-lenovo,4-qcode
private String app_version; //App应用版本号
private String app_mac; //手机mac地址,
private String app_uuid; //ios uuid?android:uid
private String browser_ver; // 浏览器版本
public String getDevice_brand() {
return device_brand;
}
public void setDevice_brand(String device_brand) {
this.device_brand = device_brand;
}
public String getDevice_model() {
return device_model;
}
public void setDevice_model(String device_model) {
this.device_model = device_model;
}
public Integer getDevice_type() {
return device_type;
}
public void setDevice_type(Integer device_type) {
this.device_type = device_type;
}
public String getSystem_level() {
return system_level;
}
public void setSystem_level(String system_level) {
this.system_level = system_level;
}
public String getDevice_ip() {
return device_ip;
}
public void setDevice_ip(String device_ip) {
this.device_ip = device_ip;
}
public String getResolution_wh() {
return resolution_wh;
}
public void setResolution_wh(String resolution_wh) {
this.resolution_wh = resolution_wh;
}
public String getDevice_imei() {
return device_imei;
}
public void setDevice_imei(String device_imei) {
this.device_imei = device_imei;
}
public String getDevice_ops() {
return device_ops;
}
public void setDevice_ops(String device_ops) {
this.device_ops = device_ops;
}
public String getDevice_net() {
return device_net;
}
public void setDevice_net(String device_net) {
this.device_net = device_net;
}
public String getApp_channel() {
return app_channel;
}
public void setApp_channel(String app_channel) {
this.app_channel = app_channel;
}
public String getApp_version() {
return app_version;
}
public void setApp_version(String app_version) {
this.app_version = app_version;
}
public String getApp_mac() {
return app_mac;
}
public void setApp_mac(String app_mac) {
this.app_mac = app_mac;
}
public String getApp_uuid() {
return app_uuid;
}
public void setApp_uuid(String app_uuid) {
this.app_uuid = app_uuid;
}
public String getBrowser_ver() {
return browser_ver;
}
public void setBrowser_ver(String browser_ver) {
this.browser_ver = browser_ver;
}
@Override
public String toString() {
return "PICAPDeviceInfo [device_brand=" + device_brand + ", device_model=" + device_model + ", device_type="
+ device_type + ", system_level=" + system_level + ", device_ip=" + device_ip + ", resolution_wh="
+ resolution_wh + ", device_imei=" + device_imei + ", device_ops=" + device_ops + ", device_net="
+ device_net + ", app_channel=" + app_channel + ", app_version=" + app_version + ", app_mac=" + app_mac
+ ", app_uuid=" + app_uuid + ", browser_ver=" + browser_ver + "]";
}
}
package com.pica.cloud.account.account.server.util;
import java.util.ArrayList;
/**
* Created by PicaHelth on 2017/8/18.
* 发送短信调用serviceImpl使用对象
*/
public class PICAPSendMsgModel {
//大汉三通发送短信内容
private String content;
//手机
private String mobile;
//发送日志创建人,可为空
private Integer userId;
//腾讯发送消息模内容
private ArrayList<String> params;
//腾讯发送短信模板id
private Integer tmplId;
//发送短信签名:DHST 或者 YQY 或者 "" -----根据sign获取 短信标题
private String sign;
//腾讯发送字段
private String extend;
private String ext;
//发送消息实体Id,当发送患教和患者消息推送时设置
private Integer sms_entity_id;
//设备信息
private PICAPDeviceInfo deviceInfo;
//标识可配置
private String key;
//系统code
private int sysCode;
//系统名称
private String sysName;
//批次号
private String batch_no;
public String getBatch_no() {
return batch_no;
}
public void setBatch_no(String batch_no) {
this.batch_no = batch_no;
}
/**
* 当前时间long
*/
private String time;
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public int getSysCode() {
return sysCode;
}
public void setSysCode(int sysCode) {
this.sysCode = sysCode;
}
public String getSysName() {
return sysName;
}
public void setSysName(String sysName) {
this.sysName = sysName;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public Integer getSms_entity_id() {
return sms_entity_id;
}
public void setSms_entity_id(Integer sms_entity_id) {
this.sms_entity_id = sms_entity_id;
}
//是否触发短信补发,默认为false不补发,如果要补发,设置为true
private boolean supplementFlag;
//线程读取数据库中失败短信的sql执行的时间间隔,默认 15秒
private Long timeInterval;
public Long getTimeInterval() {
return timeInterval;
}
public void setTimeInterval(Long timeInterval) {
this.timeInterval = timeInterval;
}
public boolean isSupplementFlag() {
return supplementFlag;
}
public void setSupplementFlag(boolean supplementFlag) {
this.supplementFlag = supplementFlag;
}
public String getExtend() {
return extend;
}
public void setExtend(String extend) {
this.extend = extend;
}
public String getExt() {
return ext;
}
public void setExt(String ext) {
this.ext = ext;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public ArrayList<String> getParams() {
return params;
}
public void setParams(ArrayList<String> params) {
this.params = params;
}
public Integer getTmplId() {
return tmplId;
}
public void setTmplId(Integer tmplId) {
this.tmplId = tmplId;
}
public String getSign() {
return sign;
}
public void setSign(String sign) {
this.sign = sign;
}
public PICAPDeviceInfo getDeviceInfo() {
return deviceInfo;
}
public void setDeviceInfo(PICAPDeviceInfo deviceInfo) {
this.deviceInfo = deviceInfo;
}
}
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册