|
@@ -8,9 +8,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
import java.util.Comparator;
|
|
|
import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -41,42 +41,55 @@ public class FaqServiceImpl extends ServiceImpl<FaqMapper, Faq> implements FaqSe
|
|
|
*/
|
|
|
public RestResponse add(Faq faq) {
|
|
|
List<Faq> faqs = this.list(new QueryWrapper<Faq>()
|
|
|
- .select("id", "serial")
|
|
|
- .eq("type", faq.getType())
|
|
|
+ .select("serial")
|
|
|
.eq("parent_id", faq.getParentId())
|
|
|
.orderByDesc("serial"));
|
|
|
- faq.setSerial(faqs.size() + 1);
|
|
|
+ if (faqs.isEmpty()) {
|
|
|
+ faq.setSerial(1);
|
|
|
+ } else {
|
|
|
+ faq.setSerial(faqs.get(0).getSerial() + 1);
|
|
|
+ }
|
|
|
if (this.save(faq)) {
|
|
|
return RestResponse.success(null, "成功");
|
|
|
}
|
|
|
return RestResponse.fail();
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 删除id及id下的所有记录
|
|
|
+ *
|
|
|
+ * @param id 要删除的顶级id
|
|
|
+ * @return 操作结果
|
|
|
+ */
|
|
|
public RestResponse delete(Long id) {
|
|
|
- List<Long> ids = new ArrayList<>();
|
|
|
List<Faq> faqs = this.list(new QueryWrapper<Faq>().select("id", "parent_id"));
|
|
|
- this.ids(id, faqs, ids);
|
|
|
+ removeFaqs(id, faqs);
|
|
|
+ List<Long> ids = faqs.stream()
|
|
|
+ //保留序号为-1的记录
|
|
|
+ .filter(faq -> faq.getSerial().equals(-1))
|
|
|
+ //只获取Id字段
|
|
|
+ .map(Faq::getId)
|
|
|
+ //转数组返回
|
|
|
+ .collect(Collectors.toList());
|
|
|
ids.add(id);
|
|
|
- if (this.removeByIds(ids)) {
|
|
|
- return RestResponse.success(null, "成功");
|
|
|
- }
|
|
|
- return RestResponse.fail();
|
|
|
+ this.removeByIds(ids);
|
|
|
+ return RestResponse.success(ids, "成功");
|
|
|
}
|
|
|
|
|
|
- private void ids(Long id, List<Faq> faqs, List<Long> ids) {
|
|
|
- List<Long> childIds = new ArrayList<>();
|
|
|
- //遍历常见问题列表
|
|
|
+ /**
|
|
|
+ * 将faqs中要删除的做上标记,setSerial(-1)
|
|
|
+ *
|
|
|
+ * @param id 要删除的顶级id
|
|
|
+ * @param faqs 常见问题列表
|
|
|
+ */
|
|
|
+ public void removeFaqs(Long id, List<Faq> faqs) {
|
|
|
for (Faq faq : faqs) {
|
|
|
- //如果是要删除id下的子id
|
|
|
if (id.equals(faq.getParentId())) {
|
|
|
- //就把id标记删除
|
|
|
- childIds.add(faq.getId());
|
|
|
- //然后再遍历这个子id,看有没有符合的id要标记删除,并将要删除的id列表传进去
|
|
|
- this.ids(faq.getId(), faqs, ids);
|
|
|
+ //要删除的记录,把序号标记为-1
|
|
|
+ faq.setSerial(-1);
|
|
|
+ this.removeFaqs(faq.getId(), faqs);
|
|
|
}
|
|
|
}
|
|
|
- //把要删除的子id记录到ids列表里
|
|
|
- ids.addAll(childIds);
|
|
|
}
|
|
|
|
|
|
//type 1上移 0下移
|
|
@@ -107,13 +120,11 @@ public class FaqServiceImpl extends ServiceImpl<FaqMapper, Faq> implements FaqSe
|
|
|
}
|
|
|
|
|
|
private boolean upOrDown(Faq byId, List<Faq> faqs) {
|
|
|
- System.out.println(faqs);
|
|
|
Faq f = new Faq();
|
|
|
for (Faq faq : faqs) {
|
|
|
if (faq.getSerial().equals(byId.getSerial())) {
|
|
|
- Integer serial = f.getSerial();
|
|
|
f.setSerial(byId.getSerial());
|
|
|
- byId.setSerial(serial);
|
|
|
+ byId.setSerial(f.getSerial());
|
|
|
if (this.updateById(byId) && this.updateById(f)) {
|
|
|
return true;
|
|
|
}
|