Explorar o código

新增 忘记密码

Administrator hai 1 ano
pai
achega
5a7d996f3b

+ 79 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/AppletController.java

@@ -0,0 +1,79 @@
+package com.ruoyi.web.controller.common;
+
+
+
+import com.ruoyi.common.annotation.RepeatSubmit;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.SendSmsUtils;
+import com.ruoyi.system.service.ISysUserService;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.concurrent.TimeUnit;
+
+import static com.ruoyi.common.constant.CommonConstants.ONE;
+
+/**小程序公共接口
+ * @Author: tjf
+ * @Date: 2023/5/25 11:46
+ * @Describe:
+ */
+@RestController
+@RequestMapping("/applet")
+public class AppletController extends BaseController {
+    @Autowired
+    private ISysUserService userService;
+    @Resource
+    private RedisCache redisCache;
+
+
+    /**
+     *忘记密码发送验证短信
+     */
+    @RepeatSubmit(interval = 1000,message = "请求过于频繁")
+    @GetMapping("/appForgetPW/{phone}")
+    public AjaxResult appForgetPW(@PathVariable String phone)
+    {
+        SysUser sysUser = userService.selectUserByPhonenumber(phone);
+        if (sysUser == null || sysUser.getUserId() == null){
+            return  AjaxResult.error("当前手机号系统内不存在,无法修改密码");
+        }
+        String code = SendSmsUtils.getCode(4);
+        SendSmsUtils.sendSms(phone,"SMS_219525380","{\"code\":\"" + code + "\"}");
+        String key = "SMS_CODE:"+phone;
+        redisCache.setCacheObject(key,code, 5,TimeUnit.MINUTES);
+        return  AjaxResult.success(code);
+    }
+    /**
+     *忘记密码校验验证码,修改密码
+     */
+
+    @GetMapping("/appCheck")
+    public AjaxResult appCheck(@RequestParam("code") String code, @RequestParam("phone") String phone, @RequestParam("password") String password)
+    {
+        String key = "SMS_CODE:"+phone;
+        Object cacheObject = redisCache.getCacheObject(key);
+        if (ObjectUtils.isNotEmpty(cacheObject)){
+            if (code.equals(String.valueOf(cacheObject))){
+                redisCache.deleteObject(key);
+                SysUser user = new SysUser();
+                user.setPassword(password);
+               //修改密码
+                if (ONE.equals(userService.checkStrongPwd(user))) {
+                    return AjaxResult.error("密码必须包含数字、大小写字母、特殊符号且大于8位");
+                }
+                user.setPhonenumber(phone);
+                user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
+                return toAjax(userService.resetUserPwdByPhonenumber(user));
+            }
+        }
+        return  AjaxResult.error();
+    }
+
+}

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

@@ -65,8 +65,8 @@ public class SendSmsUtils {
             com.aliyun.dysmsapi20170525.models.SendSmsRequest sendSmsRequest = new com.aliyun.dysmsapi20170525.models.SendSmsRequest()
                     //手机号码
                     .setPhoneNumbers(phone)
-                    //短信签名名称。中新云
-                    .setSignName("中新云")
+                    //短信签名名称。潜山市皖源融资担保
+                    .setSignName("潜山市皖源融资担保")
                     //短信模板变量对应的实际值{"name": code}
                     .setTemplateParam(smsCode)
                     //短信模板CODE
@@ -116,8 +116,8 @@ public class SendSmsUtils {
             com.aliyun.dysmsapi20170525.models.SendSmsRequest sendSmsRequest = new com.aliyun.dysmsapi20170525.models.SendSmsRequest()
                     //手机号码
                     .setPhoneNumbers(phone)
-                    //短信签名名称。潜山市数据资源局
-                    .setSignName("中新云")
+                    //短信签名名称。潜山市皖源融资担保
+                    .setSignName("潜山市皖源融资担保")
                     //短信模板CODE
                     .setTemplateCode("SMS_219525380")
                     //短信模板变量对应的实际值{"name": code}

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

@@ -119,7 +119,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
                 .antMatchers("/Excel.html", "/Word.html", "/*.zz", "/**/*.zz", "/pageoffice.js","/jquery.min.js").permitAll()
                 .antMatchers("/*.exe").permitAll()
                 .antMatchers("/common/uploadNew").permitAll()
-                .antMatchers("/sendSms/**").permitAll()
+                .antMatchers("/sendSms/**","/applet/**").permitAll()
                 // 除上面外的所有请求全部需要鉴权认证
                 .anyRequest().authenticated()
                 .and()

+ 1 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java

@@ -84,6 +84,7 @@ public interface SysUserMapper
      * @return 结果
      */
     public int resetUserPwd(@Param("userName") String userName, @Param("password") String password);
+    public int resetUserPwdByPhonenumber(SysUser user);
 
     /**
      * 通过用户ID删除用户

+ 2 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java

@@ -25,6 +25,8 @@ public interface ISysUserService
      */
     public String checkStrongPwd(SysUser user);
 
+    public int resetUserPwdByPhonenumber(SysUser user);
+
     /**
      * 根据条件分页查询已分配用户角色列表
      * 

+ 4 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java

@@ -99,6 +99,10 @@ public class SysUserServiceImpl implements ISysUserService
         return result;
     }
 
+    @Override
+    public int resetUserPwdByPhonenumber(SysUser user) {
+        return userMapper.resetUserPwdByPhonenumber(user);
+    }
     /**
      * 根据条件分页查询已分配用户角色列表
      * 

+ 1 - 1
ruoyi-system/src/main/java/com/ruoyi/system/service/loan/impl/LoanApplicationServiceImpl.java

@@ -747,7 +747,7 @@ public class LoanApplicationServiceImpl implements ILoanApplicationService {
             }
             bo.close();
             out.close();
-            System.out.println("文件加密成功,保存位置:" + zipFilePath);
+            System.out.println("文件保存位置:" + zipFilePath);
         } catch (IOException e) {
             e.printStackTrace();
         }

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

@@ -228,6 +228,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 	<update id="resetUserPwd" parameterType="SysUser">
  		update sys_user set password = #{password} where user_name = #{userName}
 	</update>
+
+	<update id="resetUserPwdByPhonenumber" parameterType="SysUser">
+		update sys_user
+		<set>
+			<if test="password != null and password != ''">password = #{password},</if>
+			<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
+			update_time = sysdate()
+		</set>
+		where phonenumber = #{phonenumber}
+	</update>
 	
 	<delete id="deleteUserById" parameterType="Long">
  		update sys_user set del_flag = '2' where user_id = #{userId}