Browse Source

卡号登录使用自己的密码,与手机号分开

jinxia.mo 1 tháng trước cách đây
mục cha
commit
eef37258be

+ 27 - 3
ie-admin/src/main/java/com/ruoyi/web/service/SysLoginService.java

@@ -4,11 +4,17 @@ import javax.annotation.Resource;
 
 import com.google.common.collect.Maps;
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.enums.ErrorCodes;
 import com.ruoyi.common.exception.ErrorException;
 import com.ruoyi.common.utils.PhoneUtils;
+import com.ruoyi.dz.domain.DzCards;
+import com.ruoyi.dz.service.IDzCardsService;
+import com.ruoyi.dz.service.impl.DzCardsServiceImpl;
 import com.ruoyi.framework.web.service.TokenService;
 import com.ruoyi.system.service.ShortMessageService;
+import com.ruoyi.web.controller.dz.DzCardsController;
+import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.tuple.Pair;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.authentication.AuthenticationManager;
@@ -38,11 +44,13 @@ import com.ruoyi.system.service.ISysConfigService;
 import com.ruoyi.system.service.ISysUserService;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Arrays;
+import java.util.List;
 import java.util.Map;
 
 /**
  * 登录校验方法
- * 
+ *
  * @author ruoyi
  */
 @Component
@@ -56,7 +64,7 @@ public class SysLoginService
 
     @Autowired
     private RedisCache redisCache;
-    
+
     @Autowired
     private ISysUserService userService;
 
@@ -65,6 +73,8 @@ public class SysLoginService
 
     @Autowired
     private ShortMessageService shortMessageService;
+    @Autowired
+    private IDzCardsService cardsService;
 
     /**
      * 登录验证
@@ -77,6 +87,7 @@ public class SysLoginService
      */
     public AjaxResult login(String mobile, String username, String password, String code, String uuid) {
         if (StringUtils.isNotBlank(mobile)) {
+            //手机验证码登录:{code: "9", uuid: "cc94320c3fce4db5898213b727ac1dc0", mobile: "18774924158", password: "1234"}
             if (!shortMessageService.checkCode(mobile, password)) {
                 AsyncManager.me().execute(AsyncFactory.recordLogininfor(mobile, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error")));
                 throw new CaptchaException();
@@ -86,9 +97,22 @@ public class SysLoginService
             password = UserConstants.LOGIN_SMS_PASS;
         } else {
             // 验证码校验
+            // 卡密登录json:{code: "0", uuid: "a9eee0b6729f42c4862a57acef8a4bdd", username: "20000025", password: "123456"}
             validateCaptcha(username, code, uuid);
             // 登录前置校验
             loginPreCheck(username, password);
+            //卡密登录时,要将卡的密码转换为用户的密码
+            DzCards card = cardsService.selectDzCardsByCardNo(username);
+            if (null==card){
+                return AjaxResult.error("卡不存在");
+            }
+            if (!password.trim().equalsIgnoreCase(card.getPassword())){
+                return AjaxResult.error("密码错误");
+            }
+            String dbPwd = userService.selectPasswordByCardId(card.getCardId());
+            if (StringUtils.isNotEmpty(dbPwd)){
+                password = dbPwd;
+            }
         }
         // 用户验证
         Authentication authentication = null;
@@ -170,7 +194,7 @@ public class SysLoginService
 
     /**
      * 校验验证码
-     * 
+     *
      * @param username 用户名
      * @param code 验证码
      * @param uuid 唯一标识

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

@@ -45,6 +45,7 @@ public interface SysUserMapper
      * @return 用户对象信息
      */
     public SysUser selectUserByUserName(String userName);
+    public String selectPasswordByCardId(Long cardId);
 
     /**
      * 通过手机号查用户

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

@@ -44,7 +44,7 @@ public interface ISysUserService
      * @return 用户对象信息
      */
     public SysUser selectUserByUserName(String userName);
-
+    public String selectPasswordByCardId(Long cardId);
     /**
      * 通过 手机号 查询用户
      * @param mobileNo

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

@@ -125,6 +125,10 @@ public class SysUserServiceImpl implements ISysUserService
      * @return 用户对象信息
      */
     @Override
+    public String selectPasswordByCardId(Long cardId)
+    {
+        return userMapper.selectPasswordByCardId(cardId);
+    }
     public SysUser selectUserByUserName(String userName)
     {
         return userMapper.selectUserByUserName(userName);

+ 4 - 0
ie-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -134,6 +134,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		${params.dataScope}
 	</select>
 
+	<select id="selectPasswordByCardId" parameterType="Long" resultType="String">
+		select u.password2 from sys_user u where u.card_id = #{cardId} and u.del_flag = '0'
+	</select>
+
 	<select id="selectUserByUserName" parameterType="String" resultMap="SysUserResult">
 	    <include refid="selectUserVo"/>
 		where u.user_name = #{userName} and u.del_flag = '0'