From 5def1798d04f7904611d43fc85ddff03e5cce18a Mon Sep 17 00:00:00 2001 From: yk Date: Wed, 17 Jan 2024 11:03:43 +0800 Subject: [PATCH] =?UTF-8?q?1=EF=BC=8C=E6=96=B0=E5=A2=9E=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E5=8F=B7=E8=8E=B7=E5=8F=96token=202=EF=BC=8C=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E4=B8=80=E4=BA=9B=E8=BE=93=E5=87=BA=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../authority/feign/RemoteLoginService.java | 3 ++ .../factory/RemoteLoginFallbackFactory.java | 5 +++ .../api/tenant/feign/RemoteTenantService.java | 7 ++++ .../factory/RemoteTenantFallbackFactory.java | 11 +++++ .../auth/controller/TokenController.java | 25 ++++++++++++ .../xueyi/auth/service/SysLoginService.java | 14 ++++++- .../common/web/config/WebApiMvcConfig.java | 4 +- .../provider/DeviceTenantSqlProvider.java | 7 ++-- .../controller/SysLoginController.java | 40 +++++++++++++------ .../authority/service/ISysLoginService.java | 2 + .../service/impl/SysLoginServiceImpl.java | 11 +++-- ...DmRecognizedRecordsInnerApiController.java | 3 +- .../tenant/controller/TeTenantController.java | 24 ++++++++++- 13 files changed, 132 insertions(+), 24 deletions(-) diff --git a/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/authority/feign/RemoteLoginService.java b/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/authority/feign/RemoteLoginService.java index 11c4c794..9507d7fa 100644 --- a/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/authority/feign/RemoteLoginService.java +++ b/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/authority/feign/RemoteLoginService.java @@ -33,4 +33,7 @@ public interface RemoteLoginService { @GetMapping("/login/inner/loginByPhone/{phone}") R getLoginInfoInnerByPhone(@PathVariable("phone") String phone, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + @GetMapping("/login/inner/loginByTenant/{tenantId}") + R getLoginInfoInnerByTenant(@PathVariable("tenantId") Long tenantId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + } diff --git a/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/authority/feign/factory/RemoteLoginFallbackFactory.java b/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/authority/feign/factory/RemoteLoginFallbackFactory.java index 39941fea..edb8f077 100644 --- a/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/authority/feign/factory/RemoteLoginFallbackFactory.java +++ b/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/authority/feign/factory/RemoteLoginFallbackFactory.java @@ -29,6 +29,11 @@ public class RemoteLoginFallbackFactory implements FallbackFactory getLoginInfoInnerByPhone(String phone, String source) { return R.fail("获取登录信息失败:" + throwable.getMessage()); } + + @Override + public R getLoginInfoInnerByTenant(Long tenantId, String source) { + return R.fail("获取登录信息失败:" + throwable.getMessage()); + } }; } } diff --git a/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/RemoteTenantService.java b/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/RemoteTenantService.java index 3daf4903..29f6725e 100644 --- a/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/RemoteTenantService.java +++ b/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/RemoteTenantService.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson2.JSONObject; import com.xueyi.common.core.constant.basic.SecurityConstants; import com.xueyi.common.core.constant.basic.ServiceConstants; import com.xueyi.common.core.web.result.R; +import com.xueyi.common.core.web.vo.DeviceTenantSourceMergeVo; import com.xueyi.tenant.api.tenant.domain.dto.TeTenantDto; import com.xueyi.tenant.api.tenant.domain.po.SysEnterpriseStaff; import com.xueyi.tenant.api.tenant.domain.po.TeTenantPo; @@ -41,6 +42,12 @@ public interface RemoteTenantService { @GetMapping("/tenant/one") R tenant(@RequestParam ("phone") String phone, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + @GetMapping("/tenant/query-tenant-by-id") + R selectById(@RequestParam ("tenantId") Long tenantId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + + @GetMapping("/tenant/query-tenant-source") + DeviceTenantSourceMergeVo selectTenantSourceMerge(@RequestParam ("deviceId") String deviceId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + @GetMapping("/tenant/query-tenant-by-staff-phone") R queryTenantByStaffPhone(@RequestParam ("phone") String phone, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); diff --git a/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/factory/RemoteTenantFallbackFactory.java b/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/factory/RemoteTenantFallbackFactory.java index e05144aa..f27932ed 100644 --- a/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/factory/RemoteTenantFallbackFactory.java +++ b/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/factory/RemoteTenantFallbackFactory.java @@ -2,6 +2,7 @@ package com.xueyi.tenant.api.tenant.feign.factory; import com.alibaba.fastjson2.JSONObject; import com.xueyi.common.core.web.result.R; +import com.xueyi.common.core.web.vo.DeviceTenantSourceMergeVo; import com.xueyi.tenant.api.tenant.domain.dto.TeTenantDto; import com.xueyi.tenant.api.tenant.domain.po.SysEnterpriseStaff; import com.xueyi.tenant.api.tenant.domain.po.TeTenantPo; @@ -43,6 +44,16 @@ public class RemoteTenantFallbackFactory implements FallbackFactory selectById(Long tenantId, String source) { + return R.fail("获取租户失败:" + throwable.getMessage()); + } + + @Override + public DeviceTenantSourceMergeVo selectTenantSourceMerge(String deviceId, String source) { + return null; + } + @Override public R queryTenantByStaffPhone(String phone, String source) { return null; diff --git a/xueyi-auth/src/main/java/com/xueyi/auth/controller/TokenController.java b/xueyi-auth/src/main/java/com/xueyi/auth/controller/TokenController.java index 3a81b69f..59e73416 100644 --- a/xueyi-auth/src/main/java/com/xueyi/auth/controller/TokenController.java +++ b/xueyi-auth/src/main/java/com/xueyi/auth/controller/TokenController.java @@ -1,5 +1,6 @@ package com.xueyi.auth.controller; +import com.alibaba.csp.sentinel.util.StringUtil; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.xueyi.auth.form.LoginBody; @@ -13,6 +14,7 @@ import com.xueyi.common.core.utils.core.ObjectUtil; import com.xueyi.common.core.utils.core.StrUtil; import com.xueyi.common.core.web.result.AjaxResult; import com.xueyi.common.core.web.result.R; +import com.xueyi.common.core.web.vo.DeviceTenantSourceMergeVo; import com.xueyi.common.redis.service.RedisService; import com.xueyi.common.security.auth.AuthUtil; import com.xueyi.common.security.service.TokenService; @@ -99,6 +101,29 @@ public class TokenController { return AjaxResult.success(map); } + @PostMapping("deviceLogin") + public AjaxResult loginByDevice(@RequestBody Map params) { + String deviceId = params.get("deviceId"); + if (StringUtil.isNotBlank(deviceId)) { + DeviceTenantSourceMergeVo vo = tenantService.selectTenantSourceMerge(deviceId, SecurityConstants.INNER);// 查询设备与租户、来源的关联关系 + if (null == vo || null == vo.getTenantId()) { + return AjaxResult.error("设备不正确,清查验"); + } + LoginUser userInfo = sysLoginService.loginByTenant(vo.getTenantId()); + if (null == userInfo) { + return AjaxResult.error("手机号不正确,清查验"); + } + // 获取登录token + Map map = tokenService.createToken(userInfo); + map.put("deviceId", deviceId);//塞入对应staffId + return AjaxResult.success(map); + + } + + return AjaxResult.error("设备号不正确,清查验"); + } + + @DeleteMapping("logout") public AjaxResult logout(HttpServletRequest request) { String token = SecurityUtils.getToken(request); diff --git a/xueyi-auth/src/main/java/com/xueyi/auth/service/SysLoginService.java b/xueyi-auth/src/main/java/com/xueyi/auth/service/SysLoginService.java index 9f25e148..fdbb48e8 100644 --- a/xueyi-auth/src/main/java/com/xueyi/auth/service/SysLoginService.java +++ b/xueyi-auth/src/main/java/com/xueyi/auth/service/SysLoginService.java @@ -170,16 +170,28 @@ public class SysLoginService { remoteLogService.saveLoginInfo(loginInfo, enterpriseId, sourceName, SecurityConstants.INNER); } + + + public LoginUser loginByPhone(String phone) { logger.info("phone:{}", phone); R loginInfoResult = remoteLoginService.getLoginInfoInnerByPhone(phone, SecurityConstants.INNER); - if (ObjectUtil.isNull(loginInfoResult.getData())) { AjaxResult.warn("手机号可能输错,请查证后重试!"); } return loginInfoResult.getData(); } + public LoginUser loginByTenant(Long tenantId) { + logger.info("tenantId:{}", tenantId); + R loginInfoResult = remoteLoginService.getLoginInfoInnerByTenant(tenantId, SecurityConstants.INNER); + + if (ObjectUtil.isNull(loginInfoResult.getData())) { + AjaxResult.warn("租户号错误,请查证后重试!"); + } + return loginInfoResult.getData(); + } + } \ No newline at end of file diff --git a/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/config/WebApiMvcConfig.java b/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/config/WebApiMvcConfig.java index dfd5e60f..c08ef029 100644 --- a/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/config/WebApiMvcConfig.java +++ b/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/config/WebApiMvcConfig.java @@ -21,10 +21,10 @@ public class WebApiMvcConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { - System.err.println("WebMvcConfig.addInterceptors======================hshshkbb"); + System.err.println("===graphql======================addInterceptors==="); registry.addInterceptor(getApiInterceptor()) - .addPathPatterns("/**/graphql/**") + .addPathPatterns("/**/api/**") // .addPathPatterns("/**") .excludePathPatterns(excludeUrls) .order(1); diff --git a/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/entity/domain/provider/DeviceTenantSqlProvider.java b/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/entity/domain/provider/DeviceTenantSqlProvider.java index 641f4f70..dd252e67 100644 --- a/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/entity/domain/provider/DeviceTenantSqlProvider.java +++ b/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/entity/domain/provider/DeviceTenantSqlProvider.java @@ -1,6 +1,6 @@ package com.xueyi.common.web.entity.domain.provider; -import org.apache.ibatis.annotations.Param; +import java.util.Map; /** * @author yk @@ -8,7 +8,8 @@ import org.apache.ibatis.annotations.Param; * @date 2023-11-25 11:15 */ public class DeviceTenantSqlProvider { - public String selectDeviceTenant(@Param("deviceId") String deviceId) { - return "SELECT ddtm.dev_id, ddtm.tenant_id, s.source_slave FROM dm_device_tenant_merge ddtm JOIN te_tenant t ON t.id=ddtm.tenant_id JOIN te_strategy s ON s.id=t.strategy_id AND dev_id= #{deviceId}"; + public String selectDeviceTenant(Map param) { + String deviceId = (String) param.get("deviceId"); + return "SELECT ddtm.dev_id, ddtm.tenant_id, s.source_slave FROM dm_device_tenant_merge ddtm JOIN te_tenant t ON t.id=ddtm.tenant_id JOIN te_strategy s ON s.id=t.strategy_id AND dev_id= '"+deviceId+"'"; } } diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/authority/controller/SysLoginController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/authority/controller/SysLoginController.java index eba462bb..1aeee4e5 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/authority/controller/SysLoginController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/authority/controller/SysLoginController.java @@ -103,18 +103,8 @@ public class SysLoginController extends BasisController { @Autowired RemoteTenantService tenantService; - /** - * 获取登录信息 | 内部调用, 手机号登录 - */ - @InnerAuth - @GetMapping("/inner/loginByPhone/{phone}") - public R getLoginInfoByMobile(@PathVariable("phone") String phone) { - log.info("获取登录信息 | 内部调用, 手机号登录 | phone: {}", phone); - R po = tenantService.tenant(phone, SecurityConstants.INNER); - log.info("获取登录信息 | 内部调用, 手机号登录 | po:{}, {}, {}", po.getMsg(),po.getCode(),po.isFail()); - if (po.getData() == null) - return R.fail("指定手机号不存在记录"); - SysEnterpriseDto enterprise = loginService.loginByEnterpriseName(po.getData().getName()); + public R getLoginInfo(String enterpriseName) { + SysEnterpriseDto enterprise = loginService.loginByEnterpriseName(enterpriseName); // 不存在直接返回空数据 | 与网络调用错误区分 if (ObjectUtil.isNull(enterprise)) return R.ok(null, "企业账号不存在"); @@ -133,7 +123,7 @@ public class SysLoginController extends BasisController { loginUser.setIsLessor(enterprise.getIsLessor()); loginUser.setSource(source); loginUser.setSourceName(source.getMaster()); - SysUserDto user = loginService.loginByStaff(phone); + SysUserDto user = loginService.loginByTenantId(enterprise.getId()); if (ObjectUtil.isNull(user)) return R.ok(null, "用户账号不存在"); @@ -165,4 +155,28 @@ public class SysLoginController extends BasisController { loginUser.setRouteURL(routeMap); return R.ok(loginUser); } + + /** + * 获取登录信息 | 内部调用, 手机号登录 + */ + @InnerAuth + @GetMapping("/inner/loginByPhone/{phone}") + public R getLoginInfoByMobile(@PathVariable("phone") String phone) { + log.info("获取登录信息 | 内部调用, 手机号登录 | phone: {}", phone); + R po = tenantService.tenant(phone, SecurityConstants.INNER); + log.info("获取登录信息 | 内部调用, 手机号登录 | po:{}, {}, {}", po.getMsg(),po.getCode(),po.isFail()); + if (po.getData() == null) + return R.fail("指定手机号不存在记录"); + return this.getLoginInfo(po.getData().getName()); + } + + + @GetMapping("/inner/loginByTenant/{tenantId}") + public R getLoginInfoByTenant(@PathVariable("tenantId") Long tenantId) { + R po = tenantService.selectById(tenantId, SecurityConstants.INNER); + log.info("获取登录信息 | 内部调用, 租户号登录 | po:{}, {}, {}", po.getMsg(),po.getCode(),po.isFail()); + if (po.getData() == null) + return R.fail("指定租户号不存在记录"); + return this.getLoginInfo(po.getData().getName()); + } } diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/authority/service/ISysLoginService.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/authority/service/ISysLoginService.java index b5791ab2..5e6e0860 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/authority/service/ISysLoginService.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/authority/service/ISysLoginService.java @@ -70,4 +70,6 @@ public interface ISysLoginService { Map getMenuRouteMap(Set roleIds, String userType); SysUserDto loginByStaff(String phone); + + SysUserDto loginByTenantId(Long tenantId); } diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/authority/service/impl/SysLoginServiceImpl.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/authority/service/impl/SysLoginServiceImpl.java index f105f4fe..5c2993b4 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/authority/service/impl/SysLoginServiceImpl.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/authority/service/impl/SysLoginServiceImpl.java @@ -247,8 +247,13 @@ public class SysLoginServiceImpl implements ISysLoginService { if (po == null) { return null; } - SqlField field = new SqlField(SqlConstants.OperateType.EQ, "tenant_id", po.getTenantId()); - SysUserDto dto = sysUserConverter.mapperDto(userMapper.selectByField(field)) ; - return dto; + return loginByTenantId(po.getTenantId()); + } + + + @Override + public SysUserDto loginByTenantId(Long tenantId) { + SqlField field = new SqlField(SqlConstants.OperateType.EQ, "tenant_id", tenantId); + return sysUserConverter.mapperDto(userMapper.selectByField(field)) ; } } diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/pass/controller/api/DmRecognizedRecordsInnerApiController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/pass/controller/api/DmRecognizedRecordsInnerApiController.java index 2a9e9955..e4883cf7 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/pass/controller/api/DmRecognizedRecordsInnerApiController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/pass/controller/api/DmRecognizedRecordsInnerApiController.java @@ -146,7 +146,8 @@ public class DmRecognizedRecordsInnerApiController extends MyBaseApiController { String deviceId = recognizedMultiRecordsDto.getDevId(); BigDecimal timestamp = recognizedMultiRecordsDto.getTimestamp(); String sign = recognizedMultiRecordsDto.getSign(); - logger.info("recognizedMultiRecordsDto :{}",recognizedMultiRecordsDto); + //去掉recognizedMultiRecordsDto输出日志 +// logger.info("recognizedMultiRecordsDto :{}",recognizedMultiRecordsDto); MyResponse myResponse = commonCheck(deviceId, timestamp.doubleValue(), sign); if (myResponse.getStatus() != 0) { diff --git a/xueyi-modules/xueyi-tenant/src/main/java/com/xueyi/tenant/tenant/controller/TeTenantController.java b/xueyi-modules/xueyi-tenant/src/main/java/com/xueyi/tenant/tenant/controller/TeTenantController.java index aac64ac0..3a9024f5 100644 --- a/xueyi-modules/xueyi-tenant/src/main/java/com/xueyi/tenant/tenant/controller/TeTenantController.java +++ b/xueyi-modules/xueyi-tenant/src/main/java/com/xueyi/tenant/tenant/controller/TeTenantController.java @@ -1,6 +1,7 @@ package com.xueyi.tenant.tenant.controller; import cn.hutool.core.text.CharSequenceUtil; +import com.alibaba.fastjson2.JSON; import com.xueyi.common.core.constant.basic.BaseConstants; import com.xueyi.common.core.constant.system.OrganizeConstants; import com.xueyi.common.core.utils.core.CollUtil; @@ -9,6 +10,7 @@ import com.xueyi.common.core.web.result.AjaxResult; import com.xueyi.common.core.web.result.R; import com.xueyi.common.core.web.validate.V_A; import com.xueyi.common.core.web.validate.V_E; +import com.xueyi.common.core.web.vo.DeviceTenantSourceMergeVo; import com.xueyi.common.log.annotation.Log; import com.xueyi.common.log.enums.BusinessType; import com.xueyi.common.security.annotation.InnerAuth; @@ -17,6 +19,7 @@ import com.xueyi.common.security.annotation.RequiresPermissions; import com.xueyi.common.security.auth.Auth; import com.xueyi.common.web.annotation.TenantIgnore; import com.xueyi.common.web.entity.controller.BaseController; +import com.xueyi.common.web.entity.domain.mapper.DeviceTenantMergeMapper; import com.xueyi.tenant.api.tenant.domain.dto.TeTenantDto; import com.xueyi.tenant.api.tenant.domain.po.SysEnterpriseStaff; import com.xueyi.tenant.api.tenant.domain.po.TeTenantPo; @@ -83,11 +86,30 @@ public class TeTenantController extends BaseController tenant(@RequestParam("phone") String phone) { - log.info("tenant one方法,手机号查询SysEnterpriseStaff:{}", phone); + log.info("tenant one方法,tenant phone:{}", phone); TeTenantPo po = enterpriseStaffMapper.selectTenantByPhone(phone); + log.info("tenant one方法,手机号查询SysEnterpriseStaff:{}", JSON.toJSONString(po)); return R.ok(po); } + @InnerAuth + @GetMapping("/query-tenant-by-id") + R selectById(@RequestParam ("tenantId") Long tenantId) { + log.info("selectById方法,查询TeTenantPo:{}", tenantId); + TeTenantPo po = super.baseService.selectById(tenantId); + return R.ok(po); + } + + + @Autowired + private DeviceTenantMergeMapper mergeMapper; + @InnerAuth + @GetMapping("/query-tenant-source") + DeviceTenantSourceMergeVo selectTenantSourceMerge(@RequestParam ("deviceId") String deviceId) { + log.info("selectTenantSourceMerge方法,deviceId:{}", deviceId); + return mergeMapper.selectByDeviceId(deviceId); + } + @InnerAuth @GetMapping("/query-tenant-by-staff-phone") R queryTenantByStaffPhone(@RequestParam("phone") String phone) {