SmsSydUtil.java 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. package com.zd.chemical.util;
  2. import cn.hutool.core.util.IdUtil;
  3. import com.esms.MOMsg;
  4. import com.esms.MessageData;
  5. import com.esms.PostMsg;
  6. import com.esms.common.entity.Account;
  7. import com.esms.common.entity.GsmsResponse;
  8. import com.esms.common.entity.MTPack;
  9. import com.zd.chemical.domain.SydSmsLog;
  10. import com.zd.chemical.service.ISydSmsLogService;
  11. import com.zd.common.core.constant.Constants;
  12. import com.zd.common.core.domain.R;
  13. import com.zd.common.core.utils.DateUtils;
  14. import lombok.extern.slf4j.Slf4j;
  15. import org.springframework.stereotype.Component;
  16. import javax.validation.constraints.NotNull;
  17. import java.util.HashMap;
  18. import java.util.Map;
  19. import java.util.UUID;
  20. @Slf4j
  21. @Component
  22. public class SmsSydUtil {
  23. private static MTPack mtPack;
  24. // 证号 djjx
  25. // 登录密码 6B1aQety
  26. // 发送密码 yfhzfGSJ
  27. private static Account account = new Account("djjx", "yfhzfGSJ");
  28. private static String SMS_IP = "127.0.0.1";
  29. public static int DOWN_PORT = 8090;
  30. public static int UP_PORT = 8188;
  31. // 8090 下发端口 8188 拉取状态报告和上行
  32. private static PostMsg DOWN_PM = new PostMsg(SMS_IP, DOWN_PORT);
  33. private static PostMsg UP_PM = new PostMsg(SMS_IP, UP_PORT);
  34. private static Map<Integer, String> DOWN_MAP;
  35. private ISydSmsLogService sydSmsLogService;
  36. SmsSydUtil(){
  37. // TODO 参数配置化
  38. DOWN_MAP = new HashMap<>();
  39. DOWN_MAP.put(0 , "成功");
  40. DOWN_MAP.put(-1 , "账号无效,或者账号停用、过期等。");
  41. DOWN_MAP.put(-2 , "参数无效");
  42. DOWN_MAP.put(-3 , "连接不上服务器");
  43. DOWN_MAP.put(-6 , "用户名密码错误");
  44. DOWN_MAP.put(-11 , "单次提交号码数量超过系统限制");
  45. DOWN_MAP.put(-12 , "超过发送量限制");
  46. DOWN_MAP.put(-13 , "账号没有发送权限");
  47. DOWN_MAP.put(-99 , "系统内部错误");
  48. DOWN_MAP.put(-100 , "其它错误");
  49. }
  50. private static MTPack buildDefaultSMSPack() {
  51. if(SmsSydUtil.mtPack == null){
  52. mtPack = new MTPack();
  53. mtPack.setSendType(MTPack.SendType.MASS);
  54. mtPack.setMsgType(MTPack.MsgType.SMS);
  55. mtPack.setBizType(1);
  56. }
  57. return SmsSydUtil.mtPack;
  58. }
  59. /**
  60. * 四医大平台发送短信
  61. * @param content 发送内容
  62. * @param purpose 短信用途 1 告警,2 登录,3 开锁
  63. * @param phones 手机号
  64. * @return 发送结果
  65. */
  66. public R sendSydSms(@NotNull String content, @NotNull Integer purpose, @NotNull String... phones) throws Exception {
  67. UUID uuid = UUID.randomUUID();
  68. R r = singleTicketMsgId(content, uuid, phones);
  69. SydSmsLog sydSmsLog = new SydSmsLog();
  70. sydSmsLog.setContent(content);
  71. sydSmsLog.setPhone(phones.toString());
  72. sydSmsLog.setPurpose(purpose);
  73. sydSmsLog.setStatus(Integer.parseInt(r.getData() + ""));
  74. sydSmsLog.setCreateTime(DateUtils.getNowDate());
  75. sydSmsLog.setUuid(uuid.toString());
  76. sydSmsLogService.insertSydSmsLog(sydSmsLog);
  77. return r;
  78. }
  79. /**
  80. * 短信下发范例 每个话单,一个扩展码
  81. */
  82. private synchronized static R singleTicketMsgId(@NotNull String content, UUID uuid, @NotNull String... phones) throws Exception {
  83. MTPack pack = buildDefaultSMSPack();
  84. // 批次号
  85. pack.setBatchID(uuid);
  86. log.info("四医大短信下发参数:UUID," + pack.getBatchID() + "手机号:" + phones.toString() + "内容:" + content);
  87. for (String phone : phones) {
  88. pack.addMsg(MessageData.getInstance(phone, content));
  89. }
  90. GsmsResponse resp = DOWN_PM.post(account, pack);
  91. log.info("四医大短信下发返回结果:" + resp.toString());
  92. if(resp.getResult() == 0){
  93. return R.ok(resp.getResult()+"", resp.getResult());
  94. }else {
  95. return R.fail(resp.getResult()+"", DOWN_MAP.get(resp.getResult()));
  96. }
  97. }
  98. /**
  99. * 获取上行信息
  100. *
  101. */
  102. private static void doGetMos() throws Exception {
  103. MOMsg[] mos;
  104. mos = UP_PM.getMOMsgs(account, 10);
  105. if (mos != null) {
  106. for (MOMsg mo : mos) {
  107. log.info("四医大短信上行查询结果:" + mo.toString());
  108. }
  109. }
  110. }
  111. }