Bladeren bron

新增法律问题场景接口

zhangchen 1 maand geleden
bovenliggende
commit
ccc95b7184

+ 137 - 0
alien-lawyer/src/main/java/shop/alien/lawyer/controller/LawyerLegalProblemScenarioController.java

@@ -0,0 +1,137 @@
+package shop.alien.lawyer.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import io.swagger.annotations.*;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+import shop.alien.entity.result.R;
+import shop.alien.entity.store.LawyerLegalProblemScenario;
+import shop.alien.lawyer.service.LawyerLegalProblemScenarioService;
+import shop.alien.util.myBaticsPlus.QueryBuilder;
+
+import java.util.List;
+
+/**
+ * 法律问题场景 前端控制器
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Slf4j
+@Api(tags = {"律师平台-法律问题场景"})
+@ApiSort(11)
+@CrossOrigin
+@RestController
+@RequestMapping("/lawyer/legalProblemScenar")
+@RequiredArgsConstructor
+public class LawyerLegalProblemScenarioController {
+
+    private final LawyerLegalProblemScenarioService lawyerLegalProblemScenarioService;
+
+    @ApiOperation("新增法律问题场景")
+    @ApiOperationSupport(order = 1)
+    @PostMapping("/addLawyerLegalProblemScenar")
+    public R<LawyerLegalProblemScenario> addLawyerLegalProblemScenar(@RequestBody LawyerLegalProblemScenario lawyerLegalProblemScenario) {
+        log.info("LawyerLegalProblemScenarioController.addLawyerLegalProblemScenar?lawyerLegalProblemScenario={}", lawyerLegalProblemScenario);
+        return lawyerLegalProblemScenarioService.addLawyerLegalProblemScenario(lawyerLegalProblemScenario);
+    }
+
+    @ApiOperation("编辑法律问题场景")
+    @ApiOperationSupport(order = 2)
+    @PostMapping("/editLawyerLegalProblemScenar")
+    public R<LawyerLegalProblemScenario> editLawyerLegalProblemScenar(@RequestBody LawyerLegalProblemScenario lawyerLegalProblemScenario) {
+        log.info("LawyerLegalProblemScenarioController.editLawyerLegalProblemScenar?lawyerLegalProblemScenario={}", lawyerLegalProblemScenario);
+        return lawyerLegalProblemScenarioService.editLawyerLegalProblemScenario(lawyerLegalProblemScenario);
+    }
+
+    @ApiOperation("删除法律问题场景")
+    @ApiOperationSupport(order = 3)
+    @DeleteMapping("/deleteLawyerLegalProblemScenar")
+    public R<Boolean> deleteLawyerLegalProblemScenar(@RequestParam(value = "id") Integer id) {
+        log.info("LawyerLegalProblemScenarioController.deleteLawyerLegalProblemScenar?id={}", id);
+        return lawyerLegalProblemScenarioService.deleteLawyerLegalProblemScenario(id);
+    }
+
+    @ApiOperation("保存或更新法律问题场景")
+    @ApiOperationSupport(order = 4)
+    @PostMapping("/saveOrUpdate")
+    public R<LawyerLegalProblemScenario> saveOrUpdate(@RequestBody LawyerLegalProblemScenario lawyerLegalProblemScenario) {
+        log.info("LawyerLegalProblemScenarioController.saveOrUpdate?lawyerLegalProblemScenario={}", lawyerLegalProblemScenario);
+        boolean result = lawyerLegalProblemScenarioService.saveOrUpdate(lawyerLegalProblemScenario);
+        if (result) {
+            return R.data(lawyerLegalProblemScenario);
+        }
+        return R.fail("操作失败");
+    }
+
+    @ApiOperation("通用列表查询")
+    @ApiOperationSupport(order = 5)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "主键", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "code", value = "编号", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "name", value = "名称(支持模糊查询)", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "level", value = "问题场景层级", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "parentId", value = "父类主键", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "parentCode", value = "父类编号", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "status", value = "状态, 0:禁用, 1:启用", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "createdTime_Start", value = "创建时间开始(范围查询)", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "createdTime_End", value = "创建时间结束(范围查询)", dataType = "String", paramType = "query")
+    })
+    @GetMapping("/getList")
+    public R<List<LawyerLegalProblemScenario>> getList(@ModelAttribute LawyerLegalProblemScenario lawyerLegalProblemScenario) {
+        log.info("LawyerLegalProblemScenarioController.getList?lawyerLegalProblemScenario={}", lawyerLegalProblemScenario);
+        // 使用 QueryBuilder 工具类进行列表查询
+        List<LawyerLegalProblemScenario> list = QueryBuilder.of(lawyerLegalProblemScenario)
+                .likeFields("name")  // 指定 name 字段使用模糊查询,其他字段使用等值查询
+                .build()
+                .list(lawyerLegalProblemScenarioService);
+        return R.data(list);
+    }
+
+    @ApiOperation("通用分页查询")
+    @ApiOperationSupport(order = 6)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "page", value = "页数(默认1)", dataType = "int", paramType = "query"),
+            @ApiImplicitParam(name = "size", value = "页容(默认10)", dataType = "int", paramType = "query"),
+            @ApiImplicitParam(name = "id", value = "主键", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "code", value = "编号", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "name", value = "名称(支持模糊查询)", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "level", value = "问题场景层级", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "parentId", value = "父类主键", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "parentCode", value = "父类编号", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "status", value = "状态, 0:禁用, 1:启用", dataType = "Integer", paramType = "query"),
+            @ApiImplicitParam(name = "createdTime_Start", value = "创建时间开始(范围查询)", dataType = "String", paramType = "query"),
+            @ApiImplicitParam(name = "createdTime_End", value = "创建时间结束(范围查询)", dataType = "String", paramType = "query")
+    })
+    @GetMapping("/getPage")
+    public R<IPage<LawyerLegalProblemScenario>> getPage(@ModelAttribute LawyerLegalProblemScenario lawyerLegalProblemScenario,
+                                                         @RequestParam(defaultValue = "1") int page,
+                                                         @RequestParam(defaultValue = "10") int size) {
+        log.info("LawyerLegalProblemScenarioController.getPage?lawyerLegalProblemScenario={},page={},size={}", 
+                lawyerLegalProblemScenario, page, size);
+        // 参数校验(确保大于0)
+        int pageNum = page > 0 ? page : 1;
+        int pageSize = size > 0 ? size : 10;
+        // 使用 QueryBuilder 工具类进行分页查询
+        IPage<LawyerLegalProblemScenario> pageResult = QueryBuilder.of(lawyerLegalProblemScenario)
+                .likeFields("name")  // 指定 name 字段使用模糊查询,其他字段使用等值查询
+                .page(pageNum, pageSize)
+                .build()
+                .page(lawyerLegalProblemScenarioService);
+        return R.data(pageResult);
+    }
+
+    @ApiOperation("根据一级场景主键获取分类树(包含一级场景及其下所有二级和三级分类)")
+    @ApiOperationSupport(order = 7)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "一级场景主键", dataType = "Integer", paramType = "query", required = true)
+    })
+    @GetMapping("/getCategoryTree")
+    public R<LawyerLegalProblemScenario> getCategoryTree(@RequestParam Integer id) {
+        log.info("LawyerLegalProblemScenarioController.getCategoryTree?id={}", id);
+        return lawyerLegalProblemScenarioService.getCategoryTreeByFirstLevelId(id);
+    }
+
+}
+

+ 47 - 0
alien-lawyer/src/main/java/shop/alien/lawyer/service/LawyerLegalProblemScenarioService.java

@@ -0,0 +1,47 @@
+package shop.alien.lawyer.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import shop.alien.entity.result.R;
+import shop.alien.entity.store.LawyerLegalProblemScenario;
+
+/**
+ * 法律问题场景 服务类
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+public interface LawyerLegalProblemScenarioService extends IService<LawyerLegalProblemScenario> {
+
+    /**
+     * 新增法律问题场景
+     *
+     * @param lawyerLegalProblemScenario 法律问题场景
+     * @return R<LawyerLegalProblemScenar>
+     */
+    R<LawyerLegalProblemScenario> addLawyerLegalProblemScenario(LawyerLegalProblemScenario lawyerLegalProblemScenario);
+
+    /**
+     * 编辑法律问题场景
+     *
+     * @param lawyerLegalProblemScenario 法律问题场景
+     * @return R<LawyerLegalProblemScenar>
+     */
+    R<LawyerLegalProblemScenario> editLawyerLegalProblemScenario(LawyerLegalProblemScenario lawyerLegalProblemScenario);
+
+    /**
+     * 删除法律问题场景
+     *
+     * @param id 主键
+     * @return R<Boolean>
+     */
+    R<Boolean> deleteLawyerLegalProblemScenario(Integer id);
+
+    /**
+     * 根据一级场景主键获取其下所有分类(包括二级和三级分类的树形结构)
+     *
+     * @param id 一级场景主键
+     * @return R<LawyerLegalProblemScenario> 返回一级场景及其完整的树形结构(一级场景的children包含所有二级分类,每个二级分类的children包含其下的三级分类)
+     */
+    R<LawyerLegalProblemScenario> getCategoryTreeByFirstLevelId(Integer id);
+}
+

+ 119 - 0
alien-lawyer/src/main/java/shop/alien/lawyer/service/impl/LawyerLegalProblemScenarioServiceImpl.java

@@ -0,0 +1,119 @@
+package shop.alien.lawyer.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+import shop.alien.entity.result.R;
+import shop.alien.entity.store.LawyerLegalProblemScenario;
+import shop.alien.lawyer.service.LawyerLegalProblemScenarioService;
+import shop.alien.mapper.LawyerLegalProblemScenarioMapper;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 法律问题场景 服务实现类
+ *
+ * @author system
+ * @since 2025-01-XX
+ */
+@Slf4j
+@Transactional
+@Service
+@RequiredArgsConstructor
+public class LawyerLegalProblemScenarioServiceImpl extends ServiceImpl<LawyerLegalProblemScenarioMapper, LawyerLegalProblemScenario> implements LawyerLegalProblemScenarioService {
+
+    @Override
+    public R<LawyerLegalProblemScenario> addLawyerLegalProblemScenario(LawyerLegalProblemScenario LawyerLegalProblemScenario) {
+        log.info("LawyerLegalProblemScenarioServiceImpl.addLawyerLegalProblemScenario?LawyerLegalProblemScenario={}", LawyerLegalProblemScenario);
+        boolean result = this.save(LawyerLegalProblemScenario);
+        if (result) {
+            return R.data(LawyerLegalProblemScenario);
+        }
+        return R.fail("新增失败");
+    }
+
+    @Override
+    public R<LawyerLegalProblemScenario> editLawyerLegalProblemScenario(LawyerLegalProblemScenario LawyerLegalProblemScenario) {
+        log.info("LawyerLegalProblemScenarioServiceImpl.editLawyerLegalProblemScenario?LawyerLegalProblemScenario={}", LawyerLegalProblemScenario);
+        boolean result = this.updateById(LawyerLegalProblemScenario);
+        if (result) {
+            return R.data(LawyerLegalProblemScenario);
+        }
+        return R.fail("修改失败");
+    }
+
+    @Override
+    public R<Boolean> deleteLawyerLegalProblemScenario(Integer id) {
+        log.info("LawyerLegalProblemScenarioServiceImpl.deleteLawyerLegalProblemScenario?id={}", id);
+        boolean result = this.removeById(id);
+        if (result) {
+            return R.success("删除成功");
+        }
+        return R.fail("删除失败");
+    }
+
+    @Override
+    public R<LawyerLegalProblemScenario> getCategoryTreeByFirstLevelId(Integer id) {
+        log.info("LawyerLegalProblemScenarioServiceImpl.getCategoryTreeByFirstLevelId?id={}", id);
+        
+        // 验证一级场景是否存在
+        LawyerLegalProblemScenario firstLevel = this.getById(id);
+        if (firstLevel == null) {
+            return R.fail("一级场景不存在");
+        }
+        if (firstLevel.getLevel() == null || firstLevel.getLevel() != 1) {
+            return R.fail("该主键不是一级场景");
+        }
+
+        // 查询所有二级分类(父ID为一级场景ID,level=2)
+        QueryWrapper<LawyerLegalProblemScenario> secondLevelQuery = new QueryWrapper<>();
+        secondLevelQuery.eq("parent_id", id)
+                .eq("level", 2)
+                .eq("delete_flag", 0)
+                .orderByAsc("sort_order", "id");
+        List<LawyerLegalProblemScenario> secondLevelList = this.list(secondLevelQuery);
+
+        // 如果二级分类为空,直接返回一级场景(children为空列表)
+        if (CollectionUtils.isEmpty(secondLevelList)) {
+            firstLevel.setChildren(new ArrayList<>());
+            return R.data(firstLevel);
+        }
+
+        // 获取所有二级分类的ID列表
+        List<Integer> secondLevelIds = secondLevelList.stream()
+                .map(LawyerLegalProblemScenario::getId)
+                .collect(Collectors.toList());
+
+        // 查询所有三级分类(父ID在二级分类ID列表中,level=3)
+        QueryWrapper<LawyerLegalProblemScenario> thirdLevelQuery = new QueryWrapper<>();
+        thirdLevelQuery.in("parent_id", secondLevelIds)
+                .eq("level", 3)
+                .eq("delete_flag", 0)
+                .orderByAsc("sort_order", "id");
+        List<LawyerLegalProblemScenario> thirdLevelList = this.list(thirdLevelQuery);
+
+        // 将三级分类按父ID分组
+        Map<Integer, List<LawyerLegalProblemScenario>> thirdLevelMap = thirdLevelList.stream()
+                .collect(Collectors.groupingBy(LawyerLegalProblemScenario::getParentId));
+
+        // 为每个二级分类设置其下的三级分类列表
+        for (LawyerLegalProblemScenario secondLevel : secondLevelList) {
+            List<LawyerLegalProblemScenario> children = thirdLevelMap.get(secondLevel.getId());
+            secondLevel.setChildren(children != null ? children : new ArrayList<>());
+        }
+
+        // 将二级分类列表设置到一级场景的children中
+        firstLevel.setChildren(secondLevelList);
+
+        return R.data(firstLevel);
+    }
+
+}
+