孙永军 2 years ago
parent
commit
4a0755d1e1

+ 20 - 4
src/main/java/com/sxtvs/open/api/clue/controller/ClueController.java

@@ -4,14 +4,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.sxtvs.open.api.clue.dto.ClueDTO;
 import com.sxtvs.open.api.clue.dto.VerifyDTO;
 import com.sxtvs.open.api.clue.entity.Clue;
+import com.sxtvs.open.api.clue.entity.ClueInfo;
 import com.sxtvs.open.api.clue.entity.ClueReply;
 import com.sxtvs.open.api.clue.service.impl.ClueReplyServiceImpl;
 import com.sxtvs.open.api.clue.service.impl.ClueServiceImpl;
+import com.sxtvs.open.core.auth.LoginRequired;
 import jakarta.annotation.Resource;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
@@ -34,22 +34,38 @@ public class ClueController {
     private ClueReplyServiceImpl clueReplyService;
 
     @RequestMapping("list")
+    @LoginRequired
     public IPage<Clue> ls(@RequestBody ClueDTO clueDTO){
         return clueService.cluePage(clueDTO);
     }
 
     @RequestMapping("store")
+    @LoginRequired
     public void store(@RequestBody Clue clue){
         clueService.store(clue);
     }
 
     @RequestMapping("verify")
+    @LoginRequired
     public void verify(@Validated @RequestBody VerifyDTO verifyDTO){
         clueService.verify(verifyDTO);
     }
 
     @RequestMapping("reply")
+    @LoginRequired
     public void reply(@RequestBody ClueReply clueReply){
-        clueReplyService.reply(clueReply);
+        clueService.reply(clueReply);
+    }
+
+    @GetMapping("delete")
+    @LoginRequired
+    public void delete(@RequestParam("id") Long clueId){
+        clueService.delete(clueId);
+    }
+
+    @GetMapping("info")
+    @LoginRequired
+    public ClueInfo info(@RequestParam("id") Long clueId){
+        return clueService.info(clueId);
     }
 }

+ 1 - 1
src/main/java/com/sxtvs/open/api/clue/entity/Clue.java

@@ -25,7 +25,7 @@ public class Clue implements Serializable {
     /**
      * 线索id
      */
-    @TableId(type = IdType.AUTO)
+    @TableId(value = "id", type = IdType.ASSIGN_ID)
     private Long id;
 
     private Long siteId;

+ 1 - 1
src/main/java/com/sxtvs/open/api/clue/entity/ClueReply.java

@@ -23,7 +23,7 @@ public class ClueReply implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
-    @TableId(value = "id", type = IdType.AUTO)
+    @TableId(value = "id", type = IdType.ASSIGN_ID)
     private Long id;
 
     /**

+ 1 - 20
src/main/java/com/sxtvs/open/api/clue/service/impl/ClueReplyServiceImpl.java

@@ -1,15 +1,10 @@
 package com.sxtvs.open.api.clue.service.impl;
 
-import com.sxtvs.open.api.clue.entity.Clue;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.sxtvs.open.api.clue.entity.ClueReply;
 import com.sxtvs.open.api.clue.mapper.ClueReplyMapper;
 import com.sxtvs.open.api.clue.service.IClueReplyService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import jakarta.annotation.Resource;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.time.LocalDateTime;
 
 /**
  * <p>
@@ -22,18 +17,4 @@ import java.time.LocalDateTime;
 @Service
 public class ClueReplyServiceImpl extends ServiceImpl<ClueReplyMapper, ClueReply> implements IClueReplyService {
 
-    @Resource
-    private ClueServiceImpl clueService;
-
-    @Transactional
-    public void reply(ClueReply clueReply){
-        Clue clue = clueService.getById(clueReply.getClueId());
-        clue.setReplyFlag(1);
-        clue.setReplyTime(LocalDateTime.now());
-        clueService.updateById(clue);
-        clueReply.setId(null);
-        clueReply.setReplyTime(LocalDateTime.now());
-        clueReply.setModifyTime(LocalDateTime.now());
-        save(clueReply);
-    }
 }

+ 46 - 2
src/main/java/com/sxtvs/open/api/clue/service/impl/ClueServiceImpl.java

@@ -1,21 +1,26 @@
 package com.sxtvs.open.api.clue.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.sxtvs.open.api.clue.dto.ClueDTO;
 import com.sxtvs.open.api.clue.dto.VerifyDTO;
 import com.sxtvs.open.api.clue.entity.Clue;
+import com.sxtvs.open.api.clue.entity.ClueInfo;
+import com.sxtvs.open.api.clue.entity.ClueReply;
 import com.sxtvs.open.api.clue.mapper.ClueMapper;
 import com.sxtvs.open.api.clue.service.IClueService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.sxtvs.open.core.advice.BizException;
+import jakarta.annotation.Resource;
 import org.apache.http.util.TextUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
-import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -28,6 +33,9 @@ import java.util.List;
 @Service
 public class ClueServiceImpl extends ServiceImpl<ClueMapper, Clue> implements IClueService {
 
+    @Resource
+    private ClueReplyServiceImpl clueReplyService;
+
     public IPage<Clue> cluePage(ClueDTO clueDTO){
 
         LambdaQueryWrapper<Clue> wrapper = Wrappers.lambdaQuery();
@@ -35,6 +43,7 @@ public class ClueServiceImpl extends ServiceImpl<ClueMapper, Clue> implements IC
         return baseMapper.selectPage(new Page<>(clueDTO.getPage(), clueDTO.getSize()), wrapper.ge(clueDTO.getStart() != null, Clue::getAddTime, clueDTO.getStart())
                 .le(clueDTO.getEnd() != null, Clue::getAddTime, clueDTO.getEnd())
                 .like(!TextUtils.isEmpty(clueDTO.getTitle()), Clue::getTitle, "%" + clueDTO.getTitle() + "%")
+                .eq(Clue::getValidity, (byte) 1)
                 .orderByDesc(Clue::getId)
         );
     }
@@ -55,4 +64,39 @@ public class ClueServiceImpl extends ServiceImpl<ClueMapper, Clue> implements IC
         clue.setStatus(verifyDTO.getStatus());
         updateById(clue);
     }
+
+    @Transactional
+    public void reply(ClueReply clueReply){
+        Clue clue = getById(clueReply.getClueId());
+        clue.setReplyFlag(1);
+        clue.setReplyTime(LocalDateTime.now());
+        updateById(clue);
+        clueReply.setId(null);
+        clueReply.setReplyTime(LocalDateTime.now());
+        clueReply.setModifyTime(LocalDateTime.now());
+        clueReplyService.save(clueReply);
+    }
+
+    @Transactional
+    public void delete(Long id){
+        Clue clue = getById(id);
+        if(null == clue){
+            throw new BizException(40001, "不存在的信息");
+        }
+        clue.setValidity((byte) 0);
+        updateById(clue);
+        clueReplyService.updateBatchById(
+                clueReplyService.lambdaQuery().eq(ClueReply::getClueId, clue.getId()).list().stream()
+                        .peek(data -> data.setStatus(-1)).collect(Collectors.toList())
+        );
+    }
+
+    public ClueInfo info(Long id){
+        Clue clue = getById(id);
+        ClueInfo info = new ClueInfo();
+        BeanUtil.copyProperties(clue, info);
+        info.setClueReplies(clueReplyService.lambdaQuery().eq(ClueReply::getClueId,clue.getId()).list());
+        return info;
+    }
+
 }

+ 12 - 3
src/test/data-service.http

@@ -91,14 +91,18 @@ Content-Type: application/json;charset=UTF-8
 
 ### 报料列表
 POST http://localhost/clue/list
+Authorization: 518180cdebf3630ab4ba0e88aa75d984
 Content-Type: application/json
 
 {
 "start": "2023-03-01",
-  "end": "2023-03-15",
-  "title": "政府"
+  "end": "2023-03-15"
 }
 
+### 报料详情
+GET http://localhost/clue/info?id=7613888
+Authorization: 518180cdebf3630ab4ba0e88aa75d984
+
 ### 审核
 POST http://localhost/clue/verify
 Content-Type: application/json
@@ -134,4 +138,9 @@ Content-Type: application/json
   "clueId": 7613888,
   "content": "哈哈哈哈哈哈哈",
   "userName": "鹅鹅鹅"
-}
+}
+
+
+### 删除
+GET http://localhost/clue/delete?id=7614028
+Authorization: 518180cdebf3630ab4ba0e88aa75d984