xiahan пре 3 недеља
родитељ
комит
5b2e212443

+ 21 - 0
qhse-common/src/main/java/com/rongwei/bscommon/system/config/AliyunSmsConfig.java

@@ -0,0 +1,21 @@
+package com.rongwei.bscommon.system.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ * AliyunSmsConfig class
+ *
+ * @author XH
+ * @date 2025/08/25
+ */
+@Component
+@ConfigurationProperties(prefix = "qhse.aliyun")
+@Data
+public class AliyunSmsConfig {
+    private String accessKeyId;
+    private String accessKeySecret;
+    private String endpoint;
+    private String signName;
+}

+ 0 - 23
qhse-common/src/main/java/com/rongwei/bscommon/system/config/QHSEConfig.java

@@ -1,23 +0,0 @@
-package com.rongwei.bscommon.system.config;
-
-import lombok.Data;
-
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.cloud.context.config.annotation.RefreshScope;
-import org.springframework.stereotype.Component;
-
-/**
- * QHSEConfig class
- *
- * @author XH
- * @date 2025/08/25
- */
-@Data
-@Component
-@RefreshScope
-public class QHSEConfig {
-    @Value("${sms.send:true}")
-    private boolean sendSms;
-    @Value("${sms.tempId:SMS_493240217}")
-    private String smsTempId;
-}

+ 19 - 0
qhse-common/src/main/java/com/rongwei/bscommon/system/config/SmsCodeConfig.java

@@ -0,0 +1,19 @@
+package com.rongwei.bscommon.system.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ * QHSEConfig class
+ *
+ * @author XH
+ * @date 2025/08/25
+ */
+@Component
+@ConfigurationProperties(prefix = "qhse.sms")
+@Data
+public class SmsCodeConfig {
+    private boolean sendEnabled;
+    private String tempId;
+}

+ 20 - 0
qhse-common/src/main/java/com/rongwei/bscommon/system/config/SmsCommonConfig.java

@@ -0,0 +1,20 @@
+package com.rongwei.bscommon.system.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ * SmsSpeedingConfig class
+ *
+ * @author XH
+ * @date 2025/08/25
+ */
+@Component
+@ConfigurationProperties(prefix = "qhse.common")
+@Data
+public class SmsCommonConfig {
+    private String tempId;
+    private String overSpeedType;
+    private String overSpeedDesc;
+}

+ 1 - 1
qhse-common/src/main/java/com/rongwei/bscommon/system/service/AliyunSmsService.java

@@ -13,5 +13,5 @@ public interface AliyunSmsService {
      * @param phone            手机号
      * @return 发送结果
      */
-    SendSmsResponse sendSms(String templateId, Map<String, String> templateParamMap, String phone) throws Exception;
+    SendSmsResponse sendSms(String templateId, Map<String, String> templateParamMap, String phone);
 }

+ 2 - 1
qhse-common/src/main/java/com/rongwei/bscommon/system/service/MobileVehicleProcessingService.java

@@ -2,6 +2,7 @@ package com.rongwei.bscommon.system.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.rongwei.bsentity.domain.MobileVehicleProcessingDo;
+import com.rongwei.rwcommon.base.R;
 
 import java.util.List;
 
@@ -12,5 +13,5 @@ public interface MobileVehicleProcessingService extends IService<MobileVehiclePr
      * @param idList id列表
      * @return 发送结果
      */
-    boolean sendTextMessage(List<String> idList);
+    R sendTextMessage(List<String> idList);
 }

+ 19 - 27
qhse-common/src/main/java/com/rongwei/bscommon/system/service/impl/AliyunSmsServiceImpl.java

@@ -4,12 +4,14 @@ import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
 import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
 import com.aliyun.tea.TeaException;
 import com.aliyun.teautil.models.RuntimeOptions;
+import com.rongwei.bscommon.system.config.AliyunSmsConfig;
 import com.rongwei.bscommon.system.service.AliyunSmsService;
 import com.rongwei.bscommon.system.service.SendRecordService;
 import com.rongwei.bscommon.system.utils.QHSEUtils;
 import com.rongwei.bsentity.domain.SendRecordDo;
 import com.rongwei.rwadmincommon.system.vo.SysUserVo;
 import lombok.extern.slf4j.Slf4j;
+import org.checkerframework.checker.units.qual.A;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -20,14 +22,8 @@ import java.util.Map;
 @Slf4j
 public class AliyunSmsServiceImpl implements AliyunSmsService {
 
-    @Value("${aliyun-sms.access-key-id:#{null}}")
-    private String accessKeyId;
-    @Value("${aliyun-sms.access-key-secret:#{null}}")
-    private String accessKeySecret;
-    @Value("${aliyun-sms.endpoint:#{null}}")
-    private String endpoint;
-    @Value("${aliyun-sms.sign-name:#{null}}")
-    private String signName;
+    @Autowired
+    private AliyunSmsConfig aliyunSmsConfig;
 
     @Autowired
     private SendRecordService sendRecordService;
@@ -37,10 +33,10 @@ public class AliyunSmsServiceImpl implements AliyunSmsService {
         com.aliyun.credentials.Client credential = new com.aliyun.credentials.Client();
         com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                 .setCredential(credential);
-        config.accessKeyId = accessKeyId;
-        config.accessKeySecret = accessKeySecret;
+        config.accessKeyId = aliyunSmsConfig.getAccessKeyId();
+        config.accessKeySecret = aliyunSmsConfig.getAccessKeySecret();
         // Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi
-        config.endpoint = endpoint;
+        config.endpoint = aliyunSmsConfig.getEndpoint();
         return new com.aliyun.dysmsapi20170525.Client(config);
     }
 
@@ -54,33 +50,29 @@ public class AliyunSmsServiceImpl implements AliyunSmsService {
      */
     @Override
     public SendSmsResponse sendSms(String templateId,
-                                   Map<String, String> templateParamMap, String phone) throws Exception {
+                                   Map<String, String> templateParamMap, String phone) {
         String templateParam = com.aliyun.teautil.Common.toJSONString(templateParamMap);
-        com.aliyun.dysmsapi20170525.Client client = createClient();
-        // 创建请求
-        SendSmsRequest sendSmsRequest = new SendSmsRequest();
-        sendSmsRequest.setSignName(signName);
-        sendSmsRequest.setTemplateCode(templateId);
-        sendSmsRequest.setTemplateParam(templateParam);
-        sendSmsRequest.setPhoneNumbers(phone);
-        RuntimeOptions runtime = new RuntimeOptions();
         SendSmsResponse resp = null;
         try {
+            com.aliyun.dysmsapi20170525.Client client = createClient();
+            // 创建请求
+            SendSmsRequest sendSmsRequest = new SendSmsRequest();
+            sendSmsRequest.setSignName(aliyunSmsConfig.getSignName());
+            sendSmsRequest.setTemplateCode(templateId);
+            sendSmsRequest.setTemplateParam(templateParam);
+            sendSmsRequest.setPhoneNumbers(phone);
+            RuntimeOptions runtime = new RuntimeOptions();
             resp = client.sendSmsWithOptions(sendSmsRequest, runtime);
             log.info("发送短信结果:{}", com.aliyun.teautil.Common.toJSONString(resp));
             // 保存发送记录
             saveSendRecord(resp, sendSmsRequest);
         } catch (TeaException error) {
-            log.error("发送短信结果:{}", error.getMessage());
             log.error("诊断地址:{}", error.getData().get("Recommend"));
             log.error("短信发送异常 模板编号为:{},参数:{},手机号:{} - 原因: {} | 异常类型: {}", templateId, templateParam, phone, error.getMessage(), error.getClass().getSimpleName(), error);
-            throw new RuntimeException(error.getMessage());
+            throw new RuntimeException("短信发送异常!请联系系统管理员");
         } catch (Exception _error) {
-            TeaException error = new TeaException(_error.getMessage(), _error);
-            log.error("发送短信结果:{}", error.getMessage());
-            log.error("诊断地址:{}", error.getData().get("Recommend"));
-            log.error("短信发送异常 模板编号为:{},参数:{},手机号:{} - 原因: {} | 异常类型: {}", templateId, templateParam, phone, error.getMessage(), error.getClass().getSimpleName(), error);
-            throw new RuntimeException(error.getMessage());
+            log.error("短信发送异常 模板编号为:{},参数:{},手机号:{} - 原因: {} | 异常类型: {}", templateId, templateParam, phone, _error.getMessage(), _error.getClass().getSimpleName(), _error);
+            throw new RuntimeException("短信发送异常!请联系系统管理员");
         }
         return resp;
     }

+ 15 - 17
qhse-common/src/main/java/com/rongwei/bscommon/system/service/impl/MobileVehicleProcessingServiceImpl.java

@@ -2,13 +2,16 @@ package com.rongwei.bscommon.system.service.impl;
 
 import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwei.bscommon.system.config.SmsCommonConfig;
 import com.rongwei.bscommon.system.dao.MobileVehicleProcessingDao;
 import com.rongwei.bscommon.system.service.AliyunSmsService;
 import com.rongwei.bscommon.system.service.MobileVehicleProcessingService;
 import com.rongwei.bsentity.domain.MobileVehicleProcessingDo;
+import com.rongwei.rwcommon.base.R;
 import com.rongwei.rwcommon.utils.DateUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
 import org.springframework.stereotype.Service;
 
 import java.util.*;
@@ -16,13 +19,13 @@ import java.util.stream.Collectors;
 
 @Service
 @Slf4j
-public class MobileVehicleProcessingServiceImpl
-        extends ServiceImpl<MobileVehicleProcessingDao, MobileVehicleProcessingDo>
-        implements MobileVehicleProcessingService {
-    private static final String TEMPLATE_ID = "SMS_493170198";
+@RefreshScope
+public class MobileVehicleProcessingServiceImpl extends ServiceImpl<MobileVehicleProcessingDao, MobileVehicleProcessingDo> implements MobileVehicleProcessingService {
     private static final String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm";
     @Autowired
     public AliyunSmsService aliyunSmsService;
+    @Autowired
+    private SmsCommonConfig smsCommonConfig;
 
     /**
      * 发送短信
@@ -31,35 +34,30 @@ public class MobileVehicleProcessingServiceImpl
      * @return 发送结果
      */
     @Override
-    public boolean sendTextMessage(List<String> idList) {
+    public R sendTextMessage(List<String> idList) {
         List<MobileVehicleProcessingDo> list = lambdaQuery().in(MobileVehicleProcessingDo::getId, idList).list();
         List<MobileVehicleProcessingDo> updateList = new ArrayList<>();
 
-        for (MobileVehicleProcessingDo item : list.stream()
-                .filter(item -> item.getPhone() != null).collect(Collectors.toList())) {
+        for (MobileVehicleProcessingDo item : list.stream().filter(item -> item.getPhone() != null).collect(Collectors.toList())) {
             log.info("开始发送短信,手机号:{}", item.getPhone());
             // 发送短信
             try {
                 Map<String, String> templateParamMap = new HashMap<>();
-                templateParamMap.put("type", "车辆超速");
-                templateParamMap.put("desc",
-                        String.format("%s车于%s厂内行驶车速%dkm/h,已超速,限速30km/h,请减速慢行",
-                                item.getPlateNumber(),
-                                DateUtils.format(item.getProcessDate(), DATE_TIME_PATTERN),
-                                item.getSpeed()));
-                SendSmsResponse res = aliyunSmsService.sendSms(TEMPLATE_ID, templateParamMap, item.getPhone());
+                templateParamMap.put("type", smsCommonConfig.getOverSpeedType());
+                templateParamMap.put("desc", String.format(smsCommonConfig.getOverSpeedDesc(), item.getPlateNumber(), DateUtils.format(item.getProcessDate(), DATE_TIME_PATTERN), item.getSpeed()));
+                SendSmsResponse res = aliyunSmsService.sendSms(smsCommonConfig.getTempId(), templateParamMap, item.getPhone());
                 if (res.statusCode != 200) {
                     log.error("发送短信失败,手机号:{}", item.getPhone());
-                    return false;
+                    return R.error("超速短信失败!请联系系统管理员");
                 }
             } catch (Exception e) {
-                throw new RuntimeException(e);
+                throw new RuntimeException("超速短信发送异常!请联系系统管理员");
             }
             log.info("发送短信成功,手机号:{}", item.getPhone());
             item.setNotificationTime(new Date());
             updateList.add(item);
         }
         updateBatchById(updateList);
-        return true;
+        return R.ok("短信发送成功");
     }
 }

+ 49 - 47
qhse-common/src/main/java/com/rongwei/bscommon/system/service/impl/QHSELoginServiceImpl.java

@@ -1,16 +1,25 @@
 package com.rongwei.bscommon.system.service.impl;
 
-import com.rongwei.bscommon.system.config.QHSEConfig;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.rongwei.bscommon.system.config.SmsCodeConfig;
 import com.rongwei.bscommon.system.service.AliyunSmsService;
 import com.rongwei.bscommon.system.service.QHSELoginService;
+import com.rongwei.rwadmincommon.system.domain.SysUserDo;
 import com.rongwei.rwadmincommon.system.domain.UserLoginVo;
+import com.rongwei.rwcommon.base.BaseDo;
 import com.rongwei.rwcommon.base.R;
+import com.rongwei.rwcommon.utils.SecurityUtil;
+import com.rongwei.rwcommon.utils.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
 import org.springframework.stereotype.Service;
 
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import java.util.Random;
 
 /**
@@ -20,18 +29,14 @@ import java.util.Random;
  * @date 2025/08/22
  */
 @Service
+@RefreshScope
 public class QHSELoginServiceImpl implements QHSELoginService {
     private static final Logger log = LoggerFactory.getLogger(QHSELoginServiceImpl.class);
 
     @Autowired
     private QHSEUserServiceImpl qhseUserService;
-
-    @Value("${sms.send:true}")
-    private boolean sendSms;
-    @Value("${sms.tempId:SMS_493240217}")
-    private String smsTempId;
     @Autowired
-    private QHSEConfig qhseConfig;
+    private SmsCodeConfig smsCodeConfig;
     @Autowired
     private RedisServiceImpl redisService;
     @Autowired
@@ -39,46 +44,43 @@ public class QHSELoginServiceImpl implements QHSELoginService {
 
     @Override
     public R sendSmsCode(UserLoginVo userLogin) {
-        String smsTempId1 = qhseConfig.getSmsTempId();
-        return  R.ok(smsTempId1);
-        // System.out.println(smsTempId1);
-        // String username = userLogin.getUsername();
-        // List<SysUserDo> sysUserDos = qhseUserService.list(new LambdaQueryWrapper<SysUserDo>()
-        //         .eq(BaseDo::getDeleted, "0").eq(SysUserDo::getAccount, username));
-        // if(sysUserDos.isEmpty()){
-        //     throw new RuntimeException("该账号不存在请重新输入");
-        // }
-        // if(sysUserDos.size() > 1){
-        //     throw new RuntimeException("该账号不存在请重新输入");
-        // }
-        // SysUserDo sysUserDo = sysUserDos.get(0);
-        // String mobile = sysUserDo.getMobile();
-        // if(StringUtils.isBlank(sysUserDo.getMobile())){
-        //     throw new RuntimeException("手机号码不存在");
-        // }
-        // //密码校验
-        // String secPas = SecurityUtil.getSaltMd5AndSha(userLogin.getPassword(), sysUserDo.getId());
-        // if (!secPas.equals(sysUserDo.getPassword())) {
-        //     throw new RuntimeException("用户名密码不正确");
-        // }
-        // // 生成6位数验证码
-        // String smsCode = generateSms();
-        // Map<String, Object> map = new HashMap<>();
-        // map.put("smsCode", smsCode);
-        // if(!sendSms){
-        //     redisService.redisCatchInit("smscode-" + mobile, smsCode, 60);
-        //     return R.ok(map);
-        // }
-        // try {
-        //     aliyunSmsService.sendSms(smsTempId,new HashMap<String,String>(){{
-        //         put("code",smsCode);
-        //     }},mobile);
-        // }catch (Exception e){
-        //     log.error("验证码发送失败原因为");
-        // }
-        // redisService.redisCatchInit("smscode-" + mobile, smsCode, 60);
-        //
-        // return R.ok(map);
+        String username = userLogin.getUsername();
+        List<SysUserDo> sysUserDos = qhseUserService.list(new LambdaQueryWrapper<SysUserDo>()
+                .eq(BaseDo::getDeleted, "0").eq(SysUserDo::getAccount, username));
+        if(sysUserDos.isEmpty()){
+            throw new RuntimeException("该账号不存在请重新输入");
+        }
+        if(sysUserDos.size() > 1){
+            throw new RuntimeException("该账号不存在请重新输入");
+        }
+        SysUserDo sysUserDo = sysUserDos.get(0);
+        String mobile = sysUserDo.getMobile();
+        if(StringUtils.isBlank(sysUserDo.getMobile())){
+            throw new RuntimeException("手机号码不存在");
+        }
+        //密码校验
+        String secPas = SecurityUtil.getSaltMd5AndSha(userLogin.getPassword(), sysUserDo.getId());
+        if (!secPas.equals(sysUserDo.getPassword())) {
+            throw new RuntimeException("用户名密码不正确");
+        }
+        // 生成6位数验证码
+        String smsCode = generateSms();
+        Map<String, Object> map = new HashMap<>();
+        map.put("smsCode", smsCode);
+        if(!smsCodeConfig.isSendEnabled()){
+            redisService.redisCatchInit("smscode-" + mobile, smsCode, 60);
+            return R.ok(map);
+        }
+        try {
+            aliyunSmsService.sendSms(smsCodeConfig.getTempId(),new HashMap<String,String>(){{
+                put("code",smsCode);
+            }},mobile);
+        }catch (Exception e){
+            log.error("验证码发送失败原因为");
+        }
+        redisService.redisCatchInit("smscode-" + mobile, smsCode, 60);
+
+        return R.ok(map);
     }
 
     public  String generateSms() {

+ 1 - 1
qhse-server/src/main/java/com/rongwei/controller/MobileVehicleProcessingController.java

@@ -30,6 +30,6 @@ public class MobileVehicleProcessingController {
     @PostMapping("/send/text/message")
     public R sendTextMessage(@RequestBody List<String> idList) {
         log.info("流动车辆处理,开始发送短信");
-        return mobileVehicleProcessingService.sendTextMessage(idList) ? R.ok() : R.error();
+        return mobileVehicleProcessingService.sendTextMessage(idList);
     }
 }

+ 2 - 0
qhse-server/src/main/java/com/rongwei/controller/QHSELoginController.java

@@ -6,6 +6,7 @@ import com.rongwei.rwcommon.base.R;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
 import org.springframework.web.bind.annotation.*;
 
 /**
@@ -16,6 +17,7 @@ import org.springframework.web.bind.annotation.*;
  */
 @RestController
 @RequestMapping("/login")
+@RefreshScope
 public class QHSELoginController {
 
     private static final Logger log = LoggerFactory.getLogger(QHSELoginController.class);