package com.ruoyi.web.controller.api; import cn.hutool.crypto.SecureUtil; 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.util.CollectionUtils; 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; private final TAppUserService appUserService; public ConvenienceController(THtmlConfigService tHtmlConfigService, TServiceGuideFileService tServiceGuideFileService, TConvenientInformationService tConvenientInformationService, TMicroWishService tMicroWishService, TokenService tokenService, TCommunityActivityService tCommunityActivityService, TCommunityActivityRegistrationService tCommunityActivityRegistrationService, TDeliberationVoteService tDeliberationVoteService, TDeliberationVoteOptionService tDeliberationVoteOptionService, TAppealServicesService tAppealServicesService, TAppUserService appUserService) { 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; this.appUserService = appUserService; } @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::getState, 1).eq(TMicroWish::getStatus, 2).like(Objects.nonNull(query.getWishDescription()), TMicroWish::getWishDescription, query.getWishDescription()).orderByDesc(BaseModel::getCreateTime)); List records = tMicroWishPage.getRecords(); List appUserIds = records.stream().map(TMicroWish::getAppUserId).collect(Collectors.toList()); if (!CollectionUtils.isEmpty(appUserIds)) { List appUsers = appUserService.list(Wrappers.lambdaQuery(TAppUser.class) .in(TAppUser::getId, appUserIds)); for (TMicroWish microWish : records) { List appUserList = appUsers.stream().filter(appUser -> microWish.getAppUserId().equals(appUser.getId())).collect(Collectors.toList()); if (!CollectionUtils.isEmpty(appUserList)) { microWish.setUserName(appUserList.get(0).getNickName()); microWish.setAvatar(appUserList.get(0).getAvatar()); } } } 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); if (dto.getWishType() == 1) { dto.setStatus(1); } else { dto.setStatus(4); } 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()) { List activityIds = activityList.stream().map(TCommunityActivity::getId).collect(Collectors.toList()); List activityRegistrationList = tCommunityActivityRegistrationService.list(new LambdaQueryWrapper().in(TCommunityActivityRegistration::getActivityId, activityIds)); 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; if (finalUserId != null) { } } } 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) { } long count = tCommunityActivityRegistrationService.count(new LambdaQueryWrapper().eq(TCommunityActivityRegistration::getActivityId, id)); if (count > 0) { tCommunityActivity.setUserNum((int) count); } if(userId!=null){ tCommunityActivity.setState(tCommunityActivityRegistrationService.count(new LambdaQueryWrapper().eq(TCommunityActivityRegistration::getActivityId, id).eq(TCommunityActivityRegistration::getAppUserId, userId)) > 0 ? 2 : 1); } 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) { if (option.getVoteCount() != null) { 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); } public static void main(String[] args) { String s = SecureUtil.md5("123456"); System.out.println(s); } @ApiOperation(value = "议事投票--详情", response = TDeliberationVote.class) @GetMapping("/getDeliberationVoteDetail/{id}") public R getDeliberationVoteDetail(@PathVariable String id) { String userId = null; try { userId = tokenService.getLoginUserApplet().getUserId(); } catch (Exception e) { } TDeliberationVote tDeliberationVote = tDeliberationVoteService.getById(id); if (tDeliberationVote != null) { List tDeliberationVoteOptionList = tDeliberationVoteOptionService.list(new LambdaQueryWrapper().eq(TDeliberationVoteOption::getVoteId, id)); List options = tDeliberationVoteOptionList.stream().filter(e -> e.getVoteId().equals(tDeliberationVote.getId())).collect(Collectors.toList()); for (TDeliberationVoteOption option : options) { if (option.getVoteCount() != null) { 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); } return R.ok(tDeliberationVote); } @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(); if (voteCount != null) { 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(); } }