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