ruoyi-admin/pom.xml
@@ -173,7 +173,6 @@ <artifactId>thumbnailator</artifactId> <version>0.4.8</version> </dependency> </dependencies> <build> ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TSysActivityController.java
@@ -45,7 +45,7 @@ @ApiOperation(value = "获取热门活动分页列表") @PostMapping(value = "/pageList") public R<PageInfo<TSysActivity>> pageList(@RequestBody TSysActivityQuery query) { return R.ok(sysActivityService.pageList(query)); return R.ok(sysActivityService.pageListApp(query)); } /** ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/TSysProductIntroductionController.java
@@ -45,11 +45,7 @@ @ApiOperation(value = "获取产品介绍分页列表") @PostMapping(value = "/pageList") public R<PageInfo<TSysProductIntroduction>> pageList(@RequestBody TSysProductIntroductionQuery query) { Integer roleType = tokenService.getLoginUser().getUser().getRoleType(); if(roleType == 5){ query.setRoleType(roleType); } return R.ok(sysProductIntroductionService.pageList(query)); return R.ok(sysProductIntroductionService.pageListApp(query)); } /** ruoyi-common/pom.xml
@@ -210,6 +210,10 @@ <artifactId>javax.mail</artifactId> <version>1.6.2</version> <!-- 请检查是否有更新的版本 --> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpmime</artifactId> </dependency> </dependencies> </project> ruoyi-framework/src/main/java/com/ruoyi/framework/security/filter/JwtAuthenticationTokenFilter.java
@@ -36,8 +36,7 @@ LoginUser loginUser = tokenService.getLoginUser(request); LoginUserApplet applet = tokenService.getLoginUserApplet(request); if (StringUtils.isNotNull(loginUser) && StringUtils.isNull(SecurityUtils.getAuthentication())|| StringUtils.isNotNull(applet)) { StringUtils.isNotNull(applet)){ if (StringUtils.isNotNull(loginUser)){ tokenService.verifyToken(loginUser); UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(loginUser, null, loginUser.getAuthorities()); ruoyi-system/src/main/java/com/ruoyi/system/mapper/TSysActivityMapper.java
@@ -26,4 +26,12 @@ * @return */ List<TSysActivity> pageList(@Param("query") TSysActivityQuery query, @Param("pageInfo")PageInfo<TSysActivity> pageInfo); /** * 分页查询 * * @param query * @param pageInfo * @return */ List<TSysActivity> pageListApp(@Param("query") TSysActivityQuery query, @Param("pageInfo")PageInfo<TSysActivity> pageInfo); } ruoyi-system/src/main/java/com/ruoyi/system/mapper/TSysProductIntroductionMapper.java
@@ -26,4 +26,12 @@ * @return */ List<TSysProductIntroduction> pageList(@Param("query") TSysProductIntroductionQuery query, @Param("pageInfo")PageInfo<TSysProductIntroduction> pageInfo); /** * 分页查询 * * @param query * @param pageInfo * @return */ List<TSysProductIntroduction> pageListApp(@Param("query") TSysProductIntroductionQuery query, @Param("pageInfo")PageInfo<TSysProductIntroduction> pageInfo); } ruoyi-system/src/main/java/com/ruoyi/system/model/TSysAiConfig.java
@@ -50,5 +50,17 @@ @TableField("aesKey") private String aesKey; @ApiModelProperty(value = "应用私钥") @TableField("devRsaPrivateKey") private String devRsaPrivateKey; @ApiModelProperty(value = "账号") @TableField("loginName") private String loginName; @ApiModelProperty(value = "密码") @TableField("loginPassword") private String loginPassword; } ruoyi-system/src/main/java/com/ruoyi/system/service/TSysActivityService.java
@@ -21,4 +21,10 @@ * @return */ PageInfo<TSysActivity> pageList(TSysActivityQuery query); /** * 获取热门活动分页列表 * @param query * @return */ PageInfo<TSysActivity> pageListApp(TSysActivityQuery query); } ruoyi-system/src/main/java/com/ruoyi/system/service/TSysProductIntroductionService.java
@@ -21,4 +21,10 @@ * @return */ PageInfo<TSysProductIntroduction> pageList(TSysProductIntroductionQuery query); /** * 获取产品介绍分页列表 * @param query * @return */ PageInfo<TSysProductIntroduction> pageListApp(TSysProductIntroductionQuery query); } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysActivityServiceImpl.java
@@ -29,4 +29,11 @@ pageInfo.setRecords(list); return pageInfo; } @Override public PageInfo<TSysActivity> pageListApp(TSysActivityQuery query) { PageInfo<TSysActivity> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List<TSysActivity> list = this.baseMapper.pageListApp(query,pageInfo); pageInfo.setRecords(list); return pageInfo; } } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TSysProductIntroductionServiceImpl.java
@@ -29,4 +29,11 @@ pageInfo.setRecords(list); return pageInfo; } @Override public PageInfo<TSysProductIntroduction> pageListApp(TSysProductIntroductionQuery query) { PageInfo<TSysProductIntroduction> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List<TSysProductIntroduction> list = this.baseMapper.pageListApp(query,pageInfo); pageInfo.setRecords(list); return pageInfo; } } ruoyi-system/src/main/java/com/ruoyi/system/utils/util/HttpClientUtils.java
New file @@ -0,0 +1,221 @@ package com.ruoyi.system.utils.util; import com.google.common.collect.Lists; import com.ruoyi.common.exception.ServiceException; import lombok.extern.slf4j.Slf4j; import org.apache.http.Consts; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpUriRequest; import org.apache.http.client.protocol.HttpClientContext; import org.apache.http.client.utils.URIBuilder; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.nio.charset.StandardCharsets; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @Slf4j public class HttpClientUtils { //请求超时时间 private final static Integer TIME_OUT = 30000; //http连接池 private static volatile PoolingHttpClientConnectionManager poolingHttpClientConnectionManager; //请求配置 private static RequestConfig requestConfig; public static PoolingHttpClientConnectionManager getPoolingHttpClientConnectionManager() { if (poolingHttpClientConnectionManager == null) { synchronized (HttpClientUtils.class) { if (poolingHttpClientConnectionManager == null) { poolingHttpClientConnectionManager = new PoolingHttpClientConnectionManager(); //连接池最大连接数 poolingHttpClientConnectionManager.setMaxTotal(1024); //每个路由最大连接数 poolingHttpClientConnectionManager.setDefaultMaxPerRoute(64); //配置请求的超时设置 requestConfig = RequestConfig.custom().setConnectionRequestTimeout(TIME_OUT).setConnectTimeout(TIME_OUT).setSocketTimeout(TIME_OUT).build(); } } } return poolingHttpClientConnectionManager; } public static CloseableHttpClient getHttpClient() { return HttpClients.custom().setConnectionManager(getPoolingHttpClientConnectionManager()).setDefaultRequestConfig(requestConfig).build(); } /** * 请求发送执行 * * @param httpMethd * @return */ public static String registRequest(HttpUriRequest httpMethd) { CloseableHttpClient httpClient = getHttpClient(); try (CloseableHttpResponse httpResponse = httpClient.execute(httpMethd, HttpClientContext.create())) { int statusCode = httpResponse.getStatusLine().getStatusCode(); if (httpResponse.getStatusLine().getStatusCode() != HttpStatus.SC_OK) { log.error("响应失败 statusCode {}", statusCode); log.error("============响应失败 response {}", EntityUtils.toString(httpResponse.getEntity(), Consts.UTF_8)); httpMethd.abort(); } log.debug("响应成功 statusCode {}", statusCode); String response = EntityUtils.toString(httpResponse.getEntity(), Consts.UTF_8); log.debug("响应成功 response {}", response); return response; } catch (Exception e) { throw new RuntimeException("请求失败", e); } } public static List<BasicNameValuePair> toPairs(Map<String, Object> params) { List<BasicNameValuePair> pairs = Lists.newArrayList(); if (params != null && !params.isEmpty()) { pairs = params.entrySet().stream().map(entry -> new BasicNameValuePair(entry.getKey(), entry.getValue().toString())).collect(Collectors.toList()); } return pairs; } /** * get url请求 * * @param url * @return */ public static String get(String url, String token) { HttpGet request = new HttpGet(); request.setHeader("Authorization", token); try { request.setURI(new URI(url)); return registRequest(request); } catch (Exception e) { log.error("<<<<<<<<<<<<<<<请求失败:{}", e.getMessage()); } return null; } /*** * get请求(带参数) * @param url * @return String */ public static String getReq(String url, Map<String, String> params) { String result = null; try { URIBuilder uriBuilder = new URIBuilder(url); Iterator maplist = params.entrySet().iterator(); while (maplist.hasNext()) { Map.Entry<String, String> map = (Map.Entry<String, String>) maplist.next(); uriBuilder.addParameter(map.getKey(), map.getValue()); } CloseableHttpClient client = HttpClientBuilder.create().build(); HttpGet get = new HttpGet(uriBuilder.build()); get.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36"); HttpResponse response = client.execute(get); result = EntityUtils.toString(response.getEntity(), "UTF-8"); } catch (URISyntaxException e) { e.printStackTrace(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return result; } /** * PSOT URL方式提交 * * @param url 请求url * @param params 请求参数 * @return */ public static String postFromUrl(String url, Map<String, Object> params) { HttpPost request = new HttpPost(url); request.setEntity(new UrlEncodedFormEntity(toPairs(params), Consts.UTF_8)); try { return registRequest(request); } catch (Exception e) { log.error("请求失败", e); } return null; } /** * PSOT JSON方式提交 * * @param url 请求url * @param params json串 * @return */ public static String postFromJson(String url, String params, String token) { HttpPost request = new HttpPost(url); request.setHeader("Content-type", "application/json"); request.setHeader("Accept", "application/json"); request.setHeader("Authorization", token); RequestConfig requestConfig = RequestConfig.custom() .setSocketTimeout(12000) .setConnectTimeout(8000) .build(); request.setConfig(requestConfig); StringEntity entity = new StringEntity(params, StandardCharsets.UTF_8); entity.setContentType("application/json"); request.setEntity(entity); try { return registRequest(request); } catch (Exception e) { log.info("<<<<<<<<<<<http请求失败:{}", e.getMessage()); throw new ServiceException("<<<<<<<<<<<http请求失败<<<<<<<<<<<<<<"); } } /** * PSOT JSON方式提交,无token * * @param url 请求url * @param params json串 * @return */ public static String postFrom(String url, String params) { HttpPost request = new HttpPost(url); request.setHeader("Content-type", "application/json"); request.setHeader("Accept", "application/json"); RequestConfig requestConfig = RequestConfig.custom() .setSocketTimeout(8000) .setConnectTimeout(6000) .build(); request.setConfig(requestConfig); StringEntity entity = new StringEntity(params, StandardCharsets.UTF_8); entity.setContentType("application/json"); request.setEntity(entity); try { return registRequest(request); } catch (Exception e) { log.error("<<<<<<<<<<<<<<<请求失败:{}", e.getMessage()); } return null; } } ruoyi-system/src/main/java/com/ruoyi/system/utils/util/MD5Util.java
New file @@ -0,0 +1,36 @@ package com.ruoyi.system.utils.util; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5Util { // 将字节数组转换为十六进制字符串 private static String bytesToHex(byte[] bytes) { StringBuilder hexString = new StringBuilder(); for (byte b : bytes) { String hex = Integer.toHexString(0xff & b); if (hex.length() == 1) hexString.append('0'); hexString.append(hex); } return hexString.toString(); } // 计算字符串的MD5值,返回十六进制字符串 public static String md5Hex(String message) { try { MessageDigest md = MessageDigest.getInstance("MD5"); byte[] digest = md.digest(message.getBytes()); return bytesToHex(digest); } catch (NoSuchAlgorithmException e) { throw new RuntimeException(e); // 不应该发生,因为"MD5"是一个标准的算法名称 } } public static void main(String[] args) { String originalString = "Hello, World!"; String md5Result = md5Hex(originalString); System.out.println("Original: " + originalString); System.out.println("MD5: " + md5Result); } } ruoyi-system/src/main/resources/mapper/system/TSysActivityMapper.xml
@@ -45,5 +45,24 @@ </where> ORDER BY create_time DESC </select> <select id="pageListApp" resultType="com.ruoyi.system.model.TSysActivity"> SELECT <include refid="Base_Column_List"/> FROM t_sys_activity <where> <if test="query.activityName != null and query.activityName != ''"> AND activity_name LIKE concat('%',#{query.activityName},'%') </if> <if test="query.showType != null"> AND show_type = #{query.showType} </if> <if test="query.status != null"> AND status = #{query.status} </if> AND show_type in (1,3) AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} </where> ORDER BY create_time DESC </select> </mapper> ruoyi-system/src/main/resources/mapper/system/TSysProductIntroductionMapper.xml
@@ -45,5 +45,24 @@ </where> ORDER BY create_time DESC </select> <select id="pageListApp" resultType="com.ruoyi.system.model.TSysProductIntroduction"> SELECT <include refid="Base_Column_List"/> FROM t_sys_product_introduction <where> <if test="query.productName != null and query.productName != ''"> AND product_name LIKE concat('%',#{query.productName},'%') </if> <if test="query.showType != null"> AND show_type = #{query.showType} </if> <if test="query.status != null"> AND status = #{query.status} </if> AND show_type in (1,3) AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} </where> ORDER BY create_time DESC </select> </mapper>