登录修改

master
杜函宇 1 month ago
parent d9c5c8b63b
commit 960f1e3382

@ -16,6 +16,11 @@
</description> </description>
<dependencies> <dependencies>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15to18</artifactId>
<version>1.72</version>
</dependency>
<!-- iText 7 Core 最新版本 --> <!-- iText 7 Core 最新版本 -->
<dependency> <dependency>
<groupId>com.itextpdf</groupId> <groupId>com.itextpdf</groupId>

@ -2,11 +2,8 @@ package com.ruoyi.gysl.controller;
import cn.hutool.crypto.SmUtil; import cn.hutool.crypto.SmUtil;
import cn.hutool.http.HttpRequest; import com.alibaba.fastjson2.JSONArray;
import cn.hutool.http.HttpResponse; import com.alibaba.fastjson2.JSONObject;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; 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.common.utils.poi.ExcelUtil;
import com.ruoyi.gysl.entity.Cybq; import com.ruoyi.gysl.entity.Cybq;
import com.ruoyi.gysl.entity.request.CybqRequest; 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.login.util.SM4Demo;
import com.ruoyi.gysl.service.CybqService; import com.ruoyi.gysl.service.CybqService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@ -25,15 +23,17 @@ import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse; 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.HttpURLConnection;
import java.net.URL; import java.net.URL;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Base64; import java.util.Base64;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* (GyslCybq) * (GyslCybq)
@ -62,81 +62,76 @@ public class CybqController extends BaseController {
@ApiOperation("企业经济标签信息(统一社会信用代码)") @ApiOperation("企业经济标签信息(统一社会信用代码)")
@GetMapping("/getCybq") @GetMapping("/getCybq")
public AjaxResult getCybq() throws Exception { public AjaxResult getCybq() throws Exception {
if(true){ if (isZs) {
String contacts = "http://172.21.10.46/api/invoke/323018/qyjjbqxx"; String contacts = "http://172.21.10.46/api/invoke/323018/qyjjbqxx";
String uscc = Base64.getEncoder().encodeToString((byte[]) String uscc = Base64.getEncoder().encodeToString((byte[])
SM4Demo.exec("91320594067622605M".getBytes(), SM4Demo.exec("91320594067622605M".getBytes(),
"ECB", "PKCS5Padding", "random", "ef5323158e0d43e69442718cd4932116".getBytes(),null)); "ECB", "PKCS5Padding", "random", "ef5323158e0d43e69442718cd4932116".getBytes(), null));
String pageIndex = Base64.getEncoder().encodeToString((byte[]) String pageIndex = Base64.getEncoder().encodeToString((byte[])
SM4Demo.exec("1".getBytes(), SM4Demo.exec("1".getBytes(),
"ECB", "PKCS5Padding", "random", "ef5323158e0d43e69442718cd4932116".getBytes(),null)); "ECB", "PKCS5Padding", "random", "ef5323158e0d43e69442718cd4932116".getBytes(), null));
String pageSize = Base64.getEncoder().encodeToString((byte[]) //生成sm3签名
SM4Demo.exec("10".getBytes(), String input = "pageIndex=1&uscc=91320594067622605M";
"ECB", "PKCS5Padding", "random", "ef5323158e0d43e69442718cd4932116".getBytes(),null)); try {
//生成sm3签名 // 1. 构建 URL含签名参数处理特殊符号
String input = "pageIndex=1&pageSize=10&uscc=91320594067622605M"; String encodedSignature = URLEncoder.encode(SmUtil.sm3(input), "UTF-8")
// contacts+= "?signature="+ SmUtil.sm3(input); .replace("+", "%20"); // 确保 + 不被编码为空格
System.out.println(contacts); String fullUrl = contacts + "?signature=" + encodedSignature;
System.out.println(uscc); // 2. 创建连接
System.out.println(pageIndex); URL url = new URL(fullUrl);
System.out.println(pageSize); HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
try { conn.setDoOutput(true);
// 1. 构建 URL含签名参数处理特殊符号 conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY);
String encodedSignature = URLEncoder.encode(SmUtil.sm3(input), "UTF-8")
.replace("+", "%20"); // 确保 + 不被编码为空格 // 3. 构建请求体(严格对齐 curl -F 格式)
String fullUrl = contacts + "?signature=" + encodedSignature; try (DataOutputStream out = new DataOutputStream(conn.getOutputStream())) {
System.out.println(fullUrl); // 参数 uscc
// 2. 创建连接 writeFormField(out, "uscc", uscc);
URL url = new URL(fullUrl); // 参数 pageIndex
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); writeFormField(out, "pageIndex", pageIndex);
conn.setRequestMethod("POST"); // 结束标记
conn.setDoOutput(true); out.writeBytes("--" + BOUNDARY + "--\r\n");
conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY); }
// 4. 处理响应
// 3. 构建请求体(严格对齐 curl -F 格式) int statusCode = conn.getResponseCode();
try (DataOutputStream out = new DataOutputStream(conn.getOutputStream())) { StringBuilder response = new StringBuilder();
// 参数 uscc try (BufferedReader in = new BufferedReader(new InputStreamReader(
writeFormField(out, "uscc", uscc); (statusCode >= 200 && statusCode < 300) ? conn.getInputStream() : conn.getErrorStream(),
// 参数 pageIndex StandardCharsets.UTF_8))) {
writeFormField(out, "pageIndex", pageIndex); String line;
// 参数 pageSize while ((line = in.readLine()) != null) {
writeFormField(out, "pageSize", pageSize); response.append(line);
// 结束标记
out.writeBytes("--" + BOUNDARY + "--\r\n");
} }
}
// 4. 处理响应 if (statusCode == 200) {
int statusCode = conn.getResponseCode(); JSONObject jsonObj = JSONObject.parseObject(String.valueOf(response));
StringBuilder response = new StringBuilder(); if ("200".equals(jsonObj.getString("code"))) { // 使用 getString 避免类型问题
try (BufferedReader in = new BufferedReader(new InputStreamReader( // 直接获取 data 字段为 JSONObject无需转换 String
(statusCode >= 200 && statusCode < 300) ? conn.getInputStream() : conn.getErrorStream(), JSONObject reqData = jsonObj.getJSONObject("data");
StandardCharsets.UTF_8))) { String responseParams = reqData.getString("responseParams"); // 直接获取字符串值
String line; String s = new String((byte[]) SM2Demo.dexec(Base64.getDecoder().decode(responseParams), "C1C2C3", Base64.getDecoder().decode("MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgefIcY79Be48T8ryF9tMOKDFZ4XmeB9JzBSmEZHGmvhKhRANCAAQmjPisOvJfv2r7mpj06FszOkAlJiyVL6OoefMmXmqSANNqyT8ZxnFpnToYgtqjQqX44IG8fXk49eLjKXQSfJ2J")), StandardCharsets.UTF_8);
while ((line = in.readLine()) != null) { // 解析解密后的 JSON
response.append(line); JSONObject getAllData = JSONObject.parseObject(s);
// 提取 data 字段为 JSONArray
JSONArray js1 = getAllData.getJSONArray("data");
// 转换为 Java 对象列表
List<Cybq> 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();
} }
} catch (Exception y) {
// if (response.getStatus() == 200) { y.printStackTrace();
// 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并转换为整数
// }
// }
} }
}
return success(); return success();
} }
private static void writeFormField(DataOutputStream out, String name, String value) throws Exception { private static void writeFormField(DataOutputStream out, String name, String value) throws Exception {
out.writeBytes("--" + BOUNDARY + "\r\n"); out.writeBytes("--" + BOUNDARY + "\r\n");
out.writeBytes("Content-Disposition: form-data; name=\"" + name + "\"\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 * @param gyslCybq
* @return * @return
*/ */
@ -164,7 +159,7 @@ public class CybqController extends BaseController {
* @return * @return
*/ */
@GetMapping("/{id}") @GetMapping("/{id}")
@ApiOperation(value = "通过主键查询单条数据",response = Cybq.class) @ApiOperation(value = "通过主键查询单条数据", response = Cybq.class)
public AjaxResult selectOne(@PathVariable Serializable id) { public AjaxResult selectOne(@PathVariable Serializable id) {
return success(cybqService.getById(id)); return success(cybqService.getById(id));
} }
@ -230,7 +225,7 @@ public class CybqController extends BaseController {
*/ */
@ApiOperation(value = "根据条件导出所有产业标签") @ApiOperation(value = "根据条件导出所有产业标签")
@PostMapping(value = "/export") @PostMapping(value = "/export")
public void exportMl(HttpServletResponse response, CybqRequest req){ public void exportMl(HttpServletResponse response, CybqRequest req) {
List<Cybq> filteredList = cybqService.page(req); List<Cybq> filteredList = cybqService.page(req);
ExcelUtil<Cybq> util = new ExcelUtil<>(Cybq.class); ExcelUtil<Cybq> util = new ExcelUtil<>(Cybq.class);
util.exportExcel(response, filteredList, "产业标签"); util.exportExcel(response, filteredList, "产业标签");

@ -26,87 +26,67 @@ public class Cybq {
private Long id; private Long id;
@ApiModelProperty(value ="单位编码" ) private String epguid;
private String dwbm;
@ApiModelProperty(value ="企业名称" )
@ApiModelProperty(value ="标签标记场景代码" ) private String epname;
private String cjdm;
@ApiModelProperty(value ="标签代码" ) @ApiModelProperty(value ="统一社会信用代码" )
private String bqdm; private String uscc;
@ApiModelProperty(value ="标签值编码" ) @ApiModelProperty(value ="组织机构代码" )
private String bqzbm; private String organcode;
@ApiModelProperty(value ="引用代码集编码" ) @ApiModelProperty(value ="标签值" )
private String yydmjbm; private String codevalue;
@ApiModelProperty(value ="引用代码集版本" ) @ApiModelProperty(value ="标签名称" )
private String yydmjbb; private String labelname;
@ApiModelProperty(value ="有效状态" ) @ApiModelProperty(value ="标签代码" )
private String state; private String catalogueid;
@ApiModelProperty(value ="标签注释" ) @ApiModelProperty(value ="标签值编码" )
private String bqzs; private String codekey;
@ApiModelProperty(value ="用户类型" ) @ApiModelProperty(value ="引用代码集编码" )
private String yhlx; private String cscode;
@ApiModelProperty(value ="标签标记用户" ) @ApiModelProperty(value ="引用代码集版本" )
private String bqbjyh; private String csversion;
@ApiModelProperty(value ="标签标记单位" ) @ApiModelProperty(value ="标签注释" )
private String bqbjdw; private String lablenotes;
@ApiModelProperty(value ="标签状态" ) @ApiModelProperty(value ="标签状态" )
private String bqzt; private String status;
@ApiModelProperty(value ="数据来源编码" ) @ApiModelProperty(value ="更新时间" )
private String sjlybm; private String regtime;
@ApiModelProperty(value ="数据来源名称" ) @ApiModelProperty(value ="数据来源名称" )
private String sjlymc; private String dw_timestamp;
@ApiModelProperty(value ="数据溯源码" )
private String sjsym;
@ApiModelProperty(value ="记录状态" )
private String jlzt;
@ApiModelProperty(value ="数据记录备注" )
private String sjjzbz;
@ApiModelProperty(value ="标签标记场景代码" )
@ApiModelProperty(value ="数据创建用户" ) private String sceneid;
private String sjcjyh;
@ApiModelProperty(value ="数据创建时间" )
private String sjcjsj;
@ApiModelProperty(value ="数据修改用户" ) @ApiModelProperty(value ="标签状态" )
private String sjxgyh; private String labelmark;
@ApiModelProperty(value ="数据修改时间" )
private String sjxgsj;
} }

@ -12,12 +12,9 @@ import lombok.Data;
public class CybqRequest { public class CybqRequest {
@ApiModelProperty(value ="标签代码" ) @ApiModelProperty(value ="标签代码" )
private String bqdm; private String catalogueid;
@ApiModelProperty(value ="标签状态" ) @ApiModelProperty(value ="标签状态" )
private String bqzt; private String status;
@ApiModelProperty(value ="用户类型" )
private String yhlx;
} }

@ -93,7 +93,7 @@ public class ChiefController {
ChiefResponse bean = JSONUtil.toBean(dataJson, ChiefResponse.class); ChiefResponse bean = JSONUtil.toBean(dataJson, ChiefResponse.class);
//判断几个政务端用户,等待商量结果 //判断几个政务端用户,等待商量结果
bean.setToken(loginTokenService.singleLogin(bean.getAccountName(), bean.setToken(loginTokenService.singleLogin(bean.getAccountName(),
bean.getName(), null, bean.getName(),
"01", bean.getMobile(),bean.getEmail())); "01", bean.getMobile(),bean.getEmail()));
return AjaxResult.success(bean); return AjaxResult.success(bean);
} else { } else {

@ -15,6 +15,7 @@ import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.gysl.login.dto.response.UserMainResponse; import com.ruoyi.gysl.login.dto.response.UserMainResponse;
import com.ruoyi.gysl.login.dto.response.UserResponse; import com.ruoyi.gysl.login.dto.response.UserResponse;
import com.ruoyi.gysl.login.service.LoginTokenService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -59,6 +60,8 @@ public class SingleLoginController {
@Resource @Resource
private RedisCache redisCache; private RedisCache redisCache;
@Resource
private LoginTokenService loginTokenService;
@Value("${enterpriseAppId}") @Value("${enterpriseAppId}")
private String enterpriseAppId; private String enterpriseAppId;
@ -106,30 +109,18 @@ public class SingleLoginController {
JSONObject jsonObj = JSONUtil.parseObj(responseBody); JSONObject jsonObj = JSONUtil.parseObj(responseBody);
JSONObject dataObj = jsonObj.getJSONObject("data"); JSONObject dataObj = jsonObj.getJSONObject("data");
// 设置过期时间(可选) // 设置过期时间(可选)
int expirationSeconds = 24 * 60; // int expirationSeconds = 24 * 60;
// 将用户信息存储到Redis中 // 将用户信息存储到Redis中
String key = "user:" + clientToken; // String key = "user:" + clientToken;
//判断是法人用户 //判断是法人用户
if ("ep".equals(dataObj.get("usertype"))) { if ("ep".equals(dataObj.get("usertype"))) {
JSONObject mainobj = dataObj.getJSONObject("mainbody"); JSONObject mainobj = dataObj.getJSONObject("mainbody");
UserResponse res = JSONUtil.toBean(dataObj, UserResponse.class); UserResponse res = JSONUtil.toBean(dataObj, UserResponse.class);
UserMainResponse req = JSONUtil.toBean(mainobj, UserMainResponse.class); UserMainResponse req = JSONUtil.toBean(mainobj, UserMainResponse.class);
String token = loginTokenService.singleLogin(req.getUscc(), req.getEpname(),
//如果在企业库里面找不到该企业就返回错误 "02", null, null);
// BmsEnterpriseBasicInfo bmsEnterpriseBasicInfo = res.setToken(token);
// bmsEnterpriseBasicInfoMapper.findByQytyxydm(req.getUscc()); res.setMain(req);
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);
return AjaxResult.success(res); return AjaxResult.success(res);
} else { } else {
log.error(response.body()); log.error(response.body());

@ -11,5 +11,5 @@ public interface LoginTokenService {
/** /**
* token * 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);
} }

@ -42,7 +42,6 @@ public class LoginTokenServiceImpl implements LoginTokenService {
@Override @Override
public String singleLogin(String accountName, public String singleLogin(String accountName,
String name, String name,
String a,
String type, String type,
String mobile, String mobile,
String email) { String email) {

@ -86,18 +86,18 @@ public class SM4Demo {
return cipher.doFinal(message); return cipher.doFinal(message);
} }
public static void main(String[] args) throws Exception { // public static void main(String[] args) throws Exception {
//待加密字符串 // //待加密字符串
String content = "91320594067622605M"; // String content = "91320594067622605M";
SM4Demo computeFactor = new SM4Demo(); // SM4Demo computeFactor = new SM4Demo();
Object result = computeFactor // Object result = computeFactor
.exec(content.getBytes(), "ECB", "PKCS5Padding", "random", "ef5323158e0d43e69442718cd4932116".getBytes(), // .exec(content.getBytes(), "ECB", "PKCS5Padding", "random", "ef5323158e0d43e69442718cd4932116".getBytes(),
null); // null);
System.out.println(Base64.getEncoder().encodeToString((byte[]) result)); // System.out.println(Base64.getEncoder().encodeToString((byte[]) result));
//待解密的字符串 // //待解密的字符串
String encodeSM2String="t/lpTpuW6JeN+JhACXkWqWeHr55Bwj5BTBgMmG5a9+w="; // String encodeSM2String="t/lpTpuW6JeN+JhACXkWqWeHr55Bwj5BTBgMmG5a9+w=";
Object result2 = computeFactor.dexec(Base64.getDecoder().decode(encodeSM2String), "ECB", "PKCS5Padding", "random", "ef5323158e0d43e69442718cd4932116".getBytes(),null); // 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"))); // System.out.println(new String((byte[]) result2, Charset.forName("utf-8")));
//
} // }
} }

@ -108,4 +108,8 @@ public class NoticeTiming {
throw new IllegalArgumentException("无效的日期格式: " + dateStr, e); throw new IllegalArgumentException("无效的日期格式: " + dateStr, e);
} }
} }
/**
*
*/
} }

@ -2,6 +2,8 @@ package com.ruoyi.web.controller.monitor;
import java.util.List; import java.util.List;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.utils.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.DeleteMapping;
@ -35,6 +37,21 @@ public class SysLogininforController extends BaseController
@Autowired @Autowired
private SysPasswordService passwordService; 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')") @PreAuthorize("@ss.hasPermi('monitor:logininfor:list')")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(SysLogininfor logininfor) public TableDataInfo list(SysLogininfor logininfor)

@ -62,8 +62,9 @@ spring:
# 是否是正式环境 # 是否是正式环境
isZs: false 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 returnUrl: http://192.168.0.119:80
#returnUrl: http://39.101.188.84:9999/demo/Gyyq-Upstairs/

@ -117,8 +117,8 @@ swagger:
# 是否是正式环境 # 是否是正式环境
isZs: true 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 returnUrl: https://gysl.sipac.gov.cn

@ -52,7 +52,7 @@ spring:
# 国际化资源文件路径 # 国际化资源文件路径
basename: i18n/messages basename: i18n/messages
profiles: profiles:
active: internet active: druid
# 文件上传 # 文件上传
servlet: servlet:
multipart: multipart:
@ -142,11 +142,13 @@ getAllInfo: http://172.21.10.14/open/api/identity/data/FindUserById
#企业端单点登陆url #企业端单点登陆url
url: https://qytt.sipac.gov.cn/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: http://114.216.202.175:8008/api/usercenter/User/ssoLogin
#企业端用户信息url #企业端用户信息url
infoUrl: https://qytt.sipac.gov.cn/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 infoUrl: http://114.216.202.175:8008/api/usercenter/User/getInfo
#企业端退出登录url #企业端退出登录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

@ -5,14 +5,11 @@
<select id="page" resultType="com.ruoyi.gysl.entity.Cybq"> <select id="page" resultType="com.ruoyi.gysl.entity.Cybq">
select * from gysl_cybq select * from gysl_cybq
<where> <where>
<if test="req.bqdm != null and req.bqdm != '' "> <if test="req.catalogueid != null and req.catalogueid != '' ">
AND bqdm = #{req.bqdm} AND catalogueid = #{req.catalogueid}
</if> </if>
<if test="req.bqzt != null and req.bqzt != ''"> <if test="req.status != null and req.status != ''">
AND bqzt = #{req.bqzt} AND status = #{req.status}
</if>
<if test="req.yhlx != null and req.yhlx != ''">
AND yhlx = #{req.yhlx}
</if> </if>
</where> </where>
</select> </select>

@ -116,6 +116,9 @@ public class SecurityConfig
.antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll() .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
.antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll() .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
.antMatchers("/system/chief/**").permitAll() .antMatchers("/system/chief/**").permitAll()
.antMatchers("/system/singlelogin/**").permitAll()
// .antMatchers("/gysl/Cybq/getCybq").permitAll()
// 除上面外的所有请求全部需要鉴权认证 // 除上面外的所有请求全部需要鉴权认证
.anyRequest().authenticated(); .anyRequest().authenticated();
}) })

@ -73,7 +73,7 @@ public class SysLoginService {
*/ */
public String login(String username, String password, String code, String uuid, Integer loginRole) { public String login(String username, String password, String code, String uuid, Integer loginRole) {
// 验证码校验 // 验证码校验
validateCaptcha(username, code, uuid); // validateCaptcha(username, code, uuid);
// 登录前置校验 // 登录前置校验
String strP; String strP;
try { try {

@ -39,4 +39,9 @@ public interface SysLogininforMapper
* @return * @return
*/ */
public int cleanLogininfor(); public int cleanLogininfor();
/**
* 访
*/
SysLogininfor getNewSysLogininfor(String str);
} }

@ -37,4 +37,9 @@ public interface ISysLogininforService
* *
*/ */
public void cleanLogininfor(); public void cleanLogininfor();
/**
* 访
*/
SysLogininfor getNewSysLogininfor(String str);
} }

@ -1,5 +1,8 @@
package com.ruoyi.system.service.impl; package com.ruoyi.system.service.impl;
import java.time.LocalDateTime;
import java.time.Period;
import java.time.ZoneId;
import java.util.List; import java.util.List;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -62,4 +65,26 @@ public class SysLogininforServiceImpl implements ISysLogininforService
{ {
logininforMapper.cleanLogininfor(); 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;
}
}
} }

@ -42,8 +42,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</where> </where>
order by info_id desc order by info_id desc
</select> </select>
<select id="getNewSysLogininfor" resultType="com.ruoyi.system.domain.SysLogininfor">
select info_id, user_name, ipaddr, status, msg, login_time from sys_logininfor
<where>
status = '0' and msg = '登录成功'
<if test="userName != null and userName != ''">
AND user_name = #{userName}
</if>
</where>
order by info_id desc
LIMIT 1 OFFSET 1
</select>
<delete id="deleteLogininforByIds" parameterType="Long"> <delete id="deleteLogininforByIds" parameterType="Long">
delete from sys_logininfor where info_id in delete from sys_logininfor where info_id in
<foreach collection="array" item="infoId" open="(" separator="," close=")"> <foreach collection="array" item="infoId" open="(" separator="," close=")">
#{infoId} #{infoId}

Loading…
Cancel
Save