|
|
@@ -16,7 +16,7 @@ import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.collection.CollStreamUtil;
|
|
|
import cn.hutool.core.util.IdUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
-import cn.hutool.core.util.StrUtil;
|
|
|
+import cn.hutool.json.JSONArray;
|
|
|
import cn.hutool.json.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
|
|
@@ -27,7 +27,6 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import vip.xiaonuo.auth.core.pojo.SaBaseLoginUser;
|
|
|
import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
|
|
|
-import vip.xiaonuo.common.enums.CommonSortOrderEnum;
|
|
|
import vip.xiaonuo.common.exception.CommonException;
|
|
|
import vip.xiaonuo.common.page.CommonPageRequest;
|
|
|
import vip.xiaonuo.common.pojo.CommonResult;
|
|
|
@@ -42,7 +41,6 @@ import vip.xiaonuo.forum.modular.postinfo.param.ForumPostInfoIdParam;
|
|
|
import vip.xiaonuo.forum.modular.postinfo.param.ForumPostInfoPageParam;
|
|
|
import vip.xiaonuo.forum.modular.postinfo.service.ForumPostInfoService;
|
|
|
import vip.xiaonuo.forum.modular.postlike.entity.ForumPostLike;
|
|
|
-import vip.xiaonuo.forum.modular.postlike.mapper.ForumPostLikeMapper;
|
|
|
import vip.xiaonuo.forum.modular.postlike.service.ForumPostLikeService;
|
|
|
import vip.xiaonuo.forum.modular.postreply.entity.ForumPostReply;
|
|
|
import vip.xiaonuo.forum.modular.postreply.param.ForumPostReplyPageParam;
|
|
|
@@ -58,6 +56,9 @@ import vip.xiaonuo.forum.modular.supportenv.mapper.ForumSupportEnvMapper;
|
|
|
import vip.xiaonuo.sys.api.SysUserApi;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
+import java.time.LocalDate;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
+import java.time.format.DateTimeParseException;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
import java.util.stream.Collectors;
|
|
|
@@ -540,19 +541,83 @@ public class ForumPostInfoServiceImpl extends ServiceImpl<ForumPostInfoMapper, F
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public CommonResult<com.alibaba.fastjson.JSONObject> getCount() {
|
|
|
- // 查询帖子未关闭的总数量
|
|
|
- QueryWrapper<ForumPostInfo> queryWrapper = new QueryWrapper<>();
|
|
|
- queryWrapper.lambda().eq(ForumPostInfo::getPostStatus, 0);
|
|
|
- long count = this.count(queryWrapper);
|
|
|
- // 查询所有回复数量
|
|
|
- QueryWrapper<ForumPostReply> queryWrapper1 = new QueryWrapper<>();
|
|
|
- long replyCount = forumPostReplyService.count(queryWrapper1);
|
|
|
- // 封装返回参数
|
|
|
- com.alibaba.fastjson.JSONObject jsonObject = new com.alibaba.fastjson.JSONObject();
|
|
|
- jsonObject.put("postCount", count);
|
|
|
- jsonObject.put("replyCount", replyCount);
|
|
|
- return CommonResult.data(jsonObject);
|
|
|
+ public CommonResult<com.alibaba.fastjson.JSONObject> getCount(com.alibaba.fastjson.JSONObject json) {
|
|
|
+ com.alibaba.fastjson.JSONObject result = new com.alibaba.fastjson.JSONObject();
|
|
|
+ // 取出查询条件,起始时间和结束时间
|
|
|
+ String startTime = json.getString("startTime");
|
|
|
+ String endTime = json.getString("endTime");
|
|
|
+ // 如果没有默认查询所有总共的
|
|
|
+ if (StringUtils.isBlank(startTime) && StringUtils.isBlank(endTime)) {
|
|
|
+ // 查询帖子未关闭的总数量
|
|
|
+ QueryWrapper<ForumPostInfo> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.lambda().eq(ForumPostInfo::getPostStatus, 0);
|
|
|
+ long count = this.count(queryWrapper);
|
|
|
+ // 查询所有回复数量
|
|
|
+ QueryWrapper<ForumPostReply> queryWrapper1 = new QueryWrapper<>();
|
|
|
+ long replyCount = forumPostReplyService.count(queryWrapper1);
|
|
|
+ // 封装返回参数,查询总数
|
|
|
+ result.put("type", 0);
|
|
|
+ result.put("postCount", count);
|
|
|
+ result.put("replyCount", replyCount);
|
|
|
+ return CommonResult.data(result);
|
|
|
+ } else {
|
|
|
+ JSONArray jsonArray = new JSONArray();
|
|
|
+ // 取出开始日期到结束日期的每一天日期
|
|
|
+ List<String> dateList = getDatesBetween(startTime, endTime);
|
|
|
+ for (String date : dateList) {
|
|
|
+ // 查询帖子未关闭的总数量
|
|
|
+ QueryWrapper<ForumPostInfo> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.lambda().eq(ForumPostInfo::getPostStatus, 0).apply("TO_CHAR(create_time, 'YYYY-MM-DD') = {0}", date);
|
|
|
+ long count = this.count(queryWrapper);
|
|
|
+ // 查询所有回复数量
|
|
|
+ QueryWrapper<ForumPostReply> queryWrapper1 = new QueryWrapper<>();
|
|
|
+ queryWrapper1.lambda().apply("TO_CHAR(create_time, 'YYYY-MM-DD') = {0}", date);
|
|
|
+ long replyCount = forumPostReplyService.count(queryWrapper1);
|
|
|
+ // 封装返回参数
|
|
|
+ com.alibaba.fastjson.JSONObject jsonObject = new com.alibaba.fastjson.JSONObject();
|
|
|
+ jsonObject.put("date", date);
|
|
|
+ jsonObject.put("postCount", count);
|
|
|
+ jsonObject.put("replyCount", replyCount);
|
|
|
+ jsonArray.add(jsonObject);
|
|
|
+ }
|
|
|
+ // 封装返回参数,按日期查询
|
|
|
+ result.put("type", 1);
|
|
|
+ result.put("data", jsonArray);
|
|
|
+ return CommonResult.data(result);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public static List<String> getDatesBetween(String startDateStr, String endDateStr) {
|
|
|
+ // 定义日期格式
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
+
|
|
|
+ try {
|
|
|
+ // 解析字符串为日期对象
|
|
|
+ LocalDate startDate = LocalDate.parse(startDateStr, formatter);
|
|
|
+ LocalDate endDate = LocalDate.parse(endDateStr, formatter);
|
|
|
+
|
|
|
+ // 确保开始日期不晚于结束日期
|
|
|
+ if (startDate.isAfter(endDate)) {
|
|
|
+ LocalDate temp = startDate;
|
|
|
+ startDate = endDate;
|
|
|
+ endDate = temp;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 生成日期列表
|
|
|
+ List<String> dateList = new ArrayList<>();
|
|
|
+ LocalDate currentDate = startDate;
|
|
|
+
|
|
|
+ while (!currentDate.isAfter(endDate)) {
|
|
|
+ dateList.add(currentDate.format(formatter));
|
|
|
+ currentDate = currentDate.plusDays(1);
|
|
|
+ }
|
|
|
+
|
|
|
+ return dateList;
|
|
|
+
|
|
|
+ } catch (DateTimeParseException e) {
|
|
|
+ throw new IllegalArgumentException("日期格式错误,请使用 yyyy-MM-dd 格式");
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
}
|