From 615a8b60eca97a35e7a86e8d3a2781714af5bb0b Mon Sep 17 00:00:00 2001 From: houjishuang <46269784@qq.com> Date: Thu, 19 Jun 2025 11:35:50 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E9=99=86=E4=BB=A3=E7=A0=81=E8=BF=81?= =?UTF-8?q?=E7=A7=BBjianquan=E6=8E=A5=E5=8F=A3=E9=89=B4=E6=9D=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 23 +++++++++++++ .../ebtp/login/common/CaptchaGenerator.java | 15 ++++++--- .../login/controller/LoginController.java | 9 ++++-- .../ebtp/login/entity/BuffeedImageVo.java | 1 + .../service/impl/BaseUserServiceImpl.java | 5 +++ .../controller/CheckTokenController.java | 25 +++++++++------ .../controller/UserInfoController.java | 32 ++++++++++++++++++- .../service/impl/EbtpUserInfoServiceImpl.java | 6 +++- .../SysManagerEbtpProjectApplication.java | 6 ++-- src/main/resources/application-master.yml | 20 +++++++++--- 10 files changed, 117 insertions(+), 25 deletions(-) diff --git a/pom.xml b/pom.xml index 43b79ce..925efb6 100644 --- a/pom.xml +++ b/pom.xml @@ -13,8 +13,31 @@ sys_manager_ebtp_project 0.0.1 sys_manager_ebtp_project + + Hoxton.SR7 + 2.2.3.RELEASE + + + org.springframework.cloud + spring-cloud-starter-openfeign + 2.2.3.RELEASE + + + org.springframework.cloud + spring-cloud-dependencies + ${spring.cloud.version} + pom + import + + + com.alibaba.cloud + spring-cloud-alibaba-dependencies + ${com.alibaba.cloud.version} + pom + import + com.chinaunicom.mall.ebtp uboot-core diff --git a/src/main/java/com/chinaunicom/mall/ebtp/login/common/CaptchaGenerator.java b/src/main/java/com/chinaunicom/mall/ebtp/login/common/CaptchaGenerator.java index 6a097a7..28b684d 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/login/common/CaptchaGenerator.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/login/common/CaptchaGenerator.java @@ -32,7 +32,7 @@ public class CaptchaGenerator { @Value("${login.captcha.privateKey}") private String privateKey; - public BuffeedImageVo generateCaptcha() { + public BuffeedImageVo generateCaptcha() throws IOException { BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g = image.createGraphics(); @@ -69,15 +69,22 @@ public class CaptchaGenerator { BuffeedImageVo vo = new BuffeedImageVo(); vo.setCode(sb.toString()); - vo.setImage(image); + // vo.setImage(image); + // 在 generateCaptcha() 或其他方法中添加如下代码 + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + ImageIO.write(image, "png", baos); // 将 image 写入 ByteArrayOutputStream + byte[] imageBytes = baos.toByteArray(); + String base64Image = Base64.getEncoder().encodeToString(imageBytes); + vo.setBase64Image(base64Image); return vo; } + /** * 获取图形验证码 * @return */ - public BuffeedImageVo getCaptcha(){ + public BuffeedImageVo getCaptcha() throws IOException { BuffeedImageVo vo = this.generateCaptcha(); String creteTime = LocalDateTimeUtil.format(LocalDateTime.now().plusMinutes(timeLimit), "yyyy-MM-dd HH:mm:ss"); String code = encoded(vo.getCode()+"_"+creteTime); @@ -92,7 +99,7 @@ public class CaptchaGenerator { public Boolean checkCaptcha(String value, String captch){ try{ - String cap = this.encoded(captch); + String cap = this.decrypt(captch); String[] caps = cap.split("_"); String time = caps[1]; LocalDateTime ltime = LocalDateTimeUtil.parse(time,"yyyy-MM-dd HH:mm:ss"); diff --git a/src/main/java/com/chinaunicom/mall/ebtp/login/controller/LoginController.java b/src/main/java/com/chinaunicom/mall/ebtp/login/controller/LoginController.java index 8372c73..19e5e59 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/login/controller/LoginController.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/login/controller/LoginController.java @@ -18,6 +18,7 @@ import javax.annotation.Resource; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.IOException; @Slf4j @RestController @@ -37,7 +38,11 @@ public class LoginController { @ApiOperation("获取图形验证码") @GetMapping("/getCaptcha") public BaseResponse getCaptcha(){ - return BaseResponse.success(captchaGenerator.getCaptcha()); + try { + return BaseResponse.success(captchaGenerator.getCaptcha()); + } catch (IOException e) { + return BaseResponse.fail(CommonExceptionEnum.FRAME_EXCEPTION_COMMON_DATA_OTHER_ERROR); + } } /** * 账号 密码 图形验证码 @@ -49,7 +54,7 @@ public class LoginController { public BaseResponse idcardLogin(HttpServletResponse response,@RequestBody LoginUserVo vo) { if(captchaGenerator.checkCaptcha(vo.getIdentifying(),vo.getEncryptValue())){ BaseSelf self = iBaseUserService.idcardLogin(vo.getAccount(), vo.getPassword()); - this.iBaseUserService.setCookie(response,"mall3_token",self.getToken()); + this.iBaseUserService.setCookie(response,"mall3_token"+self.getUser().getUserId(),self.getToken()); return BaseResponse.success(self); }else{ CommonExceptionEnum.FRAME_EXCEPTION_COMMON_DATA_OTHER_ERROR.customValidName("验证码无效",true); diff --git a/src/main/java/com/chinaunicom/mall/ebtp/login/entity/BuffeedImageVo.java b/src/main/java/com/chinaunicom/mall/ebtp/login/entity/BuffeedImageVo.java index 95cd4ab..34ef054 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/login/entity/BuffeedImageVo.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/login/entity/BuffeedImageVo.java @@ -9,4 +9,5 @@ public class BuffeedImageVo { private String code; private BufferedImage image; + private String base64Image; } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/login/service/impl/BaseUserServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/login/service/impl/BaseUserServiceImpl.java index b3358f3..b62b1dd 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/login/service/impl/BaseUserServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/login/service/impl/BaseUserServiceImpl.java @@ -219,6 +219,11 @@ public class BaseUserServiceImpl extends BaseServiceImpl authorityList =this.baseUserMapper.selectRoleByUserId(baseUser.getUserId());; securityEntity.setAuthorityList(authorityList); return securityEntity; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/userinfo/controller/CheckTokenController.java b/src/main/java/com/chinaunicom/mall/ebtp/userinfo/controller/CheckTokenController.java index 096cd03..4a6d5ee 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/userinfo/controller/CheckTokenController.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/userinfo/controller/CheckTokenController.java @@ -1,8 +1,13 @@ package com.chinaunicom.mall.ebtp.userinfo.controller; +import com.chinaunicom.mall.ebtp.cloud.userinfo.starter.entity.CheckTokenVo; +import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.chinaunicom.mall.ebtp.common.exception.common.CommonExceptionEnum; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @Slf4j @@ -29,15 +34,15 @@ public class CheckTokenController { * @param * @return */ -// @GetMapping("/getCheckTokenVo") -// public BaseResponse getCheckTokenVo(@RequestParam(value="ps",required = false) String ps){ -// CommonExceptionEnum.LOGIN_CHECK_TOKEN_EXPIRATION.assertStringNotNullByKey("网络异常",ps); -// CheckTokenVo vo = new CheckTokenVo(); -// vo.setTimeLimit(timeLimit); -// vo.setOnof(onof); -// vo.setCheckprivateKey(checkprivateKey); -// vo.setCheckpublicKey(checkpublicKey); -// return BaseResponse.success(vo); -// } + @GetMapping("/getCheckTokenVo") + public BaseResponse getCheckTokenVo(@RequestParam(value="ps",required = false) String ps){ + CommonExceptionEnum.LOGIN_CHECK_TOKEN_EXPIRATION.assertStringNotNullByKey("网络异常",ps); + CheckTokenVo vo = new CheckTokenVo(); + vo.setTimeLimit(timeLimit); + vo.setOnof(onof); + vo.setCheckprivateKey(checkprivateKey); + vo.setCheckpublicKey(checkpublicKey); + return BaseResponse.success(vo); + } } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/userinfo/controller/UserInfoController.java b/src/main/java/com/chinaunicom/mall/ebtp/userinfo/controller/UserInfoController.java index be1e8a5..3114590 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/userinfo/controller/UserInfoController.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/userinfo/controller/UserInfoController.java @@ -2,11 +2,15 @@ package com.chinaunicom.mall.ebtp.userinfo.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.chinaunicom.mall.ebtp.cloud.security.starter.entity.SecurityEntity; import com.chinaunicom.mall.ebtp.common.base.entity.BaseCacheUser; import com.chinaunicom.mall.ebtp.common.base.service.IBaseCacheUserService; import com.chinaunicom.mall.ebtp.common.exception.common.CommonExceptionEnum; import com.chinaunicom.mall.ebtp.faceCompare.feign.SupplierbaseFeignClient; +import com.chinaunicom.mall.ebtp.login.common.Constants; +import com.chinaunicom.mall.ebtp.login.entity.BaseUserToken; +import com.chinaunicom.mall.ebtp.login.service.BaseUserTokenService; import com.chinaunicom.mall.ebtp.userinfo.entity.*; import com.chinaunicom.mall.ebtp.userinfo.service.EbtpUserInfoService; import com.chinaunicom.mall.ebtp.userinfo.utils.BaseCertService; @@ -27,7 +31,9 @@ import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletResponse; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; +import java.time.LocalDateTime; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; @@ -59,6 +65,9 @@ public class UserInfoController { private static Map securityEntityMap; + @Autowired + private BaseUserTokenService baseUserTokenService; + /** * 获取用户信息 * @@ -229,12 +238,33 @@ public class UserInfoController { log.info("path:"+path); String str = HttpUtils.checkTokenHttpGet(path); - securityEntity = JSON.parseObject(str,SecurityEntity.class); + securityEntity = JSON.parseObject(str,SecurityEntity.class); + //Object o = unifastOAuthBdClient.get(token); }catch (Exception e){ e.printStackTrace(); } return securityEntity; } + @PostMapping("oauth/check_token") + public SecurityEntity getPost(@RequestParam("token") String token){ + SecurityEntity securityEntity = new SecurityEntity(); + try { +// String path = checkTokenPath+"?token="+token; +// log.info("path:"+path); +// String str = HttpUtils.checkTokenHttpGet(path); + List tokenList = baseUserTokenService.list((new LambdaQueryWrapper().eq(BaseUserToken::getToken,token) + .gt(BaseUserToken::getValidTime, LocalDateTime.now()).eq(BaseUserToken::getState, Constants.USER_TOKEN_STATUS_E).orderByDesc(BaseUserToken::getValidTime))); + if ((tokenList!=null)&&tokenList.size()>0){ + BaseUserToken tokenObj = tokenList.get(0); + securityEntity = JSON.parseObject(tokenObj.getUserObject(),SecurityEntity.class); + } + //Object o = unifastOAuthBdClient.get(token); + }catch (Exception e){ + e.printStackTrace(); + } + return securityEntity; + } + // SecurityEntity getPost(@RequestParam("token") String token); } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/userinfo/service/impl/EbtpUserInfoServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/userinfo/service/impl/EbtpUserInfoServiceImpl.java index bc8c98f..ff4d0e8 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/userinfo/service/impl/EbtpUserInfoServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/userinfo/service/impl/EbtpUserInfoServiceImpl.java @@ -17,6 +17,8 @@ import com.chinaunicom.mall.ebtp.userinfo.service.EbtpUserInfoService; import com.chinaunicom.mall.ebtp.userinfo.service.UnicomOAuthClient; import com.chinaunicom.mall.ebtp.userinfo.utils.HttpsUtils; import com.chinaunicom.mall.ebtp.userinfo.utils.UserinfoConstants; +import com.coscoshipping.ebtp.project.role.dao.SysRoleMapper; +import com.coscoshipping.ebtp.project.role.entity.SysRole; import com.coscoshipping.ebtp.project.user.entity.SysUser; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -43,6 +45,8 @@ public class EbtpUserInfoServiceImpl implements EbtpUserInfoService { @Autowired private BaseRoleMapper baseRoleMapper; + @Autowired + private SysRoleMapper sysRoleMapper; @Autowired @Qualifier("userinfoRedisTemplate") private RedisTemplate redisTemplate; @@ -77,7 +81,7 @@ public class EbtpUserInfoServiceImpl implements EbtpUserInfoService { Map map = new HashMap<>(); List users = baseUserMapper.selectList(Wrappers.lambdaQuery(SysUser.class)); map.put(USERS, JsonUtils.objectToJson(users)); - List roles = baseRoleMapper.selectList(Wrappers.emptyWrapper()); + List roles = sysRoleMapper.selectList(Wrappers.emptyWrapper()); map.put(ROLES, JsonUtils.objectToJson(roles)); redisTemplate.opsForValue().set(REDIS_USER_KEY_EXTEND, JsonUtils.objectToJson(map), 24, TimeUnit.HOURS); return true; diff --git a/src/main/java/com/coscoshipping/ebtp/project/SysManagerEbtpProjectApplication.java b/src/main/java/com/coscoshipping/ebtp/project/SysManagerEbtpProjectApplication.java index 1a98c1a..4057ca0 100644 --- a/src/main/java/com/coscoshipping/ebtp/project/SysManagerEbtpProjectApplication.java +++ b/src/main/java/com/coscoshipping/ebtp/project/SysManagerEbtpProjectApplication.java @@ -16,9 +16,9 @@ import org.springframework.context.annotation.ComponentScan; DataSourceAutoConfiguration.class, DruidDataSourceAutoConfigure.class }) -@EnableFeignClients(basePackages = {"com.coscoshipping.ebtp.*", "com.chinaunicom.mall.ebtp.*"}) -@MapperScan({"com.coscoshipping.ebtp.project.**.dao", "com.chinaunicom.mall.ebtp.**.dao"}) -@ComponentScan(basePackages = {"com.coscoshipping.ebtp.*", "com.chinaunicom.mall.ebtp.*"}) +@EnableFeignClients(basePackages = {"com.coscoshipping.ebtp.*","com.chinaunicom.mall.ebtp.cloud.*","com.chinaunicom.mall.ebtp.*"}) +@MapperScan({"com.coscoshipping.ebtp.project.**.dao","com.chinaunicom.mall.ebtp.**.dao"}) +@ComponentScan(basePackages = {"com.coscoshipping.ebtp.*","com.chinaunicom.mall.ebtp.cloud.*","com.chinaunicom.mall.ebtp.*"}) public class SysManagerEbtpProjectApplication { public static void main(String[] args) { diff --git a/src/main/resources/application-master.yml b/src/main/resources/application-master.yml index 9e294e8..8440954 100644 --- a/src/main/resources/application-master.yml +++ b/src/main/resources/application-master.yml @@ -5,6 +5,12 @@ server: spring: cloud: + feign: + client: + config: + connectTimeout: 55000 + readTimeout: 35000 + writeTimeout: 35000 nacos: discovery: server-addr: 127.0.0.1:18848 @@ -86,6 +92,7 @@ spring: userinfo: 4 + mybatis-plus: configuration: # 是否开启自动驼峰命名规则映射:从数据库列名到Java属性驼峰命名的类似映射 @@ -116,10 +123,10 @@ hystrix: forceClosed: true ribbon: - ReadTimeout: 20000 #请求处理的超时时间 - ConnectTimeout: 20000 #请求连接超时时间 - MaxAutoRetries: 0 #对当前实例的重试次数 - MaxAutoRetriesNextServer: 1 #切换实例的重试次数 1 + ReadTimeout: 200000 #请求处理的超时时间 + ConnectTimeout: 200000 #请求连接超时时间 + MaxAutoRetries: 1 #对当前实例的重试次数 + MaxAutoRetriesNextServer: 2 #切换实例的重试次数 1 mconfig: swagger-ui-open: true @@ -257,3 +264,8 @@ login: privateKey: MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAK8sGQAshhH/H1G/lOJdAZYBdPOto38d7zSv2BCi9JDmhM/yqWUv345zUt1OKM8VGx10daDfu6a8WWLCGa6RTU1P6jaWgZwqnIwcWRz9Q82NAu935gVHidiGA/yX52ZE061BZrA63l1uSxEpOCEyMD4UpPb6K0yxrBKzX4hz7OgjAgMBAAECgYAT/jx8QJisxSmV8v/TNjpQHKp0hYT7pTcAFHHctDylrSnLci7TVbt2TsNObvVJbWdC3V/vlJmeVjD9jJnRytO/pgc+p8I3Q3pfF7ACiBAz1+4VZM40vFz0RfQKJ/kZB3DiGohprOw60kRR0eMtHuaA07luhBCbne6700Paf+OOAQJBAP9THm3KEcnChnRBC6yPdNHLN/XplgGaIJU2Wo0biI8Oz2bM3eJGPSwrVCqObOwVPNYJIfEQRhlWlB9kpBS0ECECQQCvorUUJwJhV+Fx6bhUK5aa1/rDTODPmS1MycvLtjOp7ig1sGcb4g9Vl8uRPzsvQZ6Z+sNTD4mFFnYFneCvPL/DAkAMZo4QyQKqKO98z/fwLpt+4P7by7eEZmb0uEoXlmHAiPibxpF0PvMTpRsWYgp6QOHOh20Fl0PAUUsqZyns833hAkBEzV9UIqfrDCsTnbQIvP6FcAAay53xlRbK0u5Twe9hLRtxVMY/hQHuzMUBBB0iOPlxZmtnuVls2kynjJ4853ZTAkEAu+lLTmM7DBV9jDEc9sNM7UNa0MvAUb6r9DsTKHGLLRqB7ljQ1R2RiLRknFaegUPEVsvdMszH2rdy3CaIWkC5OQ== publicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvLBkALIYR/x9Rv5TiXQGWAXTzraN/He80r9gQovSQ5oTP8qllL9+Oc1LdTijPFRsddHWg37umvFliwhmukU1NT+o2loGcKpyMHFkc/UPNjQLvd+YFR4nYhgP8l+dmRNOtQWawOt5dbksRKTghMjA+FKT2+itMsawSs1+Ic+zoIwIDAQAB time_limit: 2 #Minutes + +user: + auth: + resource: + serviceId: sys-manager-ebtp-project