Quellcode durchsuchen

民族团结数据

Newspaper vor 3 Monaten
Ursprung
Commit
e307c669ea
74 geänderte Dateien mit 3534 neuen und 121 gelöschten Zeilen
  1. 114 0
      app-admin/src/main/java/com/ruoyi/web/controller/system/DisasterReliefController.java
  2. 11 9
      app-admin/src/main/java/com/ruoyi/web/controller/system/EmploymentController.java
  3. 114 0
      app-admin/src/main/java/com/ruoyi/web/controller/system/EthnicActivitiesController.java
  4. 10 8
      app-admin/src/main/java/com/ruoyi/web/controller/system/IndustryController.java
  5. 114 0
      app-admin/src/main/java/com/ruoyi/web/controller/system/MediaPropagandaController.java
  6. 6 6
      app-admin/src/main/java/com/ruoyi/web/controller/system/ProjectsController.java
  7. 116 0
      app-admin/src/main/java/com/ruoyi/web/controller/system/VillageProfileController.java
  8. 1 1
      app-admin/src/main/java/com/ruoyi/web/controller/system/VillageServiceController.java
  9. 39 0
      app-admin/src/main/java/com/ruoyi/web/domain/dto/Industry/IndustryDataAddRequest.java
  10. 43 0
      app-admin/src/main/java/com/ruoyi/web/domain/dto/Industry/IndustryDataEditRequest.java
  11. 1 1
      app-admin/src/main/java/com/ruoyi/web/domain/dto/Industry/IndustryDataQueryRequest.java
  12. 36 0
      app-admin/src/main/java/com/ruoyi/web/domain/dto/VillageProfile/VillageProfileAddRequest.java
  13. 37 0
      app-admin/src/main/java/com/ruoyi/web/domain/dto/VillageProfile/VillageProfileEditRequest.java
  14. 24 0
      app-admin/src/main/java/com/ruoyi/web/domain/dto/VillageProfile/VillageProfileQueryRequest.java
  15. 37 0
      app-admin/src/main/java/com/ruoyi/web/domain/dto/disaster/DisasterReliefAddRequest.java
  16. 42 0
      app-admin/src/main/java/com/ruoyi/web/domain/dto/disaster/DisasterReliefEditRequest.java
  17. 57 0
      app-admin/src/main/java/com/ruoyi/web/domain/dto/disaster/DisasterReliefQueryRequest.java
  18. 52 0
      app-admin/src/main/java/com/ruoyi/web/domain/dto/employmentData/EmploymentDataAddRequest.java
  19. 55 0
      app-admin/src/main/java/com/ruoyi/web/domain/dto/employmentData/EmploymentDataEditRequest.java
  20. 2 2
      app-admin/src/main/java/com/ruoyi/web/domain/dto/employment/EmploymentDataQueryRequest.java
  21. 51 0
      app-admin/src/main/java/com/ruoyi/web/domain/dto/ethnicActivities/EthnicActivitiesAddRequest.java
  22. 58 0
      app-admin/src/main/java/com/ruoyi/web/domain/dto/ethnicActivities/EthnicActivitiesEditRequest.java
  23. 43 0
      app-admin/src/main/java/com/ruoyi/web/domain/dto/ethnicActivities/EthnicActivitiesQueryRequest.java
  24. 60 0
      app-admin/src/main/java/com/ruoyi/web/domain/dto/mediaPropaganda/MediaPropagandaAddRequest.java
  25. 66 0
      app-admin/src/main/java/com/ruoyi/web/domain/dto/mediaPropaganda/MediaPropagandaEditRequest.java
  26. 51 0
      app-admin/src/main/java/com/ruoyi/web/domain/dto/mediaPropaganda/MediaPropagandaQueryRequest.java
  27. 63 0
      app-admin/src/main/java/com/ruoyi/web/domain/entity/DisasterRelief.java
  28. 83 0
      app-admin/src/main/java/com/ruoyi/web/domain/entity/EthnicActivities.java
  29. 1 1
      app-admin/src/main/java/com/ruoyi/web/domain/entity/IndustryData.java
  30. 78 0
      app-admin/src/main/java/com/ruoyi/web/domain/entity/MediaPropaganda.java
  31. 63 0
      app-admin/src/main/java/com/ruoyi/web/domain/entity/VillageProfile.java
  32. 82 0
      app-admin/src/main/java/com/ruoyi/web/domain/vo/DisasterReliefVO.java
  33. 75 0
      app-admin/src/main/java/com/ruoyi/web/domain/vo/EthnicActivitiesVO.java
  34. 0 4
      app-admin/src/main/java/com/ruoyi/web/domain/vo/FacilityManagement/FacilityVOFactory.java
  35. 0 2
      app-admin/src/main/java/com/ruoyi/web/domain/vo/HouseInfoVO.java
  36. 83 0
      app-admin/src/main/java/com/ruoyi/web/domain/vo/MediaPropagandaVO.java
  37. 2 0
      app-admin/src/main/java/com/ruoyi/web/domain/vo/PersonInfoVO.java
  38. 4 0
      app-admin/src/main/java/com/ruoyi/web/domain/vo/ProjectsVO.java
  39. 55 0
      app-admin/src/main/java/com/ruoyi/web/domain/vo/VillageProfileVO.java
  40. 3 1
      app-admin/src/main/java/com/ruoyi/web/domain/vo/VillageService/VillageServiceVO.java
  41. 16 0
      app-admin/src/main/java/com/ruoyi/web/mapper/DisasterReliefMapper.java
  42. 14 0
      app-admin/src/main/java/com/ruoyi/web/mapper/EthnicActivitiesMapper.java
  43. 16 0
      app-admin/src/main/java/com/ruoyi/web/mapper/MediaPropagandaMapper.java
  44. 22 0
      app-admin/src/main/java/com/ruoyi/web/mapper/VillageProfileMapper.java
  45. 71 0
      app-admin/src/main/java/com/ruoyi/web/service/DisasterReliefService.java
  46. 5 3
      app-admin/src/main/java/com/ruoyi/web/service/EmploymentDataService.java
  47. 28 0
      app-admin/src/main/java/com/ruoyi/web/service/EthnicActivitiesService.java
  48. 4 2
      app-admin/src/main/java/com/ruoyi/web/service/IndustryDataService.java
  49. 71 0
      app-admin/src/main/java/com/ruoyi/web/service/MediaPropagandaService.java
  50. 4 2
      app-admin/src/main/java/com/ruoyi/web/service/ProjectsService.java
  51. 63 0
      app-admin/src/main/java/com/ruoyi/web/service/VillageProfileService.java
  52. 2 1
      app-admin/src/main/java/com/ruoyi/web/service/VillageServiceService.java
  53. 292 0
      app-admin/src/main/java/com/ruoyi/web/service/impl/DisasterReliefServiceImpl.java
  54. 11 9
      app-admin/src/main/java/com/ruoyi/web/service/impl/EmploymentDataServiceImpl.java
  55. 216 0
      app-admin/src/main/java/com/ruoyi/web/service/impl/EthnicActivitiesServiceImpl.java
  56. 70 4
      app-admin/src/main/java/com/ruoyi/web/service/impl/FacilityManagementServiceImpl.java
  57. 2 3
      app-admin/src/main/java/com/ruoyi/web/service/impl/HouseInfoServiceImpl.java
  58. 16 16
      app-admin/src/main/java/com/ruoyi/web/service/impl/IndustryDataServiceImpl.java
  59. 2 2
      app-admin/src/main/java/com/ruoyi/web/service/impl/LocalPolicyServiceImpl.java
  60. 284 0
      app-admin/src/main/java/com/ruoyi/web/service/impl/MediaPropagandaServiceImpl.java
  61. 4 7
      app-admin/src/main/java/com/ruoyi/web/service/impl/PersonInfoServiceImpl.java
  62. 36 6
      app-admin/src/main/java/com/ruoyi/web/service/impl/ProjectsServiceImpl.java
  63. 7 9
      app-admin/src/main/java/com/ruoyi/web/service/impl/SubsidyProjectsServiceImpl.java
  64. 210 0
      app-admin/src/main/java/com/ruoyi/web/service/impl/VillageProfileServiceImpl.java
  65. 8 8
      app-admin/src/main/java/com/ruoyi/web/service/impl/VillageServiceServiceImpl.java
  66. 2 2
      app-admin/src/main/java/com/ruoyi/web/service/impl/VillageSpecialServiceImpl.java
  67. 2 2
      app-admin/src/main/java/com/ruoyi/web/service/impl/VillageTraditionServiceImpl.java
  68. 23 0
      app-admin/src/main/resources/mapper/web/DisasterReliefMapper.xml
  69. 28 0
      app-admin/src/main/resources/mapper/web/EthnicActivitiesMapper.xml
  70. 3 2
      app-admin/src/main/resources/mapper/web/IndustryDataMapper.xml
  71. 27 0
      app-admin/src/main/resources/mapper/web/MediaPropagandaMapper.xml
  72. 23 0
      app-admin/src/main/resources/mapper/web/VillageProfileMapper.xml
  73. 76 8
      sql/sql.sql
  74. 44 0
      webUI/src/api/app/villageProfile.js

+ 114 - 0
app-admin/src/main/java/com/ruoyi/web/controller/system/DisasterReliefController.java

@@ -0,0 +1,114 @@
+package com.ruoyi.web.controller.system;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+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.web.domain.dto.disaster.DisasterReliefAddRequest;
+import com.ruoyi.web.domain.dto.disaster.DisasterReliefEditRequest;
+import com.ruoyi.web.domain.dto.disaster.DisasterReliefQueryRequest;
+import com.ruoyi.web.domain.vo.DisasterReliefVO;
+import com.ruoyi.web.service.DisasterReliefService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+/**
+ * 灾情共度管理控制器
+ */
+@Api("灾情共度管理")
+@RestController
+@RequestMapping("/system/disaster/relief")
+public class DisasterReliefController extends BaseController {
+
+    @Autowired
+    private DisasterReliefService disasterReliefService;
+
+    /**
+     * 添加灾情共度记录
+     *
+     * @param disasterReliefAddRequest 添加请求
+     * @return 结果
+     */
+    @ApiOperation("添加灾情共度记录")
+    @PostMapping("/add")
+    public AjaxResult addDisasterRelief(@RequestBody DisasterReliefAddRequest disasterReliefAddRequest) {
+        if (disasterReliefAddRequest == null) {
+            return error("请求参数为空");
+        }
+        Integer id = disasterReliefService.addDisasterRelief(disasterReliefAddRequest);
+        return success(id);
+    }
+
+    /**
+     * 删除灾情共度记录
+     *
+     * @param paramsMap 参数,包含ids
+     * @return 结果
+     */
+    @ApiOperation("删除灾情共度记录")
+    @PostMapping("/delete")
+    public AjaxResult deleteDisasterRelief(@RequestBody Map<String, String> paramsMap) {
+        String ids = paramsMap.get("ids");
+        if (StrUtil.isBlank(ids)) {
+            return error("请求参数为空");
+        }
+        boolean result = disasterReliefService.deleteDisasterRelief(ids);
+        if (result) {
+            return success("删除成功");
+        }
+        return error("删除失败");
+    }
+
+    /**
+     * 编辑灾情共度记录
+     *
+     * @param disasterReliefEditRequest 编辑请求
+     * @return 结果
+     */
+    @ApiOperation("编辑灾情共度记录")
+    @PostMapping("/edit")
+    public AjaxResult editDisasterRelief(@RequestBody DisasterReliefEditRequest disasterReliefEditRequest) {
+        if (disasterReliefEditRequest == null) {
+            return error("请求参数为空");
+        }
+        disasterReliefService.editDisasterRelief(disasterReliefEditRequest);
+        return success();
+    }
+
+    /**
+     * 根据ID获取灾情共度记录详情
+     *
+     * @param id 记录ID
+     * @return 灾情共度记录详情
+     */
+    @ApiOperation("根据ID获取灾情共度记录详情")
+    @GetMapping("/get")
+    public AjaxResult getDisasterReliefById(@RequestParam int id) {
+        if (ObjectUtil.isEmpty(id)) {
+            return error("请求参数为空");
+        }
+        DisasterReliefVO disasterReliefVO = disasterReliefService.getDisasterReliefById(id);
+        return success(disasterReliefVO);
+    }
+
+    /**
+     * 分页获取灾情共度记录列表
+     *
+     * @param disasterReliefQueryRequest 查询请求
+     * @return 分页结果
+     */
+    @ApiOperation("分页获取灾情共度记录列表")
+    @PostMapping("/list/page")
+    public AjaxResult listDisasterReliefByPage(@RequestBody DisasterReliefQueryRequest disasterReliefQueryRequest) {
+        if (disasterReliefQueryRequest == null) {
+            return error("请求参数为空");
+        }
+        Page<DisasterReliefVO> pageResult = disasterReliefService.getListDisasterReliefByPage(disasterReliefQueryRequest);
+        return success(pageResult);
+    }
+} 

+ 11 - 9
app-admin/src/main/java/com/ruoyi/web/controller/system/EmploymentController.java

@@ -4,7 +4,9 @@ import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.web.domain.dto.employment.EmploymentDataQueryRequest;
+import com.ruoyi.web.domain.dto.employmentData.EmploymentDataAddRequest;
+import com.ruoyi.web.domain.dto.employmentData.EmploymentDataEditRequest;
+import com.ruoyi.web.domain.dto.employmentData.EmploymentDataQueryRequest;
 import com.ruoyi.web.domain.entity.EmploymentData;
 import com.ruoyi.web.service.EmploymentDataService;
 import io.swagger.annotations.Api;
@@ -28,16 +30,16 @@ public class EmploymentController {
     /**
      * 添加就业数据
      *
-     * @param employmentData
+     * @param employmentDataAddRequest
      * @return
      */
     @ApiOperation("添加就业数据")
     @PostMapping("/add")
-    public AjaxResult addEmploymentData(@RequestBody EmploymentData employmentData) {
-        if (employmentData == null) {
+    public AjaxResult addEmploymentData(@RequestBody EmploymentDataAddRequest employmentDataAddRequest) {
+        if (employmentDataAddRequest == null) {
             return error("请求参数为空");
         }
-        Integer id = employmentDataService.addEmploymentData(employmentData);
+        Integer id = employmentDataService.addEmploymentData(employmentDataAddRequest);
         return success(id);
     }
 
@@ -65,16 +67,16 @@ public class EmploymentController {
     /**
      * 编辑就业数据
      *
-     * @param employmentData
+     * @param employmentDataEditRequest
      * @return
      */
     @ApiOperation("编辑就业数据")
     @PostMapping("/edit")
-    public AjaxResult editFacility(@RequestBody EmploymentData employmentData) {
-        if (employmentData == null) {
+    public AjaxResult editFacility(@RequestBody EmploymentDataEditRequest employmentDataEditRequest) {
+        if (employmentDataEditRequest == null) {
             return error("请求参数为空");
         }
-        employmentDataService.editEmploymentData(employmentData);
+        employmentDataService.editEmploymentData(employmentDataEditRequest);
         return AjaxResult.success();
     }
 

+ 114 - 0
app-admin/src/main/java/com/ruoyi/web/controller/system/EthnicActivitiesController.java

@@ -0,0 +1,114 @@
+package com.ruoyi.web.controller.system;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.web.domain.dto.ethnicActivities.EthnicActivitiesAddRequest;
+import com.ruoyi.web.domain.dto.ethnicActivities.EthnicActivitiesEditRequest;
+import com.ruoyi.web.domain.dto.ethnicActivities.EthnicActivitiesQueryRequest;
+import com.ruoyi.web.domain.vo.EthnicActivitiesVO;
+import com.ruoyi.web.service.EthnicActivitiesService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+import static com.ruoyi.common.core.domain.AjaxResult.error;
+import static com.ruoyi.common.core.domain.AjaxResult.success;
+
+@Api("民族团结活动管理")
+@RestController
+@RequestMapping("/system/ethnic/activities")
+public class EthnicActivitiesController {
+
+    @Autowired
+    private EthnicActivitiesService ethnicActivitiesService;
+
+    /**
+     * 添加民族团结活动数据
+     *
+     * @param ethnicActivitiesAddRequest
+     * @return
+     */
+    @ApiOperation("添加民族团结活动数据")
+    @PostMapping("/add")
+    public AjaxResult addEthnicActivities(@RequestBody EthnicActivitiesAddRequest ethnicActivitiesAddRequest) {
+        if (ethnicActivitiesAddRequest == null) {
+            return error("请求参数为空");
+        }
+        Integer id = ethnicActivitiesService.addEthnicActivities(ethnicActivitiesAddRequest);
+        return success(id);
+    }
+
+    /**
+     * 删除民族团结活动数据
+     *
+     * @param paramsMap
+     * @return
+     */
+    @ApiOperation("删除民族团结活动数据")
+    @PostMapping("/delete")
+    public AjaxResult deleteEthnicActivities(@RequestBody Map<String, String> paramsMap) {
+        String ids = paramsMap.get("ids");
+        if (StrUtil.isBlank(ids)) {
+            return error("请求参数为空");
+        }
+        boolean b = ethnicActivitiesService.deleteEthnicActivities(ids);
+        if (b) {
+            return success("删除成功");
+        }
+        return error("删除失败");
+    }
+
+
+    /**
+     * 编辑民族团结活动数据
+     *
+     * @param ethnicActivitiesEditRequest
+     * @return
+     */
+    @ApiOperation("编辑民族团结活动数据")
+    @PostMapping("/edit")
+    public AjaxResult editFacility(@RequestBody EthnicActivitiesEditRequest ethnicActivitiesEditRequest) {
+        if (ethnicActivitiesEditRequest == null) {
+            return error("请求参数为空");
+        }
+        ethnicActivitiesService.editEthnicActivities(ethnicActivitiesEditRequest);
+        return AjaxResult.success();
+    }
+
+    /**
+     * 根据id获取民族团结活动数据
+     *
+     * @param id
+     * @return
+     */
+    @ApiOperation("根据id获取民族团结活动数据")
+    @GetMapping("/get")
+    public AjaxResult getEthnicActivitiesById(@RequestParam int id) {
+        if (ObjectUtil.isEmpty(id)) {
+            return error("请求参数为空");
+        }
+        EthnicActivitiesVO ethnicActivitiesVO = ethnicActivitiesService.getEthnicActivitiesById(id);
+        return success(ethnicActivitiesVO);
+    }
+
+    /**
+     * 分页获取民族团结活动数据列表
+     *
+     * @param ethnicActivitiesQueryRequest
+     * @return
+     */
+    @ApiOperation("分页获取民族团结活动数据列表")
+    @PostMapping("/list/page")
+    public AjaxResult listEthnicActivitiesByPage(@RequestBody EthnicActivitiesQueryRequest ethnicActivitiesQueryRequest) {
+        if (ethnicActivitiesQueryRequest == null) {
+            return error("请求参数为空");
+        }
+        Page<EthnicActivitiesVO> listEthnicActivitiesByPageVO = ethnicActivitiesService.getListEthnicActivitiesByPage(ethnicActivitiesQueryRequest);
+        return success(listEthnicActivitiesByPageVO);
+    }
+}

+ 10 - 8
app-admin/src/main/java/com/ruoyi/web/controller/system/IndustryController.java

@@ -4,6 +4,8 @@ import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.web.domain.dto.Industry.IndustryDataAddRequest;
+import com.ruoyi.web.domain.dto.Industry.IndustryDataEditRequest;
 import com.ruoyi.web.domain.dto.Industry.IndustryDataQueryRequest;
 import com.ruoyi.web.domain.entity.IndustryData;
 import com.ruoyi.web.service.IndustryDataService;
@@ -28,16 +30,16 @@ public class IndustryController {
     /**
      * 添加产业数据
      *
-     * @param industryData
+     * @param industryDataAddRequest
      * @return
      */
     @ApiOperation("添加产业数据")
     @PostMapping("/add")
-    public AjaxResult addIndustryData(@RequestBody IndustryData industryData) {
-        if (industryData == null) {
+    public AjaxResult addIndustryData(@RequestBody IndustryDataAddRequest industryDataAddRequest) {
+        if (industryDataAddRequest == null) {
             return error("请求参数为空");
         }
-        Integer id = industryDataService.addIndustryData(industryData);
+        Integer id = industryDataService.addIndustryData(industryDataAddRequest);
         return success(id);
     }
 
@@ -65,16 +67,16 @@ public class IndustryController {
     /**
      * 编辑产业数据
      *
-     * @param industryData
+     * @param industryDataEditRequest
      * @return
      */
     @ApiOperation("编辑产业数据")
     @PostMapping("/edit")
-    public AjaxResult editFacility(@RequestBody IndustryData industryData) {
-        if (industryData == null) {
+    public AjaxResult editFacility(@RequestBody IndustryDataEditRequest industryDataEditRequest) {
+        if (industryDataEditRequest == null) {
             return error("请求参数为空");
         }
-        industryDataService.editIndustryData(industryData);
+        industryDataService.editIndustryData(industryDataEditRequest);
         return AjaxResult.success();
     }
 

+ 114 - 0
app-admin/src/main/java/com/ruoyi/web/controller/system/MediaPropagandaController.java

@@ -0,0 +1,114 @@
+package com.ruoyi.web.controller.system;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+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.web.domain.dto.mediaPropaganda.MediaPropagandaAddRequest;
+import com.ruoyi.web.domain.dto.mediaPropaganda.MediaPropagandaEditRequest;
+import com.ruoyi.web.domain.dto.mediaPropaganda.MediaPropagandaQueryRequest;
+import com.ruoyi.web.domain.vo.MediaPropagandaVO;
+import com.ruoyi.web.service.MediaPropagandaService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+/**
+ * 媒体宣传内容收集控制器
+ */
+@Api("媒体宣传内容收集")
+@RestController
+@RequestMapping("/system/media/propaganda")
+public class MediaPropagandaController extends BaseController {
+
+    @Autowired
+    private MediaPropagandaService mediaPropagandaService;
+
+    /**
+     * 添加媒体宣传内容
+     *
+     * @param mediaPropagandaAddRequest 添加请求
+     * @return 结果
+     */
+    @ApiOperation("添加媒体宣传内容")
+    @PostMapping("/add")
+    public AjaxResult addMediaPropaganda(@RequestBody MediaPropagandaAddRequest mediaPropagandaAddRequest) {
+        if (mediaPropagandaAddRequest == null) {
+            return error("请求参数为空");
+        }
+        Integer id = mediaPropagandaService.addMediaPropaganda(mediaPropagandaAddRequest);
+        return success(id);
+    }
+
+    /**
+     * 删除媒体宣传内容
+     *
+     * @param paramsMap 参数,包含ids
+     * @return 结果
+     */
+    @ApiOperation("删除媒体宣传内容")
+    @PostMapping("/delete")
+    public AjaxResult deleteMediaPropaganda(@RequestBody Map<String, String> paramsMap) {
+        String ids = paramsMap.get("ids");
+        if (StrUtil.isBlank(ids)) {
+            return error("请求参数为空");
+        }
+        boolean result = mediaPropagandaService.deleteMediaPropaganda(ids);
+        if (result) {
+            return success("删除成功");
+        }
+        return error("删除失败");
+    }
+
+    /**
+     * 编辑媒体宣传内容
+     *
+     * @param mediaPropagandaEditRequest 编辑请求
+     * @return 结果
+     */
+    @ApiOperation("编辑媒体宣传内容")
+    @PostMapping("/edit")
+    public AjaxResult editMediaPropaganda(@RequestBody MediaPropagandaEditRequest mediaPropagandaEditRequest) {
+        if (mediaPropagandaEditRequest == null) {
+            return error("请求参数为空");
+        }
+        mediaPropagandaService.editMediaPropaganda(mediaPropagandaEditRequest);
+        return success();
+    }
+
+    /**
+     * 根据ID获取媒体宣传内容详情
+     *
+     * @param id 记录ID
+     * @return 媒体宣传内容详情
+     */
+    @ApiOperation("根据ID获取媒体宣传内容详情")
+    @GetMapping("/get")
+    public AjaxResult getMediaPropagandaById(@RequestParam int id) {
+        if (ObjectUtil.isEmpty(id)) {
+            return error("请求参数为空");
+        }
+        MediaPropagandaVO mediaPropagandaVO = mediaPropagandaService.getMediaPropagandaById(id);
+        return success(mediaPropagandaVO);
+    }
+
+    /**
+     * 分页获取媒体宣传内容列表
+     *
+     * @param mediaPropagandaQueryRequest 查询请求
+     * @return 分页结果
+     */
+    @ApiOperation("分页获取媒体宣传内容列表")
+    @PostMapping("/list/page")
+    public AjaxResult listMediaPropagandaByPage(@RequestBody MediaPropagandaQueryRequest mediaPropagandaQueryRequest) {
+        if (mediaPropagandaQueryRequest == null) {
+            return error("请求参数为空");
+        }
+        Page<MediaPropagandaVO> pageResult = mediaPropagandaService.getListMediaPropagandaByPage(mediaPropagandaQueryRequest);
+        return success(pageResult);
+    }
+} 

+ 6 - 6
app-admin/src/main/java/com/ruoyi/web/controller/system/ProjectsController.java

@@ -4,10 +4,10 @@ import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.web.domain.dto.projects.ProjectsQueryRequest;
 import com.ruoyi.web.domain.dto.projects.ProjectsAddRequest;
 import com.ruoyi.web.domain.dto.projects.ProjectsEditRequest;
-import com.ruoyi.web.domain.entity.Projects;
+import com.ruoyi.web.domain.dto.projects.ProjectsQueryRequest;
+import com.ruoyi.web.domain.vo.ProjectsVO;
 import com.ruoyi.web.service.ProjectsService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -93,8 +93,8 @@ public class ProjectsController {
         if (ObjectUtil.isEmpty(id)) {
             return error("请求参数为空");
         }
-        Projects projects = projectsService.getProjectsById(id);
-        return success(projects);
+        ProjectsVO projectsVO = projectsService.getProjectsById(id);
+        return success(projectsVO);
     }
 
     /**
@@ -109,8 +109,8 @@ public class ProjectsController {
         if (projectsQueryRequest == null) {
             return error("请求参数为空");
         }
-        Page<Projects> listProjectsByPage = projectsService.getListProjectsByPage(projectsQueryRequest);
-        return success(listProjectsByPage);
+        Page<ProjectsVO> listProjectsVOByPage = projectsService.getListProjectsByPage(projectsQueryRequest);
+        return success(listProjectsVOByPage);
     }
 
 }

+ 116 - 0
app-admin/src/main/java/com/ruoyi/web/controller/system/VillageProfileController.java

@@ -0,0 +1,116 @@
+package com.ruoyi.web.controller.system;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+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.web.domain.dto.VillageProfile.VillageProfileAddRequest;
+import com.ruoyi.web.domain.dto.VillageProfile.VillageProfileEditRequest;
+import com.ruoyi.web.domain.dto.VillageProfile.VillageProfileQueryRequest;
+import com.ruoyi.web.domain.vo.VillageProfileVO;
+import com.ruoyi.web.service.VillageProfileService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+/**
+ * 村庄概况信息Controller
+ */
+@RestController
+@RequestMapping("/system/village/profile")
+@Validated
+public class VillageProfileController extends BaseController {
+
+    @Autowired
+    private VillageProfileService villageProfileService;
+
+    /**
+     * 添加村庄
+     *
+     * @param villageProfileAddRequest
+     * @return
+     */
+    @ApiOperation("添加村庄")
+    @PostMapping("/add")
+    public AjaxResult addVillageProfile(@RequestBody VillageProfileAddRequest villageProfileAddRequest) {
+        if (villageProfileAddRequest == null) {
+            return error("请求参数为空");
+        }
+        Integer id = villageProfileService.addVillageProfile(villageProfileAddRequest);
+        return success(id);
+    }
+
+    /**
+     * 删除村庄
+     *
+     * @param paramsMap
+     * @return
+     */
+    @ApiOperation("删除村庄")
+    @PostMapping("/delete")
+    public AjaxResult deleteVillageProfile(@RequestBody Map<String, String> paramsMap) {
+        String ids = paramsMap.get("ids");
+        if (StrUtil.isBlank(ids)) {
+            return error("请求参数为空");
+        }
+        boolean b = villageProfileService.deleteVillageProfile(ids);
+        if (b) {
+            return success("删除成功");
+        }
+        return error("删除失败");
+    }
+
+
+    /**
+     * 编辑村庄
+     *
+     * @param villageProfileEditRequest
+     * @return
+     */
+    @ApiOperation("编辑村庄")
+    @PostMapping("/edit")
+    public AjaxResult editFacility(@RequestBody VillageProfileEditRequest villageProfileEditRequest) {
+        if (villageProfileEditRequest == null) {
+            return error("请求参数为空");
+        }
+        villageProfileService.editVillageProfile(villageProfileEditRequest);
+        return AjaxResult.success();
+    }
+
+
+    /**
+     * 根据id获取村庄
+     *
+     * @param id
+     * @return
+     */
+    @ApiOperation("根据id获取村庄")
+    @GetMapping("/get")
+    public AjaxResult getVillageProfileById(@RequestParam int id) {
+        if (ObjectUtil.isEmpty(id)) {
+            return error("请求参数为空");
+        }
+        VillageProfileVO villageProfileById = villageProfileService.getVillageProfileById(id);
+        return success(villageProfileById);
+    }
+
+    /**
+     * 分页获取村庄列表
+     *
+     * @param villageProfileQueryRequest
+     * @return
+     */
+    @ApiOperation("分页获取村庄列表")
+    @PostMapping("/list/page")
+    public AjaxResult listVillageProfileByPage(@RequestBody VillageProfileQueryRequest villageProfileQueryRequest) {
+        if (villageProfileQueryRequest == null) {
+            return error("请求参数为空");
+        }
+        Page<VillageProfileVO> listVillageProfileByPageVO = villageProfileService.getListVillageProfileByPage(villageProfileQueryRequest);
+        return success(listVillageProfileByPageVO);
+    }
+} 

+ 1 - 1
app-admin/src/main/java/com/ruoyi/web/controller/system/VillageServiceController.java

@@ -7,7 +7,7 @@ import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.web.domain.dto.VillageService.VillageServiceAddRequest;
 import com.ruoyi.web.domain.dto.VillageService.VillageServiceEditRequest;
 import com.ruoyi.web.domain.dto.VillageService.VillageServiceQueryRequest;
-import com.ruoyi.web.domain.vo.VillageService.VillageServiceVO;
+import com.ruoyi.web.domain.vo.VillageServiceVO;
 import com.ruoyi.web.service.VillageServiceService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;

+ 39 - 0
app-admin/src/main/java/com/ruoyi/web/domain/dto/Industry/IndustryDataAddRequest.java

@@ -0,0 +1,39 @@
+package com.ruoyi.web.domain.dto.Industry;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 产业数据添加请求
+ */
+@ApiModel(value = "IndustryDataAddRequest", description = "产业数据添加请求参数")
+@Data
+public class IndustryDataAddRequest implements Serializable {
+
+    /**
+     * 年份
+     */
+    private String year;
+
+    /**
+     * 产业类别:0-种植业/1-养殖业/2-保安腰刀产业/3-农家乐产业/4-民宿产业
+     */
+    private Integer category;
+
+    /**
+     * 产业规模
+     */
+    private String scale;
+
+    /**
+     * 产量
+     */
+    private String yield;
+
+    /**
+     * 产值
+     */
+    private String value;
+}

+ 43 - 0
app-admin/src/main/java/com/ruoyi/web/domain/dto/Industry/IndustryDataEditRequest.java

@@ -0,0 +1,43 @@
+package com.ruoyi.web.domain.dto.Industry;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 产业数据编辑请求
+ */
+@ApiModel(value = "IndustryDataEditRequest", description = "产业数据编辑请求参数")
+@Data
+public class IndustryDataEditRequest implements Serializable {
+    /**
+     * id
+     */
+    private Integer id;
+
+    /**
+     * 年份
+     */
+    private String year;
+
+    /**
+     * 产业类别:0-种植业/1-养殖业/2-保安腰刀产业/3-农家乐产业/4-民宿产业
+     */
+    private Integer category;
+
+    /**
+     * 产业规模
+     */
+    private String scale;
+
+    /**
+     * 产量
+     */
+    private String yield;
+
+    /**
+     * 产值
+     */
+    private String value;
+}

+ 1 - 1
app-admin/src/main/java/com/ruoyi/web/domain/dto/Industry/IndustryDataQueryRequest.java

@@ -22,7 +22,7 @@ public class IndustryDataQueryRequest extends PageRequest implements Serializabl
     /**
      * 年份
      */
-    private String years;
+    private String year;
 
     /**
      * 产业类别:0-种植业/1-养殖业/2-保安腰刀产业/3-农家乐产业/4-民宿产业

+ 36 - 0
app-admin/src/main/java/com/ruoyi/web/domain/dto/VillageProfile/VillageProfileAddRequest.java

@@ -0,0 +1,36 @@
+package com.ruoyi.web.domain.dto.VillageProfile;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 村庄概况添加请求
+ */
+@Data
+@ApiModel(value = "VillageProfileAddRequest", description = "村庄概况添加请求")
+public class VillageProfileAddRequest implements Serializable {
+
+    /**
+     * 村庄名称
+     */
+    private String name;
+
+    /**
+     * 所属区域
+     */
+    private String region;
+
+    /**
+     * 村庄简介
+     */
+    private String introduction;
+
+    /**
+     * 村庄图片
+     */
+    private String images;
+
+    private static final long serialVersionUID = 1L;
+} 

+ 37 - 0
app-admin/src/main/java/com/ruoyi/web/domain/dto/VillageProfile/VillageProfileEditRequest.java

@@ -0,0 +1,37 @@
+package com.ruoyi.web.domain.dto.VillageProfile;
+
+import lombok.Data;
+
+/**
+ * 村庄概况编辑请求
+ */
+@Data
+public class VillageProfileEditRequest {
+
+    /**
+     * ID
+     */
+    private Integer id;
+
+    /**
+     * 村庄名称
+     */
+    private String name;
+
+    /**
+     * 所属区域
+     */
+    private String region;
+
+    /**
+     * 村庄简介
+     */
+    private String introduction;
+
+    /**
+     * 村庄图片
+     */
+    private String images;
+
+    private static final long serialVersionUID = 1L;
+} 

+ 24 - 0
app-admin/src/main/java/com/ruoyi/web/domain/dto/VillageProfile/VillageProfileQueryRequest.java

@@ -0,0 +1,24 @@
+package com.ruoyi.web.domain.dto.VillageProfile;
+
+import com.ruoyi.web.common.PageRequest;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+/**
+ * 村庄概况查询请求
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@ApiModel(value = "VillageProfileQueryRequest", description = "村庄概况查询请求")
+public class VillageProfileQueryRequest extends PageRequest implements Serializable {
+
+    /**
+     * 村庄名称
+     */
+    private String name;
+
+    private static final long serialVersionUID = 1L;
+} 

+ 37 - 0
app-admin/src/main/java/com/ruoyi/web/domain/dto/disaster/DisasterReliefAddRequest.java

@@ -0,0 +1,37 @@
+package com.ruoyi.web.domain.dto.disaster;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 灾情共度管理添加请求
+ */
+@ApiModel(value = "DisasterReliefAddRequest", description = "灾情共度管理添加请求参数")
+@Data
+public class DisasterReliefAddRequest implements Serializable {
+    
+    /**
+     * 村民ID
+     */
+    private Integer personId;
+
+    /**
+     * 发生日期
+     */
+    private Date date;
+
+    /**
+     * 发生地点
+     */
+    private String location;
+
+    /**
+     * 事迹内容
+     */
+    private String eventContent;
+
+    private static final long serialVersionUID = 1L;
+} 

+ 42 - 0
app-admin/src/main/java/com/ruoyi/web/domain/dto/disaster/DisasterReliefEditRequest.java

@@ -0,0 +1,42 @@
+package com.ruoyi.web.domain.dto.disaster;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 灾情共度管理编辑请求
+ */
+@ApiModel(value = "DisasterReliefEditRequest", description = "灾情共度管理编辑请求参数")
+@Data
+public class DisasterReliefEditRequest implements Serializable {
+    
+    /**
+     * ID
+     */
+    private Integer id;
+    
+    /**
+     * 村民ID
+     */
+    private Integer personId;
+
+    /**
+     * 发生日期
+     */
+    private Date date;
+
+    /**
+     * 发生地点
+     */
+    private String location;
+
+    /**
+     * 事迹内容
+     */
+    private String eventContent;
+
+    private static final long serialVersionUID = 1L;
+} 

+ 57 - 0
app-admin/src/main/java/com/ruoyi/web/domain/dto/disaster/DisasterReliefQueryRequest.java

@@ -0,0 +1,57 @@
+package com.ruoyi.web.domain.dto.disaster;
+
+import com.ruoyi.web.common.PageRequest;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 灾情共度管理查询请求
+ */
+@ApiModel(value = "DisasterReliefQueryRequest", description = "灾情共度管理查询请求参数")
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class DisasterReliefQueryRequest extends PageRequest implements Serializable {
+    
+    /**
+     * ID
+     */
+    @ApiModelProperty(value = "ID")
+    private Integer id;
+    
+    /**
+     * 村民ID
+     */
+    @ApiModelProperty(value = "村民ID")
+    private Integer personId;
+
+    /**
+     * 村民姓名(用于联表查询)
+     */
+    @ApiModelProperty(value = "村民姓名")
+    private String personName;
+    
+    /**
+     * 开始日期
+     */
+    @ApiModelProperty(value = "开始日期")
+    private Date startDate;
+    
+    /**
+     * 结束日期
+     */
+    @ApiModelProperty(value = "结束日期")
+    private Date endDate;
+    
+    /**
+     * 发生地点
+     */
+    @ApiModelProperty(value = "发生地点")
+    private String location;
+
+    private static final long serialVersionUID = 1L;
+} 

+ 52 - 0
app-admin/src/main/java/com/ruoyi/web/domain/dto/employmentData/EmploymentDataAddRequest.java

@@ -0,0 +1,52 @@
+package com.ruoyi.web.domain.dto.employmentData;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 就业数据收集
+ *
+ * @TableName employment_data
+ */
+@Data
+@ApiModel(value = "EmploymentDataAddRequest", description = "就业数据添加请求参数")
+public class EmploymentDataAddRequest implements Serializable {
+    /**
+     * 月份
+     */
+    private String months;
+
+    /**
+     * 提供岗位数量
+     */
+    private Integer positionNumber;
+
+    /**
+     * 录用人数
+     */
+    private Integer hireNumber;
+
+    /**
+     * 月薪范围下限
+     */
+    private String monthPayLow;
+
+    /**
+     * 月薪资范围上限
+     */
+    private String monthPayHigh;
+
+    /**
+     * 当前缺口岗位
+     */
+    private String shoragePosition;
+
+    /**
+     * 技能培训情况 1为是 0为否
+     */
+    private Integer skillTraining;
+
+    private static final long serialVersionUID = 1L;
+}

+ 55 - 0
app-admin/src/main/java/com/ruoyi/web/domain/dto/employmentData/EmploymentDataEditRequest.java

@@ -0,0 +1,55 @@
+package com.ruoyi.web.domain.dto.employmentData;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 就业数据收集
+ *
+ * @TableName employment_data
+ */
+@Data
+@ApiModel(value = "EmploymentDataEditRequest", description = "就业数据编辑请求参数")
+public class EmploymentDataEditRequest implements Serializable {
+
+    private Integer id;
+
+    /**
+     * 月份
+     */
+    private String months;
+
+    /**
+     * 提供岗位数量
+     */
+    private Integer positionNumber;
+
+    /**
+     * 录用人数
+     */
+    private Integer hireNumber;
+
+    /**
+     * 月薪范围下限
+     */
+    private String monthPayLow;
+
+    /**
+     * 月薪资范围上限
+     */
+    private String monthPayHigh;
+
+    /**
+     * 当前缺口岗位
+     */
+    private String shoragePosition;
+
+    /**
+     * 技能培训情况 1为是 0为否
+     */
+    private Integer skillTraining;
+
+    private static final long serialVersionUID = 1L;
+}

+ 2 - 2
app-admin/src/main/java/com/ruoyi/web/domain/dto/employment/EmploymentDataQueryRequest.java

@@ -1,4 +1,4 @@
-package com.ruoyi.web.domain.dto.employment;
+package com.ruoyi.web.domain.dto.employmentData;
 
 import com.ruoyi.web.common.PageRequest;
 import io.swagger.annotations.ApiModel;
@@ -10,7 +10,7 @@ import java.io.Serializable;
 /**
  * 就业数据查询请求
  */
-@ApiModel(value = "employmentDataQueryRequest", description = "就业数据查询请求参数")
+@ApiModel(value = "EmploymentDataQueryRequest", description = "就业数据查询请求参数")
 @EqualsAndHashCode(callSuper = true)
 @Data
 public class EmploymentDataQueryRequest extends PageRequest implements Serializable {

+ 51 - 0
app-admin/src/main/java/com/ruoyi/web/domain/dto/ethnicActivities/EthnicActivitiesAddRequest.java

@@ -0,0 +1,51 @@
+package com.ruoyi.web.domain.dto.ethnicActivities;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 民族团结活动数据添加请求
+ */
+@ApiModel(value = "EthnicActivitiesAddRequest", description = "民族团结活动数据添加请求参数")
+@Data
+public class EthnicActivitiesAddRequest implements Serializable {
+
+    /**
+     * 活动名称
+     */
+    private String name;
+
+    /**
+     * 活动日期
+     */
+    private Date date;
+
+    /**
+     * 活动地点
+     */
+    private String location;
+
+    /**
+     * 活动类别 0-传统节日 1-风俗习惯 2-语言文字 3-服饰艺术 4-其他
+     */
+    private Integer category;
+
+    /**
+     * 参与民族
+     */
+    private List<String> ethnic;
+
+    /**
+     * 活动内容
+     */
+    private String content;
+
+    /**
+     * 参与人数
+     */
+    private Integer count;
+}

+ 58 - 0
app-admin/src/main/java/com/ruoyi/web/domain/dto/ethnicActivities/EthnicActivitiesEditRequest.java

@@ -0,0 +1,58 @@
+package com.ruoyi.web.domain.dto.ethnicActivities;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 民族团结活动数据编辑请求
+ */
+@ApiModel(value = "EthnicActivitiesEditRequest", description = "民族团结活动数据编辑请求参数")
+@Data
+public class EthnicActivitiesEditRequest implements Serializable {
+
+    private Integer id;
+
+    /**
+     * 活动名称
+     */
+    private String name;
+
+    /**
+     * 活动日期
+     */
+    private Date date;
+
+    /**
+     * 活动地点
+     */
+    private String location;
+
+    /**
+     * 活动类别 0-传统节日 1-风俗习惯 2-语言文字 3-服饰艺术 4-其他
+     */
+    private Integer category;
+
+    /**
+     * 参与民族
+     */
+    private List<String> ethnic;
+
+    /**
+     * 活动内容
+     */
+    private String content;
+
+    /**
+     * 参与人数
+     */
+    private Integer count;
+
+    /**
+     * 状态:0-未完成/1-已完成
+     */
+    private Integer status;
+}

+ 43 - 0
app-admin/src/main/java/com/ruoyi/web/domain/dto/ethnicActivities/EthnicActivitiesQueryRequest.java

@@ -0,0 +1,43 @@
+package com.ruoyi.web.domain.dto.ethnicActivities;
+
+import com.ruoyi.web.common.PageRequest;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 民族团结活动数据查询请求
+ */
+@ApiModel(value = "EthnicActivitiesQueryRequest", description = "民族团结活动数据查询请求参数")
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class EthnicActivitiesQueryRequest extends PageRequest implements Serializable {
+    /**
+     * 开始日期
+     */
+    private Date startTime;
+
+    /**
+     * 结束日期
+     */
+    private Date endTime;
+
+    /**
+     * 活动类别 0-传统节日 1-风俗习惯 2-语言文字 3-服饰艺术 4-其他
+     */
+    private Integer category;
+
+    /**
+     * 参与民族
+     */
+    private List<String> ethnic;
+
+    /**
+     * 状态:0-未完成/1-已完成
+     */
+    private Integer status;
+}

+ 60 - 0
app-admin/src/main/java/com/ruoyi/web/domain/dto/mediaPropaganda/MediaPropagandaAddRequest.java

@@ -0,0 +1,60 @@
+package com.ruoyi.web.domain.dto.mediaPropaganda;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 媒体宣传内容收集添加请求
+ */
+@ApiModel(value = "MediaPropagandaAddRequest", description = "媒体宣传内容收集添加请求参数")
+@Data
+public class MediaPropagandaAddRequest implements Serializable {
+    
+    /**
+     * 标题
+     */
+    @ApiModelProperty(value = "标题", required = true)
+    private String title;
+
+    /**
+     * 类型 0-图文,1-视频
+     */
+    @ApiModelProperty(value = "类型 0-图文,1-视频", required = true)
+    private Integer type;
+
+    /**
+     * 内容
+     */
+    @ApiModelProperty(value = "内容", required = true)
+    private String content;
+
+    /**
+     * 封面图URL
+     */
+    @ApiModelProperty(value = "封面图URL")
+    private String image;
+
+    /**
+     * 摘录日期
+     */
+    @ApiModelProperty(value = "摘录日期", required = true)
+    private Date extractDate;
+
+    /**
+     * 发布日期
+     */
+    @ApiModelProperty(value = "发布日期", required = true)
+    private Date publishDate;
+
+    /**
+     * 来源
+     */
+    @ApiModelProperty(value = "来源", required = true)
+    private String source;
+
+    private static final long serialVersionUID = 1L;
+} 

+ 66 - 0
app-admin/src/main/java/com/ruoyi/web/domain/dto/mediaPropaganda/MediaPropagandaEditRequest.java

@@ -0,0 +1,66 @@
+package com.ruoyi.web.domain.dto.mediaPropaganda;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 媒体宣传内容收集编辑请求
+ */
+@ApiModel(value = "MediaPropagandaEditRequest", description = "媒体宣传内容收集编辑请求参数")
+@Data
+public class MediaPropagandaEditRequest implements Serializable {
+    
+    /**
+     * ID
+     */
+    @ApiModelProperty(value = "ID", required = true)
+    private Integer id;
+
+    /**
+     * 标题
+     */
+    @ApiModelProperty(value = "标题", required = true)
+    private String title;
+
+    /**
+     * 类型 0-图文,1-视频
+     */
+    @ApiModelProperty(value = "类型 0-图文,1-视频", required = true)
+    private Integer type;
+
+    /**
+     * 内容
+     */
+    @ApiModelProperty(value = "内容", required = true)
+    private String content;
+
+    /**
+     * 封面图URL
+     */
+    @ApiModelProperty(value = "封面图URL")
+    private String image;
+
+    /**
+     * 摘录日期
+     */
+    @ApiModelProperty(value = "摘录日期",required = true)
+    private Date extractDate;
+
+    /**
+     * 发布日期
+     */
+    @ApiModelProperty(value = "发布日期", required = true)
+    private Date publishDate;
+
+    /**
+     * 来源
+     */
+    @ApiModelProperty(value = "来源", required = true)
+    private String source;
+
+    private static final long serialVersionUID = 1L;
+} 

+ 51 - 0
app-admin/src/main/java/com/ruoyi/web/domain/dto/mediaPropaganda/MediaPropagandaQueryRequest.java

@@ -0,0 +1,51 @@
+package com.ruoyi.web.domain.dto.mediaPropaganda;
+
+import com.ruoyi.web.common.PageRequest;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 媒体宣传内容收集查询请求
+ */
+@ApiModel(value = "MediaPropagandaQueryRequest", description = "媒体宣传内容收集查询请求参数")
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class MediaPropagandaQueryRequest extends PageRequest implements Serializable {
+    
+    /**
+     * 摘录开始日期
+     */
+    @ApiModelProperty(value = "摘录开始日期")
+    private Date extractStartTime;
+    
+    /**
+     * 摘录结束日期
+     */
+    @ApiModelProperty(value = "摘录结束日期")
+    private Date extractEndTime;
+    
+    /**
+     * 发布开始日期
+     */
+    @ApiModelProperty(value = "发布开始日期")
+    private Date publishStartTime;
+    
+    /**
+     * 发布结束日期
+     */
+    @ApiModelProperty(value = "发布结束日期")
+    private Date publishEndTime;
+
+    /**
+     * 关键词 标题或内容
+     */
+    @ApiModelProperty(value = "关键词")
+    private String keyword;
+
+    private static final long serialVersionUID = 1L;
+} 

+ 63 - 0
app-admin/src/main/java/com/ruoyi/web/domain/entity/DisasterRelief.java

@@ -0,0 +1,63 @@
+package com.ruoyi.web.domain.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 灾情共度管理
+ *
+ * @TableName disaster_relief
+ */
+@TableName(value = "disaster_relief")
+@Data
+public class DisasterRelief implements Serializable {
+    /**
+     * ID
+     */
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 村民ID
+     */
+    private Integer personId;
+
+    /**
+     * 发生日期
+     */
+    private Date date;
+
+    /**
+     * 发生地点
+     */
+    private String location;
+
+    /**
+     * 事迹内容
+     */
+    private String eventContent;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 修改时间
+     */
+    private Date updateTime;
+
+    /**
+     * 删除标志
+     */
+    @TableLogic
+    @JsonIgnore
+    private String delFlag;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 83 - 0
app-admin/src/main/java/com/ruoyi/web/domain/entity/EthnicActivities.java

@@ -0,0 +1,83 @@
+package com.ruoyi.web.domain.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 民族团结活动表
+ *
+ * @TableName ethnic_activities
+ */
+@TableName(value = "ethnic_activities")
+@Data
+public class EthnicActivities implements Serializable {
+    /**
+     * id
+     */
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 活动名称
+     */
+    private String name;
+
+    /**
+     * 活动日期
+     */
+    private Date date;
+
+    /**
+     * 活动地点
+     */
+    private String location;
+
+    /**
+     * 活动类别 0-传统节日 1-风俗习惯 2-语言文字 3-服饰艺术 4-其他
+     */
+    private Integer category;
+
+    /**
+     * 参与民族,0-汉族/1-撒拉族/2-保安族/3-东乡族/4-回族/5-藏族/6-土族/7-羌族
+     */
+    private String ethnic;
+
+    /**
+     * 活动内容
+     */
+    private String content;
+
+    /**
+     * 参与人数
+     */
+    private Integer count;
+
+    /**
+     * 状态:0-未完成/1-已完成
+     */
+    private Integer status;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 修改时间
+     */
+    private Date updateTime;
+
+    /**
+     * 删除标志
+     */
+    @TableLogic
+    @JsonIgnore
+    private String delFlag;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 1 - 1
app-admin/src/main/java/com/ruoyi/web/domain/entity/IndustryData.java

@@ -24,7 +24,7 @@ public class IndustryData implements Serializable {
     /**
      * 年份
      */
-    private String years;
+    private String year;
 
     /**
      * 产业类别:0-种植业/1-养殖业/2-保安腰刀产业/3-农家乐产业/4-民宿产业

+ 78 - 0
app-admin/src/main/java/com/ruoyi/web/domain/entity/MediaPropaganda.java

@@ -0,0 +1,78 @@
+package com.ruoyi.web.domain.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 媒体宣传内容收集表
+ *
+ * @TableName media_propaganda
+ */
+@TableName(value = "media_propaganda")
+@Data
+public class MediaPropaganda implements Serializable {
+    /**
+     * ID
+     */
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 标题
+     */
+    private String title;
+
+    /**
+     * 类型 0-图文,1-视频
+     */
+    private Integer type;
+
+    /**
+     * 内容
+     */
+    private String content;
+
+    /**
+     * 封面图URL
+     */
+    private String image;
+
+    /**
+     * 摘录日期(默认当天)
+     */
+    private Date extractDate;
+
+    /**
+     * 发布日期
+     */
+    private Date publishDate;
+
+    /**
+     * 来源
+     */
+    private String source;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 修改时间
+     */
+    private Date updateTime;
+
+    /**
+     * 删除标志
+     */
+    @TableLogic
+    @JsonIgnore
+    private String delFlag;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 63 - 0
app-admin/src/main/java/com/ruoyi/web/domain/entity/VillageProfile.java

@@ -0,0 +1,63 @@
+package com.ruoyi.web.domain.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 村庄概况信息表
+ */
+@Data
+@TableName("village_profile")
+public class VillageProfile implements Serializable {
+
+    /**
+     * ID
+     */
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 村庄名称
+     */
+    private String name;
+
+    /**
+     * 所属区域
+     */
+    private String region;
+
+    /**
+     * 村庄简介
+     */
+    private String introduction;
+
+    /**
+     * 村庄图片
+     */
+    private String images;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    /**
+     * 删除标志
+     */
+    @TableLogic
+    @JsonIgnore
+    private String delFlag;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+} 

+ 82 - 0
app-admin/src/main/java/com/ruoyi/web/domain/vo/DisasterReliefVO.java

@@ -0,0 +1,82 @@
+package com.ruoyi.web.domain.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 灾情共度管理视图对象
+ */
+@ApiModel(value = "DisasterReliefVO", description = "灾情共度管理视图对象")
+@Data
+public class DisasterReliefVO implements Serializable {
+    
+    /**
+     * ID
+     */
+    @ApiModelProperty(value = "ID")
+    private Integer id;
+    
+    /**
+     * 村民ID
+     */
+    @ApiModelProperty(value = "村民ID")
+    private Integer personId;
+    
+    /**
+     * 村民姓名
+     */
+    @ApiModelProperty(value = "村民姓名")
+    private String name;
+    
+    /**
+     * 村民身份证号
+     */
+    @ApiModelProperty(value = "村民身份证号")
+    private String idCard;
+    
+    /**
+     * 村民联系方式
+     */
+    @ApiModelProperty(value = "村民联系方式")
+    private String phone;
+
+    /**
+     * 发生日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "发生日期")
+    private Date date;
+
+    /**
+     * 发生地点
+     */
+    @ApiModelProperty(value = "发生地点")
+    private String location;
+
+    /**
+     * 事迹内容
+     */
+    @ApiModelProperty(value = "事迹内容")
+    private String eventContent;
+    
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    /**
+     * 修改时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "修改时间")
+    private Date updateTime;
+
+    private static final long serialVersionUID = 1L;
+} 

+ 75 - 0
app-admin/src/main/java/com/ruoyi/web/domain/vo/EthnicActivitiesVO.java

@@ -0,0 +1,75 @@
+package com.ruoyi.web.domain.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 民族团结活动视图
+ *
+ * @TableName ethnic_activities
+ */
+@Data
+@ApiModel(value = "EthnicActivitiesVO", description = "民族团结活动视图")
+public class EthnicActivitiesVO implements Serializable {
+    /**
+     * id
+     */
+    private Integer id;
+
+    /**
+     * 活动名称
+     */
+    private String name;
+
+    /**
+     * 活动日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date date;
+
+    /**
+     * 活动地点
+     */
+    private String location;
+
+    /**
+     * 活动类别 0-传统节日 1-风俗习惯 2-语言文字 3-服饰艺术 4-其他
+     */
+    private Integer category;
+
+    /**
+     * 参与民族,
+     */
+    private String ethnic;
+
+    /**
+     * 活动内容
+     */
+    private String content;
+
+    /**
+     * 参与人数
+     */
+    private Integer count;
+
+    /**
+     * 状态:0-未完成/1-已完成
+     */
+    private Integer status;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 修改时间
+     */
+    private Date updateTime;
+
+    private static final long serialVersionUID = 1L;
+}

+ 0 - 4
app-admin/src/main/java/com/ruoyi/web/domain/vo/FacilityManagement/FacilityVOFactory.java

@@ -1,6 +1,5 @@
 package com.ruoyi.web.domain.vo.FacilityManagement;
 
-import com.ruoyi.common.utils.SecureSensitiveUtils;
 import com.ruoyi.common.utils.bean.BeanUtils;
 import com.ruoyi.web.domain.entity.FacilityManagement;
 
@@ -38,9 +37,6 @@ public class FacilityVOFactory {
         CONVERTERS.put("4", entity -> {
             SchoolVO vo = new SchoolVO();
             BeanUtils.copyProperties(entity, vo);
-            // 手机号脱敏
-            String phone = entity.getPhone();
-            vo.setPhone(SecureSensitiveUtils.maskPhone(phone));
             return vo;
         });
 

+ 0 - 2
app-admin/src/main/java/com/ruoyi/web/domain/vo/HouseInfoVO.java

@@ -1,6 +1,5 @@
 package com.ruoyi.web.domain.vo;
 
-import com.baomidou.mybatisplus.annotation.*;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -14,7 +13,6 @@ import java.util.Date;
  *
  * @TableName house_info
  */
-@TableName(value = "house_info")
 @Data
 @ApiModel(value = "HouseInfoVO", description = "房屋信息视图")
 public class HouseInfoVO implements Serializable {

+ 83 - 0
app-admin/src/main/java/com/ruoyi/web/domain/vo/MediaPropagandaVO.java

@@ -0,0 +1,83 @@
+package com.ruoyi.web.domain.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 媒体宣传内容收集视图对象
+ */
+@ApiModel(value = "MediaPropagandaVO", description = "媒体宣传内容收集视图对象")
+@Data
+public class MediaPropagandaVO implements Serializable {
+    
+    /**
+     * ID
+     */
+    @ApiModelProperty(value = "ID")
+    private Integer id;
+    
+    /**
+     * 标题
+     */
+    @ApiModelProperty(value = "标题")
+    private String title;
+
+    /**
+     * 类型 0-图文,1-视频
+     */
+    @ApiModelProperty(value = "类型 0-图文,1-视频")
+    private Integer type;
+
+    /**
+     * 内容
+     */
+    @ApiModelProperty(value = "内容")
+    private String content;
+
+    /**
+     * 封面图URL
+     */
+    @ApiModelProperty(value = "封面图URL")
+    private String image;
+
+    /**
+     * 摘录日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty(value = "摘录日期")
+    private Date extractDate;
+
+    /**
+     * 发布日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty(value = "发布日期")
+    private Date publishDate;
+
+    /**
+     * 来源
+     */
+    @ApiModelProperty(value = "来源")
+    private String source;
+    
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    /**
+     * 修改时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "修改时间")
+    private Date updateTime;
+
+    private static final long serialVersionUID = 1L;
+} 

+ 2 - 0
app-admin/src/main/java/com/ruoyi/web/domain/vo/PersonInfoVO.java

@@ -1,5 +1,6 @@
 package com.ruoyi.web.domain.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -55,6 +56,7 @@ public class PersonInfoVO implements Serializable {
      * 出生日期
      */
     @ApiModelProperty(value = "出生日期")
+    @JsonFormat(pattern = "yyyy-MM-dd")
     private Date birthDate;
 
     /**

+ 4 - 0
app-admin/src/main/java/com/ruoyi/web/domain/vo/ProjectsVO.java

@@ -1,5 +1,6 @@
 package com.ruoyi.web.domain.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -44,18 +45,21 @@ public class ProjectsVO implements Serializable {
      * 项目开始日期
      */
     @ApiModelProperty(value = "项目开始日期")
+    @JsonFormat(pattern = "yyyy-MM-dd")
     private Date startDate;
 
     /**
      * 预计建成日期
      */
     @ApiModelProperty(value = "预计建成日期")
+    @JsonFormat(pattern = "yyyy-MM-dd")
     private Date estimatedCompletionDate;
 
     /**
      * 实际建成日期
      */
     @ApiModelProperty(value = "实际建成日期")
+    @JsonFormat(pattern = "yyyy-MM-dd")
     private Date actualCompletionDate;
 
     /**

+ 55 - 0
app-admin/src/main/java/com/ruoyi/web/domain/vo/VillageProfileVO.java

@@ -0,0 +1,55 @@
+package com.ruoyi.web.domain.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 村庄概况视图对象
+ */
+@Data
+public class VillageProfileVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    private Integer id;
+
+    /**
+     * 村庄名称
+     */
+    private String name;
+
+    /**
+     * 所属区域
+     */
+    private String region;
+
+    /**
+     * 村庄简介
+     */
+    private String introduction;
+
+    /**
+     * 村庄图片
+     */
+    private String images;
+    
+    /**
+     * 村民数量
+     */
+    private Integer villagerCount;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+} 

+ 3 - 1
app-admin/src/main/java/com/ruoyi/web/domain/vo/VillageService/VillageServiceVO.java

@@ -1,5 +1,6 @@
-package com.ruoyi.web.domain.vo.VillageService;
+package com.ruoyi.web.domain.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import lombok.Data;
 
@@ -55,6 +56,7 @@ public class VillageServiceVO  {
     /**
      * 发布日期
      */
+    @JsonFormat(pattern = "yyyy-MM-dd")
     private Date date;
 
     /**

+ 16 - 0
app-admin/src/main/java/com/ruoyi/web/mapper/DisasterReliefMapper.java

@@ -0,0 +1,16 @@
+package com.ruoyi.web.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.web.domain.entity.DisasterRelief;
+
+
+/**
+ * @Entity generator.domain.DisasterRelief
+ */
+public interface DisasterReliefMapper extends BaseMapper<DisasterRelief> {
+
+}
+
+
+
+

+ 14 - 0
app-admin/src/main/java/com/ruoyi/web/mapper/EthnicActivitiesMapper.java

@@ -0,0 +1,14 @@
+package com.ruoyi.web.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.web.domain.entity.EthnicActivities;
+
+/**
+ * @Entity generator.domain.EthnicActivities
+ */
+public interface EthnicActivitiesMapper extends BaseMapper<EthnicActivities> {
+}
+
+
+
+

+ 16 - 0
app-admin/src/main/java/com/ruoyi/web/mapper/MediaPropagandaMapper.java

@@ -0,0 +1,16 @@
+package com.ruoyi.web.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.web.domain.entity.MediaPropaganda;
+
+
+/**
+ * @Entity generator.domain.MediaPropaganda
+ */
+public interface MediaPropagandaMapper extends BaseMapper<MediaPropaganda> {
+
+}
+
+
+
+

+ 22 - 0
app-admin/src/main/java/com/ruoyi/web/mapper/VillageProfileMapper.java

@@ -0,0 +1,22 @@
+package com.ruoyi.web.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.web.domain.entity.VillageProfile;
+import com.ruoyi.web.domain.vo.VillageProfileVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 村庄概况信息Mapper接口
+ */
+public interface VillageProfileMapper extends BaseMapper<VillageProfile> {
+    
+    /**
+     * 查询村庄概况列表(带村民数量)
+     *
+     * @param villageName 村庄名称(可选)
+     * @return 村庄概况信息列表
+     */
+    List<VillageProfileVO> selectVillageProfileList(@Param("villageName") String villageName);
+} 

+ 71 - 0
app-admin/src/main/java/com/ruoyi/web/service/DisasterReliefService.java

@@ -0,0 +1,71 @@
+package com.ruoyi.web.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.web.domain.dto.disaster.DisasterReliefAddRequest;
+import com.ruoyi.web.domain.dto.disaster.DisasterReliefEditRequest;
+import com.ruoyi.web.domain.dto.disaster.DisasterReliefQueryRequest;
+import com.ruoyi.web.domain.entity.DisasterRelief;
+import com.ruoyi.web.domain.vo.DisasterReliefVO;
+
+/**
+ * 灾情共度管理服务接口
+ */
+public interface DisasterReliefService extends IService<DisasterRelief> {
+
+    /**
+     * 添加灾情共度记录
+     *
+     * @param disasterReliefAddRequest 添加请求
+     * @return 添加后的ID
+     */
+    Integer addDisasterRelief(DisasterReliefAddRequest disasterReliefAddRequest);
+
+    /**
+     * 删除灾情共度记录
+     *
+     * @param ids 记录ID,多个以逗号分隔
+     * @return 是否删除成功
+     */
+    boolean deleteDisasterRelief(String ids);
+
+    /**
+     * 修改灾情共度记录
+     *
+     * @param disasterReliefEditRequest 编辑请求
+     */
+    void editDisasterRelief(DisasterReliefEditRequest disasterReliefEditRequest);
+
+    /**
+     * 根据ID获取灾情共度记录详情
+     *
+     * @param id 记录ID
+     * @return 灾情共度详情VO
+     */
+    DisasterReliefVO getDisasterReliefById(int id);
+
+    /**
+     * 通过实体获取灾情共度VO
+     *
+     * @param disasterRelief 灾情共度实体
+     * @return 灾情共度VO
+     */
+    DisasterReliefVO getDisasterReliefVO(DisasterRelief disasterRelief);
+
+    /**
+     * 分页获取灾情共度列表
+     *
+     * @param disasterReliefQueryRequest 查询请求
+     * @return 分页结果
+     */
+    Page<DisasterReliefVO> getListDisasterReliefByPage(DisasterReliefQueryRequest disasterReliefQueryRequest);
+
+    /**
+     * 获取查询条件
+     *
+     * @param disasterReliefQueryRequest 查询请求
+     * @return 查询条件包装器
+     */
+    QueryWrapper<DisasterRelief> getQueryWrapper(DisasterReliefQueryRequest disasterReliefQueryRequest);
+}

+ 5 - 3
app-admin/src/main/java/com/ruoyi/web/service/EmploymentDataService.java

@@ -2,7 +2,9 @@ package com.ruoyi.web.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.ruoyi.web.domain.dto.employment.EmploymentDataQueryRequest;
+import com.ruoyi.web.domain.dto.employmentData.EmploymentDataEditRequest;
+import com.ruoyi.web.domain.dto.employmentData.EmploymentDataQueryRequest;
+import com.ruoyi.web.domain.dto.employmentData.EmploymentDataAddRequest;
 import com.ruoyi.web.domain.entity.EmploymentData;
 
 
@@ -10,11 +12,11 @@ import com.ruoyi.web.domain.entity.EmploymentData;
  *
  */
 public interface EmploymentDataService extends IService<EmploymentData> {
-    Integer addEmploymentData(EmploymentData employmentData);
+    Integer addEmploymentData(EmploymentDataAddRequest employmentDataAddRequest);
 
     boolean deleteEmploymentData(String ids);
 
-    void editEmploymentData(EmploymentData employmentData);
+    void editEmploymentData(EmploymentDataEditRequest employmentDataEditRequest);
 
     EmploymentData getEmploymentDataById(int id);
 

+ 28 - 0
app-admin/src/main/java/com/ruoyi/web/service/EthnicActivitiesService.java

@@ -0,0 +1,28 @@
+package com.ruoyi.web.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.web.domain.dto.ethnicActivities.EthnicActivitiesAddRequest;
+import com.ruoyi.web.domain.dto.ethnicActivities.EthnicActivitiesEditRequest;
+import com.ruoyi.web.domain.dto.ethnicActivities.EthnicActivitiesQueryRequest;
+import com.ruoyi.web.domain.entity.EthnicActivities;
+import com.ruoyi.web.domain.vo.EthnicActivitiesVO;
+
+
+/**
+ *
+ */
+public interface EthnicActivitiesService extends IService<EthnicActivities> {
+    Integer addEthnicActivities(EthnicActivitiesAddRequest ethnicActivitiesAddRequest);
+
+    boolean deleteEthnicActivities(String ids);
+
+    void editEthnicActivities(EthnicActivitiesEditRequest ethnicActivitiesEditRequest);
+
+    EthnicActivitiesVO getEthnicActivitiesVO(EthnicActivities ethnicActivities);
+
+    EthnicActivitiesVO getEthnicActivitiesById(int id);
+
+    Page<EthnicActivitiesVO> getListEthnicActivitiesByPage(EthnicActivitiesQueryRequest ethnicActivitiesQueryRequest);
+
+}

+ 4 - 2
app-admin/src/main/java/com/ruoyi/web/service/IndustryDataService.java

@@ -2,6 +2,8 @@ package com.ruoyi.web.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.web.domain.dto.Industry.IndustryDataAddRequest;
+import com.ruoyi.web.domain.dto.Industry.IndustryDataEditRequest;
 import com.ruoyi.web.domain.dto.Industry.IndustryDataQueryRequest;
 import com.ruoyi.web.domain.entity.IndustryData;
 
@@ -9,11 +11,11 @@ import com.ruoyi.web.domain.entity.IndustryData;
  *
  */
 public interface IndustryDataService extends IService<IndustryData> {
-    Integer addIndustryData(IndustryData industryData);
+    Integer addIndustryData(IndustryDataAddRequest industryDataAddRequest);
 
     boolean deleteIndustryData(String ids);
 
-    void editIndustryData(IndustryData industryData);
+    void editIndustryData(IndustryDataEditRequest industryDataEditRequest);
 
     IndustryData getIndustryDataById(int id);
 

+ 71 - 0
app-admin/src/main/java/com/ruoyi/web/service/MediaPropagandaService.java

@@ -0,0 +1,71 @@
+package com.ruoyi.web.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.web.domain.dto.mediaPropaganda.MediaPropagandaAddRequest;
+import com.ruoyi.web.domain.dto.mediaPropaganda.MediaPropagandaEditRequest;
+import com.ruoyi.web.domain.dto.mediaPropaganda.MediaPropagandaQueryRequest;
+import com.ruoyi.web.domain.entity.MediaPropaganda;
+import com.ruoyi.web.domain.vo.MediaPropagandaVO;
+
+/**
+ * 媒体宣传内容收集服务接口
+ */
+public interface MediaPropagandaService extends IService<MediaPropaganda> {
+
+    /**
+     * 添加媒体宣传内容
+     *
+     * @param mediaPropagandaAddRequest 添加请求
+     * @return 添加后的ID
+     */
+    Integer addMediaPropaganda(MediaPropagandaAddRequest mediaPropagandaAddRequest);
+
+    /**
+     * 删除媒体宣传内容
+     *
+     * @param ids 记录ID,多个以逗号分隔
+     * @return 是否删除成功
+     */
+    boolean deleteMediaPropaganda(String ids);
+
+    /**
+     * 修改媒体宣传内容
+     *
+     * @param mediaPropagandaEditRequest 编辑请求
+     */
+    void editMediaPropaganda(MediaPropagandaEditRequest mediaPropagandaEditRequest);
+
+    /**
+     * 根据ID获取媒体宣传内容详情
+     *
+     * @param id 记录ID
+     * @return 媒体宣传内容详情VO
+     */
+    MediaPropagandaVO getMediaPropagandaById(int id);
+
+    /**
+     * 通过实体获取媒体宣传内容VO
+     *
+     * @param mediaPropaganda 媒体宣传内容实体
+     * @return 媒体宣传内容VO
+     */
+    MediaPropagandaVO getMediaPropagandaVO(MediaPropaganda mediaPropaganda);
+
+    /**
+     * 分页获取媒体宣传内容列表
+     *
+     * @param mediaPropagandaQueryRequest 查询请求
+     * @return 分页结果
+     */
+    Page<MediaPropagandaVO> getListMediaPropagandaByPage(MediaPropagandaQueryRequest mediaPropagandaQueryRequest);
+
+    /**
+     * 获取查询条件
+     *
+     * @param mediaPropagandaQueryRequest 查询请求
+     * @return 查询条件包装器
+     */
+    QueryWrapper<MediaPropaganda> getQueryWrapper(MediaPropagandaQueryRequest mediaPropagandaQueryRequest);
+}

+ 4 - 2
app-admin/src/main/java/com/ruoyi/web/service/ProjectsService.java

@@ -8,6 +8,7 @@ import com.ruoyi.web.domain.dto.projects.ProjectsAddRequest;
 import com.ruoyi.web.domain.dto.projects.ProjectsEditRequest;
 import com.ruoyi.web.domain.dto.projects.ProjectsQueryRequest;
 import com.ruoyi.web.domain.entity.Projects;
+import com.ruoyi.web.domain.vo.ProjectsVO;
 
 /**
  * 项目接口
@@ -27,8 +28,9 @@ public interface ProjectsService extends IService<Projects> {
      * @param id
      * @return
      */
-    Projects getProjectsById(int id);
+    ProjectsVO getProjectsById(int id);
 
+    ProjectsVO getProjectsVO(Projects projects);
 
     /**
      * 分页获取项目列表
@@ -36,7 +38,7 @@ public interface ProjectsService extends IService<Projects> {
      * @param projectsQueryRequest
      * @return
      */
-    Page<Projects> getListProjectsByPage(ProjectsQueryRequest projectsQueryRequest);
+    Page<ProjectsVO> getListProjectsByPage(ProjectsQueryRequest projectsQueryRequest);
 
 
     /**

+ 63 - 0
app-admin/src/main/java/com/ruoyi/web/service/VillageProfileService.java

@@ -0,0 +1,63 @@
+package com.ruoyi.web.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.web.domain.dto.VillageProfile.VillageProfileAddRequest;
+import com.ruoyi.web.domain.dto.VillageProfile.VillageProfileEditRequest;
+import com.ruoyi.web.domain.dto.VillageProfile.VillageProfileQueryRequest;
+import com.ruoyi.web.domain.entity.VillageProfile;
+import com.ruoyi.web.domain.vo.VillageProfileVO;
+
+/**
+ * 村庄概况服务接口
+ */
+public interface VillageProfileService extends IService<VillageProfile> {
+
+    /**
+     * 添加村庄概况
+     *
+     * @param villageProfileAddRequest 添加请求
+     * @return 村庄ID
+     */
+    Integer addVillageProfile(VillageProfileAddRequest villageProfileAddRequest);
+
+    /**
+     * 删除村庄概况
+     *
+     * @param ids 村庄ID字符串,逗号分隔
+     * @return 是否成功
+     */
+    boolean deleteVillageProfile(String ids);
+
+    /**
+     * 编辑村庄概况
+     *
+     * @param villageProfileEditRequest 编辑请求
+     */
+    void editVillageProfile(VillageProfileEditRequest villageProfileEditRequest);
+
+    /**
+     * 根据ID获取村庄概况详情
+     *
+     * @param id 村庄ID
+     * @return 村庄概况VO对象
+     */
+    VillageProfileVO getVillageProfileById(int id);
+
+    /**
+     * 分页查询村庄概况列表
+     *
+     * @param villageProfileQueryRequest 查询条件
+     * @return 分页村庄概况VO
+     */
+    Page<VillageProfileVO> getListVillageProfileByPage(VillageProfileQueryRequest villageProfileQueryRequest);
+
+    /**
+     * 获取查询条件
+     *
+     * @param villageProfileQueryRequest 查询请求
+     * @return 查询条件包装器
+     */
+    QueryWrapper<VillageProfile> getQueryWrapper(VillageProfileQueryRequest villageProfileQueryRequest);
+} 

+ 2 - 1
app-admin/src/main/java/com/ruoyi/web/service/VillageServiceService.java

@@ -7,7 +7,7 @@ import com.ruoyi.web.domain.dto.VillageService.VillageServiceAddRequest;
 import com.ruoyi.web.domain.dto.VillageService.VillageServiceEditRequest;
 import com.ruoyi.web.domain.dto.VillageService.VillageServiceQueryRequest;
 import com.ruoyi.web.domain.entity.VillageService;
-import com.ruoyi.web.domain.vo.VillageService.VillageServiceVO;
+import com.ruoyi.web.domain.vo.VillageServiceVO;
 
 
 /**
@@ -29,6 +29,7 @@ public interface VillageServiceService extends IService<VillageService> {
      */
     VillageServiceVO getVillageServiceById(int id);
 
+    VillageServiceVO getVillageServiceVO(VillageService villageService);
 
     /**
      * 分页获取列表

+ 292 - 0
app-admin/src/main/java/com/ruoyi/web/service/impl/DisasterReliefServiceImpl.java

@@ -0,0 +1,292 @@
+package com.ruoyi.web.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.bean.BeanUtils;
+import com.ruoyi.web.domain.dto.disaster.DisasterReliefAddRequest;
+import com.ruoyi.web.domain.dto.disaster.DisasterReliefEditRequest;
+import com.ruoyi.web.domain.dto.disaster.DisasterReliefQueryRequest;
+import com.ruoyi.web.domain.entity.DisasterRelief;
+import com.ruoyi.web.domain.entity.PersonInfo;
+import com.ruoyi.web.domain.vo.DisasterReliefVO;
+import com.ruoyi.web.mapper.DisasterReliefMapper;
+import com.ruoyi.web.service.DisasterReliefService;
+import com.ruoyi.web.service.PersonInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 灾情共度管理服务实现类
+ */
+@Service
+public class DisasterReliefServiceImpl extends ServiceImpl<DisasterReliefMapper, DisasterRelief>
+        implements DisasterReliefService {
+
+    @Autowired
+    private PersonInfoService personInfoService;
+
+    @Override
+    public Integer addDisasterRelief(DisasterReliefAddRequest disasterReliefAddRequest) {
+        if (disasterReliefAddRequest == null) {
+            throw new ServiceException("请求参数为空");
+        }
+
+        try {
+            // 1. 检查村民是否存在
+            Integer personId = disasterReliefAddRequest.getPersonId();
+            if (personId == null || personId <= 0) {
+                throw new ServiceException("村民ID不能为空或无效");
+            }
+
+            PersonInfo personInfo = personInfoService.getById(personId);
+            if (personInfo == null) {
+                throw new ServiceException("未找到对应的村民信息");
+            }
+
+            // 2. 将请求对象转换为实体对象
+            DisasterRelief disasterRelief = new DisasterRelief();
+            BeanUtil.copyProperties(disasterReliefAddRequest, disasterRelief);
+
+            // 3. 设置创建时间
+            disasterRelief.setCreateTime(new Date());
+
+            // 4. 数据校验
+            validDisasterRelief(disasterRelief, BusinessType.INSERT);
+
+            // 5. 保存到数据库
+            this.save(disasterRelief);
+            return disasterRelief.getId();
+        } catch (Exception e) {
+            log.error("添加灾情共度记录失败", e);
+            throw new ServiceException("添加灾情共度记录失败: " + e.getMessage());
+        }
+    }
+
+    @Override
+    public boolean deleteDisasterRelief(String ids) {
+        if (StrUtil.isBlank(ids)) {
+            throw new ServiceException("ID不能为空或ID异常");
+        }
+
+        try {
+            // 分割ID字符串为列表
+            java.util.List<Long> idList = Arrays.stream(ids.split(","))
+                    .map(String::trim)
+                    .filter(StrUtil::isNotBlank)
+                    .map(Long::parseLong)
+                    .collect(Collectors.toList());
+
+            if (idList.isEmpty()) {
+                throw new ServiceException("ID格式异常");
+            }
+
+            // 构建删除条件
+            QueryWrapper<DisasterRelief> queryWrapper = new QueryWrapper<>();
+            queryWrapper.in("id", idList);
+
+            // 执行删除(返回是否删除成功)
+            return remove(queryWrapper);
+        } catch (NumberFormatException e) {
+            throw new ServiceException("ID格式错误,请确保所有ID都是数字");
+        } catch (Exception e) {
+            log.error("删除灾情共度记录失败", e);
+            throw new ServiceException("删除灾情共度记录失败: " + e.getMessage());
+        }
+    }
+
+    @Override
+    public void editDisasterRelief(DisasterReliefEditRequest disasterReliefEditRequest) {
+        // 判断请求是否为空
+        if (disasterReliefEditRequest == null) {
+            throw new ServiceException("请求参数为空");
+        }
+
+        try {
+            // 判断记录是否存在
+            Integer id = disasterReliefEditRequest.getId();
+            DisasterRelief oldDisasterRelief = this.getById(id);
+            if (oldDisasterRelief == null) {
+                throw new ServiceException("没有找到对应的灾情共度记录");
+            }
+
+            // 检查村民是否存在
+            Integer personId = disasterReliefEditRequest.getPersonId();
+            if (personId != null && personId > 0) {
+                PersonInfo personInfo = personInfoService.getById(personId);
+                if (personInfo == null) {
+                    throw new ServiceException("未找到对应的村民信息");
+                }
+            }
+
+            // 将请求对象转换为实体对象
+            DisasterRelief disasterRelief = new DisasterRelief();
+            BeanUtil.copyProperties(disasterReliefEditRequest, disasterRelief);
+
+            // 设置更新时间
+            disasterRelief.setUpdateTime(new Date());
+
+            // 数据校验
+            validDisasterRelief(disasterRelief, BusinessType.UPDATE);
+
+            // 更新数据库
+            boolean result = this.updateById(disasterRelief);
+            if (!result) {
+                throw new ServiceException("修改灾情共度记录失败");
+            }
+        } catch (Exception e) {
+            log.error("修改灾情共度记录失败", e);
+            throw new ServiceException("修改灾情共度记录失败: " + e.getMessage());
+        }
+    }
+
+    @Override
+    public DisasterReliefVO getDisasterReliefById(int id) {
+        if (id <= 0) {
+            throw new ServiceException("ID不能为空或ID异常");
+        }
+
+        DisasterRelief disasterRelief = this.getById(id);
+        if (disasterRelief == null) {
+            throw new ServiceException("没有找到对应的灾情共度记录");
+        }
+
+        return getDisasterReliefVO(disasterRelief);
+    }
+
+    @Override
+    public DisasterReliefVO getDisasterReliefVO(DisasterRelief disasterRelief) {
+        if (ObjectUtil.isEmpty(disasterRelief)) {
+            throw new ServiceException("请求参数不存在");
+        }
+
+        DisasterReliefVO disasterReliefVO = new DisasterReliefVO();
+        BeanUtils.copyProperties(disasterRelief, disasterReliefVO);
+
+        // 联表查询补充村民信息
+        Integer personId = disasterRelief.getPersonId();
+        if (personId != null && personId > 0) {
+            PersonInfo personInfo = personInfoService.getById(personId);
+            if (personInfo != null) {
+                // 设置村民姓名
+                disasterReliefVO.setName(personInfo.getRealname());
+                // 设置村民身份证号
+                disasterReliefVO.setIdCard(personInfoService.decryptIdCard(personInfo.getIdCard()));
+                // 设置村民联系方式
+                disasterReliefVO.setPhone(personInfo.getPhone());
+            }
+        }
+
+        return disasterReliefVO;
+    }
+
+    @Override
+    public Page<DisasterReliefVO> getListDisasterReliefByPage(DisasterReliefQueryRequest disasterReliefQueryRequest) {
+        // 获取分页参数
+        long current = disasterReliefQueryRequest.getPageNum();
+        long size = disasterReliefQueryRequest.getPageSize();
+
+        // 查询数据
+        Page<DisasterRelief> disasterReliefPage = this.page(new Page<>(current, size),
+                getQueryWrapper(disasterReliefQueryRequest));
+
+        // 创建结果分页对象
+        Page<DisasterReliefVO> resultPage = new Page<>();
+        BeanUtils.copyProperties(disasterReliefPage, resultPage, "records");
+
+        // 处理每条记录,转换为VO对象并补充关联数据
+        List<DisasterReliefVO> viewList = disasterReliefPage.getRecords().stream()
+                .map(this::getDisasterReliefVO)
+                .collect(Collectors.toList());
+
+        resultPage.setRecords(viewList);
+        return resultPage;
+    }
+
+    @Override
+    public QueryWrapper<DisasterRelief> getQueryWrapper(DisasterReliefQueryRequest disasterReliefQueryRequest) {
+        QueryWrapper<DisasterRelief> queryWrapper = new QueryWrapper<>();
+        if (disasterReliefQueryRequest == null) {
+            return queryWrapper;
+        }
+
+        // 从对象中取值
+        Integer id = disasterReliefQueryRequest.getId();
+        Integer personId = disasterReliefQueryRequest.getPersonId();
+        String personName = disasterReliefQueryRequest.getPersonName();
+        Date startDate = disasterReliefQueryRequest.getStartDate();
+        Date endDate = disasterReliefQueryRequest.getEndDate();
+        String location = disasterReliefQueryRequest.getLocation();
+        String sortField = disasterReliefQueryRequest.getSortField();
+        String sortOrder = disasterReliefQueryRequest.getSortOrder();
+
+        // ID查询条件
+        queryWrapper.eq(ObjectUtil.isNotEmpty(id), "id", id);
+
+        // 村民ID查询条件
+        queryWrapper.eq(ObjectUtil.isNotEmpty(personId), "person_id", personId);
+
+        // 发生日期范围查询
+        if (startDate != null) {
+            queryWrapper.ge("date", startDate);
+        }
+        if (endDate != null) {
+            queryWrapper.le("date", endDate);
+        }
+
+        // 如果有村民姓名查询条件,则需要联表查询
+        if (StrUtil.isNotBlank(personName)) {
+            // 通过子查询获取符合条件的村民ID
+            String subQuery = "SELECT id FROM person_info WHERE realname LIKE '%" + personName + "%'";
+            queryWrapper.inSql("person_id", subQuery);
+        }
+
+        // 排序
+        queryWrapper.orderBy(StrUtil.isNotEmpty(sortField), "ascend".equals(sortOrder), sortField);
+        return queryWrapper;
+    }
+
+    /**
+     * 校验灾情共度数据
+     *
+     * @param disasterRelief 灾情共度记录
+     * @param type           业务操作类型
+     */
+    public void validDisasterRelief(DisasterRelief disasterRelief, BusinessType type) {
+        if (ObjectUtil.isEmpty(disasterRelief)) {
+            throw new ServiceException("数据为空");
+        }
+
+        // 基础校验
+        if (type != BusinessType.INSERT && ObjectUtil.isEmpty(disasterRelief.getId())) {
+            throw new ServiceException("ID不能为空");
+        }
+
+        // 必填项校验
+        if (ObjectUtil.isEmpty(disasterRelief.getPersonId())) {
+            throw new ServiceException("村民ID不能为空");
+        }
+
+        if (ObjectUtil.isEmpty(disasterRelief.getDate())) {
+            throw new ServiceException("发生日期不能为空");
+        }
+
+        if (StrUtil.isBlank(disasterRelief.getLocation())) {
+            throw new ServiceException("发生地点不能为空");
+        }
+    }
+}
+
+
+
+

+ 11 - 9
app-admin/src/main/java/com/ruoyi/web/service/impl/EmploymentDataServiceImpl.java

@@ -8,7 +8,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.exception.ServiceException;
-import com.ruoyi.web.domain.dto.employment.EmploymentDataQueryRequest;
+import com.ruoyi.web.domain.dto.employmentData.EmploymentDataEditRequest;
+import com.ruoyi.web.domain.dto.employmentData.EmploymentDataQueryRequest;
+import com.ruoyi.web.domain.dto.employmentData.EmploymentDataAddRequest;
 import com.ruoyi.web.domain.entity.EmploymentData;
 import com.ruoyi.web.mapper.EmploymentDataMapper;
 import com.ruoyi.web.service.EmploymentDataService;
@@ -27,13 +29,13 @@ public class EmploymentDataServiceImpl extends ServiceImpl<EmploymentDataMapper,
         implements EmploymentDataService {
 
     @Override
-    public Integer addEmploymentData(EmploymentData employmentData) {
-        if (employmentData == null) {
+    public Integer addEmploymentData(EmploymentDataAddRequest employmentDataAddRequest) {
+        if (employmentDataAddRequest == null) {
             throw new ServiceException("请求参数为空");
         }
         try {
             EmploymentData newEmploymentData = new EmploymentData();
-            BeanUtil.copyProperties(employmentData, newEmploymentData);
+            BeanUtil.copyProperties(employmentDataAddRequest, newEmploymentData);
             // 数据校验
             validEmploymentData(newEmploymentData, BusinessType.INSERT);
             // 保存到数据库
@@ -41,7 +43,7 @@ public class EmploymentDataServiceImpl extends ServiceImpl<EmploymentDataMapper,
             return newEmploymentData.getId();
         } catch (Exception e) {
             log.error("添加就业数据失败", e);
-            throw new ServiceException("添加就业数据失败: " + e.getMessage());
+            throw new ServiceException("添加就业数据失败");
         }
     }
 
@@ -71,15 +73,15 @@ public class EmploymentDataServiceImpl extends ServiceImpl<EmploymentDataMapper,
     }
 
     @Override
-    public void editEmploymentData(EmploymentData employmentData) {
+    public void editEmploymentData(EmploymentDataEditRequest employmentDataEditRequest) {
         // 判断是否存在
-        Integer id = employmentData.getId();
+        Integer id = employmentDataEditRequest.getId();
         EmploymentData oldEmploymentData = this.getById(id);
         if (oldEmploymentData == null) {
             throw new ServiceException("没有找到就业数据");
         }
         EmploymentData newEmploymentData = new EmploymentData();
-        BeanUtil.copyProperties(oldEmploymentData, newEmploymentData);
+        BeanUtil.copyProperties(employmentDataEditRequest, newEmploymentData);
         newEmploymentData.setUpdateTime(new Date());
         // 数据校验
         validEmploymentData(newEmploymentData, BusinessType.UPDATE);
@@ -152,7 +154,7 @@ public class EmploymentDataServiceImpl extends ServiceImpl<EmploymentDataMapper,
         String sortOrder = employmentDataQueryRequest.getSortOrder();
 
         queryWrapper.eq(StrUtil.isNotBlank(months), "months", months)
-                .orderBy(StrUtil.isNotEmpty(sortField), sortOrder.equals("ascend"), sortField);
+                .orderBy(StrUtil.isNotEmpty(sortField), "ascend".equals(sortOrder), sortField);
 
         // 分页查询
         return this.page(new Page<>(pageNum, pageSize),

+ 216 - 0
app-admin/src/main/java/com/ruoyi/web/service/impl/EthnicActivitiesServiceImpl.java

@@ -0,0 +1,216 @@
+package com.ruoyi.web.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.bean.BeanUtils;
+import com.ruoyi.web.domain.dto.ethnicActivities.EthnicActivitiesAddRequest;
+import com.ruoyi.web.domain.dto.ethnicActivities.EthnicActivitiesEditRequest;
+import com.ruoyi.web.domain.dto.ethnicActivities.EthnicActivitiesQueryRequest;
+import com.ruoyi.web.domain.entity.EthnicActivities;
+import com.ruoyi.web.domain.vo.EthnicActivitiesVO;
+import com.ruoyi.web.mapper.EthnicActivitiesMapper;
+import com.ruoyi.web.service.EthnicActivitiesService;
+import org.springframework.stereotype.Service;
+
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ *
+ */
+@Service
+public class EthnicActivitiesServiceImpl extends ServiceImpl<EthnicActivitiesMapper, EthnicActivities>
+        implements EthnicActivitiesService {
+    @Override
+    public Integer addEthnicActivities(EthnicActivitiesAddRequest ethnicActivitiesAddRequest) {
+        if (ethnicActivitiesAddRequest == null) {
+            throw new ServiceException("请求参数为空");
+        }
+        try {
+            EthnicActivities newEthnicActivities = new EthnicActivities();
+            BeanUtil.copyProperties(ethnicActivitiesAddRequest, newEthnicActivities);
+            newEthnicActivities.setStatus(0);
+            // 将民族 List 转为 String
+            newEthnicActivities.setEthnic(JSONUtil.toJsonStr(ethnicActivitiesAddRequest.getEthnic()));
+            // 数据校验
+            validEthnicActivities(newEthnicActivities, BusinessType.INSERT);
+            // 保存到数据库
+            this.save(newEthnicActivities);
+            return newEthnicActivities.getId();
+        } catch (Exception e) {
+            log.error("添加民族团结活动数据失败", e);
+            throw new ServiceException("添加民族团结活动数据失败");
+        }
+    }
+
+    @Override
+    public boolean deleteEthnicActivities(String ids) {
+        if (StrUtil.isBlank(ids)) {
+            throw new ServiceException("id不能为空或id异常");
+        }
+
+        // 2. 分割ID字符串为List<Integer>
+        List<Long> idList = Arrays.stream(ids.split(","))
+                .map(String::trim)
+                .filter(StrUtil::isNotBlank)
+                .map(Long::parseLong)
+                .collect(Collectors.toList());
+
+        if (idList.isEmpty()) {
+            throw new ServiceException("ID格式异常");
+        }
+
+        // 3. 构建删除条件
+        QueryWrapper<EthnicActivities> queryWrapper = new QueryWrapper<>();
+        queryWrapper.in("id", idList);
+
+        // 4. 执行删除(返回是否删除成功)
+        return remove(queryWrapper);
+    }
+
+    @Override
+    public void editEthnicActivities(EthnicActivitiesEditRequest ethnicActivitiesEditRequest) {
+        // 判断是否存在
+        Integer id = ethnicActivitiesEditRequest.getId();
+        EthnicActivities oldEthnicActivities = this.getById(id);
+        if (oldEthnicActivities == null) {
+            throw new ServiceException("没有找到民族团结活动数据");
+        }
+        EthnicActivities newEthnicActivities = new EthnicActivities();
+        BeanUtil.copyProperties(ethnicActivitiesEditRequest, newEthnicActivities);
+        newEthnicActivities.setUpdateTime(new Date());
+        // 将民族 List 转为 String
+        newEthnicActivities.setEthnic(JSONUtil.toJsonStr(ethnicActivitiesEditRequest.getEthnic()));
+        // 数据校验
+        validEthnicActivities(newEthnicActivities, BusinessType.UPDATE);
+
+        // 操作数据库
+        boolean result = this.updateById(newEthnicActivities);
+        if (!result) {
+            throw new ServiceException("修改民族团结活动数据操作失败");
+        }
+    }
+
+    /**
+     * 校验就业数据
+     *
+     * @param ethnicActivities
+     */
+    public void validEthnicActivities(EthnicActivities ethnicActivities, BusinessType type) {
+        if (ObjectUtil.isEmpty(ethnicActivities)) {
+            throw new ServiceException("数据为空");
+        }
+        Integer id = ethnicActivities.getId();
+        String name = ethnicActivities.getName();
+        Date date = ethnicActivities.getDate();
+        String location = ethnicActivities.getLocation();
+        Integer category = ethnicActivities.getCategory();
+        String ethnic = ethnicActivities.getEthnic();
+
+        // 修改数据时,id 不能为空
+        if (type != BusinessType.INSERT && ObjectUtil.isEmpty(id)) {
+            throw new ServiceException("id不能为空");
+        }
+        if (StrUtil.isBlank(name)) {
+            throw new ServiceException("活动名称不能为空");
+        }
+        if (ObjectUtil.isEmpty(date)) {
+            throw new ServiceException("日期不能为空");
+        }
+        if (StrUtil.isEmpty(location)) {
+            throw new ServiceException("地点不能为空");
+        }
+        if (ObjectUtil.isEmpty(category)) {
+            throw new ServiceException("活动类别不能为空");
+        }
+        if (StrUtil.isBlank(ethnic)) {
+            throw new ServiceException("参与民族不能为空");
+        }
+    }
+
+
+    @Override
+    public EthnicActivitiesVO getEthnicActivitiesById(int id) {
+        if (ObjectUtil.isEmpty(id)) {
+            throw new ServiceException("id不能为空");
+        }
+        EthnicActivities ethnicActivities = this.getById(id);
+        return getEthnicActivitiesVO(ethnicActivities);
+    }
+
+    /**
+     * 获取包装类
+     *
+     * @param ethnicActivities
+     * @return
+     */
+    @Override
+    public EthnicActivitiesVO getEthnicActivitiesVO(EthnicActivities ethnicActivities) {
+        if (ObjectUtil.isEmpty(ethnicActivities)) {
+            throw new ServiceException("请求参数不存在");
+        }
+        EthnicActivitiesVO ethnicActivitiesVO = new EthnicActivitiesVO();
+        BeanUtils.copyProperties(ethnicActivities, ethnicActivitiesVO);
+        return ethnicActivitiesVO;
+    }
+
+
+    @Override
+    public Page<EthnicActivitiesVO> getListEthnicActivitiesByPage(EthnicActivitiesQueryRequest ethnicActivitiesQueryRequest) {
+        QueryWrapper<EthnicActivities> queryWrapper = new QueryWrapper<>();
+        Date startTime = ethnicActivitiesQueryRequest.getStartTime();
+        Date endTime = ethnicActivitiesQueryRequest.getEndTime();
+        Integer category = ethnicActivitiesQueryRequest.getCategory();
+        List<String> ethnic = ethnicActivitiesQueryRequest.getEthnic();
+        Integer status = ethnicActivitiesQueryRequest.getStatus();
+        long pageNum = ethnicActivitiesQueryRequest.getPageNum();
+        long pageSize = ethnicActivitiesQueryRequest.getPageSize();
+        String sortField = ethnicActivitiesQueryRequest.getSortField();
+        String sortOrder = ethnicActivitiesQueryRequest.getSortOrder();
+
+        queryWrapper.eq(ObjectUtil.isNotEmpty(category), "category", category)
+                .eq(ObjectUtil.isNotEmpty(status), "status", status)
+                .orderBy(StrUtil.isNotEmpty(sortField), "ascend".equals(sortOrder), sortField);
+
+        // 民族
+        if (CollUtil.isNotEmpty(ethnic)) {
+            for (String e : ethnic) {
+                queryWrapper.like("ethnic", "\"" + e + "\"");
+            }
+        }
+
+        // 日期范围查询(优先判断范围)
+        if (startTime != null && endTime != null) {
+            queryWrapper.between("date", startTime, endTime);
+        } else if (startTime != null) {
+            queryWrapper.ge("date", startTime); // >= 开始日期
+        } else if (endTime != null) {
+            queryWrapper.le("date", endTime);   // <= 结束日期
+        }
+
+        // 分页查询
+        Page<EthnicActivities> page = this.page(new Page<>(pageNum, pageSize),
+                queryWrapper);
+        Page<EthnicActivitiesVO> ethnicActivitiesVOPage = new Page<>();
+        BeanUtil.copyProperties(page, ethnicActivitiesVOPage, "records");
+        List<EthnicActivitiesVO> voList = page.getRecords().stream()
+                .map(this::getEthnicActivitiesVO)
+                .collect(Collectors.toList());
+        ethnicActivitiesVOPage.setRecords(voList);
+        return ethnicActivitiesVOPage;
+    }
+}
+
+
+
+

+ 70 - 4
app-admin/src/main/java/com/ruoyi/web/service/impl/FacilityManagementServiceImpl.java

@@ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.web.domain.dto.facility.FacilityAddRequest;
 import com.ruoyi.web.domain.dto.facility.FacilityEditRequest;
@@ -43,6 +44,8 @@ public class FacilityManagementServiceImpl extends ServiceImpl<FacilityManagemen
         }
         FacilityManagement facilityManagement = new FacilityManagement();
         BeanUtil.copyProperties(facilityAddRequest, facilityManagement);
+        // 数据校验
+        validFacility(facilityManagement, BusinessType.INSERT);
         // 插入数据库
         this.save(facilityManagement);
         return facilityManagement.getId();
@@ -55,14 +58,13 @@ public class FacilityManagementServiceImpl extends ServiceImpl<FacilityManagemen
      */
     @Override
     public void editFacility(FacilityEditRequest facilityEditRequest) {
-        // 在此处将实体类和 DTO 进行转换
+        // 实体类和 DTO 进行转换
         FacilityManagement facilityManagement = new FacilityManagement();
         BeanUtils.copyProperties(facilityEditRequest, facilityManagement);
         // 设置编辑时间
         facilityManagement.setUpdateTime(new Date());
         // 数据校验
-        //todo
-        //validFacility(facilityManagement);
+        validFacility(facilityManagement, BusinessType.UPDATE);
         // 判断是否存在
         Integer id = facilityEditRequest.getId();
         FacilityManagement oldFacility = this.getById(id);
@@ -77,6 +79,70 @@ public class FacilityManagementServiceImpl extends ServiceImpl<FacilityManagemen
     }
 
     /**
+     * 校验设施
+     *
+     * @param facilityManagement
+     */
+    public void validFacility(FacilityManagement facilityManagement, BusinessType type) {
+        if (ObjectUtil.isEmpty(facilityManagement)) {
+            throw new ServiceException("数据为空");
+        }
+        Integer id = facilityManagement.getId();
+        String facilityType = facilityManagement.getFacilityType();
+        String facilityName = facilityManagement.getFacilityName();
+        String location = facilityManagement.getLocation();
+        String extent = facilityManagement.getExtent();
+        String breadth = facilityManagement.getBreadth();
+        String area = facilityManagement.getArea();
+        String year = facilityManagement.getYear();
+        Integer classNum = facilityManagement.getClassNum();
+        Integer teacherNum = facilityManagement.getTeacherNum();
+        Integer studentNum = facilityManagement.getStudentNum();
+
+        // 修改数据时,id 不能为空
+        if (type != BusinessType.INSERT && ObjectUtil.isEmpty(id)) {
+            throw new ServiceException("id不能为空");
+        }
+        if (StrUtil.isBlank(facilityType)) {
+            throw new ServiceException("设施类型不能为空");
+        }
+        if (StrUtil.isBlank(facilityName)) {
+            throw new ServiceException("设施名称不能为空");
+        }
+        if (StrUtil.isBlank(location)) {
+            throw new ServiceException("位置不能为空");
+        }
+        if (StrUtil.isBlank(year)) {
+            throw new ServiceException("建成年份不能为空");
+        }
+
+        // 道路
+        if ("1".equals(facilityType)) {
+            if (StrUtil.isBlank(extent)) {
+                throw new ServiceException("长度不能为空");
+            }
+            if (StrUtil.isBlank(breadth)) {
+                throw new ServiceException("宽度不能为空");
+            }
+        }
+        // 学校
+        if ("4".equals(facilityType)) {
+            if (StrUtil.isBlank(area)) {
+                throw new ServiceException("占地面积不能为空");
+            }
+            if (ObjectUtil.isEmpty(classNum)) {
+                throw new ServiceException("班级数量不能为空");
+            }
+            if (ObjectUtil.isEmpty(teacherNum)) {
+                throw new ServiceException("教师数量不能为空");
+            }
+            if (ObjectUtil.isEmpty(studentNum)) {
+                throw new ServiceException("学生数量不能为空");
+            }
+        }
+    }
+
+    /**
      * 删除
      *
      * @param ids
@@ -143,7 +209,7 @@ public class FacilityManagementServiceImpl extends ServiceImpl<FacilityManagemen
         queryWrapper.eq(StrUtil.isNotBlank(facilityType), "facility_type", facilityType);
         queryWrapper.like(StrUtil.isNotBlank(facilityName), "facility_name", facilityName);
         // 排序
-        queryWrapper.orderBy(StrUtil.isNotEmpty(sortField), sortOrder.equals("ascend"), sortField);
+        queryWrapper.orderBy(StrUtil.isNotEmpty(sortField), "ascend".equals(sortOrder), sortField);
 
         // 1. 分页查询
         Page<FacilityManagement> facilityManagementPage = this.page(new Page<>(current, pageSize),

+ 2 - 3
app-admin/src/main/java/com/ruoyi/web/service/impl/HouseInfoServiceImpl.java

@@ -66,7 +66,7 @@ public class HouseInfoServiceImpl extends ServiceImpl<HouseInfoMapper, HouseInfo
             return houseInfo.getId();
         } catch (Exception e) {
             log.error("添加房屋失败", e);
-            throw new ServiceException("添加房屋失败: " + e.getMessage());
+            throw new ServiceException("添加房屋失败");
         }
     }
 
@@ -110,7 +110,6 @@ public class HouseInfoServiceImpl extends ServiceImpl<HouseInfoMapper, HouseInfo
         houseInfo.setUpdateTime(new Date());
         // 数据校验
         validHouseInfo(houseInfo, BusinessType.UPDATE);
-
         // 操作数据库
         boolean result = this.updateById(houseInfo);
         if (!result) {
@@ -274,7 +273,7 @@ public class HouseInfoServiceImpl extends ServiceImpl<HouseInfoMapper, HouseInfo
         }
 
         // 排序
-        queryWrapper.orderBy(StrUtil.isNotEmpty(sortField), sortOrder.equals("ascend"), sortField);
+        queryWrapper.orderBy(StrUtil.isNotEmpty(sortField), "ascend".equals(sortOrder), sortField);
         return queryWrapper;
     }
 }

+ 16 - 16
app-admin/src/main/java/com/ruoyi/web/service/impl/IndustryDataServiceImpl.java

@@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.web.domain.dto.Industry.IndustryDataAddRequest;
+import com.ruoyi.web.domain.dto.Industry.IndustryDataEditRequest;
 import com.ruoyi.web.domain.dto.Industry.IndustryDataQueryRequest;
 import com.ruoyi.web.domain.entity.IndustryData;
 import com.ruoyi.web.mapper.IndustryDataMapper;
@@ -28,13 +30,13 @@ public class IndustryDataServiceImpl extends ServiceImpl<IndustryDataMapper, Ind
 
 
     @Override
-    public Integer addIndustryData(IndustryData industryData) {
-        if (industryData == null) {
+    public Integer addIndustryData(IndustryDataAddRequest industryDataAddRequest) {
+        if (industryDataAddRequest == null) {
             throw new ServiceException("请求参数为空");
         }
         try {
             IndustryData newIndustryData = new IndustryData();
-            BeanUtil.copyProperties(industryData, newIndustryData);
+            BeanUtil.copyProperties(industryDataAddRequest, newIndustryData);
             // 数据校验
             validIndustryData(newIndustryData, BusinessType.INSERT);
             // 保存到数据库
@@ -42,7 +44,7 @@ public class IndustryDataServiceImpl extends ServiceImpl<IndustryDataMapper, Ind
             return newIndustryData.getId();
         } catch (Exception e) {
             log.error("添加产业失败", e);
-            throw new ServiceException("添加产业失败: " + e.getMessage());
+            throw new ServiceException("添加产业失败");
         }
     }
 
@@ -72,15 +74,15 @@ public class IndustryDataServiceImpl extends ServiceImpl<IndustryDataMapper, Ind
     }
 
     @Override
-    public void editIndustryData(IndustryData industryData) {
+    public void editIndustryData(IndustryDataEditRequest industryDataEditRequest) {
         // 判断是否存在
-        Integer id = industryData.getId();
+        Integer id = industryDataEditRequest.getId();
         IndustryData oldIndustryData = this.getById(id);
         if (oldIndustryData == null) {
             throw new ServiceException("没有找到产业数据");
         }
         IndustryData newIndustryData = new IndustryData();
-        BeanUtil.copyProperties(oldIndustryData, newIndustryData);
+        BeanUtil.copyProperties(industryDataEditRequest, newIndustryData);
         newIndustryData.setUpdateTime(new Date());
         // 数据校验
         validIndustryData(newIndustryData, BusinessType.UPDATE);
@@ -103,17 +105,15 @@ public class IndustryDataServiceImpl extends ServiceImpl<IndustryDataMapper, Ind
         }
 
         Integer id = industryData.getId();
-        String years = industryData.getYears();
+        String year = industryData.getYear();
         Integer category = industryData.getCategory();
-        String scale = industryData.getScale();
-        String yield = industryData.getYield();
         String value = industryData.getValue();
 
         // 修改数据时,id 不能为空
         if (type != BusinessType.INSERT && ObjectUtil.isEmpty(id)) {
             throw new ServiceException("id不能为空");
         }
-        if (StrUtil.isBlank(years)) {
+        if (StrUtil.isBlank(year)) {
             throw new ServiceException("年份不能为空");
         }
         if (ObjectUtil.isEmpty(category)) {
@@ -137,17 +137,17 @@ public class IndustryDataServiceImpl extends ServiceImpl<IndustryDataMapper, Ind
     public Page<IndustryData> getListIndustryDataByPage(IndustryDataQueryRequest industryDataQueryRequest) {
         QueryWrapper<IndustryData> queryWrapper = new QueryWrapper<>();
         Integer id = industryDataQueryRequest.getId();
-        String years = industryDataQueryRequest.getYears();
+        String year = industryDataQueryRequest.getYear();
         Integer category = industryDataQueryRequest.getCategory();
         long pageNum = industryDataQueryRequest.getPageNum();
         long pageSize = industryDataQueryRequest.getPageSize();
         String sortField = industryDataQueryRequest.getSortField();
         String sortOrder = industryDataQueryRequest.getSortOrder();
 
-        queryWrapper.eq(StrUtil.isNotBlank(years), "years", years)
-                .eq(ObjectUtil.isEmpty(id), "id", id)
-                .eq(ObjectUtil.isEmpty(category), "category", category)
-                .orderBy(StrUtil.isNotEmpty(sortField), sortOrder.equals("ascend"), sortField);
+        queryWrapper.eq(StrUtil.isNotBlank(year), "year", year)
+                .eq(ObjectUtil.isNotEmpty(id), "id", id)
+                .eq(ObjectUtil.isNotEmpty(category), "category", category)
+                .orderBy(StrUtil.isNotEmpty(sortField), "ascend".equals(sortOrder), sortField);
 
         // 分页查询
         return this.page(new Page<>(pageNum, pageSize),

+ 2 - 2
app-admin/src/main/java/com/ruoyi/web/service/impl/LocalPolicyServiceImpl.java

@@ -51,7 +51,7 @@ public class LocalPolicyServiceImpl extends ServiceImpl<LocalPolicyMapper, Local
             return localPolicy.getId();
         } catch (Exception e) {
             log.error("添加政策失败", e);
-            throw new ServiceException("添加政策失败: " + e.getMessage());
+            throw new ServiceException("添加政策失败");
         }
     }
 
@@ -178,7 +178,7 @@ public class LocalPolicyServiceImpl extends ServiceImpl<LocalPolicyMapper, Local
                     .like("label", keyword);
         }
         // 排序
-        queryWrapper.orderBy(StrUtil.isNotEmpty(sortField), sortOrder.equals("ascend"), sortField);
+        queryWrapper.orderBy(StrUtil.isNotEmpty(sortField), "ascend".equals(sortOrder), sortField);
 
         // 分页查询
         return this.page(new Page<>(current, pageSize),

+ 284 - 0
app-admin/src/main/java/com/ruoyi/web/service/impl/MediaPropagandaServiceImpl.java

@@ -0,0 +1,284 @@
+package com.ruoyi.web.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.web.domain.dto.mediaPropaganda.MediaPropagandaAddRequest;
+import com.ruoyi.web.domain.dto.mediaPropaganda.MediaPropagandaEditRequest;
+import com.ruoyi.web.domain.dto.mediaPropaganda.MediaPropagandaQueryRequest;
+import com.ruoyi.web.domain.entity.MediaPropaganda;
+import com.ruoyi.web.domain.vo.MediaPropagandaVO;
+import com.ruoyi.web.mapper.MediaPropagandaMapper;
+import com.ruoyi.web.service.MediaPropagandaService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 媒体宣传内容收集服务实现类
+ */
+@Slf4j
+@Service
+public class MediaPropagandaServiceImpl extends ServiceImpl<MediaPropagandaMapper, MediaPropaganda>
+        implements MediaPropagandaService {
+
+    @Override
+    public Integer addMediaPropaganda(MediaPropagandaAddRequest mediaPropagandaAddRequest) {
+        if (mediaPropagandaAddRequest == null) {
+            throw new ServiceException("请求参数为空");
+        }
+
+        try {
+            // 1. 将请求对象转换为实体对象
+            MediaPropaganda mediaPropaganda = new MediaPropaganda();
+            BeanUtil.copyProperties(mediaPropagandaAddRequest, mediaPropaganda);
+
+            // 2. 设置创建时间
+            mediaPropaganda.setCreateTime(new Date());
+
+            // 3. 数据校验
+            validMediaPropaganda(mediaPropaganda, BusinessType.INSERT);
+
+            // 4. 保存到数据库
+            this.save(mediaPropaganda);
+            return mediaPropaganda.getId();
+        } catch (Exception e) {
+            log.error("添加媒体宣传内容失败", e);
+            throw new ServiceException("添加媒体宣传内容失败: " + e.getMessage());
+        }
+    }
+
+    @Override
+    public boolean deleteMediaPropaganda(String ids) {
+        if (StrUtil.isBlank(ids)) {
+            throw new ServiceException("ID不能为空或ID异常");
+        }
+
+        try {
+            // 分割ID字符串为列表
+            List<Long> idList = Arrays.stream(ids.split(","))
+                    .map(String::trim)
+                    .filter(StrUtil::isNotBlank)
+                    .map(Long::parseLong)
+                    .collect(Collectors.toList());
+
+            if (idList.isEmpty()) {
+                throw new ServiceException("ID格式异常");
+            }
+
+            // 构建删除条件
+            QueryWrapper<MediaPropaganda> queryWrapper = new QueryWrapper<>();
+            queryWrapper.in("id", idList);
+
+            // 执行删除(返回是否删除成功)
+            return remove(queryWrapper);
+        } catch (NumberFormatException e) {
+            log.error("删除媒体宣传内容失败,ID格式错误", e);
+            throw new ServiceException("ID格式错误");
+        } catch (Exception e) {
+            log.error("删除媒体宣传内容失败", e);
+            throw new ServiceException("删除媒体宣传内容失败: " + e.getMessage());
+        }
+    }
+
+    @Override
+    public void editMediaPropaganda(MediaPropagandaEditRequest mediaPropagandaEditRequest) {
+        if (mediaPropagandaEditRequest == null) {
+            throw new ServiceException("请求参数为空");
+        }
+
+        try {
+            // 1. 检查记录是否存在
+            Integer id = mediaPropagandaEditRequest.getId();
+            if (id == null || id <= 0) {
+                throw new ServiceException("ID不能为空或无效");
+            }
+
+            MediaPropaganda existingMediaPropaganda = this.getById(id);
+            if (existingMediaPropaganda == null) {
+                throw new ServiceException("未找到对应的媒体宣传内容记录");
+            }
+
+            // 2. 将请求对象转换为实体对象
+            MediaPropaganda mediaPropaganda = new MediaPropaganda();
+            BeanUtil.copyProperties(mediaPropagandaEditRequest, mediaPropaganda);
+
+            // 3. 设置更新时间
+            mediaPropaganda.setUpdateTime(new Date());
+
+            // 4. 数据校验
+            validMediaPropaganda(mediaPropaganda, BusinessType.UPDATE);
+
+            // 5. 更新到数据库
+            this.updateById(mediaPropaganda);
+        } catch (Exception e) {
+            log.error("修改媒体宣传内容失败", e);
+            throw new ServiceException("修改媒体宣传内容失败: " + e.getMessage());
+        }
+    }
+
+    @Override
+    public MediaPropagandaVO getMediaPropagandaById(int id) {
+        if (id <= 0) {
+            throw new ServiceException("ID不能为空或无效");
+        }
+
+        try {
+            MediaPropaganda mediaPropaganda = this.getById(id);
+            if (mediaPropaganda == null) {
+                return null;
+            }
+            return getMediaPropagandaVO(mediaPropaganda);
+        } catch (Exception e) {
+            log.error("获取媒体宣传内容详情失败", e);
+            throw new ServiceException("获取媒体宣传内容详情失败: " + e.getMessage());
+        }
+    }
+
+    @Override
+    public MediaPropagandaVO getMediaPropagandaVO(MediaPropaganda mediaPropaganda) {
+        if (mediaPropaganda == null) {
+            return null;
+        }
+
+        try {
+            MediaPropagandaVO mediaPropagandaVO = new MediaPropagandaVO();
+            BeanUtil.copyProperties(mediaPropaganda, mediaPropagandaVO);
+            return mediaPropagandaVO;
+        } catch (Exception e) {
+            log.error("转换媒体宣传内容VO失败", e);
+            throw new ServiceException("转换媒体宣传内容VO失败: " + e.getMessage());
+        }
+    }
+
+    @Override
+    public Page<MediaPropagandaVO> getListMediaPropagandaByPage(MediaPropagandaQueryRequest mediaPropagandaQueryRequest) {
+        if (mediaPropagandaQueryRequest == null) {
+            throw new ServiceException("查询参数为空");
+        }
+
+        try {
+            // 1. 构建查询条件
+            QueryWrapper<MediaPropaganda> queryWrapper = getQueryWrapper(mediaPropagandaQueryRequest);
+
+            // 2. 执行分页查询
+            Page<MediaPropaganda> page = new Page<>(mediaPropagandaQueryRequest.getPageNum(), mediaPropagandaQueryRequest.getPageSize());
+            Page<MediaPropaganda> mediaPropagandaPage = this.page(page, queryWrapper);
+
+            // 3. 转换为VO
+            Page<MediaPropagandaVO> voPage = new Page<>();
+            BeanUtil.copyProperties(mediaPropagandaPage, voPage);
+
+            List<MediaPropagandaVO> voList = mediaPropagandaPage.getRecords().stream()
+                    .map(this::getMediaPropagandaVO)
+                    .collect(Collectors.toList());
+            voPage.setRecords(voList);
+
+            return voPage;
+        } catch (Exception e) {
+            log.error("分页查询媒体宣传内容失败", e);
+            throw new ServiceException("分页查询媒体宣传内容失败: " + e.getMessage());
+        }
+    }
+
+    @Override
+    public QueryWrapper<MediaPropaganda> getQueryWrapper(MediaPropagandaQueryRequest mediaPropagandaQueryRequest) {
+        QueryWrapper<MediaPropaganda> queryWrapper = new QueryWrapper<>();
+        Date extractStartTime = mediaPropagandaQueryRequest.getExtractStartTime();
+        Date extractEndTime = mediaPropagandaQueryRequest.getExtractEndTime();
+        Date publishStartTime = mediaPropagandaQueryRequest.getPublishStartTime();
+        Date publishEndTime = mediaPropagandaQueryRequest.getPublishEndTime();
+        String keyword = mediaPropagandaQueryRequest.getKeyword();
+        String sortField = mediaPropagandaQueryRequest.getSortField();
+        String sortOrder = mediaPropagandaQueryRequest.getSortOrder();
+
+        // 关键词搜索(标题或内容)
+        if (StrUtil.isNotBlank(mediaPropagandaQueryRequest.getKeyword())) {
+            queryWrapper.and(wrapper -> wrapper
+                    .like("title", keyword)
+                    .or()
+                    .like("content", keyword)
+            );
+        }
+
+        // 摘录日期范围查询
+        if (ObjectUtil.isNotNull(mediaPropagandaQueryRequest.getExtractStartTime())) {
+            queryWrapper.ge("extract_date", extractStartTime);
+        }
+        if (ObjectUtil.isNotNull(mediaPropagandaQueryRequest.getExtractEndTime())) {
+            queryWrapper.le("extract_date", extractEndTime);
+        }
+
+        // 发布日期范围查询
+        if (ObjectUtil.isNotNull(mediaPropagandaQueryRequest.getPublishStartTime())) {
+            queryWrapper.ge("publish_date", publishStartTime);
+        }
+        if (ObjectUtil.isNotNull(mediaPropagandaQueryRequest.getPublishEndTime())) {
+            queryWrapper.le("publish_date", publishEndTime);
+        }
+
+        // 排序
+        queryWrapper.orderBy(StrUtil.isNotEmpty(sortField), "ascend".equals(sortOrder), sortField);
+
+
+        return queryWrapper;
+    }
+
+    /**
+     * 数据校验
+     *
+     * @param mediaPropaganda 媒体宣传内容实体
+     * @param type            业务类型
+     */
+    public void validMediaPropaganda(MediaPropaganda mediaPropaganda, BusinessType type) {
+        if (mediaPropaganda == null) {
+            throw new ServiceException("媒体宣传内容数据不能为空");
+        }
+        Integer id = mediaPropaganda.getId();
+        String title = mediaPropaganda.getTitle();
+        Integer mediaPropagandaType = mediaPropaganda.getType();
+        String content = mediaPropaganda.getContent();
+        Date extractDate = mediaPropaganda.getExtractDate();
+        Date publishDate = mediaPropaganda.getPublishDate();
+        String source = mediaPropaganda.getSource();
+
+        // 添加id无需校验,修改时,id 不能为空
+        if (type != BusinessType.INSERT && ObjectUtil.isEmpty(id)) {
+            throw new ServiceException("id不能为空");
+        }
+        if (StrUtil.isBlank(title)) {
+            throw new ServiceException("标题不能为空");
+        }
+        if (ObjectUtil.isEmpty(mediaPropagandaType)) {
+            throw new ServiceException("类型不能为空");
+        }
+        if (mediaPropagandaType != 0 && mediaPropagandaType != 1) {
+            throw new ServiceException("类型值无效,只能是0(图文)或1(视频)");
+        }
+        if (StrUtil.isBlank(content)) {
+            throw new ServiceException("内容不能为空");
+        }
+        if (ObjectUtil.isEmpty(extractDate)) {
+            throw new ServiceException("摘录日期不能为空");
+        }
+        if (ObjectUtil.isEmpty(publishDate)) {
+            throw new ServiceException("发布日期不能为空");
+        }
+        if (StrUtil.isBlank(source)) {
+            throw new ServiceException("来源不能为空");
+        }
+    }
+}
+
+
+
+

+ 4 - 7
app-admin/src/main/java/com/ruoyi/web/service/impl/PersonInfoServiceImpl.java

@@ -64,7 +64,7 @@ public class PersonInfoServiceImpl extends ServiceImpl<PersonInfoMapper, PersonI
             return personInfo.getId();
         } catch (Exception e) {
             log.error("添加人员失败", e);
-            throw new ServiceException("添加人员失败: " + e.getMessage());
+            throw new ServiceException("添加人员失败");
         }
     }
 
@@ -214,13 +214,10 @@ public class PersonInfoServiceImpl extends ServiceImpl<PersonInfoMapper, PersonI
         }
         PersonInfoVO personInfoVO = new PersonInfoVO();
         BeanUtils.copyProperties(personInfo, personInfoVO);
-        // 获取身份证号 解密 -> 脱敏
+        // 获取身份证号 解密
         String idCard = personInfoVO.getIdCard();
         idCard = this.decryptIdCard(idCard);
-        personInfoVO.setIdCard(SecureSensitiveUtils.maskIdCard(idCard));
-        // 手机号脱敏
-        String phone = personInfoVO.getPhone();
-        personInfoVO.setPhone(SecureSensitiveUtils.maskPhone(phone));
+        personInfoVO.setIdCard(idCard);
 
         // 联表查询补充数据
         if (personInfo.getHouseholdId() != null) {
@@ -308,7 +305,7 @@ public class PersonInfoServiceImpl extends ServiceImpl<PersonInfoMapper, PersonI
         }
 
         // 排序
-        queryWrapper.orderBy(StrUtil.isNotEmpty(sortField), sortOrder.equals("ascend"), sortField);
+        queryWrapper.orderBy(StrUtil.isNotEmpty(sortField), "ascend".equals(sortOrder), sortField);
         return queryWrapper;
     }
 

+ 36 - 6
app-admin/src/main/java/com/ruoyi/web/service/impl/ProjectsServiceImpl.java

@@ -8,10 +8,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.bean.BeanUtils;
 import com.ruoyi.web.domain.dto.projects.ProjectsAddRequest;
 import com.ruoyi.web.domain.dto.projects.ProjectsEditRequest;
 import com.ruoyi.web.domain.dto.projects.ProjectsQueryRequest;
 import com.ruoyi.web.domain.entity.Projects;
+import com.ruoyi.web.domain.vo.ProjectsVO;
 import com.ruoyi.web.mapper.ProjectsMapper;
 import com.ruoyi.web.service.ProjectsService;
 import org.apache.commons.lang3.StringUtils;
@@ -53,7 +55,7 @@ public class ProjectsServiceImpl extends ServiceImpl<ProjectsMapper, Projects>
             return projects.getId();
         } catch (Exception e) {
             log.error("添加项目失败", e);
-            throw new ServiceException("添加项目失败: " + e.getMessage());
+            throw new ServiceException("添加项目失败");
         }
     }
 
@@ -159,11 +161,28 @@ public class ProjectsServiceImpl extends ServiceImpl<ProjectsMapper, Projects>
      * @return
      */
     @Override
-    public Projects getProjectsById(int id) {
+    public ProjectsVO getProjectsById(int id) {
         if (id <= 0 || ObjectUtil.isEmpty(id)) {
             throw new ServiceException("id不能为空或id异常");
         }
-        return this.getById(id);
+        Projects projects = this.getById(id);
+        return getProjectsVO(projects);
+    }
+
+    /**
+     * 获取项目包装类
+     *
+     * @param projects
+     * @return
+     */
+    @Override
+    public ProjectsVO getProjectsVO(Projects projects) {
+        if (ObjectUtil.isEmpty(projects)) {
+            throw new ServiceException("请求参数不存在");
+        }
+        ProjectsVO projectsVO = new ProjectsVO();
+        BeanUtils.copyProperties(projects, projectsVO);
+        return projectsVO;
     }
 
     /**
@@ -173,11 +192,22 @@ public class ProjectsServiceImpl extends ServiceImpl<ProjectsMapper, Projects>
      * @return
      */
     @Override
-    public Page<Projects> getListProjectsByPage(ProjectsQueryRequest projectsQueryRequest) {
+    public Page<ProjectsVO> getListProjectsByPage(ProjectsQueryRequest projectsQueryRequest) {
         long current = projectsQueryRequest.getPageNum();
         long size = projectsQueryRequest.getPageSize();
-        return this.page(new Page<>(current, size),
+        Page<Projects> page = this.page(new Page<>(current, size),
                 getQueryWrapper(projectsQueryRequest));
+        Page<ProjectsVO> projectsVOPage = new Page<>();
+        BeanUtils.copyProperties(page, projectsVOPage, "records");
+        List<ProjectsVO> voList = page.getRecords().stream()
+                .map(projects -> {
+                    ProjectsVO vo = new ProjectsVO();
+                    BeanUtils.copyProperties(projects, vo);
+                    return vo;
+                })
+                .collect(Collectors.toList());
+        projectsVOPage.setRecords(voList);
+        return projectsVOPage;
     }
 
     /**
@@ -208,7 +238,7 @@ public class ProjectsServiceImpl extends ServiceImpl<ProjectsMapper, Projects>
         queryWrapper.eq(ObjectUtil.isNotEmpty(progress), "progress", progress);
 
         // 排序
-        queryWrapper.orderBy(StrUtil.isNotEmpty(sortField), sortOrder.equals("ascend"), sortField);
+        queryWrapper.orderBy(StrUtil.isNotEmpty(sortField), "ascend".equals(sortOrder), sortField);
         return queryWrapper;
     }
 }

+ 7 - 9
app-admin/src/main/java/com/ruoyi/web/service/impl/SubsidyProjectsServiceImpl.java

@@ -59,7 +59,7 @@ public class SubsidyProjectsServiceImpl extends ServiceImpl<SubsidyProjectsMappe
             return subsidyProjects.getId();
         } catch (Exception e) {
             log.error("添加惠农补贴项目失败", e);
-            throw new ServiceException("添加惠农补贴项目失败: " + e.getMessage());
+            throw new ServiceException("添加惠农补贴项目失败");
         }
     }
 
@@ -203,9 +203,8 @@ public class SubsidyProjectsServiceImpl extends ServiceImpl<SubsidyProjectsMappe
             log.error("银行号码解密异常" + e.getMessage());
             throw new ServiceException("银行号码解密异常");
         }
-        // 脱敏
-        subsidyProject.setIdCard(SecureSensitiveUtils.maskIdCard(idCard));
-        subsidyProject.setBankCard(SecureSensitiveUtils.maskBankAccount(bankCard));
+        subsidyProject.setIdCard(idCard);
+        subsidyProject.setBankCard(bankCard);
         return subsidyProject;
     }
 
@@ -225,16 +224,15 @@ public class SubsidyProjectsServiceImpl extends ServiceImpl<SubsidyProjectsMappe
         List<SubsidyProjects> records = page.getRecords();
         if (records != null) {
             records.forEach(subsidyProjects -> {
-                // 解密-> 身份证 & 银行号码 -> 脱敏
+                // 解密-> 身份证 & 银行号码
                 String bankCard = null;
                 String idCard = null;
                 try {
                     // 解密
                     idCard = personInfoService.decryptIdCard(subsidyProjects.getIdCard());
                     bankCard = SecureSensitiveUtils.decrypt(subsidyProjects.getBankCard(), SecureSensitiveUtils.generateAesKey());
-                    // 脱敏
-                    subsidyProjects.setIdCard(SecureSensitiveUtils.maskIdCard(idCard));
-                    subsidyProjects.setBankCard(SecureSensitiveUtils.maskBankAccount(bankCard));
+                    subsidyProjects.setIdCard(idCard);
+                    subsidyProjects.setBankCard(bankCard);
                 } catch (Exception e) {
                     throw new RuntimeException(e.getMessage());
                 }
@@ -284,7 +282,7 @@ public class SubsidyProjectsServiceImpl extends ServiceImpl<SubsidyProjectsMappe
         queryWrapper.eq(StringUtils.isNotBlank(status), "status", status);
 
         // 排序
-        queryWrapper.orderBy(StrUtil.isNotEmpty(sortField), sortOrder.equals("ascend"), sortField);
+        queryWrapper.orderBy(StrUtil.isNotEmpty(sortField), "ascend".equals(sortOrder), sortField);
         return queryWrapper;
     }
 }

+ 210 - 0
app-admin/src/main/java/com/ruoyi/web/service/impl/VillageProfileServiceImpl.java

@@ -0,0 +1,210 @@
+package com.ruoyi.web.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.web.domain.dto.VillageProfile.VillageProfileAddRequest;
+import com.ruoyi.web.domain.dto.VillageProfile.VillageProfileEditRequest;
+import com.ruoyi.web.domain.dto.VillageProfile.VillageProfileQueryRequest;
+import com.ruoyi.web.domain.entity.VillageProfile;
+import com.ruoyi.web.domain.vo.VillageProfileVO;
+import com.ruoyi.web.mapper.VillageProfileMapper;
+import com.ruoyi.web.service.PersonInfoService;
+import com.ruoyi.web.service.VillageProfileService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 村庄概况服务实现
+ */
+@Slf4j
+@Service
+public class VillageProfileServiceImpl extends ServiceImpl<VillageProfileMapper, VillageProfile>
+        implements VillageProfileService {
+
+    @Autowired
+    private PersonInfoService personInfoService;
+
+    @Override
+    public Integer addVillageProfile(VillageProfileAddRequest villageProfileAddRequest) {
+        if (villageProfileAddRequest == null) {
+            throw new ServiceException("请求参数为空");
+        }
+        try {
+            // 转换为实体对象
+            VillageProfile villageProfile = new VillageProfile();
+            BeanUtil.copyProperties(villageProfileAddRequest, villageProfile);
+            // 数据校验
+            validVillageProfile(villageProfile, BusinessType.INSERT);
+            // 保存到数据库
+            this.save(villageProfile);
+            return villageProfile.getId();
+        } catch (Exception e) {
+            log.error("添加村庄概况失败", e);
+            throw new ServiceException("添加村庄概况失败");
+        }
+    }
+
+    @Override
+    public boolean deleteVillageProfile(String ids) {
+        if (StrUtil.isBlank(ids)) {
+            throw new ServiceException("id不能为空或id异常");
+        }
+
+        // 分割ID字符串为List<Integer>
+        List<Long> idList = Arrays.stream(ids.split(","))
+                .map(String::trim)
+                .filter(StrUtil::isNotBlank)
+                .map(Long::parseLong)
+                .collect(Collectors.toList());
+
+        if (idList.isEmpty()) {
+            throw new ServiceException("ID格式异常");
+        }
+
+        // 构建删除条件
+        QueryWrapper<VillageProfile> queryWrapper = new QueryWrapper<>();
+        queryWrapper.in("id", idList);
+
+        // 执行删除(返回是否删除成功)
+        return remove(queryWrapper);
+    }
+
+    @Override
+    public void editVillageProfile(VillageProfileEditRequest villageProfileEditRequest) {
+        // 判断是否存在
+        Integer id = villageProfileEditRequest.getId();
+        VillageProfile oldVillageProfile = this.getById(id);
+        if (oldVillageProfile == null) {
+            throw new ServiceException("没有找到村庄概况信息");
+        }
+        
+        VillageProfile villageProfile = new VillageProfile();
+        BeanUtil.copyProperties(villageProfileEditRequest, villageProfile);
+        villageProfile.setUpdateTime(new Date());
+        // 数据校验
+        validVillageProfile(villageProfile, BusinessType.UPDATE);
+        
+        // 操作数据库
+        boolean result = this.updateById(villageProfile);
+        if (!result) {
+            throw new ServiceException("修改村庄概况操作失败");
+        }
+    }
+
+    @Override
+    public VillageProfileVO getVillageProfileById(int id) {
+        if (id <= 0 || ObjectUtil.isEmpty(id)) {
+            throw new ServiceException("id不能为空或id异常");
+        }
+        VillageProfile villageProfile = this.getById(id);
+        if (villageProfile == null) {
+            return null;
+        }
+        
+        return convertToVillageProfileVO(villageProfile);
+    }
+
+    @Override
+    public Page<VillageProfileVO> getListVillageProfileByPage(VillageProfileQueryRequest villageProfileQueryRequest) {
+        long current = villageProfileQueryRequest.getPageNum();
+        long size = villageProfileQueryRequest.getPageSize();
+        
+        // 分页查询村庄概况信息
+        Page<VillageProfile> profilePage = this.page(new Page<>(current, size),
+                getQueryWrapper(villageProfileQueryRequest));
+        
+        // 创建VO分页对象
+        Page<VillageProfileVO> voPage = new Page<>(current, size, profilePage.getTotal());
+        
+        // 转换为VO列表
+        List<VillageProfileVO> voList = new ArrayList<>();
+        for (VillageProfile profile : profilePage.getRecords()) {
+            voList.add(convertToVillageProfileVO(profile));
+        }
+        
+        voPage.setRecords(voList);
+        return voPage;
+    }
+
+    @Override
+    public QueryWrapper<VillageProfile> getQueryWrapper(VillageProfileQueryRequest villageProfileQueryRequest) {
+        QueryWrapper<VillageProfile> queryWrapper = new QueryWrapper<>();
+        if (villageProfileQueryRequest == null) {
+            return queryWrapper;
+        }
+
+        // 从对象中取值
+        String name = villageProfileQueryRequest.getName();
+        String sortField = villageProfileQueryRequest.getSortField();
+        String sortOrder = villageProfileQueryRequest.getSortOrder();
+
+        // 构建查询条件
+        queryWrapper.like(StrUtil.isNotBlank(name), "name", name);
+        // 排序
+        queryWrapper.orderBy(StrUtil.isNotEmpty(sortField),  "ascend".equals(sortOrder), sortField);
+        return queryWrapper;
+    }
+
+    /**
+     * 校验村庄概况
+     *
+     * @param villageProfile 村庄概况
+     * @param type 业务类型
+     */
+    private void validVillageProfile(VillageProfile villageProfile, BusinessType type) {
+        if (ObjectUtil.isEmpty(villageProfile)) {
+            throw new ServiceException("数据为空");
+        }
+        
+        Integer id = villageProfile.getId();
+        String name = villageProfile.getName();
+        String region = villageProfile.getRegion();
+        String introduction = villageProfile.getIntroduction();
+        String images = villageProfile.getImages();
+
+        // 添加时id无需校验,修改时id不能为空
+        if (type != BusinessType.INSERT && ObjectUtil.isEmpty(id)) {
+            throw new ServiceException("id不能为空");
+        }
+        if (StrUtil.isBlank(name)) {
+            throw new ServiceException("村庄名称不能为空");
+        }
+        if (StrUtil.isBlank(region)) {
+            throw new ServiceException("所属区域不能为空");
+        }
+        if (StrUtil.isBlank(introduction)) {
+            throw new ServiceException("村庄简介不能为空");
+        }
+        if (StrUtil.isBlank(images)) {
+            throw new ServiceException("村图片不能为空");
+        }
+    }
+
+    /**
+     * 将实体转换为VO,处理村民数量和区域信息
+     */
+    private VillageProfileVO convertToVillageProfileVO(VillageProfile profile) {
+        VillageProfileVO vo = new VillageProfileVO();
+        BeanUtil.copyProperties(profile, vo);
+
+        // 村民数量
+        int count = personInfoService.count();
+        if (count>0){
+            vo.setVillagerCount(count);
+        }
+        return vo;
+    }
+} 

+ 8 - 8
app-admin/src/main/java/com/ruoyi/web/service/impl/VillageServiceServiceImpl.java

@@ -16,10 +16,9 @@ import com.ruoyi.system.service.ISysUserService;
 import com.ruoyi.web.domain.dto.VillageService.VillageServiceAddRequest;
 import com.ruoyi.web.domain.dto.VillageService.VillageServiceEditRequest;
 import com.ruoyi.web.domain.dto.VillageService.VillageServiceQueryRequest;
-import com.ruoyi.web.domain.entity.ProductionData;
 import com.ruoyi.web.domain.entity.VillageService;
 import com.ruoyi.web.domain.enums.VillageServiceEnum;
-import com.ruoyi.web.domain.vo.VillageService.VillageServiceVO;
+import com.ruoyi.web.domain.vo.VillageServiceVO;
 import com.ruoyi.web.mapper.VillageServiceMapper;
 import com.ruoyi.web.service.ProductionDataService;
 import com.ruoyi.web.service.VillageServiceService;
@@ -61,7 +60,7 @@ public class VillageServiceServiceImpl extends ServiceImpl<VillageServiceMapper,
             return villageService.getId();
         } catch (Exception e) {
             log.error("添加服务与支持失败", e);
-            throw new ServiceException("添加服务与支持失败: " + e.getMessage());
+            throw new ServiceException("添加服务与支持失败");
         }
     }
 
@@ -192,18 +191,19 @@ public class VillageServiceServiceImpl extends ServiceImpl<VillageServiceMapper,
     /**
      * 将实体转换为VO,并填充发布人信息
      */
-    private VillageServiceVO getVillageServiceVO(VillageService service) {
+    @Override
+    public VillageServiceVO getVillageServiceVO(VillageService villageService) {
         VillageServiceVO vo = new VillageServiceVO();
-        BeanUtil.copyProperties(service, vo);
+        BeanUtil.copyProperties(villageService, vo);
         
         // 如果有发布人ID,获取发布人信息
-        Integer issuerId = service.getIssuerId();
+        Integer issuerId = villageService.getIssuerId();
         if (issuerId != null) {
             try {
                 SysUser user = userService.selectUserById(issuerId.longValue());
                 if (user != null) {
                     Map<String, String> issuer = new HashMap<>();
-                    issuer.put("NickName", user.getNickName());
+                    issuer.put("nickName", user.getNickName());
                     // 填充其他信息
                     vo.setIssuer(issuer);
                 }
@@ -260,7 +260,7 @@ public class VillageServiceServiceImpl extends ServiceImpl<VillageServiceMapper,
         }
 
         // 排序
-        queryWrapper.orderBy(StrUtil.isNotEmpty(sortField), sortOrder.equals("ascend"), sortField);
+        queryWrapper.orderBy(StrUtil.isNotEmpty(sortField), "ascend".equals(sortOrder), sortField);
         return queryWrapper;
     }
 }

+ 2 - 2
app-admin/src/main/java/com/ruoyi/web/service/impl/VillageSpecialServiceImpl.java

@@ -110,7 +110,7 @@ public class VillageSpecialServiceImpl extends ServiceImpl<VillageSpecialMapper,
             return villageSpecial.getId();
         } catch (Exception e) {
             log.error("添加特色产业失败", e);
-            throw new ServiceException("添加特色产业失败: " + e.getMessage());
+            throw new ServiceException("添加特色产业失败");
         }
     }
 
@@ -275,7 +275,7 @@ public class VillageSpecialServiceImpl extends ServiceImpl<VillageSpecialMapper,
         queryWrapper.like(StringUtils.isNotBlank(name), "name", name);
 
         // 排序
-        queryWrapper.orderBy(StrUtil.isNotEmpty(sortField), sortOrder.equals("ascend"), sortField);
+        queryWrapper.orderBy(StrUtil.isNotEmpty(sortField), "ascend".equals(sortOrder), sortField);
         return queryWrapper;
     }
 

+ 2 - 2
app-admin/src/main/java/com/ruoyi/web/service/impl/VillageTraditionServiceImpl.java

@@ -46,7 +46,7 @@ public class VillageTraditionServiceImpl extends ServiceImpl<VillageTraditionMap
             return villageTradition.getId();
         } catch (Exception e) {
             log.error("添加传统产业失败", e);
-            throw new ServiceException("添加传统产业失败: " + e.getMessage());
+            throw new ServiceException("添加传统产业失败");
         }
     }
 
@@ -169,7 +169,7 @@ public class VillageTraditionServiceImpl extends ServiceImpl<VillageTraditionMap
         queryWrapper.like(StringUtils.isNotBlank(name), "name", name);
 
         // 排序
-        queryWrapper.orderBy(StrUtil.isNotEmpty(sortField), sortOrder.equals("ascend"), sortField);
+        queryWrapper.orderBy(StrUtil.isNotEmpty(sortField), "ascend".equals(sortOrder), sortField);
         return queryWrapper;
     }
 }

+ 23 - 0
app-admin/src/main/resources/mapper/web/DisasterReliefMapper.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.web.mapper.DisasterReliefMapper">
+
+    <resultMap id="BaseResultMap" type="com.ruoyi.web.domain.entity.DisasterRelief">
+            <id property="id" column="id" jdbcType="INTEGER"/>
+            <result property="personId" column="person_id" jdbcType="INTEGER"/>
+            <result property="date" column="date" jdbcType="TIMESTAMP"/>
+            <result property="location" column="location" jdbcType="VARCHAR"/>
+            <result property="eventContent" column="event_content" jdbcType="VARCHAR"/>
+            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+            <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+            <result property="delFlag" column="del_flag" jdbcType="CHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,person_id,date,
+        location,event_content,create_time,
+        update_time,del_flag
+    </sql>
+</mapper>

+ 28 - 0
app-admin/src/main/resources/mapper/web/EthnicActivitiesMapper.xml

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.web.mapper.EthnicActivitiesMapper">
+
+    <resultMap id="BaseResultMap" type="com.ruoyi.web.domain.entity.EthnicActivities">
+            <id property="id" column="id" jdbcType="INTEGER"/>
+            <result property="name" column="name" jdbcType="VARCHAR"/>
+            <result property="date" column="date" jdbcType="DATE"/>
+            <result property="location" column="location" jdbcType="VARCHAR"/>
+            <result property="category" column="category" jdbcType="INTEGER"/>
+            <result property="ethnic" column="ethnic" jdbcType="VARCHAR"/>
+            <result property="content" column="content" jdbcType="VARCHAR"/>
+            <result property="count" column="count" jdbcType="INTEGER"/>
+            <result property="status" column="status" jdbcType="INTEGER"/>
+            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+            <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+            <result property="delFlag" column="del_flag" jdbcType="CHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,name,date,
+        location,category,ethnic,
+        content,count,status,
+        create_time,update_time,del_flag
+    </sql>
+</mapper>

+ 3 - 2
app-admin/src/main/resources/mapper/web/IndustryDataMapper.xml

@@ -6,7 +6,7 @@
 
     <resultMap id="BaseResultMap" type="com.ruoyi.web.domain.entity.IndustryData">
             <id property="id" column="id" jdbcType="INTEGER"/>
-            <result property="years" column="years" jdbcType="VARCHAR"/>
+        <result property="year" column="year" jdbcType="VARCHAR"/>
             <result property="category" column="category" jdbcType="INTEGER"/>
             <result property="scale" column="scale" jdbcType="VARCHAR"/>
             <result property="yield" column="yield" jdbcType="VARCHAR"/>
@@ -17,7 +17,8 @@
     </resultMap>
 
     <sql id="Base_Column_List">
-        id,years,category,
+        id
+        ,year,category,
         scale,yield,value,
         create_time,update_time,del_flag
     </sql>

+ 27 - 0
app-admin/src/main/resources/mapper/web/MediaPropagandaMapper.xml

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.web.mapper.MediaPropagandaMapper">
+
+    <resultMap id="BaseResultMap" type="com.ruoyi.web.domain.entity.MediaPropaganda">
+            <id property="id" column="id" jdbcType="INTEGER"/>
+            <result property="title" column="title" jdbcType="VARCHAR"/>
+            <result property="type" column="type" jdbcType="INTEGER"/>
+            <result property="content" column="content" jdbcType="VARCHAR"/>
+            <result property="image" column="image" jdbcType="VARCHAR"/>
+            <result property="extractDate" column="extract_date" jdbcType="DATE"/>
+            <result property="publishDate" column="publish_date" jdbcType="DATE"/>
+            <result property="source" column="source" jdbcType="VARCHAR"/>
+            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+            <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+            <result property="delFlag" column="del_flag" jdbcType="CHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,title,type,
+        content,image,extract_date,
+        publish_date,source,create_time,
+        update_time,del_flag
+    </sql>
+</mapper>

+ 23 - 0
app-admin/src/main/resources/mapper/web/VillageProfileMapper.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.web.mapper.VillageProfileMapper">
+
+    <resultMap id="BaseResultMap" type="com.ruoyi.web.domain.entity.VillageProfile">
+            <id property="id" column="id" jdbcType="INTEGER"/>
+            <result property="name" column="name" jdbcType="VARCHAR"/>
+            <result property="region" column="region" jdbcType="VARCHAR"/>
+            <result property="introduction" column="introduction" jdbcType="VARCHAR"/>
+            <result property="images" column="images" jdbcType="VARCHAR"/>
+            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+            <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+            <result property="delFlag" column="del_flag" jdbcType="CHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,name,region,
+        introduction,images,create_time,
+        update_time,del_flag
+    </sql>
+</mapper>

+ 76 - 8
sql/sql.sql

@@ -1,3 +1,18 @@
+-- 村庄概况信息表
+CREATE TABLE village_profile (
+  id int  PRIMARY KEY AUTO_INCREMENT COMMENT 'ID',
+  name varchar(100) NOT NULL COMMENT '村庄名称',
+  region_id int(11) NOT NULL COMMENT '所属区域ID',
+  introduction varchar(1024) COMMENT '村庄简介',
+  images varchar(512) COMMENT '村庄图片',
+  create_time      datetime     default CURRENT_TIMESTAMP not null comment '创建时间',
+  update_time      datetime     default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '修改时间',
+  del_flag         char default '0' null comment '删除标志',
+  KEY `idx_name` (`village_name`),
+  KEY `idx_region_id` (`region_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='村庄概况信息表';
+
+
 -- 人员信息表
 CREATE TABLE person_info (
     id                  INT PRIMARY KEY AUTO_INCREMENT COMMENT 'ID',
@@ -13,7 +28,7 @@ CREATE TABLE person_info (
     occupation          VARCHAR(50)                 COMMENT '职业',
     grid                VARCHAR(30)                 COMMENT '所属网格',
     education_level     VARCHAR(20)                 COMMENT '文化程度',
-    marital_status      TINYINT                     COMMENT '婚姻状况: 1-未婚, 2-已婚, 3-丧偶, 4-离婚',
+    marital_status      TINYINT                     COMMENT '婚姻状况: 0-未婚, 1-已婚, 2-丧偶, 3-离婚',
     political_status    VARCHAR(20)                 COMMENT '政治面貌',
     religion            VARCHAR(30)                 COMMENT '宗教信仰',
     photo_url           VARCHAR(255)                COMMENT '照片URL',
@@ -37,14 +52,13 @@ CREATE TABLE household_info (
     id                    INT PRIMARY KEY AUTO_INCREMENT    COMMENT '户籍ID',
     household_code        VARCHAR(50) UNIQUE  NOT NULL      COMMENT '户籍编号',
     household_head_id        int                      COMMENT '户主id',
-    household_type          TINYINT     NOT NULL            COMMENT '户籍类型: 1-农业户口, 2-非农业户口',
+    household_type          TINYINT     NOT NULL            COMMENT '户籍类型: 0-农业户口, 1-非农业户口',
     household_address       VARCHAR(200)                    COMMENT '户籍地址',
     belonging_area          VARCHAR(200)                    COMMENT '归属地区',
     house_code            VARCHAR(50)                       COMMENT '房屋编号',
   create_time        datetime     default CURRENT_TIMESTAMP not null comment '创建时间',
      update_time      datetime     default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '修改时间',
     del_flag            char default '0' null comment '删除标志',
-    del_flag        char default '0' null comment '删除标志',
     INDEX idx_household_number (household_code),
     INDEX idx_house_code (house_code)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='户籍信息表';
@@ -58,7 +72,7 @@ CREATE TABLE house_info (
     house_owner_id    INT                   COMMENT '房主人员ID',
     total_points      INT DEFAULT 0         COMMENT '总积分',
     remaining_points  INT DEFAULT 0         COMMENT '剩余积分',
-    house_category    TINYINT               COMMENT '房屋类别:1-修缮,2-原址重建,3-集中安置',
+    house_category    TINYINT               COMMENT '房屋类别:0-修缮,1-原址重建,2-集中安置',
     building_area     DECIMAL(10,2)         COMMENT '宅基地面积(㎡)',
     grid             INT                    COMMENT '所属网格',
     photo_url         VARCHAR(256)          COMMENT '照片URL',
@@ -174,7 +188,7 @@ CREATE TABLE local_policy (
 create table industry_data
 (
     id       int auto_increment primary key,
-    years    varchar(11)  null comment '年份',
+    year    varchar(11)  null comment '年份',
     category int          null comment '产业类别:0-种植业/1-养殖业/2-保安腰刀产业/3-农家乐产业/4-民宿产业',
     scale    varchar(255) null comment '产业规模',
     yield    varchar(255) null comment '产量',
@@ -183,7 +197,7 @@ create table industry_data
     update_time      datetime     default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '修改时间',
     del_flag        char default '0' null               comment '删除标志',
     INDEX idx_category (category),
-    INDEX idx_years (years)
+    INDEX idx_year (year)
 )ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 comment '产业数据收集';
 
 
@@ -261,11 +275,11 @@ create table village_service
     id      int auto_increment primary key,
     title   varchar(11)   null comment '标题',
     tag   varchar(512)   null   comment '标签',
-    type   int default 1 null comment '类型 1-图文,2-视频',
+    type   int default 0 null comment '类型 0-图文,1-视频',
     content varchar(255)  null comment '内容',
     photo_url varchar(255)  null comment '封面图',
     source varchar(255)  null   comment '来源',
-    status  int default 1 null comment '发布状态 1未发布 2-已发布 3-下架',
+    status  int default 0 null comment '发布状态 0-未发布 1-已发布 2-下架',
     date datetime      null     comment '发布日期',
     issuer_id  int  null     comment '发布人id',
     create_time        datetime     default CURRENT_TIMESTAMP not null comment '创建时间',
@@ -277,3 +291,57 @@ create table village_service
     INDEX idx_date (date),
     INDEX idx_status (status)
 )ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 comment '乡村振兴产业服务与支持';
+
+
+-- 民族团结活动表
+CREATE TABLE ethnic_activities (
+    id INT PRIMARY KEY AUTO_INCREMENT,
+    name VARCHAR(100) NOT NULL COMMENT '活动名称',
+    date DATE NOT NULL COMMENT '活动日期',
+    location VARCHAR(100) NOT NULL COMMENT '活动地点',
+    category int NOT NULL COMMENT '活动类别 0-传统节日 1-风俗习惯 2-语言文字 3-服饰艺术 4-其他',
+    ethnic VARCHAR(255) NOT NULL COMMENT '参与民族',
+    content VARCHAR(1024) COMMENT '活动内容',
+    count INT DEFAULT 0 COMMENT '参与人数',
+    status int NOT NULL DEFAULT 0 COMMENT '状态:0-未完成/1-已完成',
+    create_time        datetime     default CURRENT_TIMESTAMP not null comment '创建时间',
+    update_time      datetime     default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '修改时间',
+    del_flag        char default '0' null               comment '删除标志',
+    INDEX idx_date (date),
+    INDEX idx_category (category),
+    INDEX idx_ethnic (ethnic),
+    INDEX idx_status (status)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='民族团结活动表';
+
+-- 灾情共度管理
+CREATE TABLE disaster_relief (
+  id INT PRIMARY KEY AUTO_INCREMENT COMMENT 'ID',
+  person_id INT NOT NULL COMMENT '村民ID',
+  date datetime NOT NULL COMMENT '发生日期',
+  location varchar(100) NOT NULL COMMENT '发生地点',
+  event_content text COMMENT '事迹内容',
+  create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',
+  update_time datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '修改时间',
+  del_flag char default '0' null comment '删除标志',
+  INDEX idx_date (date),
+  INDEX idx_person_id (person_id)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='灾情共度管理';
+
+-- 媒体宣传内容收集表
+CREATE TABLE media_propaganda (
+  id INT PRIMARY KEY AUTO_INCREMENT COMMENT 'ID',
+  title varchar(255) NOT NULL COMMENT '标题',
+  type   int default 0 NOT NULL comment '类型 0-图文,1-视频',
+  content varchar(512) NOT NULL COMMENT '内容',
+  image varchar(512)  COMMENT '封面图URL',
+  extract_date date NOT NULL COMMENT '摘录日期(默认当天)',
+  publish_date date NOT NULL  COMMENT '发布日期',
+  source varchar(200)  NOT NULL COMMENT '来源',
+  create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',
+  update_time datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '修改时间',
+  del_flag char default '0' null comment '删除标志',
+  INDEX idx_title (title),
+  INDEX idx_content (content),
+  INDEX idx_publish_date (publish_date),
+  INDEX idx_extract_date (extract_date)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='媒体宣传内容收集表';

+ 44 - 0
webUI/src/api/app/villageProfile.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询村庄概况列表
+export function listVillageProfile(query) {
+  return request({
+    url: '/web/village/profile/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询村庄概况详细
+export function getVillageProfile(id) {
+  return request({
+    url: `/web/village/profile/${id}`,
+    method: 'get'
+  })
+}
+
+// 新增村庄概况
+export function addVillageProfile(data) {
+  return request({
+    url: '/web/village/profile',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改村庄概况
+export function updateVillageProfile(data) {
+  return request({
+    url: '/web/village/profile',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除村庄概况
+export function delVillageProfile(ids) {
+  return request({
+    url: `/web/village/profile/${ids}`,
+    method: 'delete'
+  })
+}