java实现发送短信的模板
来源:互联网 发布:arduino编程语言 编辑:程序博客网 时间:2024/06/06 04:36
不单单只发验证码:123456 ;需要加一些发送方的信息,
譬如:验证码:123456,尊敬的会员,您正在使用手机号更换服务[验证码告知他人将导致账号被盗,请勿泄露]【中国银行】。
上面短信接口提供商只提供我们123456 这时需要添加相关模板,还有其他场景需要发送短信,不同场景所对应的模板是不一样的
结合我实际项目中的例子,记录下短信模板的开发
Java方法:
public Map<String, Object> getMessage(MessageTypeBean messageTypeBean) throws Exception { Map<String, Object> map = new HashMap<String, Object>(); try { if(StringUtil.isEmpty(messageTypeBean)){ throw new MessageException("发送短信请求参数为空!"); } MemberInfoBean memberInfoBean = null; MessageUserBean messageUserBean = null; //短信信息 String message = ""; //验证码 String verCode = String.valueOf((int) ((Math.random() * 9 + 1) * 100000)); //短信内容类型 int authCodeType = messageTypeBean.getAuthCodeType(); //商户名称 String merchName = messageTypeBean.getMerchName(); //商户号 String merchNo = messageTypeBean.getMerchNo(); //会员编号 String memberNo = messageTypeBean.getMemberNo(); //会员手机号 String phone = messageTypeBean.getPhone(); //消费金额 String tranAmount = messageTypeBean.getTranAmount(); //门店名称 String storeName = messageTypeBean.getStoreName(); //门店联系电话 String telephone = messageTypeBean.getTelephone(); //调整方式 String adjustType = messageTypeBean.getAdjustType(); //调整金额 String adjustNum = null; if(!StringUtil.isEmpty(messageTypeBean.getAdjustNum())){ adjustNum = messageTypeBean.getAdjustNum().toString(); } //调整后积分值 String afterPoint = null; if(!StringUtil.isEmpty(messageTypeBean.getAfterPoint())){ afterPoint = messageTypeBean.getAfterPoint().toString(); } //调整后的金额 String afterAmount = null; if(!StringUtil.isEmpty(messageTypeBean.getAfterAmount())){ afterAmount = messageTypeBean.getAfterAmount().toString(); } //充值金额 String rechargeAmount = null; if(!StringUtil.isEmpty(messageTypeBean.getRechargeAmount())){ rechargeAmount = messageTypeBean.getRechargeAmount().toString(); } //通知剩余金额 String availableAmount = null; if(!StringUtil.isEmpty(messageTypeBean.getAvailableAmount())){ availableAmount = messageTypeBean.getAvailableAmount().toString(); } MessageRecordBean messageRecordBean = new MessageRecordBean(); logger.info("根据会员编号手机号获取短信"); if (StringUtil.isEmpty(merchNo)) { throw new MessageException("您的商户号不正确!"); } if (StringUtil.isEmpty(memberNo)) { throw new MessageException("您的会员卡号不正确!"); } if (StringUtil.isEmpty(phone)) { throw new MessageException("您还未输入手机号,请输入手机号!"); } // 正则表达式判断手机号码是否符合 if (!Pattern.matches(REGEX_MOBILE, phone)) { logger.info("手机号码输入有误!"); throw new MessageException("您的手机号输入有问题,请重新输入!"); } MemberInfoBean paramMemberInfo = new MemberInfoBean(); paramMemberInfo.setMerchNo(merchNo); paramMemberInfo.setMemberNo(memberNo); memberInfoBean = memberDao.getMemberInfoSelective(paramMemberInfo); if(StringUtil.isEmpty(memberInfoBean) || StringUtil.isEmpty(memberInfoBean.getMerchNo())){ throw new MessageException("您还未注册会员,请先注册成为会员"); }else{ //判断会员是否已经被锁定 if (Constant.MEMBER_STATUS_LOCKED .equals(memberInfoBean.getStatus())) { logger.info("会员锁定状态不能修改手机号"); throw new MessageException("会员已锁定,暂不能发送验证码"); } //修改手机号判断是否已经存在该会员 if (Constant.AUTHCODETYPE_CHANGE == authCodeType) { MemberInfoBean validateMemberInfo = new MemberInfoBean(); validateMemberInfo.setMerchNo(merchNo); validateMemberInfo.setPhone(phone); validateMemberInfo = memberDao.getMemberInfoSelective(validateMemberInfo); if (!StringUtil.isEmpty(validateMemberInfo)) { throw new MessageException("该手机号码已是会员!"); } //短信内容 message = MessageInfoUtils.getMessageForCHANGE(verCode,merchName); } //新增会员 if (Constant.AUTHCODETYPE_ADD == authCodeType) { message = MessageInfoUtils.getMessageForADD(merchName); } //会员储值消费 if (Constant.AUTHCODETYPE_CONSUME == authCodeType) { message = MessageInfoUtils.getMessageForCONSUME(phone, tranAmount, storeName, telephone); } //积分调整 if (Constant.AUTHCODETYPE_POINT_ADJUST == authCodeType) { message = MessageInfoUtils.getMessageForPOINTADJUST(adjustType,adjustNum,afterPoint,storeName,telephone); } //余额调整 if (Constant.AUTHCODETYPE_BALANCE_ADJUST == authCodeType) { message = MessageInfoUtils.getMessageForBALANCEADJUST(adjustType, adjustNum,afterAmount,storeName,telephone); } //充值 if (Constant.AUTHCODETYPE_RECHARGE == authCodeType) { message = MessageInfoUtils.getMessageForRECHARGE(rechargeAmount, availableAmount, storeName, telephone); } messageUserBean = memberDao.getMessageUser(memberInfoBean.getMerchNo()); if(StringUtil.isEmpty(messageUserBean) || StringUtil.isEmpty(messageUserBean.getAccount()) || StringUtil.isEmpty(messageUserBean.getPassword())){ throw new MessageException("短信发送失败啦,请重试"); } String account = messageUserBean.getAccount(); String password = messageUserBean.getPassword(); /* password =DesUtil.decrypt(password); */ String result = MessageValidateUtils.getMessage(configProperties.getMessageUrl(), account, password, phone, message); if (result == null) { throw new MessageException("短信发送失败啦,请重试"); } if ("0".equals(result)) { //如果是发送的验证码需要存redis;如果是通知,则不需要存 if(Constant.AUTHCODETYPE_RECHARGE == authCodeType){ RedisUtils.set(merchNo + phone + authCodeType, message); } logger.info("短信消息发送成功!"); messageRecordBean.setStoreNo(memberInfoBean.getStoreNo()); messageRecordBean.setPlatformName(messageUserBean.getPlatformName()); messageRecordBean.setMobile(phone); messageRecordBean.setContent(message); messageRecordBean.setStatus(1); messageRecordBean.setSendTime(DateUtils.getCurrentDateString()); memberDao.saveMessageRecord(messageRecordBean); map.put("result", true); } else { logger.info("短信消息发送失败! status: " + result); messageRecordBean.setStoreNo(memberInfoBean.getStoreNo()); messageRecordBean.setPlatformName(messageUserBean.getPlatformName()); messageRecordBean.setMobile(phone); messageRecordBean.setContent(message); messageRecordBean.setStatus(2); messageRecordBean.setSendTime(DateUtils.getCurrentDateString()); memberDao.saveMessageRecord(messageRecordBean); map.put("result", false); map.put("exception", "短信发送失败,请稍后重试"); } } } catch (MessageException e) { logger.error("发送短信异常:" + e.getMessage()); map.put("exception", e.getMessage()); return map; } catch (Exception e) { logger.error("发送短信异常:" + e.getMessage()); map.put("exception", "短信发送失败,请稍后重试"); return map; } return map; }说明:不同的场景对应不同的message,将只有需要发送验证码的存入redis里用于下一次验证,只是通知短信则不需要
MessageTypeBean 字段略过
常量:
/** 更换/绑定手机号 */ public static final Integer AUTHCODETYPE_MOD = 1; /** 付款 */ public static final Integer AUTHCODETYPE_PAY = 2; /** 新增会员 */ public static final Integer AUTHCODETYPE_ADD = 3; /** 会员储值消费 */ public static final Integer AUTHCODETYPE_CONSUME = 4; /** 更换手机号 */ public static final Integer AUTHCODETYPE_CHANGE = 5; /** 积分调整 */ public static final Integer AUTHCODETYPE_POINT_ADJUST = 6; /** 余额调整 */ public static final Integer AUTHCODETYPE_BALANCE_ADJUST = 7; /** 充值 */ public static final Integer AUTHCODETYPE_RECHARGE = 8;模板util类:
package common.anmav.utils;public class MessageInfoUtils { /** * 新增会员 */ public static final String MESSAGE_TEMPLETE_ADD = "恭喜您开通%s会员,关注微信公众号将有更多惊喜哦。【%s】"; /** * 会员储值消费 */ public static final String MESSAGE_TEMPLETE_CONSUME = "%s会员,您使用会员储值支付%s元,如非本人操作请联系【%s】%s。"; /** * 更换手机号 */ public static final String MESSAGE_TEMPLETE_CHANGE = "验证码:%s,尊敬的会员,您正在使用手机号更换服务[验证码告知他人将导致账号被盗,请勿泄露]【%s】。"; /** * 积分调整 */ public static final String MESSAGE_TEMPLETE_POINT_ADJUST = "您的积分%s%s积分,调整后积分为:%s分,如有疑问请致电%s【%s】"; /** * 余额调整 */ public static final String MESSAGE_TEMPLETE_BALANCE_ADJUST = "您的余额%s%s元,调整后储值余额为:%s元,如有疑问请致电%s【%s】"; /** * 充值 */ public static final String MESSAGE_TEMPLETE_RECHARGE = "您已充值%s元,充值后储值余额为:%s元,如有疑问请致电%s【%s】"; /** * 新增会员 */ public static String getMessageForADD(String merchName){ return String.format(MESSAGE_TEMPLETE_ADD, merchName); } /** * 会员储值消费 */ public static String getMessageForCONSUME(String phone,String tranAmount,String storeName,String telephone){ return String.format(MESSAGE_TEMPLETE_CONSUME, phone, tranAmount, storeName, telephone); } /** * 更换手机号 */ public static String getMessageForCHANGE(String verCode,String merchName){ return String.format(MESSAGE_TEMPLETE_CHANGE, verCode, merchName); } /** * 积分调整 */ public static String getMessageForPOINTADJUST(String adjustType,String adjustNum,String afterPoint,String storeName,String telephone){ return String.format(MESSAGE_TEMPLETE_POINT_ADJUST, adjustType, adjustNum,afterPoint,storeName,telephone); } /** * 余额调整 */ public static String getMessageForBALANCEADJUST(String adjustType,String adjustNum,String afterAmount,String storeName,String telephone){ return String.format(MESSAGE_TEMPLETE_BALANCE_ADJUST, adjustType, adjustNum,afterAmount,storeName,telephone); } /** * 充值 */ public static String getMessageForRECHARGE(String rechargeAmount,String availableAmount,String storeName,String telephone){ return String.format(MESSAGE_TEMPLETE_RECHARGE, rechargeAmount, availableAmount, storeName, telephone); }}
说明:主要是利用了Sring.format()的方法
阅读全文
0 0
- java实现发送短信的模板
- java 实现发送短信
- 利用Java发送短信的实现
- Java实现发送短信的例子
- java实现短信猫发送短信
- java实现sms短信发送
- 用java实现发送短信
- JAVA如何实现发送短信
- 使用Java实现短信发送
- java实现短信消息发送
- Java中实现短信发送
- 短信发送器的实现
- java 短信猫发送短信的方法
- java利用http请求实现短信发送的简单实例
- 短信发送模板
- java后台调用短信接口,实现发送短信验证码的控制层实现
- java 短信发送 的 代码
- java发送短信的代码
- spring mybatis NoSuchBeanDefinitionException 解决方案
- Java并发编程:Callable、Future和FutureTask
- eclipse报红叉,解决Cannot change version of project facet Dynamic web module to 2.5
- JDBC1120
- intellij idea常见问题
- java实现发送短信的模板
- 本地搭建redis集群
- TypeError: $(...).form is not a function
- 千岛湖冰水救人,程序员见义勇为,手工点赞!
- CSDN-markdown编辑器测试
- 机器学习_用树回归方法画股票趋势线
- Aspect
- 嵌入式Linux内存管理的一些知识点总结
- VS2013中Image Watch插件的使用(OpenCV)