From 08a2258b070f858a773407bb6d23c0f7747b3264 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 9 Apr 2026 10:20:03 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=9F=E4=B8=80=E7=99=BB=E5=BD=95=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/api/vo/req/UserUnifiedLoginVo.java | 19 ++++++ .../com/ho/user/config/shiro/ShiroConfig.java | 1 + .../ho/user/controller/UserController.java | 60 +++++++++++++++++++ 3 files changed, 80 insertions(+) create mode 100644 user-service-api/src/main/java/com/ho/user/api/vo/req/UserUnifiedLoginVo.java diff --git a/user-service-api/src/main/java/com/ho/user/api/vo/req/UserUnifiedLoginVo.java b/user-service-api/src/main/java/com/ho/user/api/vo/req/UserUnifiedLoginVo.java new file mode 100644 index 0000000..4ac679e --- /dev/null +++ b/user-service-api/src/main/java/com/ho/user/api/vo/req/UserUnifiedLoginVo.java @@ -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; + +} diff --git a/user-service/src/main/java/com/ho/user/config/shiro/ShiroConfig.java b/user-service/src/main/java/com/ho/user/config/shiro/ShiroConfig.java index 5de56be..b3a8374 100644 --- a/user-service/src/main/java/com/ho/user/config/shiro/ShiroConfig.java +++ b/user-service/src/main/java/com/ho/user/config/shiro/ShiroConfig.java @@ -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"); diff --git a/user-service/src/main/java/com/ho/user/controller/UserController.java b/user-service/src/main/java/com/ho/user/controller/UserController.java index 0b2f0e1..8186dd8 100644 --- a/user-service/src/main/java/com/ho/user/controller/UserController.java +++ b/user-service/src/main/java/com/ho/user/controller/UserController.java @@ -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 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); + } }