liujie
2025-11-07 0475c3b7ecde55fb3bf5422900d247c4c0760fa2
小程序接口
5个文件已添加
4个文件已修改
347 ■■■■■ 已修改文件
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/ConvenienceController.java 269 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TCommunityActivity.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TCommunityActivityRegistration.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TDeliberationVote.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/model/TDeliberationVoteOption.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/query/CommunityActivityListQuery.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/query/ConvenientInformationListQuery.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/query/DeliberationVoteListQuery.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/query/MicroWishListQuery.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/ConvenienceController.java
New file
@@ -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();
    }
}
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;
}
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;
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;
}
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;
}
ruoyi-system/src/main/java/com/ruoyi/system/query/CommunityActivityListQuery.java
New file
@@ -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;
}
ruoyi-system/src/main/java/com/ruoyi/system/query/ConvenientInformationListQuery.java
New file
@@ -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;
}
ruoyi-system/src/main/java/com/ruoyi/system/query/DeliberationVoteListQuery.java
New file
@@ -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 ;
}
ruoyi-system/src/main/java/com/ruoyi/system/query/MicroWishListQuery.java
New file
@@ -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;
}