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 = "说明--1=托育服务 2=阅芽计划 3=办事指南图文指引 4=暖心服务图片 5=注册协议 6=隐私政策 7=学习申请书 8=安全告知书 9=购买支付说明 10=微心愿风险提示 11=群众诉求服务说明 12=随手拍说明 13=康年年图文介绍 ", response = THtmlConfig.class) @GetMapping("/getServiceGuide") public R getServiceGuide(int type) { return R.ok(tHtmlConfigService.getOne( Wrappers.lambdaQuery().eq(THtmlConfig::getConfigType, type) )); } @ApiOperation(value = "办事指南--流程指引文件", response = TServiceGuideFile.class) @PostMapping("/getServiceGuideFile") public R> getServiceGuideFile(@RequestBody BasePage basePage) { return R.ok(tServiceGuideFileService.page(new Page(basePage.getPageNum(), basePage.getPageSize()), Wrappers.lambdaQuery().orderByDesc(TServiceGuideFile::getCreateTime) )); } @ApiOperation(value = "便民信息--便民信息列表", response = TConvenientInformation.class) @PostMapping("/getConvenientInformationList") public R> getConvenientInformationList(@RequestBody ConvenientInformationListQuery query) { Page page = new Page<>(query.getPageNum(), query.getPageSize()); Page tConvenientInformationPage = tConvenientInformationService.page(page, new LambdaQueryWrapper().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 getConvenientInformationDetail(@PathVariable String id) { return R.ok(tConvenientInformationService.getById(id)); } @ApiOperation(value = "微心愿--微心愿列表", response = TMicroWish.class) @PostMapping("/getMicroWishList") public R> getMicroWishList(@RequestBody MicroWishListQuery query) { Page page = new Page<>(query.getPageNum(), query.getPageSize()); Page tMicroWishPage = tMicroWishService.page(page, new LambdaQueryWrapper().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> getCommunityActivityList(@RequestBody CommunityActivityListQuery query) { String userId = null; try { userId = tokenService.getLoginUserApplet().getUserId(); } catch (Exception e) { } Page page = new Page<>(query.getPageNum(), query.getPageSize()); Page tCommunityActivityPage = tCommunityActivityService.page(page, new LambdaQueryWrapper().eq(TCommunityActivity::getStatus, 2).like(Objects.nonNull(query.getName()), TCommunityActivity::getActivityTitle, query.getName()).orderByDesc(BaseModel::getCreateTime)); List activityList = tCommunityActivityPage.getRecords(); // 判断是否已经报名 if (!activityList.isEmpty() && userId != null) { List activityIds = activityList.stream().map(TCommunityActivity::getId).collect(Collectors.toList()); List activityRegistrationList = tCommunityActivityRegistrationService.list(new LambdaQueryWrapper().in(TCommunityActivityRegistration::getActivityId, activityIds).eq(TCommunityActivityRegistration::getAppUserId, userId)); for (TCommunityActivity tCommunityActivity : activityList) { List tCommunityActivityRegistrations = activityRegistrationList.stream().filter(e -> e.getActivityId().equals(tCommunityActivity.getId())).collect(Collectors.toList()); tCommunityActivity.setUserNum(tCommunityActivityRegistrations.size()); String finalUserId = userId; TCommunityActivityRegistration tCommunityActivityRegistration = tCommunityActivityRegistrations.stream().filter(e -> e.getAppUserId().equals(finalUserId)).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 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().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().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> getDeliberationVoteList(@RequestBody DeliberationVoteListQuery query) { String userId = null; try { userId = tokenService.getLoginUserApplet().getUserId(); } catch (Exception e) { } Page page = new Page<>(query.getPageNum(), query.getPageSize()); Page tDeliberationVotePage = tDeliberationVoteService.page(page, new LambdaQueryWrapper().eq(TDeliberationVote::getStatus, query.getStatus()).orderByDesc(BaseModel::getCreateTime)); List tDeliberationVoteList = tDeliberationVotePage.getRecords(); if(!tDeliberationVoteList.isEmpty()){ List voteIds = tDeliberationVoteList.stream().map(TDeliberationVote::getId).collect(Collectors.toList()); List tDeliberationVoteOptionList = tDeliberationVoteOptionService.list(new LambdaQueryWrapper().in(TDeliberationVoteOption::getVoteId, voteIds)); for (TDeliberationVote tDeliberationVote : tDeliberationVoteList) { List options = tDeliberationVoteOptionList.stream().filter(e -> e.getVoteId().equals(tDeliberationVote.getId())).collect(Collectors.toList()); for (TDeliberationVoteOption option : options) { String[] split = option.getVoteCount().split(","); // split转为数组 List 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 list = tDeliberationVoteOptionService.list(new LambdaQueryWrapper().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(); } }