From 0475c3b7ecde55fb3bf5422900d247c4c0760fa2 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期五, 07 十一月 2025 11:55:54 +0800
Subject: [PATCH] 小程序接口

---
 ruoyi-system/src/main/java/com/ruoyi/system/query/DeliberationVoteListQuery.java      |   13 ++
 ruoyi-system/src/main/java/com/ruoyi/system/model/TCommunityActivity.java             |    5 
 ruoyi-system/src/main/java/com/ruoyi/system/model/TDeliberationVote.java              |    9 +
 ruoyi-system/src/main/java/com/ruoyi/system/model/TDeliberationVoteOption.java        |    8 +
 ruoyi-system/src/main/java/com/ruoyi/system/query/ConvenientInformationListQuery.java |   13 ++
 ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/ConvenienceController.java    |  269 ++++++++++++++++++++++++++++++++++++++++++++
 ruoyi-system/src/main/java/com/ruoyi/system/query/CommunityActivityListQuery.java     |   13 ++
 ruoyi-system/src/main/java/com/ruoyi/system/model/TCommunityActivityRegistration.java |    4 
 ruoyi-system/src/main/java/com/ruoyi/system/query/MicroWishListQuery.java             |   13 ++
 9 files changed, 345 insertions(+), 2 deletions(-)

diff --git a/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/ConvenienceController.java b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/ConvenienceController.java
new file mode 100644
index 0000000..71c65dc
--- /dev/null
+++ b/ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/ConvenienceController.java
@@ -0,0 +1,269 @@
+package com.ruoyi.web.controller.api;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.BaseModel;
+import com.ruoyi.common.core.domain.BasePage;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.framework.web.service.TokenService;
+import com.ruoyi.system.model.*;
+import com.ruoyi.system.query.CommunityActivityListQuery;
+import com.ruoyi.system.query.ConvenientInformationListQuery;
+import com.ruoyi.system.query.DeliberationVoteListQuery;
+import com.ruoyi.system.query.MicroWishListQuery;
+import com.ruoyi.system.service.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import java.time.LocalDateTime;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+@Slf4j
+@RestController
+@RequestMapping("/convenience")
+@Api(tags = "普惠便民模块")
+public class ConvenienceController {
+
+    private final THtmlConfigService tHtmlConfigService;
+    private final TServiceGuideFileService tServiceGuideFileService;
+    private final TConvenientInformationService tConvenientInformationService;
+    private final TMicroWishService tMicroWishService;
+    private final TokenService tokenService;
+    private final TCommunityActivityService tCommunityActivityService;
+    private final TCommunityActivityRegistrationService tCommunityActivityRegistrationService;
+    private final TDeliberationVoteService tDeliberationVoteService;
+    private final TDeliberationVoteOptionService tDeliberationVoteOptionService;
+    private final TAppealServicesService tAppealServicesService ;
+
+    public ConvenienceController(THtmlConfigService tHtmlConfigService, TServiceGuideFileService tServiceGuideFileService, TConvenientInformationService tConvenientInformationService, TMicroWishService tMicroWishService, TokenService tokenService, TCommunityActivityService tCommunityActivityService, TCommunityActivityRegistrationService tCommunityActivityRegistrationService, TDeliberationVoteService tDeliberationVoteService, TDeliberationVoteOptionService tDeliberationVoteOptionService, TAppealServicesService tAppealServicesService) {
+        this.tHtmlConfigService = tHtmlConfigService;
+        this.tServiceGuideFileService = tServiceGuideFileService;
+        this.tConvenientInformationService = tConvenientInformationService;
+        this.tMicroWishService = tMicroWishService;
+        this.tokenService = tokenService;
+        this.tCommunityActivityService = tCommunityActivityService;
+        this.tCommunityActivityRegistrationService = tCommunityActivityRegistrationService;
+        this.tDeliberationVoteService = tDeliberationVoteService;
+        this.tDeliberationVoteOptionService = tDeliberationVoteOptionService;
+        this.tAppealServicesService = tAppealServicesService;
+    }
+
+
+    @ApiOperation(value = "说明--3流程指引 11=群众诉求服务说明 12=随手拍说明  ", response = THtmlConfig.class)
+    @GetMapping("/getServiceGuide")
+    public R<THtmlConfig> getServiceGuide(int type) {
+        return R.ok(tHtmlConfigService.getOne(
+                Wrappers.<THtmlConfig>lambdaQuery().eq(THtmlConfig::getConfigType, type)
+        ));
+    }
+
+    @ApiOperation(value = "办事指南--流程指引文件", response = TServiceGuideFile.class)
+    @PostMapping("/getServiceGuideFile")
+    public R<Page<TServiceGuideFile>> getServiceGuideFile(@RequestBody BasePage basePage) {
+        return R.ok(tServiceGuideFileService.page(new Page<TServiceGuideFile>(basePage.getPageNum(), basePage.getPageSize()),
+                Wrappers.<TServiceGuideFile>lambdaQuery().orderByDesc(TServiceGuideFile::getCreateTime)
+        ));
+    }
+
+
+    @ApiOperation(value = "便民信息--便民信息列表", response = TConvenientInformation.class)
+    @PostMapping("/getConvenientInformationList")
+    public R<Page<TConvenientInformation>> getConvenientInformationList(@RequestBody ConvenientInformationListQuery query) {
+        Page<TConvenientInformation> page = new Page<>(query.getPageNum(), query.getPageSize());
+        Page<TConvenientInformation> tConvenientInformationPage = tConvenientInformationService.page(page, new LambdaQueryWrapper<TConvenientInformation>().like(Objects.nonNull(query.getName()), TConvenientInformation::getConvenientName, query.getName()).orderByDesc(BaseModel::getCreateTime));
+        return R.ok(tConvenientInformationPage);
+
+    }
+
+    @ApiOperation(value = "便民信息--便民信息详情", response = TConvenientInformation.class)
+    @GetMapping("/getConvenientInformationDetail/{id}")
+    public R<TConvenientInformation> getConvenientInformationDetail(@PathVariable String id) {
+        return R.ok(tConvenientInformationService.getById(id));
+    }
+
+
+    @ApiOperation(value = "微心愿--微心愿列表", response = TMicroWish.class)
+    @PostMapping("/getMicroWishList")
+    public R<Page<TMicroWish>> getMicroWishList(@RequestBody MicroWishListQuery query) {
+        Page<TMicroWish> page = new Page<>(query.getPageNum(), query.getPageSize());
+        Page<TMicroWish> tMicroWishPage = tMicroWishService.page(page, new LambdaQueryWrapper<TMicroWish>().eq(TMicroWish::getWishType, 1).eq(TMicroWish::getStatus, 2).like(Objects.nonNull(query.getWishDescription()), TMicroWish::getWishDescription, query.getWishDescription()).orderByDesc(BaseModel::getCreateTime));
+        return R.ok(tMicroWishPage);
+    }
+
+
+    @ApiOperation(value = "微心愿--发布心愿", response = TMicroWish.class)
+    @PostMapping("/addMicroWish")
+    public R<?> addMicroWish(@RequestBody TMicroWish dto) {
+        String userId = tokenService.getLoginUserApplet().getUserId();
+        dto.setAppUserId(userId);
+        dto.setStatus(1);
+        tMicroWishService.save(dto);
+        return R.ok();
+    }
+
+
+    @ApiOperation(value = "社区活动--列表", response = TCommunityActivity.class)
+    @PostMapping("/getCommunityActivityList")
+    public R<Page<TCommunityActivity>> getCommunityActivityList(@RequestBody CommunityActivityListQuery query) {
+        String userId = null;
+        try {
+            userId = tokenService.getLoginUserApplet().getUserId();
+        } catch (Exception e) {
+        }
+        Page<TCommunityActivity> page = new Page<>(query.getPageNum(), query.getPageSize());
+        Page<TCommunityActivity> tCommunityActivityPage = tCommunityActivityService.page(page, new LambdaQueryWrapper<TCommunityActivity>().eq(TCommunityActivity::getStatus, 2).like(Objects.nonNull(query.getName()), TCommunityActivity::getActivityTitle, query.getName()).orderByDesc(BaseModel::getCreateTime));
+        List<TCommunityActivity> activityList = tCommunityActivityPage.getRecords();
+        // 判断是否已经报名
+        if (!activityList.isEmpty() && userId != null) {
+            List<String> activityIds = activityList.stream().map(TCommunityActivity::getId).collect(Collectors.toList());
+            List<TCommunityActivityRegistration> activityRegistrationList = tCommunityActivityRegistrationService.list(new LambdaQueryWrapper<TCommunityActivityRegistration>().in(TCommunityActivityRegistration::getActivityId, activityIds).eq(TCommunityActivityRegistration::getAppUserId, userId));
+            for (TCommunityActivity tCommunityActivity : activityList) {
+                TCommunityActivityRegistration tCommunityActivityRegistration = activityRegistrationList.stream().filter(e -> e.getActivityId().equals(tCommunityActivity.getId())).findFirst().orElse(null);
+                if (tCommunityActivityRegistration != null) {
+                    tCommunityActivity.setState(2);
+                }
+            }
+
+        }
+        tCommunityActivityPage.setRecords(activityList);
+        return R.ok(tCommunityActivityPage);
+    }
+
+
+    @ApiOperation(value = "社区活动--详情", response = TCommunityActivity.class)
+    @GetMapping("/getCommunityActivityDetail/{id}")
+    public R<TCommunityActivity> getCommunityActivityDetail(@PathVariable String id) {
+        TCommunityActivity tCommunityActivity = tCommunityActivityService.getById(id);
+        if (tCommunityActivity == null) {
+            return R.fail("活动不存在");
+        }
+        String userId = null;
+        try {
+            userId = tokenService.getLoginUserApplet().getUserId();
+        } catch (Exception e) {
+        }
+        if (userId != null) {
+            long count = tCommunityActivityRegistrationService.count(new LambdaQueryWrapper<TCommunityActivityRegistration>().eq(TCommunityActivityRegistration::getActivityId, id).eq(TCommunityActivityRegistration::getAppUserId, userId));
+            if (count > 0) {
+                tCommunityActivity.setState(2);
+            }
+        }
+        return R.ok(tCommunityActivity);
+    }
+
+    @ApiOperation(value = "社区活动--报名", response = TCommunityActivity.class)
+    @PostMapping("/addCommunityActivityRegistration")
+    public R<?> addCommunityActivityRegistration(@RequestBody TCommunityActivityRegistration dto) {
+
+        String userId = tokenService.getLoginUserApplet().getUserId();
+        TCommunityActivity activity = tCommunityActivityService.getById(dto.getActivityId());
+        if (activity == null) {
+            return R.fail("活动不存在");
+        }
+        if (activity.getEndTime().isBefore(LocalDateTime.now())) {
+            return R.fail("报名已结束");
+        }
+        if (activity.getStartTime().isAfter(LocalDateTime.now())) {
+            return R.fail("报名未开始");
+        }
+        if (activity.getStatus() == 3) {
+            return R.fail("活动已结束");
+        }
+        if (activity.getStatus() == 1) {
+            return R.fail("活动未发布");
+        }
+        if (tCommunityActivityRegistrationService.count(new LambdaQueryWrapper<TCommunityActivityRegistration>().eq(TCommunityActivityRegistration::getActivityId, dto.getActivityId()).eq(TCommunityActivityRegistration::getAppUserId, userId)) > 0) {
+            return R.fail("你已报名");
+        }
+
+        dto.setAppUserId(userId);
+        tCommunityActivityRegistrationService.save(dto);
+        return R.ok();
+    }
+
+
+    @ApiOperation(value = "议事投票--列表", response = TDeliberationVote.class)
+    @PostMapping("/getDeliberationVoteList")
+    public R<Page<TDeliberationVote>> getDeliberationVoteList(@RequestBody DeliberationVoteListQuery query) {
+        String userId = null;
+        try {
+            userId = tokenService.getLoginUserApplet().getUserId();
+        } catch (Exception e) {
+        }
+        Page<TDeliberationVote> page = new Page<>(query.getPageNum(), query.getPageSize());
+        Page<TDeliberationVote> tDeliberationVotePage = tDeliberationVoteService.page(page, new LambdaQueryWrapper<TDeliberationVote>().eq(TDeliberationVote::getStatus, query.getStatus()).orderByDesc(BaseModel::getCreateTime));
+        List<TDeliberationVote> tDeliberationVoteList = tDeliberationVotePage.getRecords();
+        if(!tDeliberationVoteList.isEmpty()){
+            List<String> voteIds = tDeliberationVoteList.stream().map(TDeliberationVote::getId).collect(Collectors.toList());
+            List<TDeliberationVoteOption> tDeliberationVoteOptionList = tDeliberationVoteOptionService.list(new LambdaQueryWrapper<TDeliberationVoteOption>().in(TDeliberationVoteOption::getVoteId, voteIds));
+            for (TDeliberationVote tDeliberationVote : tDeliberationVoteList) {
+                List<TDeliberationVoteOption> options = tDeliberationVoteOptionList.stream().filter(e -> e.getVoteId().equals(tDeliberationVote.getId())).collect(Collectors.toList());
+                for (TDeliberationVoteOption option : options) {
+
+                    String[] split = option.getVoteCount().split(",");
+                    // split转为数组
+                    List<String> list = Arrays.asList(split);
+                    option.setVoteCountNum(list.size());
+                    if(tDeliberationVote.getVoteState()==1 && userId!=null &&  list.contains(userId)){
+                        tDeliberationVote.setVoteState(2);
+                    }
+
+                }
+                tDeliberationVote.setOptions(options);
+            }
+        }
+        tDeliberationVotePage.setRecords(tDeliberationVoteList);
+        return R.ok(tDeliberationVotePage);
+    }
+
+    @ApiOperation(value = "议事投票--投票")
+    @PostMapping("/addDeliberationVoteOption")
+    public R<?> addDeliberationVoteOption(@RequestBody TDeliberationVoteOption dto) {
+        String voteId = dto.getVoteId();
+        TDeliberationVote tDeliberationVote = tDeliberationVoteService.getById(voteId);
+        if (tDeliberationVote == null) {
+            return R.fail("投票不存在");
+        }
+        if (tDeliberationVote.getStatus() == 3) {
+            return R.fail("投票已结束");
+        }
+        if (tDeliberationVote.getStatus() == 1) {
+            return R.fail("投票未开始");
+        }
+        String userId = tokenService.getLoginUserApplet().getUserId();
+        List<TDeliberationVoteOption> list = tDeliberationVoteOptionService.list(new LambdaQueryWrapper<TDeliberationVoteOption>().eq(TDeliberationVoteOption::getVoteId, dto.getVoteId()));
+        for (TDeliberationVoteOption tDeliberationVoteOption : list) {
+            String voteCount = tDeliberationVoteOption.getVoteCount();
+            String[] split = voteCount.split(",");
+            if (Arrays.asList(split).contains(userId)) {
+                return R.fail("你已经投票");
+            }
+        }
+        TDeliberationVoteOption tDeliberationVoteOption = list.stream().filter(e -> e.getOptionContent().equals(dto.getOptionContent())).findFirst().orElse(null);
+        if (tDeliberationVoteOption == null) {
+            return R.fail("选项不存在");
+        }
+        tDeliberationVoteOption.setVoteCount(tDeliberationVoteOption.getVoteCount() + "," + userId);
+        tDeliberationVoteOptionService.updateById(tDeliberationVoteOption);
+        return R.ok();
+    }
+
+
+    @ApiOperation(value = "群众服务诉求/随手拍--提交")
+    @PostMapping("/addAppealServices")
+    public R<?> addAppealServices(@RequestBody TAppealServices dto) {
+        String userId = tokenService.getLoginUserApplet().getUserId();
+        dto.setAppUserId(userId);
+        dto.setStatus(1);
+        tAppealServicesService.save(dto);
+        return R.ok();
+    }
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TCommunityActivity.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TCommunityActivity.java
index 9aadf5d..788ff8a 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TCommunityActivity.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TCommunityActivity.java
@@ -64,4 +64,9 @@
     @TableField("status")
     private Integer status;
 
+
+    @TableField(exist = false)
+    @ApiModelProperty(value = "报名状态 1=未报名 2=已报名")
+    private Integer state=1;
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TCommunityActivityRegistration.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TCommunityActivityRegistration.java
index fefd1db..fb8c08f 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TCommunityActivityRegistration.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TCommunityActivityRegistration.java
@@ -29,6 +29,10 @@
     @TableId(value = "id", type = IdType.ASSIGN_ID)
     private String id;
 
+    @ApiModelProperty(value = "用户id")
+    @TableField("app_user_id")
+    private String appUserId;
+
     @ApiModelProperty(value = "活动id")
     @TableField("activity_id")
     private String activityId;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TDeliberationVote.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TDeliberationVote.java
index e4b02f8..7cc34ce 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TDeliberationVote.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TDeliberationVote.java
@@ -10,6 +10,7 @@
 
 import java.io.Serializable;
 import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  * <p>
@@ -52,4 +53,12 @@
     @TableField("status")
     private Integer status;
 
+    @TableField(exist = false)
+    @ApiModelProperty(value = "选项")
+    private List<TDeliberationVoteOption> options;
+
+    @TableField(exist = false)
+    @ApiModelProperty(value = "是否已投 1否2是")
+    private Integer voteState=1;
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TDeliberationVoteOption.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TDeliberationVoteOption.java
index cdd1f9d..38d8aa4 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TDeliberationVoteOption.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TDeliberationVoteOption.java
@@ -38,9 +38,13 @@
     @TableField("option_content")
     private String optionContent;
 
-    @ApiModelProperty(value = "投票人数")
+    @ApiModelProperty(value = "投票人")
     @TableField("vote_count")
-    private Integer voteCount;
+    private String voteCount;
 
 
+
+    @ApiModelProperty(value = "投票人数")
+    @TableField(exist = false)
+    private Integer voteCountNum;
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/CommunityActivityListQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/CommunityActivityListQuery.java
new file mode 100644
index 0000000..2e290b9
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/CommunityActivityListQuery.java
@@ -0,0 +1,13 @@
+package com.ruoyi.system.query;
+
+import com.ruoyi.common.core.domain.BasePage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel("社区活动列表Query")
+public class CommunityActivityListQuery extends BasePage {
+    @ApiModelProperty("活动名称")
+    private String name;
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/ConvenientInformationListQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/ConvenientInformationListQuery.java
new file mode 100644
index 0000000..a89fd6e
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/ConvenientInformationListQuery.java
@@ -0,0 +1,13 @@
+package com.ruoyi.system.query;
+
+import com.ruoyi.common.core.domain.BasePage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel("便民信息列表Query")
+public class ConvenientInformationListQuery extends BasePage {
+    @ApiModelProperty("名称")
+    private String name;
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/DeliberationVoteListQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/DeliberationVoteListQuery.java
new file mode 100644
index 0000000..aa3fcef
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/DeliberationVoteListQuery.java
@@ -0,0 +1,13 @@
+package com.ruoyi.system.query;
+
+import com.ruoyi.common.core.domain.BasePage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel("议事投票列表查询参数")
+public class DeliberationVoteListQuery extends BasePage {
+    @ApiModelProperty("2进行中 3已结束")
+    private Integer status ;
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/MicroWishListQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/MicroWishListQuery.java
new file mode 100644
index 0000000..49f6e8e
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/MicroWishListQuery.java
@@ -0,0 +1,13 @@
+package com.ruoyi.system.query;
+
+import com.ruoyi.common.core.domain.BasePage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel("微心愿query")
+public class MicroWishListQuery extends BasePage {
+    @ApiModelProperty("内容")
+    private String wishDescription;
+}

--
Gitblit v1.7.1