yangdamao пре 1 месец
родитељ
комит
ef2a3b90c6

+ 1 - 1
zhichen-api/src/main/java/com/zhichen/controller/user/LoginController.java

@@ -83,7 +83,7 @@ public class LoginController extends BaseController {
 
     @ApiOperation("预约估分账号登录")
     @PostMapping("/score/account_login")
-    public AjaxResult scoreAccount_login(@RequestBody UserAppAccountLoginBo bo) {
+    public AjaxResult scoreAccount_login(@RequestBody UserExamActivityBo bo) {
         Map<String,Object> map = iUserService.liveAccount_login(bo);
         return AjaxResult.success(map);
     }

+ 46 - 32
zhichen-framework/src/main/java/com/zhichen/framework/web/service/UserServiceImpl.java

@@ -112,6 +112,8 @@ import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
+import static cn.hutool.core.util.IdcardUtil.getGenderByIdCard;
+
 
 /**
  * 用户Service业务层处理
@@ -2350,41 +2352,53 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
     }
 
     @Override
-    public Map<String, Object> liveAccount_login(UserAppAccountLoginBo bo) {
-        if(Validator.isEmpty(bo.getAccount())){
+    public Map<String, Object> liveAccount_login(UserExamActivityBo bo) {
+        if(Validator.isEmpty(bo.getUserCard())){
             throw new CustomException("账号不能为空");
         }
-        LambdaQueryWrapper<User> queryWrapper =new LambdaQueryWrapper<User>();
-        queryWrapper.and(wq -> wq
-                .eq(User::getTelphone,EncryptHandler.encrypt(bo.getAccount()))
-                .or()
-                .eq(User::getIdCard,EncryptHandler.encrypt(bo.getAccount())));
-        User user = getOne(queryWrapper);
-        if(Validator.isEmpty(user)){
-            iUserLoginErrorService.saveErrorLog(bo.getAccount());
-            throw new CustomException("登录信息错误");
-        } else if (UserStatus.DISABLE.getCode().equals(user.getStatus())) {
-            throw new CustomException("对不起,您的账号:已停用");
-        }
-
-        String password = null;
-        if(bo.getPwd().length()>20){
-            String rsaPrivate = null;
-            try {
-                InputStream certStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("config/pri.key");
-                rsaPrivate = AES.getStringByInputStream_1(certStream);
-                certStream.close();
-                password = AES.decrypt(bo.getPwd(),rsaPrivate);
-            } catch (Exception e) {
-                e.printStackTrace();
+        //根据身份证查询账号
+        User user = getOne(new LambdaQueryWrapper<User>()
+                .eq(User::getIdCard, EncryptHandler.encrypt(bo.getUserCard())).eq(User::getStatus, 1).last("limit 1"));
+        if (ObjectUtils.isNull(user)){
+            //新增
+            //检测手机号是否重复
+            User user1 = getOne(new LambdaQueryWrapper<User>()
+                    .eq(User::getTelphone, EncryptHandler.encrypt(bo.getUserPhone())).eq(User::getStatus, 1).last("limit 1"));
+            if (ObjectUtils.isNotNull(user1)){
+                //手机号码重复
+                bo.setUserPhone(TelPhoneUtils.createMobile());
             }
-        }else{
-            password = bo.getPwd();
-        }
-
-        if (!SecurityUtils.matchesPassword(password,user.getPassword())) {
-            iUserLoginErrorService.saveErrorLog(bo.getAccount());
-            throw new CustomException("登录信息错误");
+            User inertData = new User();
+            inertData.setTelphone(bo.getUserPhone());
+            //隐藏手机号作为初始昵称
+            inertData.setNickname(TelPhoneUtils.hideTelPhone(bo.getUserPhone()));
+            //雪花算法产生账号ID
+            SnowflakeIdUtils idWorker = new SnowflakeIdUtils(3, 1);
+            inertData.setUserAccount(String.valueOf(idWorker.nextId()));
+            inertData.setSex(1);
+            inertData.setEduLevel("本科");
+            inertData.setSex(getGenderByIdCard(bo.getUserCard()));
+            inertData.setIdCard(bo.getUserCard());
+            inertData.setRealname(bo.getUserName());
+            inertData.setStatus(1);
+            inertData.setRegisterPlat("6");
+            inertData.setAvatar(Constants.DEFAULT_AVATAR);
+            inertData.setLastLoginIp(IpUtils.getIpAddr(ServletUtils.getRequest()));
+            inertData.setLastLoginTime(DateUtils.getNowTime());
+            inertData.setCreateTime(DateUtils.getNowTime());
+            inertData.setUpdateTime(DateUtils.getNowTime());
+            String pwd = "";
+            if (ObjectUtils.isNotNull(bo.getUserCard())){
+                pwd =  bo.getUserCard().substring(bo.getUserCard().length() - 6);
+            }else {
+                pwd =  bo.getUserPhone().substring(bo.getUserPhone().length() - 6);
+            }
+            inertData.setPasswordAes(EncryptHandler.encrypt(pwd));
+            inertData.setPassword(SecurityUtils.encryptPassword(pwd));
+            if(!save(inertData)){
+                throw new CustomException("注册失败");
+            }
+            user = inertData;
         }
 
         //是否领取直播课程

+ 1 - 0
zhichen-framework/src/main/java/com/zhichen/framework/web/service/WxLoginService.java

@@ -1349,6 +1349,7 @@ public class WxLoginService implements IWxLoginService {
         ClientLoginUser loginUser = new ClientLoginUser();
         loginUser.setUser(user);
         map.put("openId",openId);
+        map.put("user_account",user.getUserAccount());
         map.put("isUser","0");
         map.put(Constants.TOKEN, wxTokenService.createToken(loginUser));
         return map;

+ 17 - 0
zhichen-system/src/main/java/com/zhichen/modules/user/bo/UserExamActivityBo.java

@@ -0,0 +1,17 @@
+package com.zhichen.modules.user.bo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class UserExamActivityBo implements Serializable {
+
+    private String userCard;
+
+    private String userName;
+
+    private String majorName;
+
+    private String userPhone;
+}

+ 1 - 1
zhichen-system/src/main/java/com/zhichen/modules/user/service/IUserService.java

@@ -186,6 +186,6 @@ public interface IUserService extends IService<User> {
 
     User queryByOpenId(String openId);
 
-	Map<String, Object> liveAccount_login(UserAppAccountLoginBo bo);
+	Map<String, Object> liveAccount_login(UserExamActivityBo bo);
 
 }