Bladeren bron

新增举报功能
新增标签获取功能
新增标签搜索功能
新增字典查询功能
新增圈子根据名称搜索功能
修复其他若干bug

fangzhen 7 maanden geleden
bovenliggende
commit
c9511be30f

+ 5 - 3
ruoyi-generator/src/main/java/com/ruoyi/generator/controller/CommunityArticleController.java

@@ -276,11 +276,11 @@ public class CommunityArticleController extends BaseController {
     @ApiOperation("我的圈子")
     @GetMapping("/myCircle")
     //@Anonymous
-    public AjaxResult myCircle() {
+    public AjaxResult myCircle(@RequestParam(required = false) String circleName) {
         Long userId = SecurityUtils.getLoginUser().getUserId();
         List<CommunityUserCircle> communityUserCircles = communityUserCircleMapper.selectList(new QueryWrapper<CommunityUserCircle>()
                 .eq("user_id", userId)
-                .eq("is_delete", 0));
+                .ne("is_delete", 1).or().isNull("is_delete"));
 
         List<Long> circleIds = new ArrayList<>();
         for (CommunityUserCircle communityUserCircle : communityUserCircles) {
@@ -288,7 +288,9 @@ public class CommunityArticleController extends BaseController {
         }
         List<CommunityCircle> communityCircles = null;
         if (!circleIds.isEmpty()) {
-            communityCircles = communityCircleMapper.selectBatchIds(circleIds);
+            communityCircles = communityCircleMapper.selectList(new QueryWrapper<CommunityCircle>()
+                    .in("id", circleIds)
+                    .like("circle_name", circleName));
         }
         return AjaxResult.success("获取成功!", communityCircles);
     }

+ 73 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/controller/CommunityReportController.java

@@ -0,0 +1,73 @@
+package com.ruoyi.generator.controller;
+
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysDictData;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.generator.domain.Community.CommunityReport;
+import com.ruoyi.generator.service.ICommunityReportService;
+import com.ruoyi.generator.vo.SysDictDataVo;
+import com.ruoyi.system.service.ISysDictTypeService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 社区举报控制器
+ *
+ * @author fangzhen
+ */
+@Api(tags = "社区举报控制器")
+@RestController
+@RequestMapping("/community/report")
+public class CommunityReportController extends BaseController {
+
+    @Autowired
+    private ICommunityReportService communityReportService;
+
+    @Autowired
+    private ISysDictTypeService dictTypeService;
+
+    /**
+     * 根据字典类型查询字典数据信息
+     */
+    @GetMapping(value = "/type/{dictType}")
+    public AjaxResult dictType(@PathVariable String dictType) {
+        List<SysDictData> data = dictTypeService.selectDictDataByType(dictType);
+        List<SysDictDataVo> dictDataVos = null;
+        SysDictDataVo dictDataVo = null;
+        if (StringUtils.isNull(data)) {
+            dictDataVos = new ArrayList<>();
+        } else {
+            dictDataVos = new ArrayList<>();
+            for (SysDictData dictData : data) {
+                dictDataVo = new SysDictDataVo();
+                BeanUtils.copyProperties(dictData, dictDataVo);
+                dictDataVos.add(dictDataVo);
+            }
+        }
+        return success(dictDataVos);
+    }
+
+    /**
+     * 发布举报
+     */
+    @ApiOperation("发布举报")
+    @PostMapping()
+    @Transactional
+    //@Anonymous
+    public AjaxResult report(@RequestBody CommunityReport communityReport) {
+        if (Objects.isNull(communityReport.getReportCode()) || Objects.isNull(communityReport.getArticleId())) {
+            return AjaxResult.error("参数异常!");
+        }
+        communityReportService.save(communityReport);
+        return AjaxResult.success("您的举报已记录!");
+    }
+}

+ 47 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/controller/CommunityTagController.java

@@ -0,0 +1,47 @@
+package com.ruoyi.generator.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.generator.domain.Community.CommunityTag;
+import com.ruoyi.generator.service.ICommunityTagService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * 文章标签
+ *
+ * @author fangzhen
+ */
+@Api(tags = "文章标签")
+@RestController
+@RequestMapping("/community/tag")
+public class CommunityTagController extends BaseController {
+
+    @Autowired
+    private ICommunityTagService communityTagService;
+
+    /**
+     * 获取标签信息
+     */
+    @ApiOperation("获取标签信息")
+    @GetMapping()
+    @Transactional
+    //@Anonymous
+    public AjaxResult tags(String tagName) {
+        Page<CommunityTag> page = new Page<>(1, 10);
+        List<CommunityTag> communityTags = communityTagService.page(page, new QueryWrapper<CommunityTag>()
+                .ne("is_delete", 1).or().isNull("is_delete")
+                .like("tag_name", tagName)
+                .orderByDesc("tag_hot")).getRecords();
+        return AjaxResult.success(communityTags);
+    }
+}

+ 63 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityReport.java

@@ -0,0 +1,63 @@
+package com.ruoyi.generator.domain.Community;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.hibernate.validator.constraints.Length;
+
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+* 举报记录表
+* @TableName community_report
+*/
+@TableName("community_report")
+@Data
+public class CommunityReport implements Serializable {
+
+    /**
+    * 唯一id
+    */
+    @NotNull(message="[唯一id]不能为空")
+    @ApiModelProperty("唯一id")
+    @TableId("id")
+    private Long id;
+    /**
+    * 举报字典编码
+    */
+    @ApiModelProperty("举报字典编码")
+    private Long reportCode;
+    /**
+    * 关联的文章id
+    */
+    @ApiModelProperty("关联的文章id")
+    private Long articleId;
+    /**
+    * 举报照片
+    */
+    @Size(max= -1,message="编码长度不能超过-1")
+    @ApiModelProperty("举报照片")
+    @Length(max= -1,message="编码长度不能超过-1")
+    private String reportImages;
+    /**
+    * 描述
+    */
+    @Size(max= -1,message="编码长度不能超过-1")
+    @ApiModelProperty("描述")
+    @Length(max= -1,message="编码长度不能超过-1")
+    private String remark;
+    /**
+    * 创建人
+    */
+    @ApiModelProperty("创建人")
+    private Long createBy;
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    private Date createTime;
+}

+ 12 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/Community/CommunityTag.java

@@ -36,6 +36,18 @@ public class CommunityTag implements Serializable {
     @ApiModelProperty("标签名称")
     @Length(max= 255,message="编码长度不能超过255")
     private String tagName;
+
+    /**
+     * 标签热度
+     */
+    @ApiModelProperty("标签热度")
+    private Long tagHot;
+
+    /**
+     * 创建人
+     */
+    @ApiModelProperty("是否删除")
+    private boolean isDelete;
     /**
     * 创建人
     */

+ 9 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/mapper/community/CommunityReportMapper.java

@@ -0,0 +1,9 @@
+package com.ruoyi.generator.mapper.community;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.generator.domain.Community.CommunityReport;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface CommunityReportMapper extends BaseMapper<CommunityReport> {
+}

+ 24 - 3
ruoyi-generator/src/main/java/com/ruoyi/generator/service/CommunityArticleServiceImpl.java

@@ -88,6 +88,9 @@ public class CommunityArticleServiceImpl extends ServiceImpl<CommunityArticleMap
         //找出板块下的分类
         Long classId = communityArticle.getClassId();
         Long id = communityArticle.getId();
+        Long circleId = communityArticle.getCircleId();
+        Long userId = SecurityUtils.getUserId();
+        List<CommunityArticleVo> communityArticleVos = null;
         if (Objects.nonNull(id)) {
             //获取指定文章详细内容,文章浏览量+1
             CommunityArticle article = communityArticleMapper.selectById(id);
@@ -95,9 +98,8 @@ public class CommunityArticleServiceImpl extends ServiceImpl<CommunityArticleMap
             communityArticleMapper.updateById(article);
         }
 
-        Long userId = SecurityUtils.getUserId();
         List<Long> circleIds = null;
-        if (!Objects.isNull(classId)) {
+        if (Objects.nonNull(classId)) {
             List<CommunityClassCircle> classCircles = communityClassCircleMapper.selectList(new QueryWrapper<CommunityClassCircle>().eq("class_id", classId));
             circleIds = new ArrayList<>();
             for (CommunityClassCircle classCircle : classCircles) {
@@ -105,9 +107,21 @@ public class CommunityArticleServiceImpl extends ServiceImpl<CommunityArticleMap
             }
         }
 
+        //如果有圈子id,则按照传递的圈子id取文章数据
+        if (Objects.nonNull(circleId)) {
+            circleIds = new ArrayList<>();
+            circleIds.add(circleId);
+        }
+
+        //如果没有圈子,则返回null数据
+        if (Objects.isNull(circleIds) || circleIds.isEmpty()) {
+            communityArticleVos = new ArrayList<>();
+            return communityArticleVos;
+        }
+
         //根据分类查找文章
         int offset = (pageNum - 1) * pageSize;
-        List<CommunityArticleVo> communityArticleVos = communityArticleMapper.selectCommunityArticleList(communityArticle, circleIds, offset, pageSize);
+        communityArticleVos = communityArticleMapper.selectCommunityArticleList(communityArticle, circleIds, offset, pageSize);
         for (CommunityArticleVo articleVo : communityArticleVos) {
             List<Map<String, Object>> imageList = articleVo.getImageList();
             List<CommunityArticleImages> videoList = new ArrayList<>();
@@ -218,6 +232,13 @@ public class CommunityArticleServiceImpl extends ServiceImpl<CommunityArticleMap
             tagLog.setCreateTime(DateUtils.parseDate(DateUtils.getTime()));
             tagLog.setCreateBy(userId);
             articleTagMapper.insert(tagLog);
+
+            //标签热度自增
+            CommunityTag communityTag = communityTagMapper.selectById(tag.getId());
+            communityTag.setTagHot(Objects.isNull(communityTag.getTagHot()) ? 1 : communityTag.getTagHot() + 1);
+            communityTag.setUpdateTime(DateUtils.parseDate(DateUtils.getTime()));
+            communityTag.setUpdateBy(userId);
+            communityTagMapper.updateById(communityTag);
         }
 
         //插入图片日志

+ 11 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/service/CommunityReportServiceImpl.java

@@ -0,0 +1,11 @@
+package com.ruoyi.generator.service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.generator.domain.Community.CommunityReport;
+import com.ruoyi.generator.mapper.community.CommunityReportMapper;
+import org.springframework.stereotype.Service;
+
+@Service
+public class CommunityReportServiceImpl extends ServiceImpl<CommunityReportMapper, CommunityReport> implements ICommunityReportService {
+
+}

+ 10 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/service/CommunityTagServiceImpl.java

@@ -0,0 +1,10 @@
+package com.ruoyi.generator.service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.generator.domain.Community.CommunityTag;
+import com.ruoyi.generator.mapper.community.CommunityTagMapper;
+import org.springframework.stereotype.Service;
+
+@Service
+public class CommunityTagServiceImpl extends ServiceImpl<CommunityTagMapper, CommunityTag> implements ICommunityTagService {
+}

+ 7 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/service/ICommunityReportService.java

@@ -0,0 +1,7 @@
+package com.ruoyi.generator.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.generator.domain.Community.CommunityReport;
+
+public interface ICommunityReportService extends IService<CommunityReport> {
+}

+ 7 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/service/ICommunityTagService.java

@@ -0,0 +1,7 @@
+package com.ruoyi.generator.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.generator.domain.Community.CommunityTag;
+
+public interface ICommunityTagService extends IService<CommunityTag> {
+}

+ 65 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/vo/CommunityTagVo.java

@@ -0,0 +1,65 @@
+package com.ruoyi.generator.vo;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.hibernate.validator.constraints.Length;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+* 
+* @TableName community_tag
+*/
+@Data
+@TableName("community_tag")
+public class CommunityTagVo implements Serializable {
+
+    /**
+    * 标签id
+    */
+    @NotNull(message="[标签id]不能为空")
+    @ApiModelProperty("标签id")
+    @TableId("id")
+    private Long id;
+    /**
+    * 标签名称
+    */
+    @NotBlank(message="[标签名称]不能为空")
+    @Size(max= 255,message="编码长度不能超过255")
+    @ApiModelProperty("标签名称")
+    @Length(max= 255,message="编码长度不能超过255")
+    private String tagName;
+
+    @ApiModelProperty("热度")
+    private Long tagHot;
+    /**
+    * 创建人
+    */
+    @ApiModelProperty("创建人")
+    private Long createBy;
+    /**
+    * 创建时间
+    */
+    @ApiModelProperty("创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+    /**
+    * 更新人
+    */
+    @ApiModelProperty("更新人")
+    private Long updateBy;
+    /**
+    * 更新时间
+    */
+    @ApiModelProperty("更新时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+
+}

+ 57 - 0
ruoyi-generator/src/main/java/com/ruoyi/generator/vo/SysDictDataVo.java

@@ -0,0 +1,57 @@
+package com.ruoyi.generator.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.annotation.Excel.ColumnType;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 字典数据表 sys_dict_data
+ * 
+ * @author ruoyi
+ */
+@Data
+public class SysDictDataVo
+{
+    /** 字典编码 */
+    @Excel(name = "字典编码", cellType = ColumnType.NUMERIC)
+    private Long dictCode;
+
+    /** 字典标签 */
+    @Excel(name = "字典标签")
+    private String dictLabel;
+
+    /** 字典键值 */
+    @Excel(name = "字典键值")
+    private String dictValue;
+
+    /** 字典类型 */
+    @Excel(name = "字典类型")
+    private String dictType;
+
+    /**
+     * 创建人
+     */
+    @ApiModelProperty("创建人")
+    private Long createBy;
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty("创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+    /**
+     * 更新人
+     */
+    @ApiModelProperty("更新人")
+    private Long updateBy;
+    /**
+     * 更新时间
+     */
+    @ApiModelProperty("更新时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+}

+ 1 - 1
ruoyi-generator/src/main/resources/mapper/community/ArticleMapper.xml

@@ -169,7 +169,7 @@
             <if test="communityArticle.title != null and communityArticle.title != ''">
                 AND a.title like concat('%', #{communityArticle.title}, '%')
             </if>
-            <if test="circleIds!= null and circleIds.size() > 0">
+            <if test="circleIds != null and circleIds.size() > 0">
                 and a.circle_id IN
                 <foreach collection="circleIds" item="circleId" index="index" open="(" close=")" separator=",">
                     #{circleId}