From 960f1e33825099fd71812ecb276f08644a619fc0 Mon Sep 17 00:00:00 2001 From: du <1725534722@qq.com> Date: Wed, 21 May 2025 09:12:47 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E5=BD=95=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-admin/pom.xml | 5 + .../ruoyi/gysl/controller/CybqController.java | 153 +++++++++--------- .../main/java/com/ruoyi/gysl/entity/Cybq.java | 78 ++++----- .../gysl/entity/request/CybqRequest.java | 7 +- .../login/controller/ChiefController.java | 2 +- .../controller/SingleLoginController.java | 27 ++-- .../gysl/login/service/LoginTokenService.java | 2 +- .../login/service/LoginTokenServiceImpl.java | 1 - .../com/ruoyi/gysl/login/util/SM4Demo.java | 28 ++-- .../com/ruoyi/gysl/regular/NoticeTiming.java | 4 + .../monitor/SysLogininforController.java | 17 ++ .../src/main/resources/application-druid.yml | 7 +- .../main/resources/application-internet.yml | 6 +- .../src/main/resources/application.yml | 14 +- .../src/main/resources/mapper/CybqMapper.xml | 11 +- .../framework/config/SecurityConfig.java | 3 + .../web/service/SysLoginService.java | 2 +- .../system/mapper/SysLogininforMapper.java | 5 + .../system/service/ISysLogininforService.java | 5 + .../impl/SysLogininforServiceImpl.java | 25 +++ .../mapper/system/SysLogininforMapper.xml | 15 +- 21 files changed, 227 insertions(+), 190 deletions(-) diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml index e381294..4a0f2a8 100644 --- a/ruoyi-admin/pom.xml +++ b/ruoyi-admin/pom.xml @@ -16,6 +16,11 @@ + + org.bouncycastle + bcprov-jdk15to18 + 1.72 + com.itextpdf diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/CybqController.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/CybqController.java index 706c310..2a82747 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/CybqController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/controller/CybqController.java @@ -2,11 +2,8 @@ package com.ruoyi.gysl.controller; import cn.hutool.crypto.SmUtil; -import cn.hutool.http.HttpRequest; -import cn.hutool.http.HttpResponse; -import cn.hutool.http.HttpUtil; -import cn.hutool.json.JSONObject; -import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; @@ -14,6 +11,7 @@ import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.gysl.entity.Cybq; import com.ruoyi.gysl.entity.request.CybqRequest; +import com.ruoyi.gysl.login.util.SM2Demo; import com.ruoyi.gysl.login.util.SM4Demo; import com.ruoyi.gysl.service.CybqService; import io.swagger.annotations.Api; @@ -25,15 +23,17 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; -import java.io.*; +import java.io.BufferedReader; +import java.io.DataOutputStream; +import java.io.InputStreamReader; +import java.io.Serializable; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; +import java.util.ArrayList; import java.util.Base64; -import java.util.HashMap; import java.util.List; -import java.util.Map; /** * 产业标签(GyslCybq)表控制层 @@ -62,81 +62,76 @@ public class CybqController extends BaseController { @ApiOperation("企业经济标签信息(统一社会信用代码)") @GetMapping("/getCybq") public AjaxResult getCybq() throws Exception { - if(true){ - String contacts = "http://172.21.10.46/api/invoke/323018/qyjjbqxx"; - String uscc = Base64.getEncoder().encodeToString((byte[]) - SM4Demo.exec("91320594067622605M".getBytes(), - "ECB", "PKCS5Padding", "random", "ef5323158e0d43e69442718cd4932116".getBytes(),null)); - String pageIndex = Base64.getEncoder().encodeToString((byte[]) - SM4Demo.exec("1".getBytes(), - "ECB", "PKCS5Padding", "random", "ef5323158e0d43e69442718cd4932116".getBytes(),null)); - String pageSize = Base64.getEncoder().encodeToString((byte[]) - SM4Demo.exec("10".getBytes(), - "ECB", "PKCS5Padding", "random", "ef5323158e0d43e69442718cd4932116".getBytes(),null)); - //生成sm3签名 - String input = "pageIndex=1&pageSize=10&uscc=91320594067622605M"; -// contacts+= "?signature="+ SmUtil.sm3(input); - System.out.println(contacts); - System.out.println(uscc); - System.out.println(pageIndex); - System.out.println(pageSize); - - try { - // 1. 构建 URL(含签名参数,处理特殊符号) - String encodedSignature = URLEncoder.encode(SmUtil.sm3(input), "UTF-8") - .replace("+", "%20"); // 确保 + 不被编码为空格 - String fullUrl = contacts + "?signature=" + encodedSignature; - System.out.println(fullUrl); - // 2. 创建连接 - URL url = new URL(fullUrl); - HttpURLConnection conn = (HttpURLConnection) url.openConnection(); - conn.setRequestMethod("POST"); - conn.setDoOutput(true); - conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY); - - // 3. 构建请求体(严格对齐 curl -F 格式) - try (DataOutputStream out = new DataOutputStream(conn.getOutputStream())) { - // 参数 uscc - writeFormField(out, "uscc", uscc); - // 参数 pageIndex - writeFormField(out, "pageIndex", pageIndex); - // 参数 pageSize - writeFormField(out, "pageSize", pageSize); - // 结束标记 - out.writeBytes("--" + BOUNDARY + "--\r\n"); + if (isZs) { + String contacts = "http://172.21.10.46/api/invoke/323018/qyjjbqxx"; + String uscc = Base64.getEncoder().encodeToString((byte[]) + SM4Demo.exec("91320594067622605M".getBytes(), + "ECB", "PKCS5Padding", "random", "ef5323158e0d43e69442718cd4932116".getBytes(), null)); + String pageIndex = Base64.getEncoder().encodeToString((byte[]) + SM4Demo.exec("1".getBytes(), + "ECB", "PKCS5Padding", "random", "ef5323158e0d43e69442718cd4932116".getBytes(), null)); + //生成sm3签名 + String input = "pageIndex=1&uscc=91320594067622605M"; + try { + // 1. 构建 URL(含签名参数,处理特殊符号) + String encodedSignature = URLEncoder.encode(SmUtil.sm3(input), "UTF-8") + .replace("+", "%20"); // 确保 + 不被编码为空格 + String fullUrl = contacts + "?signature=" + encodedSignature; + // 2. 创建连接 + URL url = new URL(fullUrl); + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + conn.setRequestMethod("POST"); + conn.setDoOutput(true); + conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY); + + // 3. 构建请求体(严格对齐 curl -F 格式) + try (DataOutputStream out = new DataOutputStream(conn.getOutputStream())) { + // 参数 uscc + writeFormField(out, "uscc", uscc); + // 参数 pageIndex + writeFormField(out, "pageIndex", pageIndex); + // 结束标记 + out.writeBytes("--" + BOUNDARY + "--\r\n"); + } + // 4. 处理响应 + int statusCode = conn.getResponseCode(); + StringBuilder response = new StringBuilder(); + try (BufferedReader in = new BufferedReader(new InputStreamReader( + (statusCode >= 200 && statusCode < 300) ? conn.getInputStream() : conn.getErrorStream(), + StandardCharsets.UTF_8))) { + String line; + while ((line = in.readLine()) != null) { + response.append(line); } - - // 4. 处理响应 - int statusCode = conn.getResponseCode(); - StringBuilder response = new StringBuilder(); - try (BufferedReader in = new BufferedReader(new InputStreamReader( - (statusCode >= 200 && statusCode < 300) ? conn.getInputStream() : conn.getErrorStream(), - StandardCharsets.UTF_8))) { - String line; - while ((line = in.readLine()) != null) { - response.append(line); + } + if (statusCode == 200) { + JSONObject jsonObj = JSONObject.parseObject(String.valueOf(response)); + if ("200".equals(jsonObj.getString("code"))) { // 使用 getString 避免类型问题 + // 直接获取 data 字段为 JSONObject(无需转换 String) + JSONObject reqData = jsonObj.getJSONObject("data"); + String responseParams = reqData.getString("responseParams"); // 直接获取字符串值 + String s = new String((byte[]) SM2Demo.dexec(Base64.getDecoder().decode(responseParams), "C1C2C3", Base64.getDecoder().decode("MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgefIcY79Be48T8ryF9tMOKDFZ4XmeB9JzBSmEZHGmvhKhRANCAAQmjPisOvJfv2r7mpj06FszOkAlJiyVL6OoefMmXmqSANNqyT8ZxnFpnToYgtqjQqX44IG8fXk49eLjKXQSfJ2J")), StandardCharsets.UTF_8); + // 解析解密后的 JSON + JSONObject getAllData = JSONObject.parseObject(s); + // 提取 data 字段为 JSONArray + JSONArray js1 = getAllData.getJSONArray("data"); + // 转换为 Java 对象列表 + List returnData = new ArrayList<>(); + for (int i = 0; i < js1.size(); i++) { + JSONObject item = js1.getJSONObject(i); + Cybq res = item.toJavaObject(Cybq.class); + returnData.add(res); } + return AjaxResult.success(returnData); } - - System.out.println("状态码: " + statusCode); - System.out.println("响应内容:\n" + response.toString()); - - } catch (Exception e) { - e.printStackTrace(); } - -// if (response.getStatus() == 200) { -// System.out.println(response.body()); -// JSONObject jsonObj = JSONUtil.parseObj(response.body()); -// if ("200".equals(jsonObj.get("code"))) { -// JSONObject reqData = JSONUtil.parseObj(jsonObj.get("data")); -// JSONArray arr = reqData.getJSONArray("data"); // 直接获取数组,无需再次解析 -// int total = reqData.getInt("total"); // 只需解析一次total并转换为整数 -// } -// } + } catch (Exception y) { + y.printStackTrace(); } + } return success(); } + private static void writeFormField(DataOutputStream out, String name, String value) throws Exception { out.writeBytes("--" + BOUNDARY + "\r\n"); out.writeBytes("Content-Disposition: form-data; name=\"" + name + "\"\r\n"); @@ -147,7 +142,7 @@ public class CybqController extends BaseController { /** * 分页查询所有数据 * - * @param page 分页对象 + * @param page 分页对象 * @param gyslCybq 查询实体 * @return 所有数据 */ @@ -164,7 +159,7 @@ public class CybqController extends BaseController { * @return 单条数据 */ @GetMapping("/{id}") - @ApiOperation(value = "通过主键查询单条数据",response = Cybq.class) + @ApiOperation(value = "通过主键查询单条数据", response = Cybq.class) public AjaxResult selectOne(@PathVariable Serializable id) { return success(cybqService.getById(id)); } @@ -230,7 +225,7 @@ public class CybqController extends BaseController { */ @ApiOperation(value = "根据条件导出所有产业标签") @PostMapping(value = "/export") - public void exportMl(HttpServletResponse response, CybqRequest req){ + public void exportMl(HttpServletResponse response, CybqRequest req) { List filteredList = cybqService.page(req); ExcelUtil util = new ExcelUtil<>(Cybq.class); util.exportExcel(response, filteredList, "产业标签"); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/Cybq.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/Cybq.java index 400c143..7225f6b 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/Cybq.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/Cybq.java @@ -26,87 +26,67 @@ public class Cybq { private Long id; - @ApiModelProperty(value ="单位编码" ) - private String dwbm; + private String epguid; - - @ApiModelProperty(value ="标签标记场景代码" ) - private String cjdm; + @ApiModelProperty(value ="企业名称" ) + private String epname; - @ApiModelProperty(value ="标签代码" ) - private String bqdm; + @ApiModelProperty(value ="统一社会信用代码" ) + private String uscc; - @ApiModelProperty(value ="标签值编码" ) - private String bqzbm; + @ApiModelProperty(value ="组织机构代码" ) + private String organcode; - @ApiModelProperty(value ="引用代码集编码" ) - private String yydmjbm; + @ApiModelProperty(value ="标签值" ) + private String codevalue; - @ApiModelProperty(value ="引用代码集版本" ) - private String yydmjbb; + @ApiModelProperty(value ="标签名称" ) + private String labelname; - @ApiModelProperty(value ="有效状态" ) - private String state; + @ApiModelProperty(value ="标签代码" ) + private String catalogueid; - @ApiModelProperty(value ="标签注释" ) - private String bqzs; + @ApiModelProperty(value ="标签值编码" ) + private String codekey; - @ApiModelProperty(value ="用户类型" ) - private String yhlx; + @ApiModelProperty(value ="引用代码集编码" ) + private String cscode; - @ApiModelProperty(value ="标签标记用户" ) - private String bqbjyh; + @ApiModelProperty(value ="引用代码集版本" ) + private String csversion; - @ApiModelProperty(value ="标签标记单位" ) - private String bqbjdw; + @ApiModelProperty(value ="标签注释" ) + private String lablenotes; @ApiModelProperty(value ="标签状态" ) - private String bqzt; + private String status; - @ApiModelProperty(value ="数据来源编码" ) - private String sjlybm; + @ApiModelProperty(value ="更新时间" ) + private String regtime; @ApiModelProperty(value ="数据来源名称" ) - private String sjlymc; - - - @ApiModelProperty(value ="数据溯源码" ) - private String sjsym; + private String dw_timestamp; - @ApiModelProperty(value ="记录状态" ) - private String jlzt; - - - @ApiModelProperty(value ="数据记录备注" ) - private String sjjzbz; - - - @ApiModelProperty(value ="数据创建用户" ) - private String sjcjyh; + @ApiModelProperty(value ="标签标记场景代码" ) + private String sceneid; - @ApiModelProperty(value ="数据创建时间" ) - private String sjcjsj; - + @ApiModelProperty(value ="标签状态" ) + private String labelmark; - @ApiModelProperty(value ="数据修改用户" ) - private String sjxgyh; - - @ApiModelProperty(value ="数据修改时间" ) - private String sjxgsj; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/request/CybqRequest.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/request/CybqRequest.java index 438b042..fb2d801 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/request/CybqRequest.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/entity/request/CybqRequest.java @@ -12,12 +12,9 @@ import lombok.Data; public class CybqRequest { @ApiModelProperty(value ="标签代码" ) - private String bqdm; + private String catalogueid; @ApiModelProperty(value ="标签状态" ) - private String bqzt; - - @ApiModelProperty(value ="用户类型" ) - private String yhlx; + private String status; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/login/controller/ChiefController.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/login/controller/ChiefController.java index 985bbc7..784fd1f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/login/controller/ChiefController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/login/controller/ChiefController.java @@ -93,7 +93,7 @@ public class ChiefController { ChiefResponse bean = JSONUtil.toBean(dataJson, ChiefResponse.class); //判断几个政务端用户,等待商量结果 bean.setToken(loginTokenService.singleLogin(bean.getAccountName(), - bean.getName(), null, + bean.getName(), "01", bean.getMobile(),bean.getEmail())); return AjaxResult.success(bean); } else { diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/login/controller/SingleLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/login/controller/SingleLoginController.java index 5b0d042..a26b1f9 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/login/controller/SingleLoginController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/login/controller/SingleLoginController.java @@ -15,6 +15,7 @@ import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.gysl.login.dto.response.UserMainResponse; import com.ruoyi.gysl.login.dto.response.UserResponse; +import com.ruoyi.gysl.login.service.LoginTokenService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; @@ -59,6 +60,8 @@ public class SingleLoginController { @Resource private RedisCache redisCache; + @Resource + private LoginTokenService loginTokenService; @Value("${enterpriseAppId}") private String enterpriseAppId; @@ -106,30 +109,18 @@ public class SingleLoginController { JSONObject jsonObj = JSONUtil.parseObj(responseBody); JSONObject dataObj = jsonObj.getJSONObject("data"); // 设置过期时间(可选) - int expirationSeconds = 24 * 60; +// int expirationSeconds = 24 * 60; // 将用户信息存储到Redis中 - String key = "user:" + clientToken; +// String key = "user:" + clientToken; //判断是法人用户 if ("ep".equals(dataObj.get("usertype"))) { JSONObject mainobj = dataObj.getJSONObject("mainbody"); UserResponse res = JSONUtil.toBean(dataObj, UserResponse.class); UserMainResponse req = JSONUtil.toBean(mainobj, UserMainResponse.class); - - //如果在企业库里面找不到该企业就返回错误 -// BmsEnterpriseBasicInfo bmsEnterpriseBasicInfo = -// bmsEnterpriseBasicInfoMapper.findByQytyxydm(req.getUscc()); - Long id; -// if (bmsEnterpriseBasicInfo == null) { -// throw new ServiceException("该企业不在库!请稍后再试!"); -// } else { -// id = bmsEnterpriseBasicInfo.getId(); -// } - // 设置过期时间为8小时 -// String token = singleLoginService.singleLogin(req.getUscc(), req.getEpname(), id, "01", null,null); -// res.setToken(token); -// res.setMain(req); -// redisCache.setCacheObject(key, res, expirationSeconds, TimeUnit.MINUTES); - + String token = loginTokenService.singleLogin(req.getUscc(), req.getEpname(), + "02", null, null); + res.setToken(token); + res.setMain(req); return AjaxResult.success(res); } else { log.error(response.body()); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/login/service/LoginTokenService.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/login/service/LoginTokenService.java index f18bf4a..75c8437 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/login/service/LoginTokenService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/login/service/LoginTokenService.java @@ -11,5 +11,5 @@ public interface LoginTokenService { /** * 返回token */ - String singleLogin(String accountName, String name, String a, String b, String mobile,String email); + String singleLogin(String accountName, String name, String b, String mobile,String email); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/login/service/LoginTokenServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/login/service/LoginTokenServiceImpl.java index 8b07efd..86d5856 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/login/service/LoginTokenServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/login/service/LoginTokenServiceImpl.java @@ -42,7 +42,6 @@ public class LoginTokenServiceImpl implements LoginTokenService { @Override public String singleLogin(String accountName, String name, - String a, String type, String mobile, String email) { diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/login/util/SM4Demo.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/login/util/SM4Demo.java index 4a2cd64..fa21250 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/login/util/SM4Demo.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/login/util/SM4Demo.java @@ -86,18 +86,18 @@ public class SM4Demo { return cipher.doFinal(message); } - public static void main(String[] args) throws Exception { - //待加密字符串 - String content = "91320594067622605M"; - SM4Demo computeFactor = new SM4Demo(); - Object result = computeFactor - .exec(content.getBytes(), "ECB", "PKCS5Padding", "random", "ef5323158e0d43e69442718cd4932116".getBytes(), - null); - System.out.println(Base64.getEncoder().encodeToString((byte[]) result)); - //待解密的字符串 - String encodeSM2String="t/lpTpuW6JeN+JhACXkWqWeHr55Bwj5BTBgMmG5a9+w="; - Object result2 = computeFactor.dexec(Base64.getDecoder().decode(encodeSM2String), "ECB", "PKCS5Padding", "random", "ef5323158e0d43e69442718cd4932116".getBytes(),null); - System.out.println(new String((byte[]) result2, Charset.forName("utf-8"))); - - } +// public static void main(String[] args) throws Exception { +// //待加密字符串 +// String content = "91320594067622605M"; +// SM4Demo computeFactor = new SM4Demo(); +// Object result = computeFactor +// .exec(content.getBytes(), "ECB", "PKCS5Padding", "random", "ef5323158e0d43e69442718cd4932116".getBytes(), +// null); +// System.out.println(Base64.getEncoder().encodeToString((byte[]) result)); +// //待解密的字符串 +// String encodeSM2String="t/lpTpuW6JeN+JhACXkWqWeHr55Bwj5BTBgMmG5a9+w="; +// Object result2 = computeFactor.dexec(Base64.getDecoder().decode(encodeSM2String), "ECB", "PKCS5Padding", "random", "ef5323158e0d43e69442718cd4932116".getBytes(),null); +// System.out.println(new String((byte[]) result2, Charset.forName("utf-8"))); +// +// } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/gysl/regular/NoticeTiming.java b/ruoyi-admin/src/main/java/com/ruoyi/gysl/regular/NoticeTiming.java index 0c70273..de915b7 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/gysl/regular/NoticeTiming.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/gysl/regular/NoticeTiming.java @@ -108,4 +108,8 @@ public class NoticeTiming { throw new IllegalArgumentException("无效的日期格式: " + dateStr, e); } } + + /** + * 每天更新产业标签信息 + */ } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysLogininforController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysLogininforController.java index e0175f4..d0680f8 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysLogininforController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysLogininforController.java @@ -2,6 +2,8 @@ package com.ruoyi.web.controller.monitor; import java.util.List; import javax.servlet.http.HttpServletResponse; + +import com.ruoyi.common.utils.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.DeleteMapping; @@ -35,6 +37,21 @@ public class SysLogininforController extends BaseController @Autowired private SysPasswordService passwordService; + /** + * 根据用户获取最新一条访问记录 + */ + @PreAuthorize("@ss.hasAnyRoles('admin,common,gov,company')") + @GetMapping("/getNewSysLogininfor") + public AjaxResult getNewSysLogininfor() { + String str = null; + try { + str = SecurityUtils.getUsername(); + } catch (Exception ignored) { + } + return success(logininforService.getNewSysLogininfor(str)); + } + + @PreAuthorize("@ss.hasPermi('monitor:logininfor:list')") @GetMapping("/list") public TableDataInfo list(SysLogininfor logininfor) diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml index be5b7e9..37a9784 100644 --- a/ruoyi-admin/src/main/resources/application-druid.yml +++ b/ruoyi-admin/src/main/resources/application-druid.yml @@ -62,8 +62,9 @@ spring: # 是否是正式环境 isZs: false #企业端正式环境应用系统编号 -enterpriseAppId: 03f70874-39e9-11ef-bbd6-fa163e2b2e10 +enterpriseAppId: 193d64ab-316e-11f0-b7ab-9c5c8e847e61 # 应用私钥 -enterpriseAppsecret: 03f70874-39e9-11ef-bbd6-fa163e2b2e10 +enterpriseAppsecret: 7C21B5B9316E11F0B7AB9C5C8E847E61 #自己客户端地址 -returnUrl: https://idp.sipac.gov.cn/bms \ No newline at end of file +returnUrl: http://192.168.0.119:80 +#returnUrl: http://39.101.188.84:9999/demo/Gyyq-Upstairs/ diff --git a/ruoyi-admin/src/main/resources/application-internet.yml b/ruoyi-admin/src/main/resources/application-internet.yml index 781e3d1..b8b83ff 100644 --- a/ruoyi-admin/src/main/resources/application-internet.yml +++ b/ruoyi-admin/src/main/resources/application-internet.yml @@ -117,8 +117,8 @@ swagger: # 是否是正式环境 isZs: true #企业端正式环境应用系统编号 -enterpriseAppId: 03f70874-39e9-11ef-bbd6-fa163e2b2e10 +enterpriseAppId: 193d64ab-316e-11f0-b7ab-9c5c8e847e61 # 应用私钥 -enterpriseAppsecret: 03f70874-39e9-11ef-bbd6-fa163e2b2e10 +enterpriseAppsecret: 7C21B5B9316E11F0B7AB9C5C8E847E61 #自己客户端地址 -returnUrl: https://idp.sipac.gov.cn/bms \ No newline at end of file +returnUrl: https://gysl.sipac.gov.cn \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 7b9ab88..ca24875 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -52,7 +52,7 @@ spring: # 国际化资源文件路径 basename: i18n/messages profiles: - active: internet + active: druid # 文件上传 servlet: multipart: @@ -142,11 +142,13 @@ getAllInfo: http://172.21.10.14/open/api/identity/data/FindUserById #企业端单点登陆url -url: https://qytt.sipac.gov.cn/api/usercenter/User/ssoLogin -#url: http://114.216.202.175:8008/api/usercenter/User/ssoLogin +#url: https://qytt.sipac.gov.cn/api/usercenter/User/ssoLogin +url: http://114.216.202.175:8008/api/usercenter/User/ssoLogin #企业端用户信息url -infoUrl: https://qytt.sipac.gov.cn/api/usercenter/User/getInfo -#infoUrl: http://114.216.202.175:8008/api/usercenter/User/getInfo +#infoUrl: https://qytt.sipac.gov.cn/api/usercenter/User/getInfo +infoUrl: http://114.216.202.175:8008/api/usercenter/User/getInfo #企业端退出登录url -logoutUrl: https://qytt.sipac.gov.cn/api/usercenter/User/ssoLogOut +#logoutUrl: https://qytt.sipac.gov.cn/api/usercenter/User/ssoLogOut +logoutUrl: http://114.216.202.175:8008/api/usercenter/User/ssoLogOut + diff --git a/ruoyi-admin/src/main/resources/mapper/CybqMapper.xml b/ruoyi-admin/src/main/resources/mapper/CybqMapper.xml index 1f957af..8401f85 100644 --- a/ruoyi-admin/src/main/resources/mapper/CybqMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/CybqMapper.xml @@ -5,14 +5,11 @@ diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java index f87de1a..cbbd425 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java @@ -116,6 +116,9 @@ public class SecurityConfig .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll() .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll() .antMatchers("/system/chief/**").permitAll() + .antMatchers("/system/singlelogin/**").permitAll() +// .antMatchers("/gysl/Cybq/getCybq").permitAll() + // 除上面外的所有请求全部需要鉴权认证 .anyRequest().authenticated(); }) diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java index 38f6a08..39f26df 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java @@ -73,7 +73,7 @@ public class SysLoginService { */ public String login(String username, String password, String code, String uuid, Integer loginRole) { // 验证码校验 - validateCaptcha(username, code, uuid); +// validateCaptcha(username, code, uuid); // 登录前置校验 String strP; try { diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLogininforMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLogininforMapper.java index 629866f..3625243 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLogininforMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLogininforMapper.java @@ -39,4 +39,9 @@ public interface SysLogininforMapper * @return 结果 */ public int cleanLogininfor(); + + /** + * 根据用户获取最新一条访问记录 + */ + SysLogininfor getNewSysLogininfor(String str); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java index ce3151d..9cbfc2f 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java @@ -37,4 +37,9 @@ public interface ISysLogininforService * 清空系统登录日志 */ public void cleanLogininfor(); + + /** + * 根据用户获取最新一条访问记录 + */ + SysLogininfor getNewSysLogininfor(String str); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java index 216aecb..fab2d6f 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java @@ -1,5 +1,8 @@ package com.ruoyi.system.service.impl; +import java.time.LocalDateTime; +import java.time.Period; +import java.time.ZoneId; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -62,4 +65,26 @@ public class SysLogininforServiceImpl implements ISysLogininforService { logininforMapper.cleanLogininfor(); } + + /** + * 根据用户获取最新一条访问记录 + */ + @Override + public SysLogininfor getNewSysLogininfor(String str) { + SysLogininfor ns = logininforMapper.getNewSysLogininfor(str); + if(ns!=null){ + LocalDateTime ld = ns.getLoginTime().toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDateTime(); + Period period = Period.between(ld.toLocalDate(), LocalDateTime.now().toLocalDate()); + int days = period.getDays() + (period.getMonths() * 30) + (period.getYears() * 365); + if(days>=90){ + return ns; + }else { + return null; + } + }else { + return null; + } + } } diff --git a/ruoyi-system/src/main/resources/mapper/system/SysLogininforMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysLogininforMapper.xml index 822d665..426a260 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysLogininforMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysLogininforMapper.xml @@ -42,8 +42,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" order by info_id desc - - + + + delete from sys_logininfor where info_id in #{infoId}