统一登录接口

This commit is contained in:
2026-04-09 10:20:03 +08:00
parent bdae9986f2
commit 08a2258b07
3 changed files with 80 additions and 0 deletions

View File

@ -0,0 +1,19 @@
package com.ho.user.api.vo.req;
import com.ho.common.tools.entity.UserDetailRespVO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 用户统一登陆
*/
@Data
public class UserUnifiedLoginVo {
@ApiModelProperty(value = "储能登陆")
private UserDetailRespVO energy;
@ApiModelProperty(value = "光伏登陆")
private UserDetailRespVO pv;
}

View File

@ -73,6 +73,7 @@ public class ShiroConfig {
// 配置不会被拦截的链接 顺序判断
filterChainDefinitionMap.put("/sys/user/login", "anon");
filterChainDefinitionMap.put("/sys/user/getToken", "anon");
filterChainDefinitionMap.put("/sys/user/getUnifiedLogin", "anon");
filterChainDefinitionMap.put("/sys/user/register", "anon");
filterChainDefinitionMap.put("/sys/key/decrypt", "anon");
filterChainDefinitionMap.put("/mongoId", "anon");

View File

@ -2,6 +2,10 @@ package com.ho.user.controller;
import cn.hutool.core.date.DateUtil;
import cn.hutool.crypto.digest.BCrypt;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ho.business.vo.resp.ShipStationRespVO;
import com.ho.common.tools.annotation.HzPermission;
import com.ho.common.tools.annotation.LogAnnotation;
import com.ho.common.tools.annotation.TokenIgnore;
@ -18,9 +22,11 @@ import com.ho.common.tools.exception.DataResult;
import com.ho.common.tools.service.RedisService;
import com.ho.common.tools.util.AESEncryptUtil;
import com.ho.common.tools.util.FastUtils;
import com.ho.common.tools.util.HttpUtils;
import com.ho.user.api.entity.SysDept;
import com.ho.user.api.entity.SysUser;
import com.ho.user.api.entity.WorkOrderUser;
import com.ho.user.api.vo.req.UserUnifiedLoginVo;
import com.ho.user.entity.SysTheme;
import com.ho.user.service.*;
import com.ho.user.vo.req.*;
@ -543,4 +549,58 @@ public class UserController {
return DataResult.success();
}
@PostMapping(value = "getUnifiedLogin")
@ApiOperation(value = "用户统一登录接口")
@TokenIgnore
public DataResult<UserUnifiedLoginVo> getUnifiedLogin(@RequestBody @Valid LoginReqVO loginReqVO) {
UserUnifiedLoginVo unifiedLoginVo = new UserUnifiedLoginVo();
ObjectMapper mapper = new ObjectMapper();
try {
//储能登陆
String enUrl = "http://localhost:8012/api/sys/user/login";
String enJson = HttpUtils.postWithJson(enUrl,mapper.writeValueAsString(loginReqVO));
JSONObject en = JSONObject.parseObject(enJson);
Integer codeEn = en.getInteger("code");
if(CommonConstant.HttpCode.SUCCESS_CODE.equals(codeEn)){
String enString = en.getString("data");
UserDetailRespVO enVo = JSON.parseObject(enString,UserDetailRespVO.class);
unifiedLoginVo.setEnergy(enVo);
}
//光伏登陆
String pvUrl = "http://1.95.112.231:18012/api/sys/user/login";
String pvJson = HttpUtils.postWithJson(pvUrl,mapper.writeValueAsString(loginReqVO));
JSONObject pv = JSONObject.parseObject(pvJson);
Integer codePv = pv.getInteger("code");
if(CommonConstant.HttpCode.SUCCESS_CODE.equals(codePv)){
String pvString = pv.getString("data");
UserDetailRespVO pvVo = JSON.parseObject(pvString,UserDetailRespVO.class);
unifiedLoginVo.setPv(pvVo);
}
if(unifiedLoginVo.getEnergy()==null && unifiedLoginVo.getPv()==null){
if(BaseResponseCode.NOT_ACCOUNT.getCode()==codeEn
&&BaseResponseCode.NOT_ACCOUNT.getCode()==codePv){
throw new BusinessException(BaseResponseCode.NOT_ACCOUNT);
}
if (BaseResponseCode.PASSWORD_ERROR.getCode()==codeEn
||BaseResponseCode.PASSWORD_ERROR.getCode()==codePv ){
throw new BusinessException(BaseResponseCode.PASSWORD_ERROR);
}
if (BaseResponseCode.USER_LOCK.getCode()==codeEn
||BaseResponseCode.USER_LOCK.getCode()==codePv ){
throw new BusinessException(BaseResponseCode.USER_LOCK);
}
if (BaseResponseCode.LOSE_EFFICACY.getCode()==codeEn
||BaseResponseCode.LOSE_EFFICACY.getCode()==codePv ){
throw new BusinessException(BaseResponseCode.LOSE_EFFICACY);
}
if (BaseResponseCode.TO_BELONGING_DEPT_DISABLE.getCode()==codeEn
||BaseResponseCode.TO_BELONGING_DEPT_DISABLE.getCode()==codePv ){
throw new BusinessException(BaseResponseCode.TO_BELONGING_DEPT_DISABLE);
}
}
} catch (IOException e) {
throw new RuntimeException(e);
}
return DataResult.success(unifiedLoginVo);
}
}