From 0a479ae29921a82498eb82634b2469773d95aba7 Mon Sep 17 00:00:00 2001 From: "@jyuhsin" <729757837@qq.com> Date: Thu, 15 Jan 2026 08:56:42 +0800 Subject: [PATCH] commit --- pom.xml | 2 +- .../app/sys/controller/SysHomeController.java | 103 +++++------------- src/main/resources/application-dev.yaml | 8 +- .../views/layouts/v4/home/index.html | 6 +- .../resources/views/layouts/v4/home/jcdt.js | 86 ++++++++------- .../platform/zhghh5/welfare/select/index.html | 2 +- 6 files changed, 82 insertions(+), 125 deletions(-) diff --git a/pom.xml b/pom.xml index 6db6494b..23953bc8 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 jar com.budwk - zhgh-whcp + zhgh_cug_v4 5.6.0-plus 2.6.0-SNAPSHOT diff --git a/src/main/java/com/budwk/app/sys/controller/SysHomeController.java b/src/main/java/com/budwk/app/sys/controller/SysHomeController.java index ffa2ed8e..6f32f097 100644 --- a/src/main/java/com/budwk/app/sys/controller/SysHomeController.java +++ b/src/main/java/com/budwk/app/sys/controller/SysHomeController.java @@ -27,6 +27,7 @@ import org.nutz.dao.util.Daos; import org.nutz.integration.jedis.RedisService; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.json.Json; import org.nutz.lang.Lang; import org.nutz.lang.Strings; import org.nutz.lang.util.NutMap; @@ -38,10 +39,9 @@ import org.nutz.mvc.annotation.Param; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.Date; -import java.util.List; +import java.io.IOException; +import java.util.*; +import java.util.stream.Collectors; @IocBean @@ -263,76 +263,31 @@ public class SysHomeController { // @CacheDefaults(cacheName = RedisConstant.PLATFORM_REDIS_WKCACHE_PREFIX + "web_news", isHash = true) // @CacheResult(cacheKey = "news", ignoreNull = true, cacheLiveTime = 60 * 60 * 24) public Result getNews() { - // 定义要爬取的URL - String domain = "https://gh.whcp.edu.cn"; - try { - // 使用Jsoup连接到URL并获取页面内容 - Document doc = Jsoup.connect(domain).get(); + try { + String url = "https://xgh.cug.edu.cn/"; + Document document = Jsoup.connect(url).get(); + Elements homeElements = document.select(".gh,.jc,.fc,.jg"); - JSONObject root = new JSONObject(); - - // 1. 新闻快讯(来自 .list1) - /* List newsArray = new ArrayList<>(); - Elements newsItems = doc.select(".ml .main_page2 .news_list li"); - for (Element item : newsItems) { - String date = item.select(".date").text().trim(); - Element link = item.select("a.text").first(); - String title = link.select(".title").text().trim(); - String url = link.attr("href").trim(); - - JSONObject node = new JSONObject(); - node.set("title", title); - node.set("date", date); - node.set("url", domain + url); - newsArray.add(node); - } - root.set("news", newsArray);*/ - - // 2. 通知公告(来自 .list2) - List noticesArray = new ArrayList<>(); - Elements noticeItems = doc.select(".tu_text .news_list li"); - for (Element item : noticeItems) { - String date = item.select(".news_meta").text().trim(); - Element link = item.select(".news_title a").first(); - String title = link.text().trim(); - String url = link.attr("href").trim(); - JSONObject node = new JSONObject(); - node.set("title", title); - node.set("date", date); - node.set("url", domain + url); - noticesArray.add(node); - } - root.set("notices", noticesArray); - - // 3. 基层风采(来自 .pic-list1) - /* List grassrootsArray = new ArrayList<>(); - Elements grassrootsItems = doc.select(".group3 .pic-list1 li"); - for (Element item : grassrootsItems) { - Element link = item.select("a.img-scale").first(); - String date = link.select(".date").text().trim(); - String title = link.select(".title").text().trim(); - String url = link.attr("href").trim(); - String summary = link.select(".info").text().trim(); - - String imageUrl = ""; - Element img = link.select("img").first(); - if (img != null) { - imageUrl = img.attr("src").trim(); - } - - JSONObject node = new JSONObject(); - node.set("title", title); - node.set("date", date); - node.set("url", domain + url); - node.set("summary", summary); - node.set("image", domain + imageUrl); - grassrootsArray.add(node); - } - root.set("grassroots", grassrootsArray);*/ - return Result.success(root); - } catch (Exception e) { - log.error(e); - return Result.success(); - } + List> news = homeElements.stream().map(homeElement -> { + //获取板块名称 + String name = homeElement.selectFirst(".title").text(); + Elements liElements = homeElement.select("li"); + List ele = liElements.stream().map(liElement -> { + NutMap row = NutMap.NEW(); + String href = liElement.selectFirst("a").attr("href"); + String time = liElement.selectFirst("span").text(); + String title = liElement.selectFirst("a").attr("title"); + row.put("href", href); + row.put("time", time); + row.put("text", title); + return row; + }).toList(); + return Map.of("label", name, "value", ele); + }).collect(Collectors.toList()); + redisService.setex("gonghui_news", 60 * 60 * 24, Json.toJson(news)); + return Result.success(news); + } catch (IOException e) { + throw new RuntimeException(e); + } } } diff --git a/src/main/resources/application-dev.yaml b/src/main/resources/application-dev.yaml index 19242c9d..d004017d 100644 --- a/src/main/resources/application-dev.yaml +++ b/src/main/resources/application-dev.yaml @@ -1,6 +1,6 @@ nutz: application: - name: zhgh_whcp + name: zhgh_cug_v4 mvc: ignore: ^(.+[.])(jsp|png|gif|jpg|js|css|jspx|jpeg|html|mp3|mp4|ico|svg|vue)$ exclusions: /favicon/*,/assets/*,/druid/*,/upload/*,/components/* @@ -21,7 +21,7 @@ jetty: #结合ftp使用,或用nginx代理ftp路径 #staticPath: /Users/wizzer/temp/files #开发模式静态资源 - staticPathLocal: D:/project/zhgh_whcp_new/src/main/resources/static + staticPathLocal: D:/project/zhgh_cug_v4/src/main/resources/static security: tokenName: saToken @@ -71,7 +71,7 @@ redis: #nodes=192.168.6.31:6377,192.168.6.31:6378,192.168.6.28:6377,192.168.6.28:6378,192.168.6.34:6377,192.168.6.34:6378 jdbc: - url: jdbc:mysql://192.168.21.203:3306/zhgh_whcp_new?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://192.168.21.215:3306/zhgh_cug_v4?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true username: root password: root validationQuery: select 1 @@ -87,7 +87,7 @@ xsssql: beetl: RESOURCE: #本地路径,开发时设置本地路径,便于调试 - rootLocal: D:/project/zhgh_whcp_new/src/main/resources/views/ + rootLocal: D:/project/zhgh_cug_v4/src/main/resources/views/ root: views/ DELIMITER_STATEMENT_START: "" diff --git a/src/main/resources/views/layouts/v4/home/index.html b/src/main/resources/views/layouts/v4/home/index.html index 4ed4c7d9..5442c0e9 100644 --- a/src/main/resources/views/layouts/v4/home/index.html +++ b/src/main/resources/views/layouts/v4/home/index.html @@ -85,7 +85,7 @@ layout("/layouts/v4/baseLayout.html"){ - + @@ -102,9 +102,7 @@ layout("/layouts/v4/baseLayout.html"){ el: '#v4-home-app', data(){ return{ - websiteNews:{ - notices:[], - } + websiteNews: [] } }, components: { diff --git a/src/main/resources/views/layouts/v4/home/jcdt.js b/src/main/resources/views/layouts/v4/home/jcdt.js index 8dc9dbed..5322a464 100644 --- a/src/main/resources/views/layouts/v4/home/jcdt.js +++ b/src/main/resources/views/layouts/v4/home/jcdt.js @@ -2,28 +2,29 @@ const jcdt = { template: /*language=HTML*/ `
-
- 综合新闻 -
-
-
-
-
{{item.date}}
-
-
- -
-
{{item.title}}
-
- - - + + +
+ {{ item.label }}
-
-
+
+
+
+
+ + {{o.time}} +
+
+
+ +
+
{{o.text}}
+
+
+
+
+ +
`, @@ -38,9 +39,12 @@ const jcdt = { }, methods: { onLink(item) { - if(!item.url) return - window.open(item.url) + const url = this.isHttpOrHttps(item.href) ? item.href : "https://xgh.cug.edu.cn/" + item.href + window.open(url) }, + isHttpOrHttps(url) { + return /^(http:\/\/|https:\/\/)/i.test(url) + } }, style: /*language=CSS*/ ` .jcdt-wrapper { @@ -53,16 +57,14 @@ const jcdt = { .jcdt-container { width: 80%; max-width: 80%; - margin: 0 auto; - + margin: 0 auto 10px; background-color: #FFFFFF; border-radius: 12px; padding: 20px; - margin-bottom: 10px; box-shadow: 0 6px 20px rgba(0, 0, 0, 0.06); } - .jcdt-title{ + /deep/ .jcdt-title{ font-size: 30px; color: #000000; display: block; @@ -94,13 +96,13 @@ const jcdt = { vertical-align: middle; } - .jcdt-list { + /deep/ .jcdt-list { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; } - .jcdt-item { + /deep/ .jcdt-item { display: flex; flex-direction: column; padding: 16px; @@ -109,18 +111,17 @@ const jcdt = { transition: all 0.3s ease; cursor: pointer; height: auto; - border-radius: 12px; - } - - .jcdt-item:hover{ - background: #ffffff; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08); border-bottom-color: var(--color-primary); - transform: translateY(-4px); - box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15); + background: #ffffff; } - .jcdt-item .date { + /deep/ .jcdt-item:hover{ + transform: translateY(-4px); + } + + /deep/ .jcdt-item .date { font-size: 20px; font-weight: bold; white-space: nowrap; @@ -129,7 +130,7 @@ const jcdt = { transition: opacity 0.3s ease; } - .jcdt-item .title { + /deep/ .jcdt-item .title { font-size: 16px; font-weight: 600; /*margin-bottom: 12px;*/ @@ -141,7 +142,7 @@ const jcdt = { /*height: 45px;*/ } - .jcdt-item .image { + /deep/ .jcdt-item .image { width: 100%; height: 180px; margin: 0 0 16px 0; @@ -155,14 +156,14 @@ const jcdt = { transition: transform 0.3s ease; } - .jcdt-item .image img { + /deep/ .jcdt-item .image img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.3s ease; } - .jcdt-item .summary { + /deep/ .jcdt-item .summary { font-size: 14px; color: #666; line-height: 1.6; @@ -174,5 +175,8 @@ const jcdt = { margin-bottom: 12px; } + /deep/ .jcdt-item i { + color: #007aff; + } ` }; diff --git a/src/main/resources/views/platform/zhghh5/welfare/select/index.html b/src/main/resources/views/platform/zhghh5/welfare/select/index.html index 6c561fb6..b2596a47 100644 --- a/src/main/resources/views/platform/zhghh5/welfare/select/index.html +++ b/src/main/resources/views/platform/zhghh5/welfare/select/index.html @@ -608,7 +608,7 @@ layout("/layouts/platform_h5.html"){ - +