SysSmsLogServiceImpl.java 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. package com.kmall.common.service.impl;
  2. import com.kmall.common.dao.SysSmsLogDao;
  3. import com.kmall.common.entity.SmsConfig;
  4. import com.kmall.common.entity.SysSmsLogEntity;
  5. import com.kmall.common.service.SysConfigService;
  6. import com.kmall.common.service.SysSmsLogService;
  7. import com.kmall.common.utils.*;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.stereotype.Service;
  10. import java.util.Date;
  11. import java.util.List;
  12. import java.util.Map;
  13. /**
  14. * Service实现类
  15. *
  16. * @author Scott
  17. * @date 2017-12-16 23:38:05
  18. */
  19. @Service("smsLogService")
  20. public class SysSmsLogServiceImpl implements SysSmsLogService {
  21. @Autowired
  22. private SysSmsLogDao smsLogDao;
  23. @Autowired
  24. private SysConfigService sysConfigService;
  25. @Override
  26. public SysSmsLogEntity queryObject(String id) {
  27. return smsLogDao.queryObject(id);
  28. }
  29. @Override
  30. public List<SysSmsLogEntity> queryList(Map<String, Object> map) {
  31. return smsLogDao.queryList(map);
  32. }
  33. @Override
  34. public int queryTotal(Map<String, Object> map) {
  35. return smsLogDao.queryTotal(map);
  36. }
  37. @Override
  38. public int save(SysSmsLogEntity smsLog) {
  39. return smsLogDao.save(smsLog);
  40. }
  41. @Override
  42. public int update(SysSmsLogEntity smsLog) {
  43. return smsLogDao.update(smsLog);
  44. }
  45. @Override
  46. public int delete(String id) {
  47. return smsLogDao.delete(id);
  48. }
  49. @Override
  50. public int deleteBatch(String[] ids) {
  51. return smsLogDao.deleteBatch(ids);
  52. }
  53. @Override
  54. public SysSmsLogEntity sendSms(SysSmsLogEntity smsLog) {
  55. String result = "";
  56. //获取云存储配置信息
  57. SmsConfig config = sysConfigService.getConfigObject(ConfigConstant.SMS_CONFIG_KEY, SmsConfig.class);
  58. if (StringUtils.isNullOrEmpty(config)) {
  59. throw new RRException("请先配置短信平台信息");
  60. }
  61. if (StringUtils.isNullOrEmpty(config.getName())) {
  62. throw new RRException("请先配置短信平台用户名");
  63. }
  64. if (StringUtils.isNullOrEmpty(config.getPwd())) {
  65. throw new RRException("请先配置短信平台密钥");
  66. }
  67. if (StringUtils.isNullOrEmpty(config.getSign())) {
  68. throw new RRException("请先配置短信平台签名");
  69. }
  70. try {
  71. /**
  72. * 状态,发送编号,无效号码数,成功提交数,黑名单数和消息,无论发送的号码是多少,一个发送请求只返回一个sendid,如果响应的状态不是“0”,则只有状态和消息
  73. */
  74. result = SmsUtil.crSendSms(config.getName(), config.getPwd(), smsLog.getMobile(), smsLog.getContent(), config.getSign(),
  75. DateUtils.format(smsLog.getStime(), "yyyy-MM-dd HH:mm:ss"), smsLog.getExtno());
  76. } catch (Exception e) {
  77. }
  78. String arr[] = result.split(",");
  79. //发送成功
  80. if ("0".equals(arr[0])) {
  81. smsLog.setSendId(arr[1]);
  82. smsLog.setInvalidNum(Integer.parseInt(arr[2]));
  83. smsLog.setSuccessNum(Integer.parseInt(arr[3]));
  84. smsLog.setBlackNum(Integer.parseInt(arr[4]));
  85. smsLog.setReturnMsg(arr[5]);
  86. } else {
  87. //发送失败
  88. smsLog.setReturnMsg(arr[1]);
  89. }
  90. smsLog.setSendStatus(Integer.parseInt(arr[0]));
  91. if (StringUtils.isNullOrEmpty(smsLog.getUserId())) {
  92. smsLog.setReturnMsg("系统用户:" + smsLog.getReturnMsg());
  93. smsLog.setUserId(SessionUtils.getUserId());
  94. }
  95. if (smsLog.getUserId() == 1) {
  96. smsLog.setReturnMsg("外部系统:" + smsLog.getReturnMsg());
  97. }
  98. smsLog.setSign(config.getSign());
  99. if (null == smsLog.getStime()) {
  100. smsLog.setStime(new Date());
  101. }
  102. smsLog.setMobile(smsLog.getMobile());
  103. smsLog.setSmsCode(smsLog.getSmsCode());
  104. //保存发送记录
  105. save(smsLog);
  106. return smsLog;
  107. }
  108. @Override
  109. public SysSmsLogEntity querySmsCodeByUserId(Long userId) {
  110. return smsLogDao.querySmsCodeByUserId(userId);
  111. }
  112. }