523096025 il y a 4 mois
Parent
commit
42514cf523

+ 9 - 0
huimv-farm/src/main/java/vip/xiaonuo/hr/modular/count/controller/HrCountController.java

@@ -26,6 +26,8 @@ import org.springframework.web.bind.annotation.RestController;
 import vip.xiaonuo.common.annotation.CommonLog;
 import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.common.pojo.CommonValidList;
+import vip.xiaonuo.hr.modular.baseemployeeinfo.entity.vo.PerNum;
+import vip.xiaonuo.hr.modular.baseemployeeinfo.param.EmployeeInfoEoucation;
 import vip.xiaonuo.hr.modular.count.entity.HrCount;
 import vip.xiaonuo.hr.modular.count.param.HrCountAddParam;
 import vip.xiaonuo.hr.modular.count.param.HrCountEditParam;
@@ -36,6 +38,7 @@ import vip.xiaonuo.hr.modular.count.service.HrCountService;
 import javax.annotation.Resource;
 import javax.validation.Valid;
 import javax.validation.constraints.NotEmpty;
+import java.util.List;
 
 /**
  * 组织控制器
@@ -93,4 +96,10 @@ public class HrCountController {
     public CommonResult<HrCount> detail(@Valid HrCountIdParam hrCountIdParam) {
         return CommonResult.data(hrCountService.detail(hrCountIdParam));
     }
+
+//    @ApiOperation("员工")
+//    @PostMapping("/hr/baseemployeeinfo/gongLingDis")
+//    public CommonResult<List<PerNum>> gongLingDis(@Valid EmployeeInfoEoucation employeeInfoEoucation) {
+////        return CommonResult.data(hrBaseEmployeeInfoService.gongLingDis(employeeInfoEoucation));
+//    }
 }

+ 7 - 0
snowy-plugin/snowy-plugin-auth/src/main/java/vip/xiaonuo/auth/modular/login/controller/AuthController.java

@@ -89,6 +89,13 @@ public class AuthController {
         return CommonResult.data(authService.doLogin(authAccountPasswordLoginParam, SaClientTypeEnum.B.getValue()));
     }
 
+    @ApiOperationSupport(order = 3)
+    @ApiOperation("B端大屏账号密码登录")
+    @PostMapping("/auth/b/doLoginScreen")
+    public CommonResult<String> doLoginScreen(@RequestBody @Valid AuthAccountPasswordLoginParam authAccountPasswordLoginParam) {
+        return CommonResult.data(authService.doLoginScreen(authAccountPasswordLoginParam, SaClientTypeEnum.B.getValue()));
+    }
+
     /**
      * B端手机验证码登录
      *

+ 4 - 0
snowy-plugin/snowy-plugin-auth/src/main/java/vip/xiaonuo/auth/modular/login/param/AuthAccountPasswordLoginParam.java

@@ -38,6 +38,10 @@ public class AuthAccountPasswordLoginParam {
     @NotBlank(message = "密码不能为空")
     private String password;
 
+    /** 密码 */
+    @ApiModelProperty(value = "登录类型", required = true, position = 2)
+    private Integer accountType;
+
     /** 设备 */
     @ApiModelProperty(value = "设备", position = 3)
     private String device;

+ 2 - 0
snowy-plugin/snowy-plugin-auth/src/main/java/vip/xiaonuo/auth/modular/login/service/AuthService.java

@@ -82,4 +82,6 @@ public interface AuthService {
      * @date 2022/7/9 14:44
      */
     String doLoginById(String userId, String device, String type);
+
+    String doLoginScreen(AuthAccountPasswordLoginParam authAccountPasswordLoginParam, String value);
 }

+ 78 - 2
snowy-plugin/snowy-plugin-auth/src/main/java/vip/xiaonuo/auth/modular/login/service/impl/AuthServiceImpl.java

@@ -194,6 +194,82 @@ public class AuthServiceImpl implements AuthService {
     }
 
     @Override
+    public String doLoginScreen(AuthAccountPasswordLoginParam authAccountPasswordLoginParam, String type) {
+        // 判断账号是否被封禁
+        isDisableTime(authAccountPasswordLoginParam.getAccount());
+        // 获取账号
+        String account = authAccountPasswordLoginParam.getAccount();
+        // 获取密码
+        String password = authAccountPasswordLoginParam.getPassword();
+        // 获取设备
+        String device = authAccountPasswordLoginParam.getDevice();
+        // 默认指定为PC,如在小程序跟移动端的情况下,自行指定即可
+        if(ObjectUtil.isEmpty(device)) {
+            device = AuthDeviceTypeEnum.PC.getValue();
+        } else {
+            AuthDeviceTypeEnum.validate(device);
+        }
+        // 校验验证码
+        String defaultCaptchaOpen = devConfigApi.getValueByKey(SNOWY_SYS_DEFAULT_CAPTCHA_OPEN_KEY);
+        if(ObjectUtil.isNotEmpty(defaultCaptchaOpen)) {
+            if(Convert.toBool(defaultCaptchaOpen)) {
+                // 获取验证码
+                String validCode = authAccountPasswordLoginParam.getValidCode();
+                // 获取验证码请求号
+                String validCodeReqNo = authAccountPasswordLoginParam.getValidCodeReqNo();
+                // 开启验证码则必须传入验证码
+                if(ObjectUtil.isEmpty(validCode)) {
+                    throw new CommonException(AuthExceptionEnum.VALID_CODE_EMPTY.getValue());
+                }
+                // 开启验证码则必须传入验证码请求号
+                if(ObjectUtil.isEmpty(validCodeReqNo)) {
+                    throw new CommonException(AuthExceptionEnum.VALID_CODE_REQ_NO_EMPTY.getValue());
+                }
+                // 执行校验验证码
+                validValidCode(null, validCode, validCodeReqNo);
+            }
+        }
+        // SM2解密并获得前端传来的密码哈希值
+        String passwordHash="";
+        try {
+            // 解密,并做哈希值
+//             passwordHash="207cf410532f92a47dee245ce9b11ff71f578ebd763eb3bbea44ebd043d018fb" ;
+            passwordHash = CommonCryptogramUtil.doHashValue(CommonCryptogramUtil.doSm2Decrypt(password));
+        } catch (Exception e) {
+            throw new CommonException(AuthExceptionEnum.PWD_DECRYPT_ERROR.getValue());
+        }
+        // 根据账号获取用户信息,根据B端或C端判断
+        if(SaClientTypeEnum.B.getValue().equals(type)) {
+            SaBaseLoginUser saBaseLoginUser = loginUserApi.getUserByAccount(account);
+            if(ObjectUtil.isEmpty(saBaseLoginUser)) {
+                throw new CommonException(AuthExceptionEnum.ACCOUNT_ERROR.getValue());
+            }
+            if (!saBaseLoginUser.getAccountType().equals(authAccountPasswordLoginParam.getAccountType())){
+                throw new CommonException("账号类型不匹配");
+            }
+            if (!saBaseLoginUser.getPassword().equals(passwordHash)) {
+                // 记录登录次数 和 过期时间
+                saveLoginTimes(account);
+                throw new CommonException(AuthExceptionEnum.PWD_ERROR.getValue());
+            }
+            // 删除redis 中的key
+            clearLoginErrorTimes(account);
+            // 执行B端登录
+            return execLoginB(saBaseLoginUser, device);
+        } else {
+            SaBaseClientLoginUser saBaseClientLoginUser = clientLoginUserApi.getClientUserByAccount(account);
+            if(ObjectUtil.isEmpty(saBaseClientLoginUser)) {
+                throw new CommonException(AuthExceptionEnum.ACCOUNT_ERROR.getValue());
+            }
+            if (!saBaseClientLoginUser.getPassword().equals(passwordHash)) {
+                throw new CommonException(AuthExceptionEnum.PWD_ERROR.getValue());
+            }
+            // 执行C端登录
+            return execLoginC(saBaseClientLoginUser, device);
+        }
+
+    }
+    @Override
     public String doLogin(AuthAccountPasswordLoginParam authAccountPasswordLoginParam, String type) {
         // 判断账号是否被封禁
         isDisableTime(authAccountPasswordLoginParam.getAccount());
@@ -233,8 +309,8 @@ public class AuthServiceImpl implements AuthService {
         String passwordHash="";
         try {
             // 解密,并做哈希值
-             passwordHash="207cf410532f92a47dee245ce9b11ff71f578ebd763eb3bbea44ebd043d018fb" ;
-//            passwordHash = CommonCryptogramUtil.doHashValue(CommonCryptogramUtil.doSm2Decrypt(password));
+//             passwordHash="207cf410532f92a47dee245ce9b11ff71f578ebd763eb3bbea44ebd043d018fb" ;
+            passwordHash = CommonCryptogramUtil.doHashValue(CommonCryptogramUtil.doSm2Decrypt(password));
         } catch (Exception e) {
             throw new CommonException(AuthExceptionEnum.PWD_DECRYPT_ERROR.getValue());
         }