|
@@ -0,0 +1,217 @@
|
|
|
+package com.gis.cms.service.impl;
|
|
|
+
|
|
|
+import com.gis.cms.entity.po.VisitLogEntity;
|
|
|
+import com.gis.cms.mapper.VisitLogMapper;
|
|
|
+import com.gis.cms.service.ReportService;
|
|
|
+import com.gis.common.base.entity.dto.DateDto;
|
|
|
+import com.gis.common.util.Result;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.util.Arrays;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ * Created by owen on 2022/2/9 0011 16:16
|
|
|
+ */
|
|
|
+@Slf4j
|
|
|
+@Service
|
|
|
+public class ReportServiceImpl implements ReportService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ VisitLogMapper visitLogMapper;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Result net() {
|
|
|
+ Integer countAnswer = countAnswer(new DateDto());
|
|
|
+ Integer countComment = countComment(new DateDto());
|
|
|
+ Integer countBarrage = countBarrage(new DateDto());
|
|
|
+ Integer countGoods = countGoods();
|
|
|
+ Integer countNews = countNews();
|
|
|
+ Integer countMartyr = countMartyr();
|
|
|
+
|
|
|
+ HashMap<Object, Object> result = new HashMap<>();
|
|
|
+ result.put("countAnswer", countAnswer);
|
|
|
+ result.put("countComment", countComment);
|
|
|
+ result.put("countBarrage", countBarrage);
|
|
|
+ result.put("countGoods", countGoods);
|
|
|
+ result.put("countNews", countNews);
|
|
|
+ result.put("countMartyr", countMartyr);
|
|
|
+ return Result.success(result);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Result visit(DateDto param) {
|
|
|
+
|
|
|
+ StringBuffer sql = new StringBuffer();
|
|
|
+ sql.append("SELECT module as name, count(id) as count from tb_visit_log a ");
|
|
|
+ if (StringUtils.isBlank(param.getStartTime()) || StringUtils.isBlank(param.getEndTime())) {
|
|
|
+ return Result.failure("时间参数不能为空");
|
|
|
+ }
|
|
|
+ sql.append(" where create_time >= ").append("'").append(param.getStartTime()).append("'");
|
|
|
+ sql.append(" and create_time <= ").append("'").append(param.getEndTime()).append("'");
|
|
|
+
|
|
|
+ sql.append("GROUP BY module");
|
|
|
+ log.info("sql: {}", sql.toString());
|
|
|
+
|
|
|
+ return Result.success(visitLogMapper.selectSql(sql.toString()));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Result user(DateDto param) {
|
|
|
+
|
|
|
+ // 停用、删除的用户不统计
|
|
|
+ StringBuffer sql = new StringBuffer(
|
|
|
+ "select a.role_name as name, count(b.user_id) as count from sys_role a " +
|
|
|
+ "left JOIN sys_user_role b on b.role_id=a.id " +
|
|
|
+ "left join sys_user c on c.id=b.user_id WHERE a.is_delete=0 ");
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(param.getStartTime()) || StringUtils.isBlank(param.getEndTime())) {
|
|
|
+ return Result.failure("时间参数不能为空");
|
|
|
+ }
|
|
|
+ sql.append(" and c.create_time >= ").append("'").append(param.getStartTime()).append("'");
|
|
|
+ sql.append(" and c.create_time <= ").append("'").append(param.getEndTime()).append("'");
|
|
|
+
|
|
|
+ sql.append(" GROUP BY a.id");
|
|
|
+ log.info("sql: {}", sql.toString());
|
|
|
+
|
|
|
+
|
|
|
+ return Result.success(visitLogMapper.selectSql(sql.toString()));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Result interact(DateDto param) {
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(param.getStartTime()) || StringUtils.isBlank(param.getEndTime())) {
|
|
|
+ return Result.failure("时间参数不能为空");
|
|
|
+ }
|
|
|
+
|
|
|
+ Integer countAnswer = countAnswer(param);
|
|
|
+ Integer countComment = countComment(param);
|
|
|
+ Integer countBarrage = countBarrage(param);
|
|
|
+
|
|
|
+ HashMap<Object, Object> result = new HashMap<>();
|
|
|
+ result.put("countAnswer", countAnswer);
|
|
|
+ result.put("countComment", countComment);
|
|
|
+ result.put("countBarrage", countBarrage);
|
|
|
+
|
|
|
+ return Result.success(result);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 统计答题
|
|
|
+ */
|
|
|
+ private Integer countAnswer(DateDto param){
|
|
|
+ StringBuffer sql = new StringBuffer();
|
|
|
+ sql.append("SELECT count(id) as count from tb_question_user where is_delete=0");
|
|
|
+
|
|
|
+ if (StringUtils.isNotBlank(param.getStartTime()) && StringUtils.isNotBlank(param.getEndTime())) {
|
|
|
+ sql.append(" and create_time >= ").append("'").append(param.getStartTime()).append("'");
|
|
|
+ sql.append(" and create_time <= ").append("'").append(param.getEndTime()).append("'");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ log.info("sql: {}", sql.toString());
|
|
|
+
|
|
|
+ return visitLogMapper.countSql(sql.toString());
|
|
|
+ }
|
|
|
+
|
|
|
+ private Integer countComment(DateDto param){
|
|
|
+ StringBuffer sql = new StringBuffer();
|
|
|
+ sql.append("SELECT count(id) as count from tb_comment where is_delete=0 and display=1");
|
|
|
+
|
|
|
+ if (StringUtils.isNotBlank(param.getStartTime()) && StringUtils.isNotBlank(param.getEndTime())) {
|
|
|
+ sql.append(" and create_time >= ").append("'").append(param.getStartTime()).append("'");
|
|
|
+ sql.append(" and create_time <= ").append("'").append(param.getEndTime()).append("'");
|
|
|
+ }
|
|
|
+
|
|
|
+ log.info("sql: {}", sql.toString());
|
|
|
+
|
|
|
+ return visitLogMapper.countSql(sql.toString());
|
|
|
+ }
|
|
|
+
|
|
|
+ private Integer countBarrage(DateDto param){
|
|
|
+ StringBuffer sql = new StringBuffer();
|
|
|
+ sql.append("SELECT count(id) as count from tb_barrage where is_delete=0 and display=1");
|
|
|
+
|
|
|
+
|
|
|
+ if (StringUtils.isNotBlank(param.getStartTime()) && StringUtils.isNotBlank(param.getEndTime())) {
|
|
|
+ sql.append(" and create_time >= ").append("'").append(param.getStartTime()).append("'");
|
|
|
+ sql.append(" and create_time <= ").append("'").append(param.getEndTime()).append("'");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ log.info("sql: {}", sql.toString());
|
|
|
+
|
|
|
+ return visitLogMapper.countSql(sql.toString());
|
|
|
+ }
|
|
|
+
|
|
|
+ private Integer countGoods(){
|
|
|
+ StringBuffer sql = new StringBuffer();
|
|
|
+ sql.append("SELECT count(id) as count from tb_goods where is_delete=0 and display=1 and status=3");
|
|
|
+ log.info("sql: {}", sql.toString());
|
|
|
+ return visitLogMapper.countSql(sql.toString());
|
|
|
+ }
|
|
|
+
|
|
|
+ private Integer countNews(){
|
|
|
+ StringBuffer sql = new StringBuffer();
|
|
|
+ sql.append("SELECT count(id) as count from tb_news where is_delete=0 and display=1 and status=3");
|
|
|
+ log.info("sql: {}", sql.toString());
|
|
|
+ return visitLogMapper.countSql(sql.toString());
|
|
|
+ }
|
|
|
+
|
|
|
+ private Integer countMartyr(){
|
|
|
+ StringBuffer sql = new StringBuffer();
|
|
|
+ sql.append("SELECT count(id) as count from tb_martyr where is_delete=0 and display=1 and status=3");
|
|
|
+ log.info("sql: {}", sql.toString());
|
|
|
+ return visitLogMapper.countSql(sql.toString());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Result vote(DateDto param) {
|
|
|
+
|
|
|
+ StringBuffer sql = new StringBuffer();
|
|
|
+ sql.append("select a.name,COUNT(case when b.type='vote' and b.is_delete=0 then 1 end) countVote," +
|
|
|
+ "COUNT(case when b.type='like' and b.is_delete=0 then 1 end) countLike " +
|
|
|
+ "from tb_goods_module a left join tb_goods_vote b on b.goods_module_id=a.id WHERE a.is_delete=0");
|
|
|
+
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(param.getStartTime()) || StringUtils.isBlank(param.getEndTime())) {
|
|
|
+ return Result.failure("时间参数不能为空");
|
|
|
+ }
|
|
|
+ sql.append(" and b.create_time >= ").append("'").append(param.getStartTime()).append("'");
|
|
|
+ sql.append(" and b.create_time <= ").append("'").append(param.getEndTime()).append("'");
|
|
|
+
|
|
|
+
|
|
|
+ sql.append(" GROUP BY a.id");
|
|
|
+
|
|
|
+ log.info("sql: {}", sql.toString());
|
|
|
+
|
|
|
+
|
|
|
+ return Result.success(visitLogMapper.voteSelectSql(sql.toString()));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param type news:学习园地 martyr:纪念祭扫 goods:精品典藏 scene:数字史馆 comment:留言
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Result visitSave(String type) {
|
|
|
+ List<String> types = Arrays.asList("news", "martyr", "goods", "scene", "comment");
|
|
|
+ if (!types.contains(type)) {
|
|
|
+ return Result.failure("非法类型: " + type);
|
|
|
+ }
|
|
|
+ VisitLogEntity entity = new VisitLogEntity();
|
|
|
+ entity.setModule(type);
|
|
|
+ visitLogMapper.insert(entity);
|
|
|
+ return Result.success();
|
|
|
+ }
|
|
|
+}
|