|
|
@@ -8,7 +8,6 @@ import com.sckw.auth.model.vo.res.EntInfoResVo;
|
|
|
import com.sckw.auth.model.vo.res.LoginResVo;
|
|
|
import com.sckw.auth.model.vo.res.LoginResVo1;
|
|
|
import com.sckw.auth.util.AsyncFactory;
|
|
|
-import com.sckw.core.model.enums.ClientTypeEnum;
|
|
|
import com.sckw.core.model.enums.SystemTypeEnum;
|
|
|
import com.sckw.core.utils.*;
|
|
|
import com.sckw.core.web.model.EntCertificateInfo;
|
|
|
@@ -359,6 +358,12 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
}
|
|
|
|
|
|
/**-------------------------------------------------------------------------------------------------------------->**/
|
|
|
+ /**
|
|
|
+ * @param loginBase {}
|
|
|
+ * @desc 司机账号登陆
|
|
|
+ * @author zk
|
|
|
+ * @date 2023/7/26
|
|
|
+ **/
|
|
|
@Override
|
|
|
public HttpResult driverAuth(LoginBase loginBase) {
|
|
|
/**查询用户信息**/
|
|
|
@@ -382,90 +387,113 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
return HttpResult.error(HttpStatus.CODE_10301, "生成密钥失败,请联系系统管理员!");
|
|
|
}
|
|
|
|
|
|
- /**缓存司机/企业信息**/
|
|
|
- AsyncFactory.execute(new AsyncProcess1(loginBase, driver, enterprise));
|
|
|
+ /**缓存信息**/
|
|
|
+ AsyncFactory.execute(new AsyncProcess1(loginBase, null, driver, enterprise, remoteUserService));
|
|
|
|
|
|
/**数据组装**/
|
|
|
LoginResVo1 loginRes = new LoginResVo1();
|
|
|
- BeanUtils.copyPropertiesValue(driver, loginRes);
|
|
|
+ loginRes.setId(driver.getId());
|
|
|
+ loginRes.setName(driver.getName());
|
|
|
loginRes.setAccount(loginBase.getAccount());
|
|
|
- loginRes.setFirmName(enterprise != null ? enterprise.getFirmName() : null);
|
|
|
- loginRes.setApproval(enterprise != null ? enterprise.getApproval() : null);
|
|
|
- loginRes.setEntTypeNames(enterprise != null ? enterprise.getEntTypeNames() : null);
|
|
|
+ loginRes.setPhone(driver.getPhone());
|
|
|
+ loginRes.setStatus(driver.getStatus());
|
|
|
+ loginRes.setEntId(driver.getEntId());
|
|
|
+ loginRes.setFirmName(enterprise == null ? enterprise.getFirmName() : null);
|
|
|
+ loginRes.setApproval(enterprise == null ? enterprise.getApproval() : null);
|
|
|
+ loginRes.setEntTypeNames(enterprise == null ? enterprise.getEntTypeNames() : null);
|
|
|
loginRes.setClientType(loginBase.getClientType());
|
|
|
loginRes.setSystemType(loginBase.getSystemType());
|
|
|
loginRes.setToken(token);
|
|
|
return HttpResult.ok(loginRes);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * @param loginBase {}
|
|
|
+ * @desc 运营/企业账号登陆
|
|
|
+ * @author zk
|
|
|
+ * @date 2023/7/26
|
|
|
+ **/
|
|
|
@Override
|
|
|
- public HttpResult entAuth(LoginBase loginBase) {
|
|
|
+ public HttpResult commonAuth(LoginBase loginBase) {
|
|
|
/**查询用户信息**/
|
|
|
- KwsUserResDto user = findUser(loginBase);
|
|
|
+ KwsUserResDto user = systemService.queryUserDetails(loginBase.getAccount(), loginBase.getSystemType());
|
|
|
/**信息校验**/
|
|
|
if (user == null) {
|
|
|
- return HttpResult.error(HttpStatus.QUERY_FAIL_CODE, "账号不存在,请检查并重新输入!");
|
|
|
+ return HttpResult.error(HttpStatus.QUERY_FAIL_CODE, "账号不存在,请检查并重新输入!");
|
|
|
}
|
|
|
if (!PasswordUtils.validatePassword(loginBase.getPassword(), user.getPassword())) {
|
|
|
- return HttpResult.error(HttpStatus.CODE_10301, "密码不正确,请检查并重新输入!");
|
|
|
+ return HttpResult.error(HttpStatus.CODE_10301, "密码不正确,请检查并重新输入!");
|
|
|
}
|
|
|
if (user.getStatus() == Global.YES) {
|
|
|
- return HttpResult.error(HttpStatus.CODE_10301, "您的账号已冻结,如需帮助,请致电平台客服:400-803-6377!");
|
|
|
+ return HttpResult.error(HttpStatus.CODE_10301, "您的账号已冻结,如需帮助,请致电平台客服:400-803-6377!");
|
|
|
}
|
|
|
//企业信息
|
|
|
- REnterpriseVo enterprise = systemService.queryEntDetails(null);
|
|
|
+ REnterpriseVo enterprise = systemService.queryEntDetails(user.getEntId());
|
|
|
+ if (loginBase.getSystemType() == SystemTypeEnum.COMPANY.getCode() && enterprise == null) {
|
|
|
+ return HttpResult.error(HttpStatus.QUERY_FAIL_CODE, "账号没有归属企业,请检查并重新输入!");
|
|
|
+ }
|
|
|
+ if (enterprise != null && enterprise.getStatus() == Global.YES) {
|
|
|
+ return HttpResult.error(HttpStatus.QUERY_FAIL_CODE, "企业已冻结,如需帮助,请致电平台客服:400-803-6377!");
|
|
|
+ }
|
|
|
|
|
|
/**生成token**/
|
|
|
String token = EncryUtil.encryV1(Global.PRI_KEY, String.valueOf(user.getId()));
|
|
|
if (StringUtils.isBlank(token)) {
|
|
|
- return HttpResult.error(HttpStatus.CODE_10301, "生成密钥失败,请联系系统管理员!");
|
|
|
+ return HttpResult.error(HttpStatus.CODE_10301, "生成密钥失败,请联系系统管理员!");
|
|
|
}
|
|
|
|
|
|
- /**缓存司机/企业信息**/
|
|
|
- AsyncFactory.execute(new AsyncProcess1(loginBase, null, enterprise));
|
|
|
+ /**缓存信息**/
|
|
|
+ AsyncFactory.execute(new AsyncProcess1(loginBase, user, null, enterprise, remoteUserService));
|
|
|
|
|
|
/**数据组装**/
|
|
|
LoginResVo1 loginRes = new LoginResVo1();
|
|
|
+ loginRes.setId(user.getId());
|
|
|
+ loginRes.setName(user.getName());
|
|
|
loginRes.setAccount(loginBase.getAccount());
|
|
|
- loginRes.setFirmName(enterprise.getFirmName());
|
|
|
- loginRes.setApproval(enterprise.getApproval());
|
|
|
- loginRes.setEntTypeNames(enterprise.getEntTypeNames());
|
|
|
+ loginRes.setPhone(user.getPhone());
|
|
|
+ loginRes.setPhoto(user.getPhoto());
|
|
|
+ loginRes.setIsMain(user.getIsMain());
|
|
|
+ loginRes.setStatus(user.getStatus());
|
|
|
+ loginRes.setRoleName(user.getRoleName());
|
|
|
+ loginRes.setClientId(user.getClientId());
|
|
|
+ loginRes.setEntId(user.getEntId());
|
|
|
+ loginRes.setFirmName(enterprise == null ? enterprise.getFirmName() : null);
|
|
|
+ loginRes.setApproval(enterprise == null ? enterprise.getApproval() : null);
|
|
|
+ loginRes.setEntTypeNames(enterprise == null ? enterprise.getEntTypeNames() : null);
|
|
|
loginRes.setClientType(loginBase.getClientType());
|
|
|
loginRes.setSystemType(loginBase.getSystemType());
|
|
|
loginRes.setToken(token);
|
|
|
return HttpResult.ok(loginRes);
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public HttpResult operateAuth(LoginBase loginBase) {
|
|
|
-
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- private KwsUserResDto findUser(LoginBase loginBase) throws SystemException {
|
|
|
- List<KwsUserResDto> kwsUsers = remoteUserService.checkUserBase(loginBase.getAccount(), loginBase.getSystemType());
|
|
|
- return kwsUsers == null || kwsUsers.size() == Global.NUMERICAL_ZERO ? null : kwsUsers.get(0);
|
|
|
- }
|
|
|
-
|
|
|
static class AsyncProcess1 implements Runnable {
|
|
|
private final LoginBase loginBase;
|
|
|
|
|
|
+ private final KwsUserResDto user;
|
|
|
+
|
|
|
private final RDriverDetailVo driver;
|
|
|
|
|
|
private final REnterpriseVo enterprise;
|
|
|
|
|
|
- public AsyncProcess1(LoginBase loginBase, RDriverDetailVo driver, REnterpriseVo enterprise) {
|
|
|
+ private final RemoteUserService remoteUserService;
|
|
|
+
|
|
|
+ public AsyncProcess1(LoginBase loginBase, KwsUserResDto user, RDriverDetailVo driver, REnterpriseVo enterprise ,
|
|
|
+ RemoteUserService remoteUserService) {
|
|
|
this.loginBase = loginBase;
|
|
|
+ this.user = user;
|
|
|
this.driver = driver;
|
|
|
this.enterprise = enterprise;
|
|
|
+ this.remoteUserService = remoteUserService;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void run() {
|
|
|
- //用户信息
|
|
|
+ //司机信息
|
|
|
SaveDriverToCache(loginBase, driver);
|
|
|
|
|
|
+ //用户信息
|
|
|
+ SaveUserToCache(loginBase, user);
|
|
|
+
|
|
|
//企业信息
|
|
|
SaveEntToCache(enterprise);
|
|
|
}
|
|
|
@@ -489,11 +517,14 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
/**
|
|
|
* @param loginBase 登录信息
|
|
|
* @param driver 司机信息
|
|
|
- * @desc: 缓存用户业信息
|
|
|
+ * @desc: 缓存司机信息
|
|
|
* @author: czh
|
|
|
* @date: 2023/7/3
|
|
|
*/
|
|
|
private void SaveDriverToCache(LoginBase loginBase, RDriverDetailVo driver) {
|
|
|
+ if (driver == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
//存用户登录信息
|
|
|
LoginUserInfo loginUserInfo = new LoginUserInfo();
|
|
|
loginUserInfo.setId(driver.getId());
|
|
|
@@ -504,8 +535,88 @@ public class AuthServiceImpl implements IAuthService {
|
|
|
loginUserInfo.setStatus(driver.getStatus());
|
|
|
loginUserInfo.setEntId(enterprise != null ? enterprise.getId() : null);
|
|
|
loginUserInfo.setEntName(enterprise != null ? enterprise.getFirmName() : null);
|
|
|
+ loginUserInfo.setClientType(loginBase.getClientType());
|
|
|
+ String key = Global.getFullUserLoginKey(loginUserInfo.getSystemType(), loginUserInfo.getId(), loginBase.getClientType());
|
|
|
+ RedissonUtils.putString(key, JSON.toJSONString(loginUserInfo), Global.PC_TOKEN_EXPIRE);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param loginBase 登录信息
|
|
|
+ * @param user 用户信息
|
|
|
+ * @desc: 缓存用户信息
|
|
|
+ * @author: czh
|
|
|
+ * @date: 2023/7/3
|
|
|
+ */
|
|
|
+ private void SaveUserToCache(LoginBase loginBase, KwsUserResDto user) {
|
|
|
+ if (user == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //存用户登录信息
|
|
|
+ LoginUserInfo loginUserInfo = new LoginUserInfo();
|
|
|
+ loginUserInfo.setId(user.getId());
|
|
|
+ loginUserInfo.setSystemType(loginBase.getSystemType());
|
|
|
+ loginUserInfo.setAccount(user.getPhone());
|
|
|
+ loginUserInfo.setUserName(user.getName());
|
|
|
+ loginUserInfo.setPhone(user.getPhone());
|
|
|
+ loginUserInfo.setStatus(user.getStatus());
|
|
|
+ loginUserInfo.setIsMain(user.getIsMain());
|
|
|
+ loginUserInfo.setEntId(user.getEntId());
|
|
|
+ loginUserInfo.setEntName(enterprise != null ? enterprise.getFirmName() : null);
|
|
|
String key = Global.getFullUserLoginKey(loginUserInfo.getSystemType(), loginUserInfo.getId(), loginBase.getClientType());
|
|
|
RedissonUtils.putString(key, JSON.toJSONString(loginUserInfo), Global.PC_TOKEN_EXPIRE);
|
|
|
+
|
|
|
+ //存缓存请求地址
|
|
|
+ SaveMenusToCache(user);
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param loginResVo 登录返参
|
|
|
+ * @desc: 存缓存请求地址
|
|
|
+ * @author: czh
|
|
|
+ * @date: 2023/6/28
|
|
|
+ */
|
|
|
+ private void SaveMenusToCache(KwsUserResDto loginResVo) {
|
|
|
+ //存权限菜单
|
|
|
+ long id = loginResVo.getId();
|
|
|
+ List<UserAccessMenuInfoResDto> userAccessMenuInfo = remoteUserService.queryUserAccessMenu(id);
|
|
|
+ if (CollectionUtils.isEmpty(userAccessMenuInfo)) {
|
|
|
+ RedissonUtils.delete(Global.REDIS_SYS_MENU_PREFIX + loginResVo.getSystemType() + Global.COLON + id);
|
|
|
+ log.error("未查询到用户{}的菜单权限", id);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ List<String> menus = new ArrayList<>();
|
|
|
+ for (UserAccessMenuInfoResDto userAccessMenuInfoResDto : userAccessMenuInfo) {
|
|
|
+ String links = userAccessMenuInfoResDto.getLinks();
|
|
|
+ if (StringUtils.isNotBlank(links)) {
|
|
|
+ menus.addAll(Arrays.asList(userAccessMenuInfoResDto.getLinks().split(",")));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ RedissonUtils.putSet(Global.REDIS_SYS_MENU_PREFIX + id, menus);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param loginResVo 登录返参
|
|
|
+ * @desc: 存登录记录信息
|
|
|
+ * @author: czh
|
|
|
+ * @date: 2023/6/28
|
|
|
+ */
|
|
|
+ private void SaveLoginInfo(LoginResVo loginResVo) {
|
|
|
+ long userId = loginResVo.getId();
|
|
|
+ UserLoginReqDto currentDayLogin = remoteUserService.currentDayLogin(userId);
|
|
|
+ UserLoginReqDto userLoginReqDto = new UserLoginReqDto();
|
|
|
+ userLoginReqDto.setPid(Objects.isNull(currentDayLogin) ? "" : String.valueOf(currentDayLogin.getId()));
|
|
|
+ userLoginReqDto.setIp("");
|
|
|
+ userLoginReqDto.setUserAgent("");
|
|
|
+ userLoginReqDto.setUserId(loginResVo.getId());
|
|
|
+ userLoginReqDto.setToken(loginResVo.getToken());
|
|
|
+ userLoginReqDto.setValidTime("");
|
|
|
+ userLoginReqDto.setFirst(Objects.isNull(currentDayLogin) ? Global.YES : Global.NO);
|
|
|
+ userLoginReqDto.setLock(Global.NO);
|
|
|
+ userLoginReqDto.setType(Global.NO);
|
|
|
+ userLoginReqDto.setSource(loginResVo.getClientType());
|
|
|
+ remoteUserService.saveUserLogin(userLoginReqDto);
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
}
|