tsurumure 2 mesiacov pred
rodič
commit
8e236f0b92

+ 1 - 2
src/main/java/com/backendsys/config/Mybatis/handler/timezone/LocalDateTimeHandler.java

@@ -50,8 +50,7 @@ public class LocalDateTimeHandler extends BaseTypeHandler<LocalDateTime> {
 
     private LocalDateTime convertToLocalDateTime(java.sql.Timestamp timestamp) {
         if (timestamp == null) return null;
-        return timestamp.toInstant()
-            .atZone(ZoneId.of("UTC"))
+        return timestamp.toInstant().atZone(ZoneId.of("UTC"))
             .withZoneSameInstant(ZoneId.of(TimezoneContextHolder.getTimeZone()))
             .toLocalDateTime();
     }

+ 1 - 1
src/main/java/com/backendsys/modules/cms/article/dao/ArticleDao.java

@@ -9,7 +9,7 @@ import java.util.Map;
 
 @Mapper
 public interface ArticleDao extends BaseMapper<Article> {
-    List<Article> selectArticleList(Article article);
+    List<Map<String, Object>> selectArticleList(Article article);
     Map<String, Object> selectArticleDetail(Article article);
 //    Article selectArticle(Article article);
 }

+ 14 - 6
src/main/java/com/backendsys/modules/cms/article/entity/Article.java

@@ -51,20 +51,28 @@ public class Article {
     private List<ArticleI18n> translations;
 
     private Long user_id;
+    @TableField(exist = false)
+    private String user_nickname;
+
     private Long category_id;
+    @TableField(exist = false)
+    private String category_name;
 
     @RangeArray(message="资讯状态取值有误,范围应是(-1禁用, 1启用)", value = {"-1", "1"}, groups = { Create.class, Update.class})
     private Integer status;
     private Integer is_top;
 
-    private String create_time;
-    private String update_time;
 
-    @TableField(value = "create_time")
     @JsonAdapter(LocalDateTimeAdapter.class)
-    private LocalDateTime create_time_local;
+    private LocalDateTime create_time;
 
-    @TableField(value = "update_time")
     @JsonAdapter(LocalDateTimeAdapter.class)
-    private LocalDateTime update_time_local;
+    private LocalDateTime update_time;
+
+    @TableField(value = "create_time")
+    private String create_time_utc;
+
+    @TableField(value = "update_time")
+    private String update_time_utc;
+
 }

+ 19 - 8
src/main/java/com/backendsys/modules/cms/article/service/impl/ArticleServiceImpl.java

@@ -1,7 +1,5 @@
 package com.backendsys.modules.cms.article.service.impl;
 
-import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.date.LocalDateTimeUtil;
 import cn.hutool.core.util.IdUtil;
 import com.backendsys.exception.CustException;
 import com.backendsys.modules.cms.article.dao.ArticleDao;
@@ -11,6 +9,7 @@ import com.backendsys.modules.cms.article.entity.ArticleI18n;
 import com.backendsys.modules.cms.article.service.ArticleService;
 import com.backendsys.modules.common.config.security.utils.HttpRequestUtil;
 import com.backendsys.modules.common.utils.ValidationUtil;
+import com.backendsys.utils.MapUtil;
 import com.backendsys.utils.response.PageEntity;
 import com.backendsys.utils.response.PageInfoResult;
 import com.backendsys.utils.v2.PageUtils;
@@ -20,11 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.time.LocalDateTime;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Service
@@ -44,7 +39,23 @@ public class ArticleServiceImpl implements ArticleService {
     @Override
     public PageEntity selectArticleList(Article article) {
         PageUtils.startPage();  // 分页
-        List<Article> list = articleDao.selectArticleList(article);
+
+//        List<Article> list = articleDao.selectList(new LambdaQueryWrapper<>());
+        List<Map<String, Object>> list = articleDao.selectArticleList(article);
+
+//        // 1) 完成分页实体渲染
+//        PageEntity pageEntity = new PageInfoResult(list).toEntity();
+//
+//        // 2) 分页列表格式化
+//        list = list.stream().map(item -> {
+//            item.put("create_time_shanghai", MapUtil.convertUtcToAsiaShanghai(item.get("create_time_utc")));
+//            return item;
+//        }).collect(Collectors.toList());
+//
+//        // 3) 分页实体重新赋值
+//        List<Object> objectList = list.stream().map(item -> (Object) item).collect(Collectors.toList());
+//        pageEntity.setList(objectList);
+
         return new PageInfoResult(list).toEntity();
     }
 

+ 4 - 4
src/main/java/com/backendsys/modules/upload/service/impl/SysFileServiceImpl.java

@@ -105,10 +105,10 @@ public class SysFileServiceImpl extends ServiceImpl<SysFileDao, SysFile> impleme
         PageUtils.startPage();  // 分页
         List<SysFile> sysFileList = sysFileDao.selectUploadFileList(sysFile);
 
-        // 完成分页渲染
+        // 1) 完成分页实体渲染
         PageEntity pageEntity = new PageInfoResult(sysFileList).toEntity();
 
-        // -- 完成分页渲染之后,再做列表格式化 -----------------------------------
+        // 2) 分页列表格式化
         // [Common] 根据 Tag 获得 Options
         // JSONArray COMMON_OPTIONS = sysCommonService.getCommonOptionByTag("UPLOAD_TARGET");
         // 遍历列表,赋值公共值翻译
@@ -120,9 +120,9 @@ public class SysFileServiceImpl extends ServiceImpl<SysFileDao, SysFile> impleme
             return item;
         }).collect(Collectors.toList());
 
-        List<Object> objectList = sysFileList.stream().map(file -> (Object) file).collect(Collectors.toList());
+        // 3) 分页实体重新赋值
+        List<Object> objectList = sysFileList.stream().map(item -> (Object) item).collect(Collectors.toList());
         pageEntity.setList(objectList);
-        // -----------------------------------------------------------------
 
         return pageEntity;
     }

+ 5 - 0
src/main/java/com/backendsys/utils/ListUtil.java

@@ -1,7 +1,12 @@
 package com.backendsys.utils;
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.convert.Convert;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
 

+ 21 - 0
src/main/java/com/backendsys/utils/MapUtil.java

@@ -1,15 +1,36 @@
 package com.backendsys.utils;
 
+import cn.hutool.core.convert.Convert;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
 import org.springframework.cglib.beans.BeanMap;
 
 import java.lang.reflect.Field;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
 import java.util.*;
 
 @SuppressWarnings({"rawtypes", "unchecked"})
 public class MapUtil {
 
+    /**
+     * 将 UTC 时间字符串转换为 Asia/Shanghai 时区的时间字符串
+     * MapUtil.convertUtcToAsiaShanghai(item.get("create_time_utc"))
+     */
+    public static String convertUtcToAsiaShanghai(Object utcTime) {
+        String utcTimeStr = Convert.toStr(utcTime);
+        // 解析 UTC 时间字符串为 LocalDateTime
+        LocalDateTime utcDateTime = cn.hutool.core.date.DateUtil.parse(utcTimeStr).toLocalDateTime();
+        // 转换为 Asia/Shanghai 时区的时间
+        ZonedDateTime asiaShanghaiDateTime = utcDateTime.atZone(ZoneId.of("UTC")).withZoneSameInstant(ZoneId.of("Asia/Shanghai"));
+        // 格式化转换后的时间为字符串
+        String asiaShanghaiTimeStr = DateUtil.format(asiaShanghaiDateTime.toLocalDateTime(), "yyyy-MM-dd HH:mm:ss");
+        // 将转换后的时间放入 item 中
+        return asiaShanghaiTimeStr;
+    }
+
     /**
      * 获取多层 Map 中指定路径的值。
      * MapUtil.get(response, "Header.Code")

+ 9 - 4
src/main/resources/mapper/cms/article/ArticleDao.xml

@@ -53,6 +53,7 @@
         LEFT JOIN cms_article_i18n at ON a.id = at.article_id
     </sql>
 
+<!--    <resultMap id="resultMapArticle" type="com.backendsys.modules.cms.article.entity.Article">-->
     <resultMap id="resultMapArticle" type="java.util.LinkedHashMap">
         <id property="id" column="id" jdbcType="BIGINT" />
         <result property="article_id" column="article_id" javaType="java.lang.Long" />
@@ -66,10 +67,14 @@
         <result property="description" column="description" />
         <result property="status" column="status" javaType="java.lang.Integer" />
         <result property="is_top" column="is_top" javaType="java.lang.Integer" />
-        <result property="create_time" column="create_time" javaType="java.lang.String" />
-        <result property="update_time" column="update_time" javaType="java.lang.String" />
-        <result property="create_time_local" column="create_time" />
-        <result property="update_time_local" column="update_time" />
+<!--        <result property="create_time" column="create_time"-->
+<!--                typeHandler="com.backendsys.config.Mybatis.handler.timezone.LocalDateTimeHandler" />-->
+<!--        <result property="update_time" column="update_time"-->
+<!--                typeHandler="com.backendsys.config.Mybatis.handler.timezone.LocalDateTimeHandler"/>-->
+        <result property="create_time" column="create_time" />
+        <result property="update_time" column="update_time" />
+        <result property="create_time_utc" column="create_time" javaType="java.lang.String" />
+        <result property="update_time_utc" column="update_time" javaType="java.lang.String" />
     </resultMap>
 
     <resultMap id="resultMapArticleDetail" type="java.util.LinkedHashMap">