wuweihao 3 роки тому
батько
коміт
dc7b3c2f62

+ 69 - 0
gis_cms/src/main/java/com/gis/cms/controller/BbsController.java

@@ -0,0 +1,69 @@
+package com.gis.cms.controller;
+
+import com.gis.cms.entity.dto.BbsDto;
+import com.gis.cms.entity.dto.BbsPageDto;
+import com.gis.cms.entity.dto.SortPageDto;
+import com.gis.cms.entity.po.BbsEntity;
+import com.gis.cms.service.BbsService;
+import com.gis.common.base.aop.WebControllerLog;
+import com.gis.common.util.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.validation.Valid;
+
+/**
+ * Created by owen on 2021/12/28 0008 9:54
+ */
+@Slf4j
+@Api(tags = "论坛-发帖管理")
+@RestController
+@RequestMapping("cms/bbs")
+public class BbsController {
+
+    @Autowired
+    private BbsService entityService;
+
+
+    @ApiOperation(value = "列表")
+    @PostMapping("list")
+    public Result list(@RequestBody BbsPageDto param) {
+        return entityService.search(param);
+    }
+
+    @ApiOperation("删除")
+    @GetMapping("remove/{id}")
+    public Result remove(@PathVariable Long id) {
+        return Result.success(entityService.removeById(id));
+    }
+
+
+
+
+    @ApiOperation("详情")
+    @GetMapping("detail/{id}")
+    public Result<BbsEntity> detail(@PathVariable Long id) {
+        return Result.success(entityService.getById(id));
+    }
+
+    @ApiOperation(value = "审核", notes = "status: 1:审核不通过, 2:审核通过")
+    @GetMapping(value = "audit/{id}/{status}")
+    public Result<BbsEntity> audit(@PathVariable Integer status, @PathVariable Long id) {
+        entityService.updateAudit(id, status);
+        return Result.success();
+    }
+
+
+
+
+
+
+
+
+
+
+}

+ 70 - 0
gis_cms/src/main/java/com/gis/cms/controller/BbsMessageController.java

@@ -0,0 +1,70 @@
+package com.gis.cms.controller;
+
+import com.gis.cms.entity.dto.BbsDto;
+import com.gis.cms.entity.dto.BbsMessageDto;
+import com.gis.cms.entity.dto.BbsMessagePageDto;
+import com.gis.cms.entity.dto.BbsPageDto;
+import com.gis.cms.entity.po.BbsEntity;
+import com.gis.cms.service.BbsMessageService;
+import com.gis.cms.service.BbsService;
+import com.gis.common.base.aop.WebControllerLog;
+import com.gis.common.util.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+
+/**
+ * Created by owen on 2021/12/28 0008 9:54
+ */
+@Slf4j
+@Api(tags = "论坛-留言管理")
+@RestController
+@RequestMapping("cms/bbsMessage")
+public class BbsMessageController {
+
+    @Autowired
+    private BbsMessageService entityService;
+
+
+    @ApiOperation(value = "列表")
+    @PostMapping("list")
+    public Result list(@RequestBody BbsMessagePageDto param) {
+        return entityService.search(param);
+    }
+
+    @ApiOperation("删除")
+    @GetMapping("remove/{id}")
+    public Result remove(@PathVariable Long id) {
+        return Result.success(entityService.removeById(id));
+    }
+
+
+
+
+    @ApiOperation("详情")
+    @GetMapping("detail/{id}")
+    public Result<BbsEntity> detail(@PathVariable Long id) {
+        return Result.success(entityService.getById(id));
+    }
+
+    @ApiOperation(value = "审核", notes = "status: 1:审核不通过, 2:审核通过")
+    @GetMapping(value = "audit/{id}/{status}")
+    public Result<BbsEntity> audit(@PathVariable Integer status, @PathVariable Long id) {
+        entityService.updateAudit(id, status);
+        return Result.success();
+    }
+
+
+
+
+
+
+
+
+
+
+}

+ 83 - 2
gis_cms/src/main/java/com/gis/cms/controller/WebController.java

@@ -1,7 +1,6 @@
 package com.gis.cms.controller;
 
-import com.gis.cms.entity.dto.GoodsPageDto;
-import com.gis.cms.entity.dto.SortPageDto;
+import com.gis.cms.entity.dto.*;
 import com.gis.cms.entity.po.GoodsEntity;
 import com.gis.cms.entity.po.VideoEntity;
 import com.gis.cms.service.*;
@@ -12,8 +11,11 @@ import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.validation.Valid;
+import java.util.Arrays;
+import java.util.List;
 
 
 /**
@@ -46,6 +48,12 @@ public class WebController {
     @Autowired
     StudentService studentService;
 
+    @Autowired
+    BbsService bbsService;
+
+    @Autowired
+    BbsMessageService bbsMessageService;
+
 
 
 
@@ -111,4 +119,77 @@ public class WebController {
         return leaderService.search(param);
     }
 
+    @ApiOperation(value = "论坛-发帖列表")
+    @PostMapping("bbs/list")
+    public Result bbsList(@RequestBody BbsPageDto param) {
+        // 审核通过
+        param.setStatus(2);
+        return bbsService.search(param);
+    }
+
+    @ApiOperation(value = "论坛-发帖")
+    @PostMapping("bbs/save")
+    public Result bbsSave(@Valid @RequestBody BbsDto param) {
+        return bbsService.saveEntity(param);
+    }
+
+    @ApiOperation(value = "论坛-上传图片")
+    @PostMapping("bbs/upload")
+    public Result bbsUpload(MultipartFile file) {
+        return bbsService.upload(file);
+    }
+
+    @ApiOperation(value = "论坛-发帖浏览量")
+    @GetMapping("bbs/visit/{id}")
+    public Result bbsVisit(@PathVariable Long id) {
+         bbsService.addVisit(id);
+        return Result.success();
+    }
+
+    @ApiOperation(value = "论坛-留言")
+    @PostMapping("bbs/message/save")
+    public Result bbsMessage(@Valid @RequestBody BbsMessageDto param) {
+        return bbsMessageService.saveEntity(param);
+    }
+
+    @ApiOperation(value = "论坛-留言列表")
+    @PostMapping("bbs/message/list")
+    public Result bbsMessageList(@RequestBody BbsMessagePageDto param) {
+        return bbsMessageService.search(param);
+    }
+
+    @ApiOperation(value = "论坛-点赞", notes = "类型, bbs:发帖点赞, message:留言点赞")
+    @PostMapping("bbs/like/{type}/{id}")
+    public Result bbsLike(@PathVariable String type, @PathVariable Long id) {
+        List<String> list = Arrays.asList("bbs", "message");
+        if (!list.contains(type)){
+            return Result.failure("输入参数类型非法: " + type);
+        }
+
+        if ("bbs".equals(type)){
+            bbsService.addLike(id);
+        } else {
+            bbsMessageService.addLike(id);
+        }
+
+        return Result.success();
+    }
+
+    @ApiOperation(value = "论坛-踩", notes = "类型, bbs:发帖点赞, message:留言点赞")
+    @PostMapping("bbs/unLike/{type}/{id}")
+    public Result bbsUnLike(@PathVariable String type, @PathVariable Long id) {
+        List<String> list = Arrays.asList("bbs", "message");
+        if (!list.contains(type)) {
+            return Result.failure("输入参数类型非法: " + type);
+        }
+
+        if ("bbs".equals(type)) {
+            bbsService.addUnLike(id);
+        } else {
+            bbsMessageService.addUnLike(id);
+        }
+
+        return Result.success();
+    }
+
 }

+ 28 - 0
gis_cms/src/main/java/com/gis/cms/entity/dto/BbsDto.java

@@ -0,0 +1,28 @@
+package com.gis.cms.entity.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * Created by owen on 2021/12/8 0008 14:34
+ */
+@Data
+public class BbsDto {
+
+
+
+    @NotBlank(message = "标题不能为空")
+    @ApiModelProperty(value = "标题", required = true)
+    private String title;
+
+    @NotBlank(message = "类型不能为空")
+    @ApiModelProperty(value = "类型: scene:数字史馆, school:校园,goods:典藏", required = true)
+    private String type;
+
+    @ApiModelProperty(value = "创建者名")
+    private String creatorName;
+
+
+}

+ 29 - 0
gis_cms/src/main/java/com/gis/cms/entity/dto/BbsMessageDto.java

@@ -0,0 +1,29 @@
+package com.gis.cms.entity.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * Created by owen on 2021/12/8 0008 14:34
+ */
+@Data
+public class BbsMessageDto {
+
+
+
+    @NotBlank(message = "标题不能为空")
+    @ApiModelProperty(value = "标题", required = true)
+    private String title;
+
+    @ApiModelProperty(value = "创建者名")
+    private String creatorName;
+
+    @NotNull(message = "论坛ID不能为空")
+    @ApiModelProperty(value = "论坛ID", required = true)
+    private Long bbsId;
+
+
+}

+ 24 - 0
gis_cms/src/main/java/com/gis/cms/entity/dto/BbsMessagePageDto.java

@@ -0,0 +1,24 @@
+package com.gis.cms.entity.dto;
+
+import com.gis.common.base.entity.dto.PageDateDto;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Created by owen on 2021/12/8 0008 14:34
+ */
+@Data
+public class BbsMessagePageDto extends PageDateDto {
+
+
+
+    @ApiModelProperty(value = "审核状态,0:待审核, 1:审核不通过,2:审核通过")
+    private Integer status;
+
+
+    @ApiModelProperty(value = "论坛ID, 官网使用")
+    private Long bbsId;
+
+
+
+}

+ 23 - 0
gis_cms/src/main/java/com/gis/cms/entity/dto/BbsPageDto.java

@@ -0,0 +1,23 @@
+package com.gis.cms.entity.dto;
+
+import com.gis.common.base.entity.dto.PageDateDto;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * Created by owen on 2021/12/8 0008 14:34
+ */
+@Data
+public class BbsPageDto extends PageDateDto {
+
+
+
+    @ApiModelProperty(value = "审核状态,0:待审核, 1:审核不通过,2:审核通过")
+    private Integer status;
+
+    @ApiModelProperty(value = "类型: scene:数字史馆, school:校园,goods:典藏, 官网使用")
+    private String type;
+
+}

+ 21 - 10
gis_cms/src/main/java/com/gis/cms/entity/po/BbsEntity.java

@@ -1,5 +1,6 @@
 package com.gis.cms.entity.po;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.gis.common.base.entity.po.BaseEntity;
 import io.swagger.annotations.ApiModelProperty;
@@ -17,20 +18,30 @@ public class BbsEntity extends BaseEntity implements Serializable {
     private static final long serialVersionUID = -8093446477843493946L;
 
 
-    @ApiModelProperty(value = "留言")
-    private String content;
+    @ApiModelProperty(value = "内容")
+    private String title;
 
-    @ApiModelProperty(value = "父级id")
-    private Long parentId;
-
-//    @ApiModelProperty(value = "是否显示,1:是, 0:否")
-//    private Integer display;
+    @ApiModelProperty(value = "类型: scene:数字史馆, school:校园,goods:典藏")
+    private String type;
 
-    @ApiModelProperty(value = "状态:0:待审核(默认), 1:不通过, 2:通过")
+    @ApiModelProperty(value = "审核状态,0:待审核, 1:审核不通过,2:审核通过")
     private Integer status;
 
-    @ApiModelProperty(value = "类型: 0:主题, 1:回帖")
-    private String type;
+    @ApiModelProperty(value = "创建者名")
+    private String creatorName;
+
+    @ApiModelProperty(value = "点赞")
+    private Integer like;
+
+    @ApiModelProperty(value = "踩")
+    private Integer unLike;
+
+    @ApiModelProperty(value = "浏览量")
+    private Integer visit;
+
+    @TableField(exist  = false)
+    @ApiModelProperty(value = "回复")
+    private Integer reply;
 
 
 

+ 49 - 0
gis_cms/src/main/java/com/gis/cms/entity/po/BbsMessageEntity.java

@@ -0,0 +1,49 @@
+package com.gis.cms.entity.po;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.gis.common.base.entity.po.BaseEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 论坛-留言
+ */
+@Data
+@TableName(value = "tb_bbs_message")
+public class BbsMessageEntity extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 6702168340204665447L;
+
+    @ApiModelProperty(value = "内容")
+    private String title;
+
+    @ApiModelProperty(value = "审核状态,0:待审核, 1:审核不通过,2:审核通过")
+    private Integer status;
+
+    @ApiModelProperty(value = "创建者名")
+    private String creatorName;
+
+    @ApiModelProperty(value = "论坛ID")
+    private Long bbsId;
+
+    @ApiModelProperty(value = "点赞")
+    private Integer like;
+
+    @ApiModelProperty(value = "踩")
+    private Integer unLike;
+
+
+
+
+
+
+
+
+
+
+
+
+
+}

+ 34 - 0
gis_cms/src/main/java/com/gis/cms/mapper/BbsMapper.java

@@ -0,0 +1,34 @@
+package com.gis.cms.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.gis.cms.entity.dto.SortPageDto;
+import com.gis.cms.entity.po.BbsEntity;
+import com.gis.cms.entity.po.ImgEntity;
+import com.gis.cms.mapper.provider.BaseProvider;
+import com.gis.cms.mapper.provider.ImgProvider;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.SelectProvider;
+import org.apache.ibatis.annotations.Update;
+import org.springframework.stereotype.Component;
+
+@Component
+@Mapper
+public interface BbsMapper extends BaseMapper<BbsEntity> {
+
+    @Update("update tb_bbs set status = #{status} , update_time = NOW() where is_delete=0 and id = #{id} ")
+    void updateAudit(Long id, Integer status);
+
+    @SelectProvider(type = BaseProvider.class, method = "selectSql")
+    IPage<BbsEntity> pageSearchSql(String sql, IPage<BbsEntity> page);
+
+    @Update("update tb_bbs set like=like+1 , update_time = NOW() where is_delete=0 and id = #{id} ")
+    void addLike(Long id);
+
+    @Update("update tb_bbs set un_like=un_like+1 , update_time = NOW() where is_delete=0 and id = #{id} ")
+    void addUnLike(Long id);
+
+    @Update("update tb_bbs set visit=visit+1 , update_time = NOW() where is_delete=0 and id = #{id} ")
+    void addVisit(Long id);
+}

+ 30 - 0
gis_cms/src/main/java/com/gis/cms/mapper/BbsMessageMapper.java

@@ -0,0 +1,30 @@
+package com.gis.cms.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.gis.cms.entity.po.BbsEntity;
+import com.gis.cms.entity.po.BbsMessageEntity;
+import com.gis.cms.mapper.provider.BaseProvider;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.SelectProvider;
+import org.apache.ibatis.annotations.Update;
+import org.springframework.stereotype.Component;
+
+@Component
+@Mapper
+public interface BbsMessageMapper extends BaseMapper<BbsMessageEntity> {
+
+    @Update("update tb_bbs_message set status = #{status} , update_time = NOW() where is_delete=0 and id = #{id} ")
+    void updateAudit(Long id, Integer status);
+
+    @SelectProvider(type = BaseProvider.class, method = "selectSql")
+    IPage<BbsMessageEntity> pageSearchSql(String sql, IPage<BbsMessageEntity> page);
+
+    @Update("update tb_bbs_message set like=like+1 , update_time = NOW() where is_delete=0 and id = #{id} ")
+    void addLike(Long id);
+
+    @Update("update tb_bbs_message set un_like=un_like+1 , update_time = NOW() where is_delete=0 and id = #{id} ")
+    void addUnLike(Long id);
+
+}

+ 17 - 0
gis_cms/src/main/java/com/gis/cms/mapper/provider/BaseProvider.java

@@ -0,0 +1,17 @@
+package com.gis.cms.mapper.provider;
+
+
+
+/**
+ * Created by owen on 2022/2/9.
+ */
+public class BaseProvider {
+
+    public String selectSql(String sql){
+
+        return sql;
+    }
+
+
+
+}

+ 28 - 0
gis_cms/src/main/java/com/gis/cms/service/BbsMessageService.java

@@ -0,0 +1,28 @@
+package com.gis.cms.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gis.cms.entity.dto.BbsDto;
+import com.gis.cms.entity.dto.BbsMessageDto;
+import com.gis.cms.entity.dto.BbsMessagePageDto;
+import com.gis.cms.entity.dto.BbsPageDto;
+import com.gis.cms.entity.po.BbsEntity;
+import com.gis.cms.entity.po.BbsMessageEntity;
+import com.gis.common.util.Result;
+
+
+/**
+ * Created by owen on 2021/12/8 0011 16:14
+ */
+public interface BbsMessageService extends IService<BbsMessageEntity> {
+
+    Result saveEntity(BbsMessageDto param);
+
+    Result search(BbsMessagePageDto param);
+
+    void updateAudit(Long id, Integer status);
+
+    void addLike(Long id);
+
+    void addUnLike(Long id);
+}

+ 33 - 0
gis_cms/src/main/java/com/gis/cms/service/BbsService.java

@@ -0,0 +1,33 @@
+package com.gis.cms.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gis.cms.entity.dto.BbsDto;
+import com.gis.cms.entity.dto.BbsPageDto;
+import com.gis.cms.entity.dto.ImgDto;
+import com.gis.cms.entity.dto.SortPageDto;
+import com.gis.cms.entity.po.BbsEntity;
+import com.gis.cms.entity.po.ImgEntity;
+import com.gis.common.util.Result;
+import org.springframework.web.multipart.MultipartFile;
+
+
+/**
+ * Created by owen on 2021/12/8 0011 16:14
+ */
+public interface BbsService extends IService<BbsEntity> {
+
+    Result saveEntity(BbsDto param);
+
+    Result search(BbsPageDto param);
+
+    void updateAudit(Long id, Integer status);
+
+    void addLike(Long id);
+
+    void addUnLike(Long id);
+
+    void addVisit(Long id);
+
+    Result upload(MultipartFile file);
+}

+ 112 - 0
gis_cms/src/main/java/com/gis/cms/service/impl/BbsMessageServiceImpl.java

@@ -0,0 +1,112 @@
+package com.gis.cms.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gis.cms.entity.dto.BbsDto;
+import com.gis.cms.entity.dto.BbsMessageDto;
+import com.gis.cms.entity.dto.BbsMessagePageDto;
+import com.gis.cms.entity.dto.BbsPageDto;
+import com.gis.cms.entity.po.BbsEntity;
+import com.gis.cms.entity.po.BbsMessageEntity;
+import com.gis.cms.mapper.BbsMapper;
+import com.gis.cms.mapper.BbsMessageMapper;
+import com.gis.cms.service.BbsMessageService;
+import com.gis.cms.service.BbsService;
+import com.gis.common.base.exception.BaseRuntimeException;
+import com.gis.common.util.BaseUtil;
+import com.gis.common.util.RegexUtil;
+import com.gis.common.util.Result;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.Arrays;
+import java.util.List;
+
+
+/**
+ * Created by owen on 2020/3/11 0011 16:16
+ */
+@Slf4j
+@Service
+public class BbsMessageServiceImpl extends ServiceImpl<BbsMessageMapper, BbsMessageEntity> implements BbsMessageService {
+
+
+
+
+
+    @Override
+    public Result search(BbsMessagePageDto param) {
+        BaseUtil.startPage(param);
+        IPage<BbsMessageEntity> page = new Page<>(param.getPageNum() , param.getPageSize());
+
+        StringBuffer sql = new StringBuffer();
+        sql.append("SELECT *  from tb_bbs_message where is_delete=0 ");
+        Integer status = param.getStatus();
+        if (status!=null){
+            sql.append(" and status=").append(status);
+        }
+
+        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("'");
+        }
+
+        Long bbsId = param.getBbsId();
+        if (bbsId != null){
+            sql.append(" and bbs_id=").append(bbsId);
+        }
+
+        String searchKey = param.getSearchKey();
+        if (StringUtils.isNotBlank(searchKey)){
+            searchKey = RegexUtil.sqlReplaceSpecialStr(searchKey);
+            sql.append(" and title like '%").append(searchKey).append("%'");
+        }
+
+        log.info("sql: {}", sql.toString());
+
+        IPage<BbsMessageEntity> result = getBaseMapper().pageSearchSql(sql.toString(), page);
+        return Result.success(result);
+    }
+
+    @Override
+    public void updateAudit(Long id, Integer status) {
+        List<Integer> list = Arrays.asList(1, 2);
+        if (!list.contains(status)){
+            throw new BaseRuntimeException("审核参数非法:" + status);
+        }
+        getBaseMapper().updateAudit(id, status);
+    }
+
+    @Override
+    public void addLike(Long id) {
+        getBaseMapper().addLike(id);
+    }
+
+    @Override
+    public void addUnLike(Long id) {
+        getBaseMapper().addUnLike(id);
+    }
+
+
+    @Override
+    public Result saveEntity(BbsMessageDto param) {
+        BbsMessageEntity entity = new BbsMessageEntity();
+        BeanUtils.copyProperties(param, entity);
+        String creatorName = param.getCreatorName();
+        if (StringUtils.isBlank(creatorName)){
+            entity.setCreatorName("匿名用户");
+        }
+        entity.setStatus(0);
+        this.saveOrUpdate(entity);
+        return Result.success();
+    }
+
+
+
+
+
+
+}

+ 135 - 0
gis_cms/src/main/java/com/gis/cms/service/impl/BbsServiceImpl.java

@@ -0,0 +1,135 @@
+package com.gis.cms.service.impl;
+
+import cn.hutool.core.io.FileUtil;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gis.cms.entity.dto.BbsDto;
+import com.gis.cms.entity.dto.BbsPageDto;
+import com.gis.cms.entity.dto.SortPageDto;
+import com.gis.cms.entity.po.BbsEntity;
+import com.gis.cms.mapper.BbsMapper;
+import com.gis.cms.service.BbsService;
+import com.gis.common.base.exception.BaseRuntimeException;
+import com.gis.common.base.service.impl.IBaseService;
+import com.gis.common.util.BaseUtil;
+import com.gis.common.util.FileUtils;
+import com.gis.common.util.RegexUtil;
+import com.gis.common.util.Result;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * Created by owen on 2020/3/11 0011 16:16
+ */
+@Slf4j
+@Service
+public class BbsServiceImpl extends ServiceImpl<BbsMapper, BbsEntity> implements BbsService {
+
+
+    @Autowired
+    FileUtils fileUtils;
+
+
+    /**
+     * 包含统计
+     * @param param
+     * @return
+     */
+    @Override
+    public Result search(BbsPageDto param) {
+        BaseUtil.startPage(param);
+        IPage<BbsEntity> page = new Page<>(param.getPageNum() , param.getPageSize());
+
+        StringBuffer sql = new StringBuffer();
+        sql.append("SELECT a.*, COUNT(case when b.status=2 and b.is_delete=0 then 1 end) reply  from tb_bbs a left join tb_bbs_message b on b.bbs_id=a.id where a.is_delete=0 ");
+        Integer status = param.getStatus();
+        if (status!=null){
+            sql.append(" and a.status=").append(status);
+        }
+
+        if (StringUtils.isNotBlank(param.getStartTime()) && StringUtils.isNotBlank(param.getEndTime())) {
+            sql.append(" and a.create_time >= ").append("'").append(param.getStartTime()).append("'");
+            sql.append(" and a.create_time <= ").append("'").append(param.getEndTime()).append("'");
+        }
+
+        String type = param.getType();
+        if (StringUtils.isNotBlank(type)){
+            sql.append(" and a.type='").append(type).append("'");
+        }
+
+        String searchKey = param.getSearchKey();
+        if (StringUtils.isNotBlank(searchKey)){
+            searchKey = RegexUtil.sqlReplaceSpecialStr(searchKey);
+            sql.append(" and a.title like '%").append(searchKey).append("%'");
+        }
+
+        sql.append(" GROUP BY a.id");
+        log.info("sql: {}", sql.toString());
+
+        IPage<BbsEntity> result = getBaseMapper().pageSearchSql(sql.toString(), page);
+        return Result.success(result);
+    }
+
+
+
+    @Override
+    public void updateAudit(Long id, Integer status) {
+        List<Integer> list = Arrays.asList(1, 2);
+        if (!list.contains(status)){
+            throw new BaseRuntimeException("审核参数非法:" + status);
+        }
+        getBaseMapper().updateAudit(id, status);
+    }
+
+    @Override
+    public void addLike(Long id) {
+        getBaseMapper().addLike(id);
+    }
+
+    @Override
+    public void addUnLike(Long id) {
+        getBaseMapper().addUnLike(id);
+    }
+
+    @Override
+    public void addVisit(Long id) {
+        getBaseMapper().addVisit(id);
+    }
+
+    @Override
+    public Result upload(MultipartFile file) {
+        // 只上传图片
+        Map<String, Object> map = fileUtils.uploadMap(file, "/bbs", false);
+        return Result.success(map);
+    }
+
+
+    @Override
+    public Result saveEntity(BbsDto param) {
+        BbsEntity entity = new BbsEntity();
+        BeanUtils.copyProperties(param, entity);
+        String creatorName = param.getCreatorName();
+        if (StringUtils.isBlank(creatorName)){
+            entity.setCreatorName("匿名用户");
+        }
+        entity.setStatus(0);
+        this.saveOrUpdate(entity);
+        return Result.success();
+    }
+
+
+
+
+
+
+}

+ 1 - 1
gis_common/pom.xml

@@ -3,7 +3,7 @@
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <parent>
-        <artifactId>smart_shezhen_pengcheng</artifactId>
+        <artifactId>army_chongqing_college</artifactId>
         <groupId>com.gis</groupId>
         <version>1.0.0</version>
     </parent>

+ 1 - 0
gis_common/src/main/java/com/gis/common/base/exception/BaseRuntimeException.java

@@ -8,6 +8,7 @@ public class BaseRuntimeException extends RuntimeException{
 
     public BaseRuntimeException(String msg){
         super(msg);
+        this.code = -1;
         this.msg = msg;
     }
 

+ 24 - 0
gis_common/src/main/java/com/gis/common/util/RegexUtil.java

@@ -15,6 +15,10 @@ import java.util.List;
 @Slf4j
 public class RegexUtil {
 
+    // 需要过滤的特殊字符
+    static String [] specialSql = {"%","or","=","and","truncate","delete","update","exec"};
+
+
     /** 处理特殊符号,变空值*/
     public static String specificSymbol(String str){
 
@@ -50,6 +54,26 @@ public class RegexUtil {
 
     }
 
+    /**
+     * sql 过滤特殊字符
+     * @param str
+     * @return
+     */
+    public static String sqlReplaceSpecialStr(String str){
+        str = StringUtils.trim(str);
+        str = str.toLowerCase();
+        for (String s : specialSql) {
+            if (str.contains(s)) {
+                str = str.replaceAll(s, "");
+            }
+        }
+        return str;
+    }
+
+
+
+
+
 
 
     public static void main(String[] args) {