Browse Source

fix 助通短信

tjf 2 weeks ago
parent
commit
6310857875

+ 9 - 6
ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/SendSmsController.java

@@ -5,7 +5,6 @@ import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.model.LoginBody;
 import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.utils.SendSmsUtils;
-import com.ruoyi.system.service.ISysUserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -27,8 +26,6 @@ import static com.ruoyi.common.constant.Constants.SMS_CODE;
 public class SendSmsController {
     @Autowired
     private RedisCache redisCache;
-    @Autowired
-    private ISysUserService sysUserService;
 
     /**
      * 发送登录短信接口
@@ -39,10 +36,16 @@ public class SendSmsController {
     @RepeatSubmit(interval = 1000, message = "请求过于频繁")
     public AjaxResult sendLoginSms(@RequestBody LoginBody user) {
         String code = SendSmsUtils.getCode(6);
-        String phone = user.getUsername();
-        SendSmsUtils.sendSms(phone, "SMS_219525380", "{\"code\":\"" + code + "\"}");
+        String phone = user.getPhoneNumber();
         String key = SMS_CODE + phone;
         redisCache.setCacheObject(key, code, 5, TimeUnit.MINUTES);
-        return AjaxResult.success("发送成功");
+        //SendSmsUtils.sendSms(phone, "SMS_219525380", "{\"code\":\"" + code + "\"}");
+/*        String codeResult = SendSmsUtils.sendSmsTp(phone, "383724", code );
+        if (SUCCESS_CODE.equals(codeResult)) {
+            String key = SMS_CODE + phone;
+            redisCache.setCacheObject(key, code, 5, TimeUnit.MINUTES);
+            return AjaxResult.success("发送成功");
+        }*/
+        return AjaxResult.error("发送失败"+code);
     }
 }

+ 2 - 0
ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java

@@ -180,6 +180,8 @@ public class Constants {
     public static final String ONE = "1";
     public static final String TWO = "2";
     public static final String TEN = "10";
+    //短信成功
+    public static final String SUCCESS_CODE = "200";
 
     /**
      * 短信登录验证码前缀

+ 12 - 0
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java

@@ -30,6 +30,18 @@ public class LoginBody
      * 登录模式:1:账号密码 2:短信验证码
      */
     private String type;
+    /**
+     * 手机号码
+     */
+    private String phoneNumber;
+
+    public String getPhoneNumber() {
+        return phoneNumber;
+    }
+
+    public void setPhoneNumber(String phoneNumber) {
+        this.phoneNumber = phoneNumber;
+    }
 
     public String getType() {
         return type;

+ 0 - 2
ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java

@@ -201,8 +201,6 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
         return sec;
     }
 
-
-
     /**
      * 获取时间date1与date2相差的秒数
      *

+ 68 - 0
ruoyi-common/src/main/java/com/ruoyi/common/utils/SendSmsUtils.java

@@ -1,7 +1,12 @@
 package com.ruoyi.common.utils;
 
 
+import cn.hutool.crypto.SecureUtil;
+import cn.hutool.http.HttpRequest;
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
 import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
+import org.springframework.http.MediaType;
 
 /**阿里云
  * @author tjf
@@ -75,5 +80,68 @@ public class SendSmsUtils {
         }
         return code;
     }
+
+
+    /**
+     * 助通发送短信
+     * https://cloud.zthysms.com/#/login
+     * <!-- alibaba fastjson -->
+     * <dependency>
+     *     <groupId>com.alibaba</groupId>
+     *     <artifactId>fastjson</artifactId>
+     *     <version>1.2.47</version>
+     * </dependency>
+     *
+     *
+     * <!-- hutool util -->
+     * <dependency>
+     *     <groupId>cn.hutool</groupId>
+     *     <artifactId>hutool-all</artifactId>
+     *     <version>5.0.5</version>
+     * </dependency>
+     *
+     * @param phone
+     * @param templateCode
+     * @param smsCode
+     */
+    public static String sendSmsTp(String phone, String templateCode, String smsCode) {
+        //地址
+        String urls = "https://api-shss.zthysms.com/v2/sendSmsTp";
+        //请求入参
+        JSONObject requestJson = new JSONObject();
+        //账号
+        requestJson.put("username", "ahzxy001");
+        //tKey
+        long tKey = System.currentTimeMillis() / 1000;
+        requestJson.put("tKey", tKey);
+        //明文密码
+        requestJson.put("password", SecureUtil.md5(SecureUtil.md5("1qaz!QAZ") + tKey));
+        //模板ID
+        requestJson.put("tpId", templateCode);
+        //签名
+        requestJson.put("signature", "【潜山市政协办公室】");
+        //扩展号
+        requestJson.put("ext", "");
+        //自定义参数
+        requestJson.put("extend", "");
+        //发送记录集合
+        JSONArray records = new JSONArray();
+        JSONObject record = new JSONObject();
+        //手机号
+        record.put("mobile", phone);
+        //替换变量
+        JSONObject param = new JSONObject();
+        param.put("name", smsCode);
+        record.put("tpContent", param);
+        records.add(record);
+        requestJson.put("records", records);
+        String result = HttpRequest.post(urls)
+                .timeout(60000)
+                .body(requestJson.toJSONString(), MediaType.APPLICATION_JSON_UTF8_VALUE).execute().body();
+        JSONObject jsonObject = JSONObject.parseObject(result);
+        System.out.println(jsonObject);
+        String code = jsonObject.getString("code");
+        return code;
+    }
 }
 

+ 1 - 0
ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java

@@ -115,6 +115,7 @@ public class SecurityConfig
                     // 静态资源,可匿名访问
                     .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
                     .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
+                    .antMatchers("/sendSms/sendLoginSms").permitAll()
                     // 除上面外的所有请求全部需要鉴权认证
                     .anyRequest().authenticated();
             })

+ 5 - 2
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java

@@ -10,6 +10,7 @@ import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.exception.user.*;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.MessageUtils;
+import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.ip.IpUtils;
 import com.ruoyi.framework.manager.AsyncManager;
@@ -68,7 +69,9 @@ public class SysLoginService {
         if (StringUtils.isBlank(passwordResult)) {
             throw new CaptchaException();
         }
-        password = passwordResult;
+        if (type.equals(TWO)) {
+            password = passwordResult;
+        }
         // 登录前置校验
         loginPreCheck(username, password);
         // 用户验证
@@ -188,7 +191,7 @@ public class SysLoginService {
                     sysUserNew.setNickName(phone);
                     sysUserNew.setUserName(phone);
                     sysUserNew.setLoginIp(IpUtils.getIpAddr());
-                    sysUserNew.setPassword(password);
+                    sysUserNew.setPassword(SecurityUtils.encryptPassword(password));
                     Long[] roleIds = new Long[1];
                     roleIds[0] = 2L;
                     sysUserNew.setRoleIds(roleIds);

+ 5 - 2
ruoyi-system/src/main/java/com/ruoyi/manage/service/impl/ColumnNewsServiceImpl.java

@@ -38,7 +38,9 @@ public class ColumnNewsServiceImpl implements IColumnNewsService {
         Object viewsNumOld = redisCache.getCacheObject(COLUMN_NEWS_NUM + newsId);
         if (viewsNumOld != null) {
             viewsNumOld = String.valueOf(Integer.parseInt(viewsNumOld.toString()) + 1);
-        }else {
+            redisCache.setCacheObject(COLUMN_NEWS_NUM + newsId, viewsNumOld);
+        } else {
+            viewsNumOld = 1;
             redisCache.setCacheObject(COLUMN_NEWS_NUM + newsId, 1);
         }
         if (viewsNumOld.equals(TEN)) {
@@ -47,8 +49,9 @@ public class ColumnNewsServiceImpl implements IColumnNewsService {
             columnNewsMapper.updateColumnNews(columnNews);
             //重置计数器
             redisCache.setCacheObject(COLUMN_NEWS_NUM + newsId, ZERO);
+            viewsNumOld = 0;
         }
-        columnNews.setViewsNum(viewsNumOld.toString());
+        columnNews.setViewsNum(String.valueOf(Integer.parseInt(columnNews.getViewsNum()) + Integer.parseInt(viewsNumOld.toString())));
         return columnNews;
     }
 

+ 1 - 1
ruoyi-system/src/main/java/com/ruoyi/system/service/Task.java

@@ -34,7 +34,7 @@ public class Task {
      * 查询是否是节假日
      */
     @Async
-    @Scheduled(cron = "0 26 10 * * ? ")
+    @Scheduled(cron = "0 01 12 * * ? ")
     public void thirdNucleicAcid() {
         String data = DateUtils.getDate();
         //判断当天天是否是法定节假日  0 上班 1周末 2节假日

+ 1 - 1
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -56,7 +56,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		    left join sys_role r on r.role_id = ur.role_id
     </sql>
 	<select id="selectUserByPhonenumber" parameterType="String" resultMap="SysUserResult">
-		select u.user_id, u.dept_id, u.user_name, u.nick_name,u.user_type,u.init_face, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
+		select u.user_id, u.dept_id, u.user_name, u.nick_name,u.user_type, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
 			   d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,
 			   r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status
 		from sys_user u