springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/DiscussApi.java
@@ -1,27 +1,45 @@ package com.panzhihua.applets.api; import java.util.Date; import java.util.List; import java.util.Objects; import javax.annotation.Resource; import com.panzhihua.common.validated.PutGroup; import org.springframework.util.ObjectUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.panzhihua.applets.weixin.CheckService; import com.panzhihua.common.controller.BaseController; import com.panzhihua.common.model.dtos.community.*; import com.panzhihua.common.model.dtos.community.ComActDiscussCommentDTO; import com.panzhihua.common.model.dtos.community.ComActDiscussCommentUserDTO; import com.panzhihua.common.model.dtos.community.ComActDiscussDTO; import com.panzhihua.common.model.dtos.community.ComActDiscussOptionDTO; import com.panzhihua.common.model.dtos.community.ComActDiscussOptionUserDTO; import com.panzhihua.common.model.dtos.community.ComActDiscussUserDTO; import com.panzhihua.common.model.dtos.community.PageComActDiscussCommentDTO; import com.panzhihua.common.model.dtos.community.PageComActDiscussDTO; import com.panzhihua.common.model.dtos.community.integral.admin.AddComActIntegralUserDTO; import com.panzhihua.common.model.vos.LoginUserInfoVO; import com.panzhihua.common.model.vos.R; import com.panzhihua.common.model.vos.community.ComActDiscussCommentVO; import com.panzhihua.common.model.vos.community.ComActDiscussVO; import com.panzhihua.common.service.community.CommunityService; import com.panzhihua.common.utlis.DateUtils; import com.panzhihua.common.validated.AddGroup; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; /** @@ -58,6 +76,11 @@ if (ObjectUtils.isEmpty(discussOptions)) { return R.fail("选项不能为空"); } if (discussOptions.size() < 2) { return R.fail("请至少设置两个投票选项"); } //设置投票开始时间 nowDate comActDiscussDTO.setStartTime(DateUtils.format(new Date(), DateUtils.ymdhms_format)); } String address = comActDiscussDTO.getAddress(); if (ObjectUtils.isEmpty(address)) { @@ -70,12 +93,17 @@ Long communityId = loginUserInfo.getCommunityId(); comActDiscussDTO.setUserId(userId); comActDiscussDTO.setCommunityId(communityId); comActDiscussDTO.setIsApplets(true); comActDiscussDTO.setLoginUserInfo(loginUserInfo); return communityService.addDiscuss(comActDiscussDTO); } @ApiOperation(value = "一起议-分页查询", response = ComActDiscussVO.class) @PostMapping("pagediscuss") public R pageDiscuss(@RequestBody PageComActDiscussDTO pageComActDiscussDTO) { if (Objects.isNull(pageComActDiscussDTO.getType())) { return R.fail("查询类型不能为空"); } LoginUserInfoVO loginUserInfo = this.getLoginUserInfoSureNoLogin(); if (loginUserInfo != null) { pageComActDiscussDTO.setCommunityId(loginUserInfo.getCommunityId()); @@ -185,4 +213,18 @@ return communityService.addDiscussOptionUser(comActDiscussOptionUserDTO); } @ApiOperation(value = "一起议-增加浏览量") @PostMapping("discuss/increase-view-num") public void increaseViewNum(@RequestParam("discussId") @ApiParam(value = "一起议主键id", required = true) Long discussId) { communityService.increaseViewNum(discussId); } @ApiOperation(value = "一起议-公布/编辑投票结果") @PostMapping("discuss/edit-result") public R editDiscussResult(@RequestBody @Validated(PutGroup.class) ComActDiscussDTO comActDiscussDTO) { comActDiscussDTO.setUserId(this.getUserId()); return communityService.editDiscussResult(comActDiscussDTO); } } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/constants/Constants.java
@@ -191,4 +191,9 @@ * 高德地图获取天气key */ public static final String G_D_WEATHER_KEY = "02019a956b118ac7956c8539ab02b0f5"; /** * 社区议事投票小程序身份验证参数默认key */ public static final String DISCUSS_IDENTITY_KEY = "DISCUSS_IDENTITY_"; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/ComActDiscussDTO.java
@@ -1,34 +1,39 @@ package com.panzhihua.common.model.dtos.community; import java.math.BigDecimal; import java.util.Date; import java.util.List; import javax.validation.constraints.Min; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import com.panzhihua.common.model.vos.LoginUserInfoVO; import com.panzhihua.common.validated.AddGroup; import com.panzhihua.common.validated.PutGroup; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * @program: springcloud_k8s_panzhihuazhihuishequ * @description: 一起议新增编辑 * @description: 议事投票新增编辑 * @author: huang.hongfa weixin hhf9596 qq 959656820 * @create: 2021-01-22 15:34 **/ @Data @ApiModel("一起议新增编辑") @ApiModel("议事投票新增编辑") public class ComActDiscussDTO { @ApiModelProperty("主键") @NotNull(message = "一起议id不能为空", groups = {PutGroup.class}) private Long id; @ApiModelProperty("主题") @NotBlank(groups = {AddGroup.class}, message = "主题不能为空") private String discussSubject; @ApiModelProperty("类型 1 图文 2 投票") @ApiModelProperty("类型 1 议事 2 投票") @Min(value = 1, groups = {AddGroup.class}, message = "类型不能为空") private Integer type; @@ -56,4 +61,39 @@ @ApiModelProperty("选项集合") private List<ComActDiscussOptionDTO> discussOptions; @ApiModelProperty(value = "单张图片宽度") private BigDecimal imgWidth; @ApiModelProperty(value = "单张图片高度") private BigDecimal imgHeight; @ApiModelProperty(value = "投票开始时间(格式:yyyy-MM-dd HH:mm:ss)") private String startTime; @ApiModelProperty(value = "投票结束时间(格式:yyyy-MM-dd HH:mm:ss)") private String endTime; @ApiModelProperty(value = "是否可重复投票(1.是 2.否)") private Integer isRepeat; @ApiModelProperty(value = "每人可投票数") private Integer count; @ApiModelProperty(value = "是否是小程序用户", hidden = true) private Boolean isApplets; @ApiModelProperty(value = "当前登录用户信息", hidden = true) private LoginUserInfoVO loginUserInfo; @ApiModelProperty("投票结果") @NotBlank(message = "投票结果不能为空", groups = {PutGroup.class}) private String publishResult; /** * 类型 1 议事 2 投票 */ public interface type{ int ys = 1; int tp = 2; } } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/PageComActDiscussCommentDTO.java
@@ -15,10 +15,10 @@ public class PageComActDiscussCommentDTO { @ApiModelProperty(value = "分页-当前页数", example = "1") private Long pageNum; private Long pageNum = 1L; @ApiModelProperty(value = "分页-每页记录数", example = "10") private Long pageSize; private Long pageSize = 10L; @ApiModelProperty(value = "账号") private String account; @@ -34,4 +34,7 @@ @ApiModelProperty(value = "登录用户", required = true) private Long loginUserId; @ApiModelProperty(value = "关键词") private String keyWord; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/PageComActDiscussDTO.java
@@ -18,10 +18,10 @@ @ApiModel("分页查询一起议") public class PageComActDiscussDTO { @ApiModelProperty(value = "分页-当前页数", example = "1") private Long pageNum; private Long pageNum = 1L; @ApiModelProperty(value = "分页-每页记录数", example = "10") private Long pageSize; private Long pageSize = 10L; @ApiModelProperty("主题") private String subject; @@ -45,4 +45,16 @@ @ApiModelProperty("小程序使用 1 表示查询我的议题") private Integer isMy; @ApiModelProperty("状态(1.未开始 2.进行中 3.待公布 4.已公布 5.已发布)") private Integer status; @ApiModelProperty("关键词") private String keyWord; @ApiModelProperty(value = "类型: 1.议事 2.投票,小程序必须传入类型", allowableValues = "1,2") private Integer type; @ApiModelProperty(value = "展示状态,小程序获取不同状态的投票列表 1.进行中 2.已结束", allowableValues = "1,2") private Integer displayStatus; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/discuss/ComActDiscussDetailDTO.java
New file @@ -0,0 +1,24 @@ package com.panzhihua.common.model.dtos.community.discuss; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * @author lyq * 议事投票公布结果请求参数 */ @Data @ApiModel("议事投票公布结果请求参数") public class ComActDiscussDetailDTO { @ApiModelProperty("主键id") private Long id; @ApiModelProperty(value = "分页-当前页数", example = "1") private Long pageNum = 1L; @ApiModelProperty(value = "分页-每页记录数", example = "10") private Long pageSize = 10L; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/dtos/community/discuss/ComActDiscussPublishResultDTO.java
New file @@ -0,0 +1,36 @@ package com.panzhihua.common.model.dtos.community.discuss; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; /** * @author lyq * 议事投票公布结果请求参数 */ @Data @ApiModel("议事投票公布结果请求参数") public class ComActDiscussPublishResultDTO { @ApiModelProperty("议事投票id") private Long id; @ApiModelProperty("公布结果") private String result; @ApiModelProperty(value = "用户id",hidden = true) private Long userId; @ApiModelProperty("类型(1.新增公布结果 2.修改公布结果)") private Integer type; /** * 类型(1.新增公布结果 2.修改公布结果) */ public interface type{ int add = 1; int edit = 2; } } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActDiscussCommentVO.java
@@ -80,4 +80,7 @@ @ApiModelProperty("评论人用户类型(1.小程序用户(其他均为后台用户))") private Integer userType; @ApiModelProperty("回复量") private Integer replyNum; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActDiscussOptionUserVO.java
New file @@ -0,0 +1,40 @@ package com.panzhihua.common.model.vos.community; import java.util.Date; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * @title: ComActDiscussOptionUserVO * @projectName: 成都呐喊信息技术有限公司-智慧社区项目 * @description: 一起议投票记录详情 * @author: hans * @date: 2021/09/08 16:14 */ @Data @ApiModel("一起议投票记录详情") public class ComActDiscussOptionUserVO { @ApiModelProperty("投票记录主键id") private Long id; @ApiModelProperty("一起议选项id") private Long discussOptionId; @ApiModelProperty("投票人id") private Long userId; @ApiModelProperty("投票时间") private Date createAt; @ApiModelProperty("一起议id") private Long discussId; @ApiModelProperty("投票人昵称") private String userNickName; @ApiModelProperty("投票人头像") private String imageUrl; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActDiscussOptionVO.java
@@ -1,5 +1,6 @@ package com.panzhihua.common.model.vos.community; import java.math.BigDecimal; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; @@ -36,6 +37,12 @@ @ApiModelProperty("投票数量") private Integer num; @ApiModelProperty("投票总数量") private Integer allNum; @ApiModelProperty("是否已经投票 1 是 0 否") private Integer haveVote = 0; @ApiModelProperty("投票选项占比") private BigDecimal percent; } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/community/ComActDiscussVO.java
@@ -1,5 +1,6 @@ package com.panzhihua.common.model.vos.community; import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -24,7 +25,7 @@ @ApiModelProperty("主题") private String discussSubject; @ApiModelProperty("类型 1 图文 2 投票") @ApiModelProperty("类型 1 议事 2 投票") private Integer type; @ApiModelProperty("图片地址 多个用逗号隔开") @@ -58,6 +59,9 @@ @ApiModelProperty("点赞数量") private Integer signNum; @ApiModelProperty("浏览量") private Integer viewsNum; @ApiModelProperty("发布人名字") private String userName; @@ -76,4 +80,60 @@ @ApiModelProperty("用户类型 1 小程序 2 运营平台 3 社区平台 5 商家后台 6 网格综治APP 7 网格综治后台") private Integer userType; @ApiModelProperty("状态(1.未开始 2.进行中 3.待公布 4.已公布 5.已发布)") private Integer status; @ApiModelProperty("公布结果") private String publishResult; @ApiModelProperty("公布时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date publishAt; @ApiModelProperty("发布时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date releaseAt; @ApiModelProperty("投票开始时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date startTime; @ApiModelProperty("投票结束时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date endTime; @ApiModelProperty("参与讨论人数") private Integer joinNum; @ApiModelProperty("单张图片宽度") private BigDecimal imgWidth; @ApiModelProperty("单张图片高度") private BigDecimal heightWidth; @ApiModelProperty("是否可重复投票(1.是 2.否)") private Integer isRepeat; @ApiModelProperty("每人票数") private Integer count; @ApiModelProperty("议事投票评论列表") private List<ComActDiscussCommentVO> discussCommentList; @ApiModelProperty("剩余可投票数") private Integer remainingVotes; @ApiModelProperty("已投票记录列表") private List<ComActDiscussOptionUserVO> comActDiscussOptionUserVOList; @ApiModelProperty("已参与投票人数") private Integer votedPersonNum; /** * 类型 1 议事 2 投票 */ public interface type{ int ys = 1; int tp = 2; } } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/community/CommunityService.java
@@ -3,6 +3,8 @@ import java.util.List; import com.panzhihua.common.model.dtos.community.*; import com.panzhihua.common.model.dtos.community.discuss.ComActDiscussDetailDTO; import com.panzhihua.common.model.dtos.community.discuss.ComActDiscussPublishResultDTO; import com.panzhihua.common.model.dtos.neighbor.*; import com.panzhihua.common.model.vos.community.*; import io.swagger.annotations.ApiOperation; @@ -1160,12 +1162,20 @@ /** * 议事投票-详情 * * @param id * 主键 * @param discussDetailDTO * 请求参数 * @return ComActDiscussVO */ @PostMapping("detaildiscuss") R detailDiscuss(@RequestParam("id") Long id); R detailDiscuss(@RequestBody ComActDiscussDetailDTO discussDetailDTO); /** * 分页查询评论下回复列表 * @param discussDetailDTO 请求参数 * @return 回复列表 */ @PostMapping("discussCommentReplyAdmin") R discussCommentReplyAdmin(@RequestBody ComActDiscussDetailDTO discussDetailDTO); /** * 议事投票-删除 @@ -1198,6 +1208,16 @@ R pageDiscuss(@RequestBody PageComActDiscussDTO pageComActDiscussDTO); /** * 议事投票-后台分页查询 * * @param pageComActDiscussDTO * 查询参数 * @return ComActDiscussVO */ @PostMapping("pagediscussAdmin") R pageDiscussAdmin(@RequestBody PageComActDiscussDTO pageComActDiscussDTO); /** * 议事投票-评论-查看 * * @param id @@ -1206,6 +1226,14 @@ */ @PostMapping("detaildiscusscomment") R detailDiscussComment(@RequestParam("id") Long id); /** * 议事投票评论详情 * @param pageComActDiscussCommentDTO 请求参数 * @return 议事投票详情 */ @PostMapping("detaildiscusscommentAdmin") R detailDiscussCommentAdmin(@RequestBody PageComActDiscussCommentDTO pageComActDiscussCommentDTO); /** * 议事投票-评论-置顶 @@ -1236,6 +1264,16 @@ */ @PostMapping("pagediscusscomment") R pageDiscussComment(@RequestBody PageComActDiscussCommentDTO pageComActDiscussCommentDTO); /** * 议事投票-评论-后台分页查询 * * @param pageComActDiscussCommentDTO * 分页查询参数 * @return ComActDiscussCommentVO */ @PostMapping("pagediscusscommentAdmin") R pageDiscussCommentAdmin(@RequestBody PageComActDiscussCommentDTO pageComActDiscussCommentDTO); /** * 议事投票-分页查询 小程序 @@ -5527,6 +5565,67 @@ R editSysConfValue(@RequestParam("communityId") Long communityId,@RequestParam("status") Integer status); /** * 议事投票后台公布结果 * @param publishResultDTO 请求参数 * @return 公布结果 */ @PostMapping("publishResultAdmin") R publishResultAdmin(@RequestBody ComActDiscussPublishResultDTO publishResultDTO); /** * 议事投票-评论/回复删除 * @param id 评论/回复id * @return 删除结果 */ @GetMapping("deleteDiscussCommentAdmin") R deleteDiscussCommentAdmin(@RequestParam("id") Long id); /** * 查询社区可发布议事投票权限配置 * @param communityId 社区id * @return 社区可发布议事投票权限配置 */ @GetMapping("discussJurisdictionGet") R discussJurisdictionGet(@RequestParam("communityId") Long communityId,@RequestParam("userId") Long userId); /** * 设置当前社区议事投票小程序身份验证参数(1.全部 2.党员 3.志愿者 4.社区工作人员) * @param communityId 社区id * @param value 需要设置的参数值 * @return 设置结果 */ @GetMapping("discussJurisdictionSet") R discussJurisdictionSet(@RequestParam("communityId") Long communityId, @RequestParam("value") String value); /** * 议事投票检测状态定时任务 * @return 执行结果 */ @GetMapping("timedTaskDiscussInspectStatus") R timedTaskDiscussInspectStatus(); /** * 一起议增加浏览量 * @param discussId 一起议主键id */ @PostMapping("discuss/increase-view-num") void increaseViewNum(@RequestParam("discussId") Long discussId); /** * 定时任务每半小时执行一次将一起议浏览量写入到表中 */ @PostMapping("discuss/write-view-num") R timedTaskWriteDiscussViewNumToTable(); /** * 公布/编辑一起议投票结果 * @param comActDiscussDTO * @return 请求结果 */ @PostMapping("discuss/edit-result") R editDiscussResult(@RequestBody ComActDiscussDTO comActDiscussDTO); /** * 定时任务扫描高龄认证记录信息 * @return 执行结果 */ springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/user/UserService.java
@@ -988,4 +988,13 @@ */ @GetMapping("getUserListByCommunityId") R getUserListByCommunityId(@RequestParam("communityId") Long communityId); /** * 检查当前用户是否是社区工作人员 * @param phone * @param communityId * @return */ @GetMapping("checkIsTeam") R checkCurrentUserIsTeam(@RequestParam("phone") String phone, @RequestParam("communityId") Long communityId); } springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/DateUtils.java
@@ -22,6 +22,7 @@ public static SimpleDateFormat ymdhm_format = new SimpleDateFormat("yyyy-MM-dd HH:mm"); public static DateTimeFormatter format_ymd_String = DateTimeFormatter.ofPattern("yyMMdd"); public static SimpleDateFormat yyyyMM_format = new SimpleDateFormat("yyyy-MM"); public static SimpleDateFormat format_yyymmdd = new SimpleDateFormat("yyyyMMdd"); private static DateTimeFormatter format_ymdhmssss = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); private static DateTimeFormatter format_ymds = DateTimeFormatter.ofPattern("yyyyMMdd"); springcloud_k8s_panzhihuazhihuishequ/community_backstage/src/main/java/com/panzhihua/community_backstage/api/DiscussApi.java
@@ -1,10 +1,11 @@ package com.panzhihua.community_backstage.api; import java.util.List; import javax.annotation.Resource; import com.panzhihua.common.model.dtos.community.discuss.ComActDiscussDetailDTO; import com.panzhihua.common.model.dtos.community.discuss.ComActDiscussPublishResultDTO; import org.springframework.util.ObjectUtils; import org.springframework.util.StringUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -23,54 +24,78 @@ /** * @program: springcloud_k8s_panzhihuazhihuishequ * @description: 一起议 * @description: 议事投票 * @author: huang.hongfa weixin hhf9596 qq 959656820 * @create: 2021-01-22 15:30 **/ @Slf4j @Api(tags = {"一起议"}) @Api(tags = {"议事投票"}) @RestController @RequestMapping("/") public class DiscussApi extends BaseController { @Resource private CommunityService communityService; @ApiOperation(value = "一起议-新增") @ApiOperation(value = "议事投票-新增-") @PostMapping("discuss") public R addDiscuss(@RequestBody @Validated(AddGroup.class) ComActDiscussDTO comActDiscussDTO) { Integer type = comActDiscussDTO.getType(); String voteTitle = comActDiscussDTO.getVoteTitle(); List<ComActDiscussOptionDTO> discussOptions = comActDiscussDTO.getDiscussOptions(); if (type.equals(2)) { if (ObjectUtils.isEmpty(voteTitle)) { LoginUserInfoVO loginUserInfo = this.getLoginUserInfo(); if (loginUserInfo == null) { return R.fail("请先登录"); } comActDiscussDTO.setUserId(loginUserInfo.getUserId()); comActDiscussDTO.setCommunityId(loginUserInfo.getCommunityId()); if (comActDiscussDTO.getType().equals(ComActDiscussDTO.type.tp)) { if (ObjectUtils.isEmpty(comActDiscussDTO.getVoteTitle())) { return R.fail("投票标题不能为空"); } if (ObjectUtils.isEmpty(discussOptions)) { if (ObjectUtils.isEmpty(comActDiscussDTO.getDiscussOptions())) { return R.fail("选项不能为空"); } } LoginUserInfoVO loginUserInfo = this.getLoginUserInfo(); Long userId = loginUserInfo.getUserId(); Long communityId = loginUserInfo.getCommunityId(); comActDiscussDTO.setUserId(userId); comActDiscussDTO.setCommunityId(communityId); return communityService.addDiscuss(comActDiscussDTO); } @ApiOperation(value = "一起议-详情", response = ComActDiscussVO.class) @GetMapping("discuss") public R detailDiscuss(@RequestParam("id") Long id) { return communityService.detailDiscuss(id); @ApiOperation(value = "议事投票-编辑-") @PostMapping("editDiscuss") public R editDiscuss(@RequestBody @Validated(AddGroup.class) ComActDiscussDTO comActDiscussDTO) { LoginUserInfoVO loginUserInfo = this.getLoginUserInfo(); if (loginUserInfo == null) { return R.fail("请先登录"); } comActDiscussDTO.setUserId(loginUserInfo.getUserId()); comActDiscussDTO.setCommunityId(loginUserInfo.getCommunityId()); if (comActDiscussDTO.getType().equals(ComActDiscussDTO.type.tp)) { if (ObjectUtils.isEmpty(comActDiscussDTO.getVoteTitle())) { return R.fail("投票标题不能为空"); } if (ObjectUtils.isEmpty(comActDiscussDTO.getDiscussOptions())) { return R.fail("选项不能为空"); } } return communityService.editDiscuss(comActDiscussDTO); } @ApiOperation(value = "一起议-删除") @ApiOperation(value = "议事投票-详情-", response = ComActDiscussVO.class) @PostMapping("discussDetail") public R detailDiscuss(@RequestBody ComActDiscussDetailDTO discussDetailDTO) { return communityService.detailDiscuss(discussDetailDTO); } @ApiOperation(value = "议事投票-分页查询评论下回复列表-", response = ComActDiscussCommentVO.class) @PostMapping("discuss/commment/reply") public R discussCommentReplyAdmin(@RequestBody ComActDiscussDetailDTO discussDetailDTO) { return communityService.discussCommentReplyAdmin(discussDetailDTO); } @ApiOperation(value = "议事投票-删除-") @DeleteMapping("discuss") public R deleteDiscuss(@RequestParam("id") Long id) { return communityService.deleteDiscuss(id); } @ApiOperation(value = "一起议-回复") @PostMapping("discusscomment") @ApiOperation(value = "议事投票-回复-") @PostMapping("addDiscussComment") public R addDiscussComment(@RequestBody ComActDiscussCommentDTO comActDiscussCommentDTO) { String comment = comActDiscussCommentDTO.getComment(); if (ObjectUtils.isEmpty(comment)) { @@ -78,33 +103,39 @@ } Long discussId = comActDiscussCommentDTO.getDiscussId(); if (null == discussId || 0 == discussId) { return R.fail("一起议主键不能为空"); return R.fail("议事投票主键不能为空"); } comActDiscussCommentDTO.setUserId(this.getUserId()); return communityService.addDiscussComment(comActDiscussCommentDTO); } @ApiOperation(value = "一起议-分页查询", response = ComActDiscussVO.class) @ApiOperation(value = "议事投票-分页查询-", response = ComActDiscussVO.class) @PostMapping("pagediscuss") public R pageDiscuss(@RequestBody PageComActDiscussDTO pageComActDiscussDTO) { pageComActDiscussDTO.setCommunityId(this.getCommunityId()); return communityService.pageDiscuss(pageComActDiscussDTO); return communityService.pageDiscussAdmin(pageComActDiscussDTO); } @ApiOperation(value = "一起议-评论-查看", response = ComActDiscussCommentVO.class) @ApiOperation(value = "议事投票-评论详情", response = ComActDiscussCommentVO.class) @GetMapping("discusscomment") public R detailDiscussComment(@RequestParam("id") Long id) { return communityService.detailDiscussComment(id); } @ApiOperation(value = "一起议-评论-置顶") @ApiOperation(value = "议事投票-评论详情-改版后", response = ComActDiscussCommentVO.class) @PostMapping("discusscomment") public R detailDiscussCommentAdmin(@RequestBody PageComActDiscussCommentDTO pageComActDiscussCommentDTO) { return communityService.detailDiscussCommentAdmin(pageComActDiscussCommentDTO); } @ApiOperation(value = "议事投票-评论-置顶-") @GetMapping("discusscommenttop") public R putDiscussCommentTop(@RequestParam("id") Long id) { return communityService.putDiscussCommentTop(id); } @ApiOperation(value = "一起议-评论-回复") @ApiOperation(value = "议事投票-评论-回复-") @PostMapping("discusscommentback") public R addDiscussCommentBack(@RequestBody ComActDiscussCommentDTO comActDiscussCommentDTO) { String comment = comActDiscussCommentDTO.getComment(); @@ -119,13 +150,49 @@ return communityService.addDiscussCommentBack(comActDiscussCommentDTO); } @ApiOperation(value = "一起议-评论-分页查询", response = ComActDiscussCommentVO.class) @ApiOperation(value = "议事投票-评论列表分页查询-", response = ComActDiscussCommentVO.class) @PostMapping("pagediscusscomment") public R pageDiscussComment(@RequestBody PageComActDiscussCommentDTO pageComActDiscussCommentDTO) { Long id = pageComActDiscussCommentDTO.getId(); if (null == id || 0 == id) { return R.fail("一起议主键不能为空"); return R.fail("议事投票主键不能为空"); } return communityService.pageDiscussComment(pageComActDiscussCommentDTO); return communityService.pageDiscussCommentAdmin(pageComActDiscussCommentDTO); } @ApiOperation(value = "议事投票-公布结果/修改公布结果-") @PostMapping("publishResult") public R publishResult(@RequestBody ComActDiscussPublishResultDTO publishResultDTO) { String result = publishResultDTO.getResult(); if (ObjectUtils.isEmpty(result)) { return R.fail("公布的结果不能为空"); } Long id = publishResultDTO.getId(); if (null == id || 0 == id) { return R.fail("议事投票id不能为空"); } publishResultDTO.setUserId(this.getUserId()); return communityService.publishResultAdmin(publishResultDTO); } @ApiOperation(value = "议事投票-评论/回复删除-") @DeleteMapping("discuss/comment/del") public R deleteDiscussCommentAdmin(@RequestParam("id") Long id) { return communityService.deleteDiscussCommentAdmin(id); } @ApiOperation(value = "查询社区可发布议事投票权限配置") @GetMapping("discuss/jurisdiction/get") public R discussJurisdictionGet() { return communityService.discussJurisdictionGet(this.getCommunityId(),this.getUserId()); } @PutMapping("/discuss/jurisdiction/set/{value}") @ApiOperation(value = "设置当前社区议事投票小程序身份验证参数(1.全部 2.党员 3.志愿者 4.社区工作人员)") public R discussJurisdictionSet(@PathVariable("value") String value) { if (StringUtils.isEmpty(value)) { return R.fail("参数错误"); } return communityService.discussJurisdictionSet(this.getCommunityId(), value); } } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/DiscussApi.java
@@ -2,6 +2,8 @@ import javax.annotation.Resource; import com.panzhihua.common.model.dtos.community.discuss.ComActDiscussDetailDTO; import com.panzhihua.common.model.dtos.community.discuss.ComActDiscussPublishResultDTO; import org.springframework.web.bind.annotation.*; import com.panzhihua.common.model.dtos.community.*; @@ -12,7 +14,7 @@ /** * @program: springcloud_k8s_panzhihuazhihuishequ * @description: 一起议 * @description: 议事投票 * @author: huang.hongfa weixin hhf9596 qq 959656820 * @create: 2021-01-22 14:52 **/ @@ -24,7 +26,7 @@ private ComActDiscussService comActDiscussService; /** * 一起议-新增 * 议事投票-新增 * * @param comActDiscussDTO * 新增参数 @@ -36,19 +38,39 @@ } /** * 一起议-详情 * * @param id * 主键 * @return ComActDiscussVO * 议事投票-编辑 * @param comActDiscussDTO 请求参数 * @return 编辑结果 */ @PostMapping("detaildiscuss") public R detailDiscuss(@RequestParam("id") Long id) { return comActDiscussService.detailDiscuss(id); @PostMapping("editdiscuss") public R editDiscuss(@RequestBody ComActDiscussDTO comActDiscussDTO) { return comActDiscussService.editDiscuss(comActDiscussDTO); } /** * 一起议-删除 * 议事投票-详情 * * @param discussDetailDTO * 请求参数 * @return ComActDiscussVO */ @PostMapping("detaildiscuss") public R detailDiscuss(@RequestBody ComActDiscussDetailDTO discussDetailDTO) { return comActDiscussService.detailDiscuss(discussDetailDTO); } /** * 分页查询评论下回复列表 * @param discussDetailDTO 请求参数 * @return 回复列表 */ @PostMapping("discussCommentReplyAdmin") public R discussCommentReplyAdmin(@RequestBody ComActDiscussDetailDTO discussDetailDTO) { return comActDiscussService.discussCommentReplyAdmin(discussDetailDTO); } /** * 议事投票-删除 * * @param id * 主键 @@ -60,7 +82,7 @@ } /** * 一起议-回复 * 议事投票-回复 * * @param comActDiscussCommentDTO * 评论内容 @@ -72,7 +94,7 @@ } /** * 一起议-分页查询 * 议事投票-分页查询 * * @param pageComActDiscussDTO * 查询参数 @@ -84,7 +106,19 @@ } /** * 一起议-评论-查看 * 议事投票-后台分页查询 * * @param pageComActDiscussDTO * 查询参数 * @return ComActDiscussVO */ @PostMapping("pagediscussAdmin") public R pageDiscussAdmin(@RequestBody PageComActDiscussDTO pageComActDiscussDTO) { return comActDiscussService.pageDiscussAdmin(pageComActDiscussDTO); } /** * 议事投票-评论-查看 * * @param id * 主键 @@ -96,7 +130,17 @@ } /** * 一起议-评论-置顶 * 议事投票评论详情 * @param pageComActDiscussCommentDTO 请求参数 * @return 议事投票详情 */ @PostMapping("detaildiscusscommentAdmin") public R detailDiscusscommentAdmin(@RequestBody PageComActDiscussCommentDTO pageComActDiscussCommentDTO) { return comActDiscussService.detailDiscussCommentAdmin(pageComActDiscussCommentDTO); } /** * 议事投票-评论-置顶 * * @param id * 主键 @@ -108,7 +152,7 @@ } /** * 一起议-评论-回复 * 议事投票-评论-回复 * * @param comActDiscussCommentDTO * 回复内容 @@ -120,7 +164,7 @@ } /** * 一起议-评论-分页查询 * 议事投票-评论-分页查询 * * @param pageComActDiscussCommentDTO * 分页查询参数 @@ -132,7 +176,19 @@ } /** * 一起议-分页查询 小程序 * 议事投票-评论-后台分页查询 * * @param pageComActDiscussCommentDTO * 分页查询参数 * @return ComActDiscussCommentVO */ @PostMapping("pagediscusscommentAdmin") public R pageDiscussCommentAdmin(@RequestBody PageComActDiscussCommentDTO pageComActDiscussCommentDTO) { return comActDiscussService.pageDiscussCommentAdmin(pageComActDiscussCommentDTO); } /** * 议事投票-分页查询 小程序 * * @param pageComActDiscussDTO * 查询参数 @@ -144,7 +200,7 @@ } /** * 一起议-点赞、取消点赞 * 议事投票-点赞、取消点赞 * * @param comActDiscussUserDTO * 操作类型 @@ -156,7 +212,7 @@ } /** * 一起议-评论-分页查询 小程序 * 议事投票-评论-分页查询 小程序 * * @param pageComActDiscussCommentDTO * 分页参数 @@ -168,7 +224,7 @@ } /** * 一起议-详情 小程序 * 议事投票-详情 小程序 * * @param id * 主键 @@ -182,7 +238,7 @@ } /** * 一起议-投票 * 议事投票-投票 * * @param comActDiscussOptionUserDTO * 投票信息 @@ -194,7 +250,7 @@ } /** * 一起议-评论-点赞、取消点赞 * 议事投票-评论-点赞、取消点赞 * * @param comActDiscussUserDTO * 评论点赞 @@ -205,4 +261,81 @@ return comActDiscussService.putDiscussCommentUser(comActDiscussUserDTO); } /** * 议事投票后台公布结果 * @param publishResultDTO 请求参数 * @return 公布结果 */ @PostMapping("publishResultAdmin") public R publishResultAdmin(@RequestBody ComActDiscussPublishResultDTO publishResultDTO) { return comActDiscussService.publishResultAdmin(publishResultDTO); } /** * 议事投票-评论/回复删除 * @param id 评论/回复id * @return 删除结果 */ @GetMapping("deleteDiscussCommentAdmin") public R deleteDiscussCommentAdmin(@RequestParam("id") Long id) { return comActDiscussService.deleteDiscussCommentAdmin(id); } /** * 查询社区可发布议事投票权限配置 * @param communityId 社区id * @return 社区可发布议事投票权限配置 */ @GetMapping("discussJurisdictionGet") public R discussJurisdictionGet(@RequestParam("communityId") Long communityId,@RequestParam("userId") Long userId) { return comActDiscussService.discussJurisdictionGet(communityId,userId); } /** * 设置当前社区议事投票小程序身份验证参数(1.全部 2.党员 3.志愿者 4.社区工作人员) * @param communityId 社区id * @param value 需要设置的参数值 * @return 设置结果 */ @GetMapping("discussJurisdictionSet") public R discussJurisdictionSet(@RequestParam("communityId") Long communityId,@RequestParam("value") String value) { return comActDiscussService.discussJurisdictionSet(communityId,value); } /** * 议事投票检测状态定时任务 * @return 执行结果 */ @GetMapping("timedTaskDiscussInspectStatus") public R timedTaskDiscussInspectStatus() { return comActDiscussService.timedTaskDiscussInspectStatus(); } /** * 一起议增加浏览量 * @param discussId 一起议主键id */ @PostMapping("discuss/increase-view-num") public void increaseViewNum(@RequestParam("discussId") Long discussId) { comActDiscussService.increaseViewNum(discussId); } /** * 公布/编辑一起议投票结果 * @param comActDiscussDTO * @return 请求结果 */ @PostMapping("discuss/edit-result") public R editDiscussResult(@RequestBody ComActDiscussDTO comActDiscussDTO) { return comActDiscussService.editDiscussResult(comActDiscussDTO); } /** * 定时任务每半小时执行一次将一起议浏览量写入到表中 */ @PostMapping("discuss/write-view-num") public R timedTaskWriteDiscussViewNumToTable() { return comActDiscussService.writeDiscussViewNumToTable(); } } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActDiscussCommentDAO.java
@@ -2,7 +2,11 @@ import java.util.List; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.panzhihua.common.model.dtos.community.PageComActDiscussCommentDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -52,4 +56,12 @@ "ORDER BY\n" + "create_at desc") List<ComActDiscussCommentVO> selectChilds(Long id); /** * 该评论下所有回复内容 * @param page 分页参数 * @param id 评论id * @return 回复列表 */ IPage<ComActDiscussCommentVO> getDiscussCommentList(Page page, @Param("id") Long id); } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActDiscussDAO.java
@@ -1,5 +1,6 @@ package com.panzhihua.service_community.dao; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -43,18 +44,21 @@ @Select("select type,name,phone,image_url,nick_name from sys_user where user_id=#{userId}") LoginUserInfoVO selectUserByUserId(Long userId); @Select("<script> " + "select t.* from (" + "SELECT " + "d.id, " + "d.`discuss_subject`, " + "d.type, " + "COUNT( DISTINCT c.id ) commentNum, " + "u.name userName, " + "u.nick_name userNickName, " + "d.create_at " + "FROM " + "com_act_discuss d " + "JOIN sys_user u ON d.user_id = u.user_id " + "LEFT JOIN com_act_discuss_comment c ON d.id = c.discuss_id " + " where d.community_id=#{pageComActDiscussDTO.communityId}" + "<if test='pageComActDiscussDTO.subject != null and pageComActDiscussDTO.subject.trim() != ""'>" + " and d.`discuss_subject` LIKE concat( #{pageComActDiscussDTO.subject}, '%' ) " + " </if> " + "<if test='pageComActDiscussDTO.begin != null '>" + "AND d.create_at BETWEEN #{pageComActDiscussDTO.begin} " + "AND #{pageComActDiscussDTO.end} " + " </if> " + "GROUP BY " + "d.id" + ")t order by t.create_at desc " + "</script>") // @Select("<script> " + "select t.* from (" + "SELECT " + "d.id, " + "d.`discuss_subject`, " + "d.type, " // + "COUNT( DISTINCT c.id ) commentNum, " + "u.name userName, " + "u.nick_name userNickName, " + "d.create_at " // + "FROM " + "com_act_discuss d " + "JOIN sys_user u ON d.user_id = u.user_id " // + "LEFT JOIN com_act_discuss_comment c ON d.id = c.discuss_id " // + " where d.community_id=#{pageComActDiscussDTO.communityId}" // + "<if test='pageComActDiscussDTO.subject != null and pageComActDiscussDTO.subject.trim() != ""'>" // + " and d.`discuss_subject` LIKE concat( #{pageComActDiscussDTO.subject}, '%' ) " + " </if> " // + "<if test='pageComActDiscussDTO.begin != null '>" + "AND d.create_at BETWEEN #{pageComActDiscussDTO.begin} " // + "AND #{pageComActDiscussDTO.end} " + " </if> " + "GROUP BY " + "d.id" + ")t order by t.create_at desc " // + "</script>") IPage<ComActDiscussVO> pageDiscuss(Page page, @Param("pageComActDiscussDTO") PageComActDiscussDTO pageComActDiscussDTO); IPage<ComActDiscussVO> pageDiscussAdmin(Page page, @Param("pageComActDiscussDTO") PageComActDiscussDTO pageComActDiscussDTO); @Select("<script> " + "select * from (" + "SELECT " + "u.`name` userName, " + "u.nick_name userNickName, " + "u.phone, " + "c.`comment`, " + "c.`parent_id`, " + "COUNT(DISTINCT cu.id ) num, " + "c.create_at, " @@ -71,44 +75,69 @@ IPage<ComActDiscussCommentVO> pageDiscussComment(Page page, @Param("pageComActDiscussCommentDTO") PageComActDiscussCommentDTO pageComActDiscussCommentDTO); @Select("<script> " + "select t.* from (" + "SELECT " + "d.id, " + "d.vote_title, " + "if(d.address is null or d.address='null',a.name,d.address )address, " + "d.photo_pah, " + "d.`discuss_subject`, " + "d.type, " + "u.type as userType, " + "COUNT( DISTINCT c.id ) commentNum, " + "COUNT( DISTINCT du.id ) signNum, " + "if(u.type=1,u.name,a.name) userName, " + "if(u.type=1,u.nick_name,a.name) userNickName, " + "<if test='pageComActDiscussDTO.loginUserId != null '>" + "if(du.id is not null,1,0) haveSign, " + "if(ou.id is not null,1,0) haveVote, " + " </if> " + "u.image_url, " + "d.create_at " + "FROM " + "com_act_discuss d " + "JOIN sys_user u ON d.user_id = u.user_id " + "JOIN com_act a ON d.community_id = a.community_id " + "LEFT JOIN com_act_discuss_comment c ON d.id = c.discuss_id " + "LEFT JOIN com_act_discuss_option do ON d.id = do.discuss_id " + "LEFT JOIN com_act_discuss_user du ON d.id = du.discuss_id " + "<if test='pageComActDiscussDTO.loginUserId != null '>" + "LEFT JOIN com_act_discuss_option_user ou on do.id=ou.discuss_option_id and ou.user_id=#{pageComActDiscussDTO.loginUserId} " + " </if> " + " where d.community_id=#{pageComActDiscussDTO.communityId}" + "<if test='pageComActDiscussDTO.subject != null and pageComActDiscussDTO.subject.trim() != ""'>" + " and d.`discuss_subject` LIKE concat( #{pageComActDiscussDTO.subject}, '%' ) " + " </if> " + "<if test='pageComActDiscussDTO.userId != null and pageComActDiscussDTO.userId !=0 '>" + " and d.`user_id` = #{pageComActDiscussDTO.userId} " + " </if> " + "<if test='pageComActDiscussDTO.begin != null '>" + "AND d.create_at BETWEEN #{pageComActDiscussDTO.begin} " + "AND #{pageComActDiscussDTO.end} " + " </if> " + "GROUP BY " + "d.id" + ")t order by t.create_at desc " + "</script>") /** * 议事投票-评论-后台分页查询 * * @param pageComActDiscussCommentDTO * 分页查询参数 * @return ComActDiscussCommentVO */ IPage<ComActDiscussCommentVO> pageDiscussCommentAdmin(Page page, @Param("pageComActDiscussCommentDTO") PageComActDiscussCommentDTO pageComActDiscussCommentDTO); /** * 默认查询评论下两条回复信息 * @param commentId 评论id * @return 回复列表 */ List<ComActDiscussCommentVO> getDiscussCommentReplyList(@Param("commentId") Long commentId); // @Select("<script> " + "select t.* from (" + "SELECT " + "d.id, " + "d.vote_title, " // + "if(d.address is null or d.address='null',a.name,d.address )address, " + "d.photo_pah, " // + "d.`discuss_subject`, " + "d.type, " + "d.end_time, " + "d.status, " + "d.views_num, " + "d.join_num, " // + "d.fabulous_num as signNum, " + "d.comment_num as commentNum, " + "d.release_at, " + "u.type as userType, " // + "if(u.type=1,u.name,a.name) userName, " // + "if(u.type=1,u.nick_name,a.name) userNickName, " + "<if test='pageComActDiscussDTO.loginUserId != null '>" // + "if(du.id is not null,1,0) haveSign, " + "if(ou.id is not null,1,0) haveVote, " + " </if> " + "u.image_url, " // + "d.create_at " + "FROM " + "com_act_discuss d " + "JOIN sys_user u ON d.user_id = u.user_id " // + "JOIN com_act a ON d.community_id = a.community_id " // + "LEFT JOIN com_act_discuss_option do ON d.id = do.discuss_id " // + "LEFT JOIN com_act_discuss_user du ON d.id = du.discuss_id " // + "<if test='pageComActDiscussDTO.loginUserId != null '>" // + "LEFT JOIN com_act_discuss_option_user ou on do.id=ou.discuss_option_id and ou.user_id=#{pageComActDiscussDTO.loginUserId} " // + " </if> " + " where d.community_id=#{pageComActDiscussDTO.communityId}" + " and d.is_del = 2" // + "<if test='pageComActDiscussDTO.type != null '>" // + " and d.`type` = #{pageComActDiscussDTO.type} " + " </if> " // + "<if test='pageComActDiscussDTO.subject != null and pageComActDiscussDTO.subject.trim() != ""'>" // + " and d.`discuss_subject` LIKE concat( #{pageComActDiscussDTO.subject}, '%' ) " + " </if> " // + "<if test='pageComActDiscussDTO.userId != null and pageComActDiscussDTO.userId !=0 '>" // + " and d.`user_id` = #{pageComActDiscussDTO.userId} " + " </if> " // + "<if test='pageComActDiscussDTO.begin != null '>" + "AND d.create_at BETWEEN #{pageComActDiscussDTO.begin} " // + "AND #{pageComActDiscussDTO.end} " + " </if> " // + "<if test='pageComActDiscussDTO.displayStatus != null and pageComActDiscussDTO.displayStatus == 1'>" // + " and d.`end_time` > now() " + " </if> " // + "<if test='pageComActDiscussDTO.displayStatus != null and pageComActDiscussDTO.displayStatus == 2'>" // + " and d.`end_time` < now() " + " </if> " // + "GROUP BY " + "d.id" + ")t order by t.create_at desc " // + "</script>") IPage<ComActDiscussVO> pageDiscussApplets(Page page, @Param("pageComActDiscussDTO") PageComActDiscussDTO pageComActDiscussDTO); @Select("<script> " + "select * from (" + "SELECT " + "u.`name` userName, " + "IFNULL(u.`nick_name`,'社区管理员') as userNickName, " + "u.`image_url`, " + "u.phone, " + "u.type as userType, " + "c.`comment`, " + "c.`parent_id`, " + "c.`is_author`, " + "c.`is_topping`, " + "COUNT( cu.id ) num, " + "c.create_at, " + "c.id " + "FROM " + "com_act_discuss_comment c " + "JOIN sys_user u ON c.user_id = u.user_id " + "JOIN com_act_discuss d ON c.discuss_id = d.id " + "<if test='pageComActDiscussCommentDTO.name != null and pageComActDiscussCommentDTO.name.trim() != ""'>" + "AND u.`name` LIKE concat( #{pageComActDiscussCommentDTO.name}, '%' ) " + " </if> " + "<if test='pageComActDiscussCommentDTO.account != null and pageComActDiscussCommentDTO.account.trim() != ""'>" + "AND u.phone LIKE concat( #{pageComActDiscussCommentDTO.account}, '%' ) " + " </if> " + "LEFT JOIN com_act_discuss_comment_user cu ON c.id = cu.disscuss_comment_id " + " where c.discuss_id=#{pageComActDiscussCommentDTO.id} and parent_id=0 " + "<if test='pageComActDiscussCommentDTO.comment != null and pageComActDiscussCommentDTO.comment.trim() != ""'>" + " and c.`comment` LIKE concat( '%', #{pageComActDiscussCommentDTO.comment" + "}, '%' ) " + " </if> " + "GROUP BY " + "c.id " + ")t order by t.is_topping desc , t.create_at desc" + "</script>") // @Select("<script> " + "select * from (" + "SELECT " + "u.`name` userName, " + "IFNULL(u.`nick_name`,'社区管理员') as userNickName, " // + "u.`image_url`, " + "u.phone, " + "u.type as userType, " + "c.`comment`, " + "c.`parent_id`, " // + "c.`is_author`, " + "c.`is_topping`, " + "COUNT( cu.id ) num, " + "c.create_at, " + "c.id " + "FROM " // + "com_act_discuss_comment c " + "JOIN sys_user u ON c.user_id = u.user_id " // + "JOIN com_act_discuss d ON c.discuss_id = d.id " // + "<if test='pageComActDiscussCommentDTO.name != null and pageComActDiscussCommentDTO.name.trim() != ""'>" // + "AND u.`name` LIKE concat( #{pageComActDiscussCommentDTO.name}, '%' ) " + " </if> " // + "<if test='pageComActDiscussCommentDTO.account != null and pageComActDiscussCommentDTO.account.trim() != ""'>" // + "AND u.phone LIKE concat( #{pageComActDiscussCommentDTO.account}, '%' ) " + " </if> " // + "LEFT JOIN com_act_discuss_comment_user cu ON c.id = cu.disscuss_comment_id " // + " where c.discuss_id=#{pageComActDiscussCommentDTO.id} and parent_id=0 and c.is_del = 2" // + "<if test='pageComActDiscussCommentDTO.comment != null and pageComActDiscussCommentDTO.comment.trim() != ""'>" // + " and c.`comment` LIKE concat( '%', #{pageComActDiscussCommentDTO.comment" + "}, '%' ) " + " </if> " // + "GROUP BY " + "c.id " + ")t order by t.is_topping desc , t.create_at desc" + "</script>") IPage<ComActDiscussCommentVO> pageDiscussCommentApplets(Page page, @Param("pageComActDiscussCommentDTO") PageComActDiscussCommentDTO pageComActDiscussCommentDTO); @@ -155,4 +184,39 @@ + ",( SELECT count( id ) FROM com_act_discuss_option_user WHERE discuss_option_id = c.id ) AS num " + " FROM " + " com_act_discuss_option AS c " + " WHERE c.discuss_id = #{discussId}" + " ORDER BY " + " num DESC") List<ComActDiscussOptionVO> getScreenDiscussOptionList(@Param("discussId") Long discussId); /** * 添加议事投票评论数 * @param discussId 议事投票 * @param num 添加数量 */ void addCommentCount(@Param("discussId") Long discussId,@Param("num") Integer num); /** * 更新一起议主题状态 * @param discussId * @param status */ void updateStatusById(@Param("discussId") Long discussId, @Param("status") int status); /** * 增加评论总数和参与讨论总数 * @param discussId 一起议主键id * @param isFirstComment 是否首次参与 */ void incrCommentAndJoinNumById(@Param("discussId") Long discussId, @Param("isFirstComment") boolean isFirstComment); /** * 一起议点赞/取消点赞 增加/减少点赞总数 * @param discussId 一起议主键id * @param isIncr 是否是新增 */ void incrOrDecrFabulousNumByType(@Param("discussId") Long discussId, @Param("isIncr") Boolean isIncr); /** * 批量更新浏览量 * @param needDealMap id-viewNum参数合集 * @return */ int batchUpdateViewNum(@Param("needDealMap") HashMap<Long, Integer> needDealMap); } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActDiscussOptionDAO.java
@@ -1,9 +1,13 @@ package com.panzhihua.service_community.dao; import com.panzhihua.common.model.vos.community.ComActDiscussOptionVO; import org.apache.ibatis.annotations.Mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.panzhihua.service_community.model.dos.ComActDiscussOptionDO; import org.apache.ibatis.annotations.Param; import java.util.List; /** * @program: springcloud_k8s_panzhihuazhihuishequ @@ -23,4 +27,6 @@ // " </if> " + // " </where>" + // "</script>") List<ComActDiscussOptionVO> getDiscussOptionList(@Param("discussId") Long discussId); } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComActDiscussOptionUserDAO.java
@@ -1,11 +1,14 @@ package com.panzhihua.service_community.dao; import com.panzhihua.common.model.vos.community.ComActDiscussOptionUserVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.panzhihua.service_community.model.dos.ComActDiscussOptionUserDO; import java.util.List; /** * @program: springcloud_k8s_panzhihuazhihuishequ @@ -32,4 +35,26 @@ @Select("select count(id) from com_act_discuss_option_user where discuss_option_id = #{discussOptionId} and user_id = #{userId}") int selectHaveVotes(@Param("discussOptionId") Long discussOptionId, @Param("userId") Long userId); /** * 查询用户当天当前投票栏目下已投次数 * @param discussId 一起议主键id * @param userId 用户id * @return 总数 */ int selectVotedVotesInToday(@Param("discussId") Long discussId, @Param("userId") Long userId); /** * 查询当前投票主题下的记录 最多6条用于展示 * @param discussId 一起议主键id * @return */ List<ComActDiscussOptionUserVO> selectVotedRecords(@Param("discussId") Long discussId); /** * 查询当前投票主题参与人数 * @param discussId 一起议主键id * @return */ int selectVotedPersonNum(@Param("discussId") Long discussId); } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActDiscussCommentDO.java
@@ -59,4 +59,22 @@ * 用户主键 */ private Long userId; /** * 回复量 */ private Integer replyNum; /** * 是否删除(1.是 2.否) */ private Integer isDel; /** * 是否删除枚举(1.是 2.否) */ public interface isDelete{ int yes = 1; int no = 2; } } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActDiscussDO.java
@@ -1,6 +1,7 @@ package com.panzhihua.service_community.model.dos; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; import com.baomidou.mybatisplus.annotation.*; @@ -9,7 +10,7 @@ /** * @program: springcloud_k8s_panzhihuazhihuishequ * @description: 一起议 * @description: 议事投票 * @author: huang.hongfa weixin hhf9596 qq 959656820 * @create: 2021-01-22 14:48 **/ @@ -30,7 +31,7 @@ private String discussSubject; /** * 类型 1 图文 2 投票 * 类型 1 议事 2 投票 */ private Integer type; @@ -70,4 +71,116 @@ */ private String voteTitle; /** * 是否可重复投票(1.是 2.否) */ private Integer isRepeat; /** * 每人票数 */ private Integer count; /** * 单张图片宽度 */ private BigDecimal imgWidth; /** * 单张图片高度 */ private Integer imgHeight; /** * 开始时间 */ private Date startTime; /** * 结束时间 */ private Date endTime; /** * 评论数 */ private Integer commentNum; /** * 点赞数 */ private Integer fabulousNum; /** * 浏览量 */ private Integer viewsNum; /** * 参与人数 */ private Integer joinNum; /** * 状态(1.未开始 2.进行中 3.待公布 4.已公布 5.已发布) */ private Integer status; /** * 是否已删除(1.是 2.否) */ private Integer isDel; /** * 公布结果 */ private String publishResult; /** * 公布时间 */ private Date publishAt; /** * 发布时间 */ private Date releaseAt; /** * 修改时间 */ private Date updateAt; /** * 公布人id */ private Long publishBy; /** * 类型 1 议事 2 投票 */ public interface type{ int ys = 1; int tp = 2; } /** * 是否枚举(1.是 2.否) */ public interface isOk{ int yes = 1; int no = 2; } /** * 状态(1.未开始 2.进行中 3.待公布 4.已公布 5.已发布) */ public interface status{ int wks = 1; int jxz = 2; int dgb = 3; int ygb = 4; int yfb = 5; } } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/model/dos/ComActDiscussOptionUserDO.java
@@ -37,4 +37,9 @@ * 投票时间 */ private Date createAt; /** * 一起议id */ private Long discussId; } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/ComActDiscussService.java
@@ -2,17 +2,19 @@ import com.panzhihua.common.model.dtos.community.*; import com.panzhihua.common.model.dtos.community.bigscreen.work.ScreenDiscussListDTO; import com.panzhihua.common.model.dtos.community.discuss.ComActDiscussDetailDTO; import com.panzhihua.common.model.dtos.community.discuss.ComActDiscussPublishResultDTO; import com.panzhihua.common.model.vos.R; /** * @program: springcloud_k8s_panzhihuazhihuishequ * @description: 一起议 * @description: 议事投票 * @author: huang.hongfa weixin hhf9596 qq 959656820 * @create: 2021-01-22 14:50 **/ public interface ComActDiscussService { /** * 一起议-新增 * 议事投票-新增 * * @param comActDiscussDTO * 新增参数 @@ -21,16 +23,23 @@ R addDiscuss(ComActDiscussDTO comActDiscussDTO); /** * 一起议-详情 * * @param id * 主键 * @return ComActDiscussVO * 议事投票-编辑 * @param comActDiscussDTO 请求参数 * @return 编辑结果 */ R detailDiscuss(Long id); R editDiscuss(ComActDiscussDTO comActDiscussDTO); /** * 一起议-删除 * 议事投票-详情 * * @param discussDetailDTO * 请求参数 * @return ComActDiscussVO */ R detailDiscuss(ComActDiscussDetailDTO discussDetailDTO); /** * 议事投票-删除 * * @param id * 主键 @@ -39,7 +48,7 @@ R deleteDiscuss(Long id); /** * 一起议-回复 * 议事投票-回复 * * @param comActDiscussCommentDTO * 评论内容 @@ -48,7 +57,7 @@ R addDiscussComment(ComActDiscussCommentDTO comActDiscussCommentDTO); /** * 一起议-分页查询 * 议事投票-分页查询 * * @param pageComActDiscussDTO * 查询参数 @@ -57,7 +66,14 @@ R pageDiscuss(PageComActDiscussDTO pageComActDiscussDTO); /** * 一起议-评论-查看 * 议事投票-后台分页查询 * @param pageComActDiscussDTO 请求参数 * @return 议事投票列表 */ R pageDiscussAdmin(PageComActDiscussDTO pageComActDiscussDTO); /** * 议事投票-评论-查看 * * @param id * 主键 @@ -66,7 +82,14 @@ R detailDiscusscomment(Long id); /** * 一起议-评论-置顶 * 议事投票评论详情 * @param pageComActDiscussCommentDTO 请求参数 * @return 议事投票详情 */ R detailDiscussCommentAdmin(PageComActDiscussCommentDTO pageComActDiscussCommentDTO); /** * 议事投票-评论-置顶 * * @param id * 主键 @@ -75,7 +98,7 @@ R putDiscussCommentTop(Long id); /** * 一起议-评论-回复 * 议事投票-评论-回复 * * @param comActDiscussCommentDTO * 回复内容 @@ -84,7 +107,7 @@ R addDiscussCommentBack(ComActDiscussCommentDTO comActDiscussCommentDTO); /** * 一起议-评论-分页查询 * 议事投票-评论-分页查询 * * @param pageComActDiscussCommentDTO * 分页查询参数 @@ -93,7 +116,16 @@ R pageDiscussComment(PageComActDiscussCommentDTO pageComActDiscussCommentDTO); /** * 一起议-分页查询 小程序 * 议事投票-评论-后台分页查询 * * @param pageComActDiscussCommentDTO * 分页查询参数 * @return ComActDiscussCommentVO */ R pageDiscussCommentAdmin(PageComActDiscussCommentDTO pageComActDiscussCommentDTO); /** * 议事投票-分页查询 小程序 * * @param pageComActDiscussDTO * 查询参数 @@ -102,7 +134,7 @@ R pageDiscussApplets(PageComActDiscussDTO pageComActDiscussDTO); /** * 一起议-点赞、取消点赞 * 议事投票-点赞、取消点赞 * * @param comActDiscussUserDTO * 操作类型 @@ -111,7 +143,7 @@ R putDiscussUser(ComActDiscussUserDTO comActDiscussUserDTO); /** * 一起议-评论-分页查询 小程序 * 议事投票-评论-分页查询 小程序 * * @param pageComActDiscussCommentDTO * 分页参数 @@ -120,7 +152,7 @@ R pageDiscussCommentApplets(PageComActDiscussCommentDTO pageComActDiscussCommentDTO); /** * 一起议-详情 小程序 * 议事投票-详情 小程序 * * @param id * 主键 @@ -131,7 +163,7 @@ R detailDiscussApplets(Long id, Long userId); /** * 一起议-投票 * 议事投票-投票 * * @param comActDiscussOptionUserDTO * 投票信息 @@ -140,7 +172,7 @@ R addDiscussOptionUser(ComActDiscussOptionUserDTO comActDiscussOptionUserDTO); /** * 一起议-评论-点赞、取消点赞 * 议事投票-评论-点赞、取消点赞 * * @param comActDiscussUserDTO * 评论点赞 @@ -149,11 +181,72 @@ R putDiscussCommentUser(ComActDiscussCommentUserDTO comActDiscussUserDTO); /** * 工作大屏-一起议列表 * 工作大屏-议事投票列表 * * @param discussListDTO * 请求参数 * @return 一起议列表 * @return 议事投票列表 */ R getScreenDiscussList(ScreenDiscussListDTO discussListDTO); /** * 议事投票后台公布结果 * @param publishResultDTO 请求参数 * @return 公布结果 */ R publishResultAdmin(ComActDiscussPublishResultDTO publishResultDTO); /** * 议事投票-评论/回复删除 * @param id 评论/回复id * @return 删除结果 */ R deleteDiscussCommentAdmin(Long id); /** * 分页查询评论下回复列表 * @param discussDetailDTO 请求参数 * @return 回复列表 */ R discussCommentReplyAdmin(ComActDiscussDetailDTO discussDetailDTO); /** * 查询社区可发布议事投票权限配置 * @param communityId 社区id * @return 社区可发布议事投票权限配置 */ R discussJurisdictionGet(Long communityId,Long userId); /** * 设置当前社区议事投票小程序身份验证参数(1.全部 2.党员 3.志愿者 4.社区工作人员) * @param communityId 社区id * @param value 需要设置的参数值 * @return 设置结果 */ R discussJurisdictionSet(Long communityId,String value); /** * 议事投票检测状态定时任务 * @return 执行结果 */ R timedTaskDiscussInspectStatus(); /** * 一起议增加浏览量 * @param discussId */ void increaseViewNum(Long discussId); /** * 将redis中前一天浏览量写入表中 * @return 执行结果 */ R writeDiscussViewNumToTable(); /** * 公布/编辑一起议投票结果 * @param comActDiscussDTO * @return */ R editDiscussResult(ComActDiscussDTO comActDiscussDTO); } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActDiscussServiceImpl.java
@@ -1,44 +1,97 @@ package com.panzhihua.service_community.service.impl; import static java.util.Objects.isNull; import static java.util.Objects.nonNull; import static org.apache.commons.lang3.StringUtils.isBlank; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Set; import java.util.stream.Collectors; import javax.annotation.Resource; import org.springframework.beans.BeanUtils; import org.springframework.data.redis.connection.StringRedisConnection; import org.springframework.data.redis.core.RedisCallback; import org.springframework.data.redis.core.SetOperations; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; import org.springframework.util.StringUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.panzhihua.common.model.dtos.community.*; import com.panzhihua.common.constants.Constants; import com.panzhihua.common.exceptions.ServiceException; import com.panzhihua.common.model.dtos.community.ComActDiscussCommentDTO; import com.panzhihua.common.model.dtos.community.ComActDiscussCommentUserDTO; import com.panzhihua.common.model.dtos.community.ComActDiscussDTO; import com.panzhihua.common.model.dtos.community.ComActDiscussOptionDTO; import com.panzhihua.common.model.dtos.community.ComActDiscussOptionUserDTO; import com.panzhihua.common.model.dtos.community.ComActDiscussUserDTO; import com.panzhihua.common.model.dtos.community.PageComActDiscussCommentDTO; import com.panzhihua.common.model.dtos.community.PageComActDiscussDTO; import com.panzhihua.common.model.dtos.community.bigscreen.work.ScreenDiscussListDTO; import com.panzhihua.common.model.dtos.community.discuss.ComActDiscussDetailDTO; import com.panzhihua.common.model.dtos.community.discuss.ComActDiscussPublishResultDTO; import com.panzhihua.common.model.vos.LoginUserInfoVO; import com.panzhihua.common.model.vos.R; import com.panzhihua.common.model.vos.community.ComActDiscussCommentVO; import com.panzhihua.common.model.vos.community.ComActDiscussOptionUserVO; import com.panzhihua.common.model.vos.community.ComActDiscussOptionVO; import com.panzhihua.common.model.vos.community.ComActDiscussVO; import com.panzhihua.common.model.vos.community.ComActVO; import com.panzhihua.common.model.vos.community.SysConfVO; import com.panzhihua.common.model.vos.community.screen.work.DiscussListVO; import com.panzhihua.service_community.dao.*; import com.panzhihua.service_community.model.dos.*; import com.panzhihua.common.service.user.UserService; import com.panzhihua.common.utlis.DateUtils; import com.panzhihua.service_community.dao.ComActDiscussCommentDAO; import com.panzhihua.service_community.dao.ComActDiscussCommentUserDAO; import com.panzhihua.service_community.dao.ComActDiscussDAO; import com.panzhihua.service_community.dao.ComActDiscussOptionDAO; import com.panzhihua.service_community.dao.ComActDiscussOptionUserDAO; import com.panzhihua.service_community.dao.ComActDiscussUserDAO; import com.panzhihua.service_community.dao.SysConfMapper; import com.panzhihua.service_community.model.dos.ComActDiscussCommentDO; import com.panzhihua.service_community.model.dos.ComActDiscussCommentUserDO; import com.panzhihua.service_community.model.dos.ComActDiscussDO; import com.panzhihua.service_community.model.dos.ComActDiscussOptionDO; import com.panzhihua.service_community.model.dos.ComActDiscussOptionUserDO; import com.panzhihua.service_community.model.dos.ComActDiscussUserDO; import com.panzhihua.service_community.model.dos.SysConfDO; import com.panzhihua.service_community.service.ComActDiscussOptionService; import com.panzhihua.service_community.service.ComActDiscussService; import com.panzhihua.service_community.service.SysConfService; import lombok.extern.slf4j.Slf4j; /** * @program: springcloud_k8s_panzhihuazhihuishequ * @description: 一起议 * @description: 议事投票 * @author: huang.hongfa weixin hhf9596 qq 959656820 * @create: 2021-01-22 14:51 **/ @Service @Slf4j public class ComActDiscussServiceImpl implements ComActDiscussService { private static final String DISCUSS_VIEW_NUM_PREFIX = "DISCUSS_VIEW_NUM"; private static final String INCR_VIEW_DISCUSS_IDS_KEY = "INCR_VIEW_DISCUSS_IDS"; private static final long DISCUSS_EXPIRE_TIME = 2678400L; @Resource private ComActDiscussCommentDAO comActDiscussCommentDAO; @Resource @@ -53,33 +106,56 @@ private ComActDiscussCommentUserDAO comActDiscussCommentUserDAO; @Resource private ComActDiscussOptionService comActDiscussOptionService; @Resource private SysConfMapper sysConfDao; @Resource private SysConfService sysConfService; @Resource private UserService userService; @Resource private StringRedisTemplate stringRedisTemplate; /** * 一起议-新增 * 议事投票-新增 * * @param comActDiscussDTO * 新增参数 * @param comActDiscussDTO 新增参数 * @return 新增结果 */ @Override @Transactional(rollbackFor = Exception.class) public R addDiscuss(ComActDiscussDTO comActDiscussDTO) { if (!checkCurrentUserDiscussIdentity(comActDiscussDTO)) { return R.fail("权限验证失败,请确认是否有发布权限"); } ComActDiscussDO comActDiscussDO = new ComActDiscussDO(); BeanUtils.copyProperties(comActDiscussDTO, comActDiscussDO); ComActVO comActVO = comActDiscussDAO.selectCommunity(comActDiscussDTO.getCommunityId()); Integer type = comActDiscussDTO.getType(); Date nowDate = new Date(); if (type.equals(ComActDiscussDO.type.tp)) {//判断是投票,需要转义时间 Date startTime = DateUtils.stringToDate(comActDiscussDTO.getStartTime(), DateUtils.ymdhms_format); Date endTime = DateUtils.stringToDate(comActDiscussDTO.getEndTime(), DateUtils.ymdhms_format); comActDiscussDO.setStartTime(startTime); comActDiscussDO.setEndTime(endTime); comActDiscussDO.setStatus(ComActDiscussDO.status.wks); //根据时间判断状态是否开始 if (startTime != null && startTime.getTime() <= nowDate.getTime()) { comActDiscussDO.setStatus(ComActDiscussDO.status.jxz); comActDiscussDO.setReleaseAt(nowDate); } } else { comActDiscussDO.setStatus(ComActDiscussDO.status.yfb); } String address = comActDiscussDO.getAddress(); if (ObjectUtils.isEmpty(address)) { //查询社区地址 ComActVO comActVO = comActDiscussDAO.selectCommunity(comActDiscussDTO.getCommunityId()); comActDiscussDO.setAddress(comActVO.getAddress()); } int insert = comActDiscussDAO.insert(comActDiscussDO); if (insert > 0) { ComActDiscussDO comActDiscussDO1 = comActDiscussDAO.selectOne(new QueryWrapper<ComActDiscussDO>().lambda() .eq(ComActDiscussDO::getDiscussSubject, comActDiscussDTO.getDiscussSubject()) .eq(ComActDiscussDO::getUserId, comActDiscussDTO.getUserId()) .last(" order by create_at desc limit 1 ")); Long comActDiscussDO1Id = comActDiscussDO1.getId(); Integer type = comActDiscussDTO.getType(); //如果是投票,需要把投票的选项存储 if (type.equals(2)) { Long comActDiscussDO1Id = comActDiscussDO.getId(); List<ComActDiscussOptionDTO> discussOptions = comActDiscussDTO.getDiscussOptions(); List<ComActDiscussOptionDO> comActDiscussOptionDOS = new ArrayList<>(); discussOptions.forEach(s -> { @@ -97,72 +173,169 @@ } /** * 一起议-详情 * * @param id * 主键 * @return ComActDiscussVO * 小程序用户验证是否拥有发布权限 * @param comActDiscussDTO * @return */ @Override public R detailDiscuss(Long id) { ComActDiscussDO comActDiscussDO = comActDiscussDAO.selectById(id); if (ObjectUtils.isEmpty(comActDiscussDO)) { return R.fail("一起议不存在"); private boolean checkCurrentUserDiscussIdentity(ComActDiscussDTO comActDiscussDTO) { //小程序用户验证是否拥有发布权限 boolean checkResult = true; Boolean isApplets = comActDiscussDTO.getIsApplets(); if (nonNull(isApplets) && isApplets) { String discussIdentityPrefix = "DISCUSS_IDENTITY_"; Long communityId = comActDiscussDTO.getCommunityId(); R sysConfValue = sysConfService.getSysConfValue(discussIdentityPrefix + communityId, communityId); String discussIdentityConfig = (String) sysConfValue.getData(); if (isBlank(discussIdentityConfig)) { checkResult = false; } List<String> currentUserRoles = new ArrayList<>(); List<String> sysAllowedRoles = Arrays.asList(discussIdentityConfig.split(",")); LoginUserInfoVO loginUserInfo = comActDiscussDTO.getLoginUserInfo(); if (loginUserInfo.getIsPartymember().intValue() == 1) { currentUserRoles.add("2"); } if (loginUserInfo.getIsVolunteer().intValue() == 1) { currentUserRoles.add("3"); } R isTeamResult = userService.checkCurrentUserIsTeam(loginUserInfo.getPhone(), loginUserInfo.getCommunityId()); if (R.isOk(isTeamResult) && (Boolean) isTeamResult.getData()) { currentUserRoles.add("4"); } if (currentUserRoles.isEmpty()) { checkResult = false; } boolean result = sysAllowedRoles.stream().anyMatch(role -> currentUserRoles.contains(role)); if (!result) { checkResult = false; } } ComActDiscussVO comActDiscussVO = new ComActDiscussVO(); BeanUtils.copyProperties(comActDiscussDO, comActDiscussVO); Integer integer = comActDiscussCommentDAO.selectCount( new QueryWrapper<ComActDiscussCommentDO>().lambda().eq(ComActDiscussCommentDO::getDiscussId, id)); comActDiscussVO.setCommentNum(integer); Integer integer1 = comActDiscussUserDAO .selectCount(new QueryWrapper<ComActDiscussUserDO>().lambda().eq(ComActDiscussUserDO::getDiscussId, id)); comActDiscussVO.setSignNum(integer1); Integer type = comActDiscussVO.getType(); if (type.equals(2)) { List<ComActDiscussOptionDO> comActDiscussOptionDOS = comActDiscussOptionDAO.selectList( new QueryWrapper<ComActDiscussOptionDO>().lambda().eq(ComActDiscussOptionDO::getDiscussId, id)); List<ComActDiscussOptionVO> comActDiscussOptionVOS = new ArrayList<>(); comActDiscussOptionDOS.forEach(comActDiscussOptionDO -> { Long discussOptionDOId = comActDiscussOptionDO.getId(); Integer selectCount = comActDiscussOptionUserDAO.selectCount(new QueryWrapper<ComActDiscussOptionUserDO>().lambda() .eq(ComActDiscussOptionUserDO::getDiscussOptionId, discussOptionDOId)); ComActDiscussOptionVO comActDiscussOptionVO = new ComActDiscussOptionVO(); BeanUtils.copyProperties(comActDiscussOptionDO, comActDiscussOptionVO); comActDiscussOptionVO.setNum(selectCount); comActDiscussOptionVOS.add(comActDiscussOptionVO); }); comActDiscussOptionVOS.sort(Comparator.comparing(ComActDiscussOptionVO::getNum).reversed()); comActDiscussVO.setComActDiscussOptionVOS(comActDiscussOptionVOS); } Long userId = comActDiscussDO.getUserId(); LoginUserInfoVO loginUserInfoVO = comActDiscussDAO.selectUserByUserId(userId); comActDiscussVO.setUserName(loginUserInfoVO.getName()); return R.ok(comActDiscussVO); return checkResult; } /** * 一起议-删除 * 议事投票-编辑 * * @param id * 主键 * @return 删除结果 * @param comActDiscussDTO 请求参数 * @return 编辑结果 */ @Override public R deleteDiscuss(Long id) { int delete = comActDiscussDAO.deleteById(id); if (delete > 0) { @Transactional(rollbackFor = Exception.class) public R editDiscuss(ComActDiscussDTO comActDiscussDTO) { Long comActDiscussDO1Id = comActDiscussDTO.getId(); ComActDiscussDO comActDiscussDO = comActDiscussDAO.selectById(comActDiscussDO1Id); if (ObjectUtils.isEmpty(comActDiscussDO)) { return R.fail("议事投票不存在"); } if (!comActDiscussDO.getStatus().equals(ComActDiscussDO.status.wks) && !comActDiscussDO.getStatus().equals(ComActDiscussDO.status.yfb)) { return R.fail("该状态不可修改"); } Integer type = comActDiscussDO.getType(); Integer isRepeat = comActDiscussDO.getIsRepeat(); BeanUtils.copyProperties(comActDiscussDTO, comActDiscussDO); comActDiscussDO.setType(type); comActDiscussDO.setIsRepeat(isRepeat); Date nowDate = new Date(); if (type.equals(ComActDiscussDO.type.tp)) {//判断是投票,需要转义时间 Date startTime = DateUtils.stringToDate(comActDiscussDTO.getStartTime(), DateUtils.ymdhms_format); Date endTime = DateUtils.stringToDate(comActDiscussDTO.getEndTime(), DateUtils.ymdhms_format); comActDiscussDO.setStartTime(startTime); comActDiscussDO.setEndTime(endTime); comActDiscussDO.setStatus(ComActDiscussDO.status.wks); //根据时间判断状态是否开始 if (startTime != null && startTime.getTime() <= nowDate.getTime()) { comActDiscussDO.setStatus(ComActDiscussDO.status.jxz); comActDiscussDO.setReleaseAt(nowDate); } } else { comActDiscussDO.setStatus(ComActDiscussDO.status.yfb); } comActDiscussDO.setUpdateAt(new Date()); int insert = comActDiscussDAO.updateById(comActDiscussDO); if (insert > 0) { //如果是投票,需要把投票的选项存储 if (type.equals(2)) { comActDiscussOptionService.remove(new QueryWrapper<ComActDiscussOptionDO>().lambda() .eq(ComActDiscussOptionDO::getDiscussId, comActDiscussDO1Id)); List<ComActDiscussOptionDO> comActDiscussOptionDOS = new ArrayList<>(); comActDiscussDTO.getDiscussOptions().forEach(s -> { ComActDiscussOptionDO comActDiscussOptionDO = new ComActDiscussOptionDO(); comActDiscussOptionDO.setDiscussId(comActDiscussDO1Id); comActDiscussOptionDO.setOptionContent(s.getOptionContent()); comActDiscussOptionDO.setOptionUrl(s.getOptionUrl()); comActDiscussOptionDOS.add(comActDiscussOptionDO); }); comActDiscussOptionService.saveBatch(comActDiscussOptionDOS); } return R.ok(); } return R.fail(); } /** * 一起议-回复 * 议事投票-详情 * * @param comActDiscussCommentDTO * 评论内容 * @param discussDetailDTO 请求参数 * @return ComActDiscussVO */ @Override public R detailDiscuss(ComActDiscussDetailDTO discussDetailDTO) { Long id = discussDetailDTO.getId(); ComActDiscussDO comActDiscussDO = comActDiscussDAO.selectById(id); if (ObjectUtils.isEmpty(comActDiscussDO)) { return R.fail("议事投票不存在"); } ComActDiscussVO comActDiscussVO = new ComActDiscussVO(); BeanUtils.copyProperties(comActDiscussDO, comActDiscussVO); comActDiscussVO.setSignNum(comActDiscussDO.getFabulousNum()); Integer type = comActDiscussVO.getType(); if (type.equals(ComActDiscussVO.type.tp)) { //查询选项列表 List<ComActDiscussOptionVO> comActDiscussOptionList = comActDiscussOptionDAO.getDiscussOptionList(id); comActDiscussVO.setComActDiscussOptionVOS(comActDiscussOptionList); } Long userId = comActDiscussDO.getUserId(); LoginUserInfoVO loginUserInfoVO = comActDiscussDAO.selectUserByUserId(userId); comActDiscussVO.setUserName(loginUserInfoVO.getName()); comActDiscussVO.setUserNickName(loginUserInfoVO.getNickName()); //分页查询评论列表 PageComActDiscussCommentDTO pageComActDiscussCommentDTO = new PageComActDiscussCommentDTO(); BeanUtils.copyProperties(discussDetailDTO, pageComActDiscussCommentDTO); IPage<ComActDiscussCommentVO> discussComments = comActDiscussDAO.pageDiscussCommentAdmin(new Page<>(pageComActDiscussCommentDTO.getPageNum(), pageComActDiscussCommentDTO.getPageSize()), pageComActDiscussCommentDTO); discussComments.getRecords().forEach(comment -> { if (comment.getReplyNum() > 0) { List<ComActDiscussCommentVO> childList = comActDiscussDAO.getDiscussCommentReplyList(comment.getId()); if (!childList.isEmpty()) { comment.setComActDiscussCommentVOList(childList); } } }); comActDiscussVO.setDiscussCommentList(discussComments.getRecords()); return R.ok(comActDiscussVO); } /** * 议事投票-删除 * * @param id 主键 * @return 删除结果 */ @Override public R deleteDiscuss(Long id) { ComActDiscussDO comActDiscussDO = new ComActDiscussDO(); comActDiscussDO.setId(id); comActDiscussDO.setIsDel(ComActDiscussDO.isOk.yes); if (comActDiscussDAO.updateById(comActDiscussDO) > 0) { return R.ok(); } return R.fail(); } /** * 议事投票-回复 * * @param comActDiscussCommentDTO 评论内容 * @return 回复结果 */ @Override @@ -170,52 +343,62 @@ Long discussId = comActDiscussCommentDTO.getDiscussId(); ComActDiscussDO comActDiscussDO = comActDiscussDAO.selectById(discussId); if (ObjectUtils.isEmpty(comActDiscussDO)) { return R.fail("一起议不存在"); return R.fail("议事投票不存在"); } Long currentUser = comActDiscussCommentDTO.getUserId(); //判断当前用户是否参与过评论 int currentUserCommentCount = comActDiscussCommentDAO.selectCount(new QueryWrapper<ComActDiscussCommentDO>() .lambda().eq(ComActDiscussCommentDO::getDiscussId, discussId).eq(ComActDiscussCommentDO::getUserId, currentUser)); ComActDiscussCommentDO comActDiscussCommentDO = new ComActDiscussCommentDO(); BeanUtils.copyProperties(comActDiscussCommentDTO, comActDiscussCommentDO); Long userId = comActDiscussCommentDTO.getUserId(); Long userId1 = comActDiscussDO.getUserId(); if (userId.equals(userId1)) { Long discussUser = comActDiscussDO.getUserId(); if (currentUser.equals(discussUser)) { comActDiscussCommentDO.setIsAuthor(1); } int insert = comActDiscussCommentDAO.insert(comActDiscussCommentDO); if (insert > 0) { // comActDiscussDAO.addCommentCount(discussId, 1); //评论成功,评论总数+1 //若首次参与评论,参与讨论人数+1 if (currentUserCommentCount > 0) { comActDiscussDAO.incrCommentAndJoinNumById(discussId, false); } else { comActDiscussDAO.incrCommentAndJoinNumById(discussId, true); } return R.ok(); } return R.fail(); } /** * 一起议-分页查询 * 议事投票-分页查询 * * @param pageComActDiscussDTO * 查询参数 * @param pageComActDiscussDTO 查询参数 * @return ComActDiscussVO */ @Override public R pageDiscuss(PageComActDiscussDTO pageComActDiscussDTO) { Page page = new Page<>(); Long pageNum = pageComActDiscussDTO.getPageNum(); Long pageSize = pageComActDiscussDTO.getPageSize(); if (null == pageNum || 0 == pageNum) { pageNum = 1l; } if (null == pageSize || 0 == pageSize) { pageSize = 10l; } page.setSize(pageSize); page.setCurrent(pageNum); IPage<ComActDiscussVO> iPage = comActDiscussDAO.pageDiscuss(page, pageComActDiscussDTO); IPage<ComActDiscussVO> iPage = comActDiscussDAO.pageDiscuss(new Page<>(pageComActDiscussDTO.getPageNum(), pageComActDiscussDTO.getPageSize()), pageComActDiscussDTO); return R.ok(iPage); } /** * 一起议-评论-查看 * 议事投票-后台分页查询 * * @param id * 主键 * @param pageComActDiscussDTO 请求参数 * @return 议事投票列表 */ @Override public R pageDiscussAdmin(PageComActDiscussDTO pageComActDiscussDTO) { return R.ok(comActDiscussDAO.pageDiscussAdmin(new Page<>(pageComActDiscussDTO.getPageNum(), pageComActDiscussDTO.getPageSize()), pageComActDiscussDTO)); } /** * 议事投票-评论-查看 * * @param id 主键 * @return 详情 ComActDiscussCommentVO */ @Override @@ -237,7 +420,7 @@ comActDiscussCommentVO.setParentId(parentId); } Integer count = comActDiscussCommentUserDAO.selectCount(new QueryWrapper<ComActDiscussCommentUserDO>().lambda() .eq(ComActDiscussCommentUserDO::getDisscussCommentId, id)); .eq(ComActDiscussCommentUserDO::getDisscussCommentId, id)); comActDiscussCommentVO.setNum(count); LoginUserInfoVO loginUserInfoVO = comActDiscussDAO.selectUserByUserId(comActDiscussCommentDO.getUserId()); comActDiscussCommentVO.setUserName(loginUserInfoVO.getName()); @@ -246,10 +429,50 @@ } /** * 一起议-评论-置顶 * 议事投票评论详情 * * @param id * 主键 * @param pageComActDiscussCommentDTO 请求参数 * @return 议事投票详情 */ @Override public R detailDiscussCommentAdmin(PageComActDiscussCommentDTO pageComActDiscussCommentDTO) { Long id = pageComActDiscussCommentDTO.getId(); ComActDiscussCommentDO comActDiscussCommentDO = comActDiscussCommentDAO.selectById(id); if (ObjectUtils.isEmpty(comActDiscussCommentDO)) { return R.fail("评论不存在"); } ComActDiscussCommentVO comActDiscussCommentVO = new ComActDiscussCommentVO(); Long parentId = comActDiscussCommentDO.getParentId(); if (parentId.intValue() == 0) { // 一级评论 BeanUtils.copyProperties(comActDiscussCommentDO, comActDiscussCommentVO); } else { ComActDiscussCommentDO comActDiscussCommentDO1 = comActDiscussCommentDAO.selectById(parentId); BeanUtils.copyProperties(comActDiscussCommentDO1, comActDiscussCommentVO); comActDiscussCommentVO.setCommentBack(comActDiscussCommentDO.getComment()); comActDiscussCommentVO.setTimeBack(comActDiscussCommentDO.getCreateAt()); comActDiscussCommentVO.setParentId(parentId); } Integer count = comActDiscussCommentUserDAO.selectCount(new QueryWrapper<ComActDiscussCommentUserDO>().lambda() .eq(ComActDiscussCommentUserDO::getDisscussCommentId, id)); comActDiscussCommentVO.setNum(count); LoginUserInfoVO loginUserInfoVO = comActDiscussDAO.selectUserByUserId(comActDiscussCommentDO.getUserId()); comActDiscussCommentVO.setUserName(loginUserInfoVO.getName()); comActDiscussCommentVO.setPhone(loginUserInfoVO.getPhone()); comActDiscussCommentVO.setImageUrl(loginUserInfoVO.getImageUrl()); //查询该评论下所有回复内容 IPage<ComActDiscussCommentVO> discussCommentList = comActDiscussCommentDAO.getDiscussCommentList(new Page(pageComActDiscussCommentDTO.getPageNum(), pageComActDiscussCommentDTO.getPageSize()), pageComActDiscussCommentDTO.getId()); if (!discussCommentList.getRecords().isEmpty()) { comActDiscussCommentVO.setComActDiscussCommentVOList(discussCommentList.getRecords()); } return R.ok(comActDiscussCommentVO); } /** * 议事投票-评论-置顶 * * @param id 主键 * @return 置顶结果 */ @Override @@ -266,7 +489,7 @@ ComActDiscussCommentDO comActDiscussCommentDO1 = new ComActDiscussCommentDO(); comActDiscussCommentDO1.setIsTopping(0); comActDiscussCommentDAO.update(comActDiscussCommentDO1, new UpdateWrapper<ComActDiscussCommentDO>().lambda().eq(ComActDiscussCommentDO::getDiscussId, discussId)); new UpdateWrapper<ComActDiscussCommentDO>().lambda().eq(ComActDiscussCommentDO::getDiscussId, discussId)); comActDiscussCommentDO1.setIsTopping(1); comActDiscussCommentDO1.setId(id); int update = comActDiscussCommentDAO.updateById(comActDiscussCommentDO1); @@ -277,10 +500,9 @@ } /** * 一起议-评论-回复 * 议事投票-评论-回复 * * @param comActDiscussCommentDTO * 回复内容 * @param comActDiscussCommentDTO 回复内容 * @return 回复结果 */ @Override @@ -293,54 +515,68 @@ Long discussId = comActDiscussCommentDO.getDiscussId(); ComActDiscussDO comActDiscussDO = comActDiscussDAO.selectById(discussId); if (ObjectUtils.isEmpty(comActDiscussDO)) { return R.fail("一起议不存在"); return R.fail("议事投票不存在"); } Long userId = comActDiscussDO.getUserId(); Long userId1 = comActDiscussCommentDTO.getUserId(); Long parentId = comActDiscussCommentDO.getParentId(); if (parentId.intValue() != 0) { return R.fail("二级评论不能回复"); } Long currentUser = comActDiscussCommentDTO.getUserId(); //判断当前用户是否参与过评论/回复 int currentUserCommentCount = comActDiscussCommentDAO.selectCount(new QueryWrapper<ComActDiscussCommentDO>() .lambda().eq(ComActDiscussCommentDO::getDiscussId, discussId).eq(ComActDiscussCommentDO::getUserId, currentUser)); Long discussUser = comActDiscussDO.getUserId(); ComActDiscussCommentDO comActDiscussCommentDO1 = new ComActDiscussCommentDO(); comActDiscussCommentDO1.setDiscussId(discussId); comActDiscussCommentDO1.setComment(comActDiscussCommentDTO.getComment()); comActDiscussCommentDO1.setUserId(comActDiscussCommentDTO.getUserId()); comActDiscussCommentDO1.setParentId(id); if (userId.equals(userId1)) { if (discussUser.equals(currentUser)) { comActDiscussCommentDO1.setIsAuthor(1); } int insert = comActDiscussCommentDAO.insert(comActDiscussCommentDO1); if (insert > 0) { // comActDiscussDAO.addCommentCount(discussId, 1); //回复成功,评论总数+1 //若首次参与评论,参与讨论人数+1 if (currentUserCommentCount > 0) { comActDiscussDAO.incrCommentAndJoinNumById(discussId, false); } else { comActDiscussDAO.incrCommentAndJoinNumById(discussId, true); } return R.ok(); } return R.fail(); } /** * 一起议-评论-分页查询 * 议事投票-评论-分页查询 * * @param pageComActDiscussCommentDTO * 分页查询参数 * @param pageComActDiscussCommentDTO 分页查询参数 * @return ComActDiscussCommentVO */ @Override public R pageDiscussComment(PageComActDiscussCommentDTO pageComActDiscussCommentDTO) { Page page = new Page<>(); Long pageNum = pageComActDiscussCommentDTO.getPageNum(); Long pageSize = pageComActDiscussCommentDTO.getPageSize(); if (null == pageNum || 0 == pageNum) { pageNum = 1l; } if (null == pageSize || 0 == pageSize) { pageSize = 10l; } page.setSize(pageSize); page.setCurrent(pageNum); IPage<ComActDiscussCommentVO> iPage = comActDiscussDAO.pageDiscussComment(page, pageComActDiscussCommentDTO); IPage<ComActDiscussCommentVO> iPage = comActDiscussDAO.pageDiscussComment(new Page<>(pageComActDiscussCommentDTO.getPageNum(), pageComActDiscussCommentDTO.getPageSize()), pageComActDiscussCommentDTO); return R.ok(iPage); } /** * 一起议-分页查询 小程序 * 议事投票-评论-后台分页查询 * * @param pageComActDiscussDTO * 查询参数 * @param pageComActDiscussCommentDTO 分页查询参数 * @return ComActDiscussCommentVO */ @Override public R pageDiscussCommentAdmin(PageComActDiscussCommentDTO pageComActDiscussCommentDTO) { IPage<ComActDiscussCommentVO> iPage = comActDiscussDAO.pageDiscussCommentAdmin(new Page<>(pageComActDiscussCommentDTO.getPageNum(), pageComActDiscussCommentDTO.getPageSize()), pageComActDiscussCommentDTO); return R.ok(iPage); } /** * 议事投票-分页查询 小程序 * * @param pageComActDiscussDTO 查询参数 * @return ComActDiscussVO 分页 */ @Override @@ -365,13 +601,13 @@ Long id = comActDiscussVO.getId(); if (type.equals(2)) { List<ComActDiscussOptionDO> comActDiscussOptionDOS = comActDiscussOptionDAO.selectList( new QueryWrapper<ComActDiscussOptionDO>().lambda().eq(ComActDiscussOptionDO::getDiscussId, id)); new QueryWrapper<ComActDiscussOptionDO>().lambda().eq(ComActDiscussOptionDO::getDiscussId, id)); List<ComActDiscussOptionVO> comActDiscussOptionVOS = new ArrayList<>(); comActDiscussOptionDOS.forEach(comActDiscussOptionDO -> { Long discussOptionDOId = comActDiscussOptionDO.getId(); Integer selectCount = comActDiscussOptionUserDAO.selectCount(new QueryWrapper<ComActDiscussOptionUserDO>() .lambda().eq(ComActDiscussOptionUserDO::getDiscussOptionId, discussOptionDOId)); comActDiscussOptionUserDAO.selectCount(new QueryWrapper<ComActDiscussOptionUserDO>() .lambda().eq(ComActDiscussOptionUserDO::getDiscussOptionId, discussOptionDOId)); ComActDiscussOptionVO comActDiscussOptionVO = new ComActDiscussOptionVO(); BeanUtils.copyProperties(comActDiscussOptionDO, comActDiscussOptionVO); comActDiscussOptionVO.setNum(selectCount); @@ -379,19 +615,27 @@ if (loginUserId != null) { // 判断选项是否已投票 int haveVote = comActDiscussOptionUserDAO.selectHaveVotes(comActDiscussOptionDO.getId(), loginUserId); comActDiscussOptionUserDAO.selectHaveVotes(comActDiscussOptionDO.getId(), loginUserId); comActDiscussOptionVO.setHaveVote(haveVote > 0 ? 1 : 0); } comActDiscussOptionVOS.add(comActDiscussOptionVO); }); comActDiscussOptionVOS.sort(Comparator.comparing(ComActDiscussOptionVO::getNum).reversed()); fillThePercentAndSort(comActDiscussOptionVOS); checkDiscussStatusIsCorrect(comActDiscussVO); comActDiscussVO.setComActDiscussOptionVOS(comActDiscussOptionVOS); //填充投票记录列表 List<ComActDiscussOptionUserVO> comActDiscussOptionUserVOList = comActDiscussOptionUserDAO .selectVotedRecords(comActDiscussVO.getId()); comActDiscussVO.setComActDiscussOptionUserVOList(comActDiscussOptionUserVOList); //填充已参与投票人数 int votedPersonNum = comActDiscussOptionUserDAO.selectVotedPersonNum(comActDiscussVO.getId()); comActDiscussVO.setVotedPersonNum(votedPersonNum); } if (loginUserId != null) { Integer integer = comActDiscussUserDAO.selectCount(new QueryWrapper<ComActDiscussUserDO>().lambda() .eq(ComActDiscussUserDO::getDiscussId, comActDiscussVO.getId()) .eq(ComActDiscussUserDO::getUserId, loginUserId)); .eq(ComActDiscussUserDO::getDiscussId, comActDiscussVO.getId()) .eq(ComActDiscussUserDO::getUserId, loginUserId)); if (integer > 0) { comActDiscussVO.setHaveSign(1); } else { @@ -407,10 +651,23 @@ } /** * 一起议-点赞、取消点赞 * 判断discuss状态是否正确 * @param comActDiscussVO */ private void checkDiscussStatusIsCorrect(ComActDiscussVO comActDiscussVO) { //判断discuss状态是否正确 boolean isIncorrectStatus = comActDiscussVO.getEndTime().before(new Date()) && (comActDiscussVO.getStatus().intValue() == 1 || comActDiscussVO.getStatus().intValue() == 2); if (isIncorrectStatus) { comActDiscussVO.setStatus(3); comActDiscussDAO.updateStatusById(comActDiscussVO.getId(), 3); } } /** * 议事投票-点赞、取消点赞 * * @param comActDiscussUserDTO * 操作类型 * @param comActDiscussUserDTO 操作类型 * @return 操作结果 */ @Override @@ -419,24 +676,26 @@ int num = 0; ComActDiscussUserDO comActDiscussUserDO = new ComActDiscussUserDO(); BeanUtils.copyProperties(comActDiscussUserDTO, comActDiscussUserDO); if (type.intValue() == 1) { boolean isIncr = type.intValue() == 1; if (isIncr) { num = comActDiscussUserDAO.insert(comActDiscussUserDO); } else { num = comActDiscussUserDAO.delete(new QueryWrapper<ComActDiscussUserDO>().lambda() .eq(ComActDiscussUserDO::getUserId, comActDiscussUserDTO.getUserId()) .eq(ComActDiscussUserDO::getDiscussId, comActDiscussUserDTO.getDiscussId())); .eq(ComActDiscussUserDO::getUserId, comActDiscussUserDTO.getUserId()) .eq(ComActDiscussUserDO::getDiscussId, comActDiscussUserDTO.getDiscussId())); } if (num > 0) { //点赞成功 总数+1 || 取消点赞成功 总数-1 comActDiscussDAO.incrOrDecrFabulousNumByType(comActDiscussUserDTO.getDiscussId(), isIncr); return R.ok(); } return R.fail(); } /** * 一起议-评论-分页查询 小程序 * 议事投票-评论-分页查询 小程序 * * @param pageComActDiscussCommentDTO * 分页参数 * @param pageComActDiscussCommentDTO 分页参数 * @return ComActDiscussCommentVO */ @Override @@ -453,7 +712,7 @@ page.setSize(pageSize); page.setCurrent(pageNum); IPage<ComActDiscussCommentVO> iPage = comActDiscussDAO.pageDiscussCommentApplets(page, pageComActDiscussCommentDTO); comActDiscussDAO.pageDiscussCommentApplets(page, pageComActDiscussCommentDTO); List<ComActDiscussCommentVO> records = iPage.getRecords(); if (!ObjectUtils.isEmpty(records)) { records.forEach(comActDiscussCommentVO -> { @@ -465,8 +724,8 @@ comActDiscussCommentVOList.forEach(comActDiscussCommentVO1 -> { Long parentId = comActDiscussCommentVO1.getParentId(); List<ComActDiscussCommentVO> collect = comActDiscussCommentVOS.stream() .filter(comActDiscussCommentVO2 -> comActDiscussCommentVO2.getId().equals(parentId)) .collect(Collectors.toList()); .filter(comActDiscussCommentVO2 -> comActDiscussCommentVO2.getId().equals(parentId)) .collect(Collectors.toList()); if (!ObjectUtils.isEmpty(collect)) { String userName = collect.get(0).getUserName(); String userNickName = collect.get(0).getUserNickName(); @@ -474,8 +733,8 @@ comActDiscussCommentVO1.setUserNickNameBack(userNickName); } List<ComActDiscussCommentVO> collect1 = records.stream() .filter(comActDiscussCommentVO2 -> comActDiscussCommentVO2.getId().equals(parentId)) .collect(Collectors.toList()); .filter(comActDiscussCommentVO2 -> comActDiscussCommentVO2.getId().equals(parentId)) .collect(Collectors.toList()); if (!ObjectUtils.isEmpty(collect1)) { ComActDiscussCommentVO comActDiscussCommentVOFirst = collect1.get(0); String userName = comActDiscussCommentVOFirst.getUserName(); @@ -484,13 +743,13 @@ comActDiscussCommentVO1.setUserNickNameBack(userNickName); } if (pageComActDiscussCommentDTO.getLoginUserId() != null && !pageComActDiscussCommentDTO.getLoginUserId().equals(0L)) { && !pageComActDiscussCommentDTO.getLoginUserId().equals(0L)) { Integer integer = comActDiscussCommentUserDAO .selectCount(new QueryWrapper<ComActDiscussCommentUserDO>().lambda() .eq(ComActDiscussCommentUserDO::getDisscussCommentId, comActDiscussCommentVO1.getId()) .eq(ComActDiscussCommentUserDO::getUserId, pageComActDiscussCommentDTO.getLoginUserId())); .selectCount(new QueryWrapper<ComActDiscussCommentUserDO>().lambda() .eq(ComActDiscussCommentUserDO::getDisscussCommentId, comActDiscussCommentVO1.getId()) .eq(ComActDiscussCommentUserDO::getUserId, pageComActDiscussCommentDTO.getLoginUserId())); if (integer > 0) { comActDiscussCommentVO1.setHaveSign(1); } else { @@ -504,11 +763,11 @@ comActDiscussCommentVO.setComActDiscussCommentVOList(comActDiscussCommentVOList); } if (pageComActDiscussCommentDTO.getLoginUserId() != null && !pageComActDiscussCommentDTO.getLoginUserId().equals(0L)) { && !pageComActDiscussCommentDTO.getLoginUserId().equals(0L)) { Integer integer = comActDiscussCommentUserDAO.selectCount(new QueryWrapper<ComActDiscussCommentUserDO>().lambda() .eq(ComActDiscussCommentUserDO::getDisscussCommentId, comActDiscussCommentVO.getId()) .eq(ComActDiscussCommentUserDO::getUserId, pageComActDiscussCommentDTO.getLoginUserId())); comActDiscussCommentUserDAO.selectCount(new QueryWrapper<ComActDiscussCommentUserDO>().lambda() .eq(ComActDiscussCommentUserDO::getDisscussCommentId, comActDiscussCommentVO.getId()) .eq(ComActDiscussCommentUserDO::getUserId, pageComActDiscussCommentDTO.getLoginUserId())); if (integer > 0) { comActDiscussCommentVO.setHaveSign(1); } else { @@ -526,51 +785,68 @@ } /** * 一起议-详情 小程序 * 议事投票-详情 小程序 * * @param id * 主键 * @param loginUserId * 登录用户主键 * @param id 主键 * @param loginUserId 登录用户主键 * @return ComActDiscussVO */ @Override public R detailDiscussApplets(Long id, Long loginUserId) { ComActDiscussDO comActDiscussDO = comActDiscussDAO.selectById(id); if (ObjectUtils.isEmpty(comActDiscussDO)) { return R.fail("一起议不存在"); return R.fail("议事投票不存在"); } ComActDiscussVO comActDiscussVO = new ComActDiscussVO(); BeanUtils.copyProperties(comActDiscussDO, comActDiscussVO); Integer integer = comActDiscussCommentDAO.selectCount( new QueryWrapper<ComActDiscussCommentDO>().lambda().eq(ComActDiscussCommentDO::getDiscussId, id)); comActDiscussVO.setCommentNum(integer); Integer integer1 = comActDiscussUserDAO .selectCount(new QueryWrapper<ComActDiscussUserDO>().lambda().eq(ComActDiscussUserDO::getDiscussId, id)); comActDiscussVO.setSignNum(integer1); comActDiscussVO.setSignNum(comActDiscussDO.getFabulousNum()); Integer type = comActDiscussVO.getType(); if (type.equals(2)) { List<ComActDiscussOptionDO> comActDiscussOptionDOS = comActDiscussOptionDAO.selectList( new QueryWrapper<ComActDiscussOptionDO>().lambda().eq(ComActDiscussOptionDO::getDiscussId, id)); new QueryWrapper<ComActDiscussOptionDO>().lambda().eq(ComActDiscussOptionDO::getDiscussId, id)); List<ComActDiscussOptionVO> comActDiscussOptionVOS = new ArrayList<>(); ArrayList<Integer> votes = new ArrayList<>(); comActDiscussOptionDOS.forEach(comActDiscussOptionDO -> { Long discussOptionDOId = comActDiscussOptionDO.getId(); Integer selectCount = comActDiscussOptionUserDAO.selectCount(new QueryWrapper<ComActDiscussOptionUserDO>().lambda() .eq(ComActDiscussOptionUserDO::getDiscussOptionId, discussOptionDOId)); comActDiscussOptionUserDAO.selectCount(new QueryWrapper<ComActDiscussOptionUserDO>().lambda() .eq(ComActDiscussOptionUserDO::getDiscussOptionId, discussOptionDOId)); ComActDiscussOptionVO comActDiscussOptionVO = new ComActDiscussOptionVO(); BeanUtils.copyProperties(comActDiscussOptionDO, comActDiscussOptionVO); comActDiscussOptionVO.setNum(selectCount); if (loginUserId != null && !loginUserId.equals(0L)) { // 判断选项是否已投票 int haveVote = comActDiscussOptionUserDAO.selectHaveVotes(comActDiscussOptionDO.getId(), loginUserId); comActDiscussOptionUserDAO.selectHaveVotes(comActDiscussOptionDO.getId(), loginUserId); votes.add(haveVote); comActDiscussOptionVO.setHaveVote(haveVote > 0 ? 1 : 0); } comActDiscussOptionVOS.add(comActDiscussOptionVO); }); comActDiscussOptionVOS.sort(Comparator.comparing(ComActDiscussOptionVO::getNum).reversed()); fillThePercentAndSort(comActDiscussOptionVOS); comActDiscussVO.setComActDiscussOptionVOS(comActDiscussOptionVOS); //填充剩余可投票数 if (loginUserId != null && !loginUserId.equals(0L)) { if (comActDiscussVO.getIsRepeat().intValue() == 1) { //可重复投票 int votedVotesInToday = comActDiscussOptionUserDAO.selectVotedVotesInToday(id, loginUserId); int remainingVotes = comActDiscussVO.getCount().intValue() - votedVotesInToday; comActDiscussVO.setRemainingVotes(remainingVotes >= 0 ? remainingVotes : 0); } else { //不可重复投票 int alreadyVotedVotes = votes.stream().mapToInt(Integer::intValue).sum(); int remainingVotes = comActDiscussVO.getCount().intValue() - alreadyVotedVotes; comActDiscussVO.setRemainingVotes(remainingVotes >= 0 ? remainingVotes : 0); } } checkDiscussStatusIsCorrect(comActDiscussVO); //填充投票记录列表 List<ComActDiscussOptionUserVO> comActDiscussOptionUserVOList = comActDiscussOptionUserDAO .selectVotedRecords(comActDiscussVO.getId()); comActDiscussVO.setComActDiscussOptionUserVOList(comActDiscussOptionUserVOList); //填充已参与投票人数 int votedPersonNum = comActDiscussOptionUserDAO.selectVotedPersonNum(comActDiscussVO.getId()); comActDiscussVO.setVotedPersonNum(votedPersonNum); } Long userId = comActDiscussDO.getUserId(); LoginUserInfoVO loginUserInfoVO = comActDiscussDAO.selectUserByUserId(userId); @@ -601,10 +877,29 @@ } /** * 一起议-投票 * 计算投票占比以及排序 * @param comActDiscussOptionVOS */ private void fillThePercentAndSort(List<ComActDiscussOptionVO> comActDiscussOptionVOS) { //填充总票数 int allSum = comActDiscussOptionVOS.stream().mapToInt(ComActDiscussOptionVO::getNum).sum(); comActDiscussOptionVOS.forEach(option -> { if (allSum == 0) { option.setPercent(new BigDecimal(0)); } else { //占比 BigDecimal percent = BigDecimal.valueOf(option.getNum()).divide(BigDecimal.valueOf(allSum), 2, RoundingMode.HALF_UP) .multiply(BigDecimal.valueOf(100)).setScale(0); option.setPercent(percent); } }); comActDiscussOptionVOS.sort(Comparator.comparing(ComActDiscussOptionVO::getNum).reversed()); } /** * 议事投票-投票 * * @param comActDiscussOptionUserDTO * 投票信息 * @param comActDiscussOptionUserDTO 投票信息 * @return 投票结果 */ @Override @@ -620,15 +915,32 @@ // QueryWrapper<ComActDiscussOptionDO>().lambda().eq(ComActDiscussOptionDO::getDiscussId, discussId)); // List<Long> longList=comActDiscussOptionDOS.stream().map(comActDiscussOptionDO1 -> // comActDiscussOptionDO1.getId()).collect(Collectors.toList()); Integer integer = comActDiscussOptionUserDAO.selectCount( new QueryWrapper<ComActDiscussOptionUserDO>().lambda().eq(ComActDiscussOptionUserDO::getUserId, userId) .eq(ComActDiscussOptionUserDO::getDiscussOptionId, discussOptionId)); if (integer > 0) { return R.fail("不要重复投票"); Long discussId = comActDiscussOptionDO.getDiscussId(); ComActDiscussDO comActDiscussDO = comActDiscussDAO.selectById(comActDiscussOptionDO.getDiscussId()); if (isNull(comActDiscussOptionDO)) { return R.fail("投票主题不存在"); } boolean isRepeat = comActDiscussDO.getIsRepeat().intValue() == 1; int usableVoteVotes = comActDiscussDO.getCount().intValue(); if (isRepeat) { //可重复投票 int votedVotesInToday = comActDiscussOptionUserDAO.selectVotedVotesInToday(discussId, userId); if (usableVoteVotes <= votedVotesInToday) { return R.fail("当天投票次数已用完"); } } else { //不可重复投票 int alreadyVotedVotes = comActDiscussOptionUserDAO.selectCount( new QueryWrapper<ComActDiscussOptionUserDO>().lambda().eq(ComActDiscussOptionUserDO::getUserId, userId) .eq(ComActDiscussOptionUserDO::getDiscussId, discussId)); if (usableVoteVotes <= alreadyVotedVotes) { return R.fail("投票次数已用完"); } } ComActDiscussOptionUserDO comActDiscussOptionUserDO = new ComActDiscussOptionUserDO(); comActDiscussOptionUserDO.setUserId(userId); comActDiscussOptionUserDO.setDiscussOptionId(discussOptionId); comActDiscussOptionUserDO.setDiscussId(discussId); int insert = comActDiscussOptionUserDAO.insert(comActDiscussOptionUserDO); if (insert > 0) { return R.ok(); @@ -637,16 +949,15 @@ } /** * 一起议-评论-点赞、取消点赞 * 议事投票-评论-点赞、取消点赞 * * @param comActDiscussCommentUserDTO * 评论点赞 * @param comActDiscussCommentUserDTO 评论点赞 * @return 点赞结果 */ @Override public R putDiscussCommentUser(ComActDiscussCommentUserDTO comActDiscussCommentUserDTO) { ComActDiscussCommentDO comActDiscussCommentDO = comActDiscussCommentDAO.selectById(comActDiscussCommentUserDTO.getId()); comActDiscussCommentDAO.selectById(comActDiscussCommentUserDTO.getId()); if (ObjectUtils.isEmpty(comActDiscussCommentDO)) { return R.fail("评论不存在"); } @@ -659,8 +970,8 @@ num = comActDiscussCommentUserDAO.insert(comActDiscussCommentUserDO); } else { num = comActDiscussCommentUserDAO.delete(new QueryWrapper<ComActDiscussCommentUserDO>().lambda() .eq(ComActDiscussCommentUserDO::getUserId, comActDiscussCommentUserDTO.getUserId()) .eq(ComActDiscussCommentUserDO::getDisscussCommentId, comActDiscussCommentUserDTO.getId())); .eq(ComActDiscussCommentUserDO::getUserId, comActDiscussCommentUserDTO.getUserId()) .eq(ComActDiscussCommentUserDO::getDisscussCommentId, comActDiscussCommentUserDTO.getId())); } if (num > 0) { return R.ok(); @@ -669,29 +980,28 @@ } /** * 工作大屏-一起议列表 * 工作大屏-议事投票列表 * * @param discussListDTO * 请求参数 * @return 一起议列表 * @param discussListDTO 请求参数 * @return 议事投票列表 */ @Override public R getScreenDiscussList(ScreenDiscussListDTO discussListDTO) { IPage<DiscussListVO> discussListVOIPage = comActDiscussDAO .getScreenDiscussList(new Page(discussListDTO.getPageNum(), discussListDTO.getPageSize()), discussListDTO); .getScreenDiscussList(new Page(discussListDTO.getPageNum(), discussListDTO.getPageSize()), discussListDTO); if (!discussListVOIPage.getRecords().isEmpty()) { discussListVOIPage.getRecords().forEach(discussListVO -> { // 查询评论数量和点赞数量 Integer integer = comActDiscussCommentDAO.selectCount(new QueryWrapper<ComActDiscussCommentDO>() .lambda().eq(ComActDiscussCommentDO::getDiscussId, discussListVO.getId())); .lambda().eq(ComActDiscussCommentDO::getDiscussId, discussListVO.getId())); discussListVO.setCommentCount(integer); Integer integer1 = comActDiscussUserDAO.selectCount(new QueryWrapper<ComActDiscussUserDO>().lambda() .eq(ComActDiscussUserDO::getDiscussId, discussListVO.getId())); .eq(ComActDiscussUserDO::getDiscussId, discussListVO.getId())); discussListVO.setFabulousCount(integer1); if (discussListVO.getType().equals(ScreenDiscussListDTO.type.tp)) {// 投票 List<ComActDiscussOptionVO> discussOptionList = comActDiscussDAO.getScreenDiscussOptionList(discussListVO.getId()); comActDiscussDAO.getScreenDiscussOptionList(discussListVO.getId()); if (!discussOptionList.isEmpty()) { discussListVO.setDiscussOptionList(discussOptionList); } @@ -700,4 +1010,268 @@ } return R.ok(discussListVOIPage); } /** * 议事投票后台公布结果 * * @param publishResultDTO 请求参数 * @return 公布结果 */ @Override public R publishResultAdmin(ComActDiscussPublishResultDTO publishResultDTO) { ComActDiscussDO discussDO = comActDiscussDAO.selectById(publishResultDTO.getId()); if (discussDO == null) { return R.fail("议事投票记录不存在"); } Date nowDate = new Date(); if (publishResultDTO.getType().equals(ComActDiscussPublishResultDTO.type.add)) { if (!discussDO.getStatus().equals(ComActDiscussDO.status.dgb)) { return R.fail("该议事投票不是待公布状态,不可公布结果操作"); } discussDO.setStatus(ComActDiscussDO.status.ygb); } discussDO.setPublishAt(nowDate); discussDO.setPublishResult(publishResultDTO.getResult()); discussDO.setUpdateAt(nowDate); discussDO.setPublishBy(publishResultDTO.getUserId()); if (comActDiscussDAO.updateById(discussDO) > 0) { return R.ok(); } return R.fail(); } /** * 议事投票-评论/回复删除 * * @param id 评论/回复id * @return 删除结果 */ @Override public R deleteDiscussCommentAdmin(Long id) { ComActDiscussCommentDO discussCommentDO = comActDiscussCommentDAO.selectById(id); if (discussCommentDO == null) { return R.fail("未查询到该记录"); } if (discussCommentDO.getIsDel().equals(ComActDiscussCommentDO.isDelete.yes)) { return R.fail("该记录已被删除"); } discussCommentDO.setIsDel(ComActDiscussCommentDO.isDelete.yes); if (comActDiscussCommentDAO.updateById(discussCommentDO) > 0) { ComActDiscussDO discussDO = comActDiscussDAO.selectById(discussCommentDO.getDiscussId()); if (discussDO != null) { if (discussDO.getCommentNum() > 0) { if (discussCommentDO.getParentId().equals(0L)) { Integer count = comActDiscussCommentDAO.selectCount(new QueryWrapper<ComActDiscussCommentDO>().lambda() .eq(ComActDiscussCommentDO::getParentId, id).eq(ComActDiscussCommentDO::getIsDel, ComActDiscussCommentDO.isDelete.no)); if (count != null && count > 0 && discussDO.getCommentNum() > count) { discussDO.setCommentNum(discussDO.getCommentNum() - count); } else { discussDO.setCommentNum(discussDO.getCommentNum() - 1); } comActDiscussDAO.updateById(discussDO); } else { discussDO.setCommentNum(discussDO.getCommentNum() - 1); comActDiscussDAO.updateById(discussDO); } } } return R.ok(); } return R.fail(); } /** * 分页查询评论下回复列表 * * @param discussDetailDTO 请求参数 * @return 回复列表 */ @Override public R discussCommentReplyAdmin(ComActDiscussDetailDTO discussDetailDTO) { return R.ok(comActDiscussCommentDAO.getDiscussCommentList(new Page(discussDetailDTO.getPageNum(), discussDetailDTO.getPageSize()), discussDetailDTO.getId())); } /** * 查询社区可发布议事投票权限配置 * * @param communityId 社区id * @return 社区可发布议事投票权限配置 */ @Override public R discussJurisdictionGet(Long communityId, Long userId) { List<SysConfDO> confDOList = sysConfDao.selectList(new LambdaQueryWrapper<SysConfDO>() .eq(SysConfDO::getCommunityId, communityId).orderByDesc(SysConfDO::getCreateAt)); if (confDOList == null || confDOList.size() == 0) { SysConfDO sysConfDO = new SysConfDO(); sysConfDO.setCode(Constants.DISCUSS_IDENTITY_KEY + communityId); sysConfDO.setName("社区议事投票小程序身份验证参数"); sysConfDO.setValue("");// 社区议事投票小程序身份验证参数(1.全部 2.党员 3.志愿者 4.社区工作人员) sysConfDO.setDescription("社区议事投票小程序身份验证参数(1.全部 2.党员 3.志愿者 4.社区工作人员)"); sysConfDO.setCommunityId(communityId); sysConfDO.setCreateBy(userId); int inserted = sysConfDao.insert(sysConfDO); if (inserted != 1) { throw new ServiceException("添加社区议事投票小程序身份验证参数失败"); } confDOList = sysConfDao.selectList(new LambdaQueryWrapper<SysConfDO>() .eq(SysConfDO::getCommunityId, communityId) .orderByDesc(SysConfDO::getCreateAt)); } if (confDOList != null && confDOList.size() > 0) { SysConfDO latest = confDOList.get(0); SysConfVO sysConfVO = new SysConfVO(); BeanUtils.copyProperties(latest, sysConfVO); return R.ok(sysConfVO.getValue()); } return R.ok(); } /** * 设置当前社区议事投票小程序身份验证参数(1.全部 2.党员 3.志愿者 4.社区工作人员) * * @param communityId 社区id * @param value 需要设置的参数值 * @return 设置结果 */ @Override public R discussJurisdictionSet(Long communityId, String value) { List<SysConfDO> authConf = sysConfDao.selectList(new LambdaQueryWrapper<SysConfDO>().eq(SysConfDO::getCommunityId, communityId) .eq(SysConfDO::getCode, Constants.DISCUSS_IDENTITY_KEY + communityId).orderByDesc(SysConfDO::getCreateAt)); if (authConf != null && authConf.size() > 0) { SysConfDO first = authConf.get(0); first.setValue(value); int updated = sysConfDao.updateById(first); if (updated == 1) { return R.ok(); } } return R.fail(); } /** * 议事投票检测状态定时任务 * @return 执行结果 */ @Override public R timedTaskDiscussInspectStatus() { Date nowDate = new Date(); //查询已过开始时间未开始投票列表 List<ComActDiscussDO> wksDiscussList = comActDiscussDAO.selectList(new QueryWrapper<ComActDiscussDO>().lambda() .eq(ComActDiscussDO::getType, ComActDiscussDO.type.tp).eq(ComActDiscussDO::getIsDel, ComActDiscussDO.isOk.no) .eq(ComActDiscussDO::getStatus,ComActDiscussDO.status.wks).le(ComActDiscussDO::getStartTime, nowDate)); wksDiscussList.forEach(wksDiscuss -> { wksDiscuss.setStatus(ComActDiscussDO.status.jxz); wksDiscuss.setUpdateAt(nowDate); wksDiscuss.setReleaseAt(nowDate); comActDiscussDAO.updateById(wksDiscuss); }); //查询已过结束时间未结束的投票列表 List<ComActDiscussDO> jxzDiscussList = comActDiscussDAO.selectList(new QueryWrapper<ComActDiscussDO>().lambda() .eq(ComActDiscussDO::getType, ComActDiscussDO.type.tp).eq(ComActDiscussDO::getIsDel, ComActDiscussDO.isOk.no) .eq(ComActDiscussDO::getStatus,ComActDiscussDO.status.jxz).le(ComActDiscussDO::getEndTime, nowDate)); jxzDiscussList.forEach(jxzDiscuss -> { jxzDiscuss.setStatus(ComActDiscussDO.status.dgb); jxzDiscuss.setUpdateAt(nowDate); comActDiscussDAO.updateById(jxzDiscuss); }); return R.ok(); } /** * 一起议增加浏览量 * @param discussId 一起议主键id */ @Override public void increaseViewNum(Long discussId) { String incrKey = String.join("_", DISCUSS_VIEW_NUM_PREFIX, discussId.toString()); Boolean isExist = stringRedisTemplate.hasKey(incrKey); ValueOperations opsForValue = stringRedisTemplate.opsForValue(); if (isExist) { opsForValue.increment(incrKey); } else { ComActDiscussDO comActDiscussDO = comActDiscussDAO.selectById(discussId); if (nonNull(comActDiscussDO)) { stringRedisTemplate.executePipelined((RedisCallback<Object>) redisConnection -> { StringRedisConnection stringRedisConnection = (StringRedisConnection) redisConnection; Integer nowViewNum = Math.addExact(comActDiscussDO.getViewsNum().intValue(), 1); stringRedisConnection.set(incrKey, nowViewNum.toString()); stringRedisConnection.expire(incrKey, DISCUSS_EXPIRE_TIME); stringRedisConnection.sAdd(INCR_VIEW_DISCUSS_IDS_KEY, discussId.toString()); stringRedisConnection.expire(INCR_VIEW_DISCUSS_IDS_KEY, DISCUSS_EXPIRE_TIME); return null; }); } } } /** * 公布/编辑一起议投票结果 * @param comActDiscussDTO * @return 请求结果 */ @Override public R editDiscussResult(ComActDiscussDTO comActDiscussDTO) { if (isNull(comActDiscussDTO.getId()) || isNull(comActDiscussDTO.getPublishResult())) { return R.fail("缺少参数!"); } ComActDiscussDO comActDiscussDO = comActDiscussDAO.selectById(comActDiscussDTO.getId()); if (isNull(comActDiscussDO)) { return R.fail("当前一起议主题不存在!"); } if (!comActDiscussDTO.getUserId().equals(comActDiscussDO.getUserId())) { return R.fail("只能公布或编辑自己发布的主题!"); } comActDiscussDO.setPublishResult(comActDiscussDTO.getPublishResult()); int result = comActDiscussDAO.updateById(comActDiscussDO); if (result > 0) { return R.ok(); } return R.fail("网络错误,请重试!"); } /** * 将redis中浏览量写入表中 * @return 执行结果 */ @Override public R writeDiscussViewNumToTable() { try { if (stringRedisTemplate.hasKey(INCR_VIEW_DISCUSS_IDS_KEY)) { SetOperations opsForSet = stringRedisTemplate.opsForSet(); Set<String> needWriteDiscussIdSet = opsForSet.members(INCR_VIEW_DISCUSS_IDS_KEY); //组装viewNum key List<String> viewNumKeys = new ArrayList<>(); Iterator<String> iterator = needWriteDiscussIdSet.iterator(); while (iterator.hasNext()) { viewNumKeys.add(String.join("_", DISCUSS_VIEW_NUM_PREFIX, iterator.next())); } ValueOperations opsForValue = stringRedisTemplate.opsForValue(); List<String> viewNumList = opsForValue.multiGet(viewNumKeys); //待处理集合,以key-value/discussId-viewNum 存放 HashMap<Long, Integer> needDealMap = new HashMap<>(); for (String discussId : needWriteDiscussIdSet) { try { needDealMap.put(Long.parseLong(discussId), Integer.parseInt(viewNumList.get(0))); viewNumList.remove(0); } catch (IndexOutOfBoundsException e) { //数据存在异常了,跳过,继续执行正确的 continue; } } int result = comActDiscussDAO.batchUpdateViewNum(needDealMap); if (result <= 0) { return R.fail("处理失败"); } } } catch (Exception e) { log.error("写入浏览量失败【{}】", e.getMessage()); return R.fail("处理失败"); } return R.ok(); } } springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActDiscussCommentDOMapper.xml
New file @@ -0,0 +1,39 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.panzhihua.service_community.dao.ComActDiscussCommentDAO"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.panzhihua.service_community.model.dos.ComActDiscussCommentDO"> <id column="id" property="id"/> <result column="discuss_id" property="discussId"/> <result column="comment" property="comment"/> <result column="is_topping" property="isTopping"/> <result column="create_at" property="createAt"/> <result column="is_author" property="isAuthor"/> <result column="parent_id" property="parentId"/> <result column="user_id" property="userId"/> <result column="reply_num" property="replyNum"/> </resultMap> <!-- 通用查询结果列 --> <sql id="Base_Column_List"> id, discuss_id, comment, is_topping, create_at, is_author, parent_id, user_id, reply_num </sql> <select id="getDiscussCommentList" parameterType="com.panzhihua.common.model.dtos.community.PageComActDiscussCommentDTO" resultType="com.panzhihua.common.model.vos.community.ComActDiscussCommentVO"> SELECT cadc.id, cadc.`comment`, cadc.`is_author`, su.`image_url`, IFNULL( su.`name`, su.nick_name ) AS userNameBack, cadc.create_at FROM com_act_discuss_comment AS cadc LEFT JOIN sys_user AS su ON su.user_id = cadc.user_id where cadc.parent_id = #{id} and cadc.is_del = 2 order by cadc.create_at desc </select> </mapper> springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActDiscussCommentUserDOMapper.xml
New file @@ -0,0 +1,18 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.panzhihua.service_community.dao.ComActDiscussCommentUserDAO"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.panzhihua.service_community.model.dos.ComActDiscussCommentUserDO"> <id column="id" property="id"/> <result column="disscuss_comment_id" property="disscussCommentId"/> <result column="user_id" property="userId"/> <result column="create_at" property="createAt"/> </resultMap> <!-- 通用查询结果列 --> <sql id="Base_Column_List"> id, disscuss_comment_id, user_id, create_at </sql> </mapper> springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActDiscussDOMapper.xml
New file @@ -0,0 +1,260 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.panzhihua.service_community.dao.ComActDiscussDAO"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.panzhihua.service_community.model.dos.ComActDiscussDO"> <id column="id" property="id"/> <result column="discuss_subject" property="discussSubject"/> <result column="type" property="type"/> <result column="photo_pah" property="photoPah"/> <result column="address" property="address"/> <result column="user_id" property="userId"/> <result column="community_id" property="communityId"/> <result column="create_at" property="createAt"/> <result column="discuss_option" property="discussOption"/> <result column="vote_title" property="voteTitle"/> <result column="is_repeat" property="isRepeat"/> <result column="count" property="count"/> <result column="img_width" property="imgWidth"/> <result column="img_height" property="imgHeight"/> <result column="start_time" property="startTime"/> <result column="end_time" property="endTime"/> <result column="comment_num" property="commentNum"/> <result column="fabulous_num" property="fabulousNum"/> <result column="views_num" property="viewsNum"/> <result column="join_num" property="joinNum"/> <result column="status" property="status"/> <result column="is_del" property="isDel"/> <result column="publish_result" property="publishResult"/> <result column="publish_at" property="publishAt"/> <result column="release_at" property="releaseAt"/> <result column="update_at" property="updateAt"/> <result column="publish_by" property="publishBy"/> </resultMap> <!-- 通用查询结果列 --> <sql id="Base_Column_List"> id, discuss_subject, type, photo_pah, address, user_id, community_id, create_at, discuss_option, vote_title, is_repeat, count, img_width, img_height, start_time, end_time, comment_num, fabulous_num, views_num, join_num, status, is_del, publish_result, publish_at, release_at, update_at, publish_by </sql> <update id="updateStatusById"> UPDATE `com_act_discuss` SET status = #{status}, update_at = NOW() WHERE id = #{discussId} </update> <update id="incrCommentAndJoinNumById"> UPDATE `com_act_discuss` SET comment_num = comment_num + 1, <if test="isFirstComment"> join_num = join_num + 1, </if> update_at = NOW() WHERE id = #{discussId} </update> <update id="incrOrDecrFabulousNumByType"> UPDATE `com_act_discuss` SET fabulous_num = IF(IF(#{isIncr},fabulous_num + 1,fabulous_num - 1) >= 0,IF(#{isIncr},fabulous_num + 1,fabulous_num - 1),0), update_at = NOW() WHERE id = #{discussId} </update> <update id="batchUpdateViewNum" parameterType="java.util.Map"> UPDATE `com_act_discuss` SET views_num = CASE id <foreach collection="needDealMap.entrySet()" item="value" index="key"> WHEN #{key} THEN #{value} </foreach> END,update_at = NOW() WHERE id = CASE id <foreach collection="needDealMap.entrySet()" index="key"> WHEN #{key} THEN #{key} </foreach> END </update> <select id="pageDiscuss" parameterType="com.panzhihua.common.model.dtos.community.PageComActDiscussDTO" resultType="com.panzhihua.common.model.vos.community.ComActDiscussVO"> SELECT t.* FROM ( SELECT d.id, d.`discuss_subject`, d.type, COUNT( DISTINCT c.id ) commentNum, u.NAME userName, u.nick_name userNickName, d.create_at FROM com_act_discuss d JOIN sys_user u ON d.user_id = u.user_id LEFT JOIN com_act_discuss_comment c ON d.id = c.discuss_id WHERE d.community_id = #{pageComActDiscussDTO.communityId} and d.is_del = 2 <if test = 'pageComActDiscussDTO.subject != null and pageComActDiscussDTO.subject.trim() != ""' > AND d.`discuss_subject` LIKE concat(#{pageComActDiscussDTO.subject}, '%' ) </if> <if test = 'pageComActDiscussDTO.begin != null ' > AND d.create_at BETWEEN #{pageComActDiscussDTO.begin} AND #{pageComActDiscussDTO.end} </if> <if test="pageComActDiscussDTO.status != null"> and d.status = #{pageComActDiscussDTO.status} </if> GROUP BY d.id )t order by t.create_at desc </select> <select id="pageDiscussAdmin" parameterType="com.panzhihua.common.model.dtos.community.PageComActDiscussDTO" resultType="com.panzhihua.common.model.vos.community.ComActDiscussVO"> SELECT d.id, d.`discuss_subject`, d.type, d.comment_num, d.fabulous_num as signNum, d.views_num, d.status, u.NAME userName, u.nick_name userNickName, d.create_at FROM com_act_discuss d JOIN sys_user u ON d.user_id = u.user_id WHERE d.community_id = #{pageComActDiscussDTO.communityId} and d.is_del = 2 <if test = 'pageComActDiscussDTO.subject != null and pageComActDiscussDTO.subject.trim() != ""' > AND d.`discuss_subject` LIKE concat(#{pageComActDiscussDTO.subject}, '%' ) </if> <if test = 'pageComActDiscussDTO.begin != null ' > AND d.create_at BETWEEN #{pageComActDiscussDTO.begin} AND #{pageComActDiscussDTO.end} </if> <if test="pageComActDiscussDTO.status != null"> and d.status = #{pageComActDiscussDTO.status} </if> <if test="pageComActDiscussDTO.keyWord != null and pageComActDiscussDTO.keyWord != """> and (d.`discuss_subject` LIKE concat(#{pageComActDiscussDTO.keyWord}, '%' ) or u.`name` LIKE concat(#{pageComActDiscussDTO.keyWord}, '%' )) </if> order by d.create_at desc </select> <select id="pageDiscussCommentApplets" resultType="com.panzhihua.common.model.vos.community.ComActDiscussCommentVO"> SELECT * FROM ( SELECT u.`name` userName, IFNULL(u.`nick_name`, '社区管理员') AS userNickName, u.`image_url`, u.phone, u.type AS userType, c.`comment`, c.`parent_id`, c.`is_author`, c.`is_topping`, COUNT( cu.id ) num, c.create_at, c.id FROM com_act_discuss_comment c JOIN sys_user u ON c.user_id = u.user_id JOIN com_act_discuss d ON c.discuss_id = d.id <if test='pageComActDiscussCommentDTO.name != null and pageComActDiscussCommentDTO.name.trim() != ""'> AND u.`name` LIKE concat( #{pageComActDiscussCommentDTO.name}, '%' ) </if> <if test='pageComActDiscussCommentDTO.account != null and pageComActDiscussCommentDTO.account.trim() != ""'> AND u.phone LIKE concat( #{pageComActDiscussCommentDTO.account}, '%' ) </if> LEFT JOIN com_act_discuss_comment_user cu ON c.id = cu.disscuss_comment_id WHERE c.discuss_id=#{pageComActDiscussCommentDTO.id} AND parent_id=0 AND c.is_del = 2 <if test='pageComActDiscussCommentDTO.comment != null and pageComActDiscussCommentDTO.comment.trim() != ""'> AND c.`comment` LIKE concat( '%', #{pageComActDiscussCommentDTO.comment}, '%' ) </if> GROUP BY c.id ) t ORDER BY t.is_topping DESC , t.create_at DESC </select> <select id="pageDiscussApplets" resultType="com.panzhihua.common.model.vos.community.ComActDiscussVO"> SELECT t.* FROM ( SELECT d.id, d.vote_title, if(d.address IS NULL OR d.address='null',a.name,d.address )address, d.photo_pah, d.`discuss_subject`, d.type, d.end_time, d.status, d.views_num, d.join_num, d.fabulous_num AS signNum, d.comment_num AS commentNum, d.release_at, u.type AS userType, if(u.type=1,u.name,a.name) userName, if(u.type=1,u.nick_name,a.name) userNickName, <if test='pageComActDiscussDTO.loginUserId != null '> if(du.id IS NOT NULL,1,0) haveSign, if(ou.id IS NOT NULL,1,0) haveVote, </if> u.image_url, d.create_at FROM com_act_discuss d JOIN sys_user u ON d.user_id = u.user_id JOIN com_act a ON d.community_id = a.community_id LEFT JOIN com_act_discuss_option do ON d.id = do.discuss_id LEFT JOIN com_act_discuss_user du ON d.id = du.discuss_id <if test='pageComActDiscussDTO.loginUserId != null '> LEFT JOIN com_act_discuss_option_user ou ON do.id=ou.discuss_option_id AND ou.user_id=#{pageComActDiscussDTO.loginUserId} </if> WHERE d.community_id=#{pageComActDiscussDTO.communityId} AND d.is_del = 2 <if test='pageComActDiscussDTO.type != null '> AND d.`type` = #{pageComActDiscussDTO.type} </if> <if test='pageComActDiscussDTO.subject != null and pageComActDiscussDTO.subject.trim() != ""'> AND d.`discuss_subject` LIKE concat( #{pageComActDiscussDTO.subject}, '%' ) </if> <if test='pageComActDiscussDTO.userId != null and pageComActDiscussDTO.userId !=0 '> AND d.`user_id` = #{pageComActDiscussDTO.userId} </if> <if test='pageComActDiscussDTO.begin != null '> AND d.create_at BETWEEN #{pageComActDiscussDTO.begin} AND #{pageComActDiscussDTO.end} </if> <if test='pageComActDiscussDTO.displayStatus != null and pageComActDiscussDTO.displayStatus == 1'> AND d.`end_time` > now() </if> <if test='pageComActDiscussDTO.displayStatus != null and pageComActDiscussDTO.displayStatus == 2'> AND d.`end_time` < now() </if> GROUP BY d.id ) t ORDER BY t.create_at DESC </select> <update id="addCommentCount"> update com_act_discuss set comment_num = comment_num + #{num} where id = #{discussId} </update> <select id="pageDiscussCommentAdmin" parameterType="com.panzhihua.common.model.dtos.community.PageComActDiscussCommentDTO" resultType="com.panzhihua.common.model.vos.community.ComActDiscussCommentVO"> SELECT * FROM ( SELECT u.`name` userName, u.nick_name userNickName, u.image_url, u.phone, c.`comment`, c.`parent_id`, COUNT( DISTINCT cu.id ) num, COUNT( c1.id ) replyNum, c.create_at, c.is_topping, c.id FROM com_act_discuss_comment c JOIN sys_user u ON c.user_id = u.user_id LEFT JOIN com_act_discuss_comment_user cu ON c.id = cu.disscuss_comment_id LEFT JOIN com_act_discuss_comment c1 ON c1.parent_id = c.id and c1.is_del = 2 WHERE c.discuss_id = #{pageComActDiscussCommentDTO.id} and c.parent_id = 0 and c.is_del = 2 <if test = 'pageComActDiscussCommentDTO.keyWord != null and pageComActDiscussCommentDTO.keyWord.trim() != ""' > AND (c.`comment` LIKE concat( '%', #{pageComActDiscussCommentDTO.keyWord }, '%' ) or u.`name` LIKE concat(#{pageComActDiscussCommentDTO.keyWord}, '%' ) or u.phone LIKE concat(#{pageComActDiscussCommentDTO.keyWord}, '%' )) </if> GROUP BY c.id ) t ORDER BY t.is_topping DESC,t.create_at DESC </select> <select id="getDiscussCommentReplyList" resultType="com.panzhihua.common.model.vos.community.ComActDiscussCommentVO"> SELECT cadc.id, cadc.discuss_id, cadc.`comment`, cadc.create_at, cadc.is_author, cadc.user_id, IFNULL( su.`name`, su.nick_name ) AS userName FROM com_act_discuss_comment AS cadc LEFT JOIN sys_user AS su ON su.user_id = cadc.user_id WHERE cadc.is_del = 2 AND cadc.parent_id = #{commentId} order by cadc.create_at desc limit 10 </select> </mapper> springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActDiscussOptionDOMapper.xml
New file @@ -0,0 +1,33 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.panzhihua.service_community.dao.ComActDiscussOptionDAO"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.panzhihua.service_community.model.dos.ComActDiscussOptionDO"> <id column="id" property="id"/> <result column="discuss_id" property="discussId"/> <result column="option_content" property="optionContent"/> <result column="create_at" property="createAt"/> <result column="option_url" property="optionUrl"/> </resultMap> <!-- 通用查询结果列 --> <sql id="Base_Column_List"> id, discuss_id, option_content, create_at, option_url </sql> <select id="getDiscussOptionList" resultType="com.panzhihua.common.model.vos.community.ComActDiscussOptionVO"> SELECT cado.id, cado.option_content, cado.option_url, ( SELECT count( id ) FROM com_act_discuss_option_user WHERE discuss_option_id = cado.id ) AS num, ( SELECT count( id ) FROM com_act_discuss_option_user WHERE discuss_id = cado.discuss_id ) AS allNum FROM com_act_discuss_option AS cado WHERE discuss_id = #{discussId} ORDER BY num DESC </select> </mapper> springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActDiscussOptionUserDOMapper.xml
New file @@ -0,0 +1,37 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.panzhihua.service_community.dao.ComActDiscussOptionUserDAO"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.panzhihua.service_community.model.dos.ComActDiscussOptionUserDO"> <id column="id" property="id"/> <result column="discuss_option_id" property="discussOptionId"/> <result column="user_id" property="userId"/> <result column="create_at" property="createAt"/> <result column="discuss_id" property="discussId"/> </resultMap> <!-- 通用查询结果列 --> <sql id="Base_Column_List"> id, discuss_option_id, user_id, create_at, discuss_id </sql> <select id="selectVotedVotesInToday" resultType="java.lang.Integer"> SELECT COUNT(1) FROM `com_act_discuss_option_user` WHERE discuss_id = #{discussId} AND user_id = #{userId} AND DATE(create_at) >= DATE(now()) AND DATE(create_at) < DATE_ADD(DATE(now()),INTERVAL 1 DAY) </select> <select id="selectVotedRecords" resultType="com.panzhihua.common.model.vos.community.ComActDiscussOptionUserVO"> SELECT cadou.*, su.nick_name, su.image_url FROM `com_act_discuss_option_user` cadou LEFT JOIN `sys_user` su ON cadou.user_id = su.user_id WHERE cadou.discuss_id = #{discussId} limit 6 </select> <select id="selectVotedPersonNum" resultType="java.lang.Integer"> SELECT COUNT(DISTINCT `user_id`) FROM `com_act_discuss_option_user` WHERE discuss_id = #{discussId} </select> </mapper> springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComActDiscussUserDOMapper.xml
New file @@ -0,0 +1,18 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.panzhihua.service_community.dao.ComActDiscussUserDAO"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.panzhihua.service_community.model.dos.ComActDiscussUserDO"> <id column="id" property="id"/> <result column="discuss_id" property="discussId"/> <result column="user_id" property="userId"/> <result column="create_at" property="createAt"/> </resultMap> <!-- 通用查询结果列 --> <sql id="Base_Column_List"> id, discuss_id, user_id, create_at </sql> </mapper> springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/api/UserApi.java
@@ -1112,4 +1112,14 @@ return userService.getUserListByCommunityId(communityId); } /** * 检查当前用户是否是社区工作人员 * @param phone * @param communityId * @return */ @GetMapping("checkIsTeam") public R checkCurrentUserIsTeam(String phone, Long communityId) { return userService.checkCurrentUserIsTeam(phone, communityId); } } springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/UserService.java
@@ -678,4 +678,11 @@ */ R getUserListByCommunityId(Long communityId); /** * 检查当前用户是否是社区工作人员 * @param phone * @param communityId * @return */ R checkCurrentUserIsTeam(String phone, Long communityId); } springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java
@@ -2422,4 +2422,19 @@ public R getUserListByCommunityId(Long communityId) { return R.ok(this.userDao.getUserListByCommunityId(communityId)); } /** * 检查当前用户是否是社区工作人员 * @param phone * @param communityId * @return */ @Override public R checkCurrentUserIsTeam(String phone, Long communityId) { int result = this.userDao.selectCountTeam(phone, communityId); if (result > 0) { return R.ok(true); } return R.ok(false); } } springcloud_k8s_panzhihuazhihuishequ/timejob/src/main/java/com/panzhihua/timejob/jobhandler/CommunityJobHandler.java
@@ -205,6 +205,14 @@ return ReturnT.SUCCESS; } /** * 定时任务每半小时执行一次将一起议浏览量写入到表中 */ @XxlJob("timedTaskWriteDiscussViewNumToTableJobHandler") public ReturnT<String> timedTaskWriteDiscussViewNumToTableJobHandler(String param) throws Exception { log.info("定时任务每半小时执行一次将一起议浏览量写入到表中"); R r = communityService.timedTaskWriteDiscussViewNumToTable(); @XxlJob("timedTaskEldersAuthJobHandler") public ReturnT<String> timedTaskEldersAuthJobHandler(String param) throws Exception { log.info("定时任务扫描上月高龄认证使用视频认证的用户添加成功记录"); springcloud_k8s_panzhihuazhihuishequ/timejob/src/main/java/com/panzhihua/timejob/jobhandler/DiscussJobHandler.java
New file @@ -0,0 +1,30 @@ package com.panzhihua.timejob.jobhandler; import com.panzhihua.common.model.vos.R; import com.panzhihua.common.service.community.CommunityService; import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.handler.annotation.XxlJob; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import javax.annotation.Resource; /** * @author lyq * 议事投票定时任务 */ @Slf4j @Component public class DiscussJobHandler { @Resource private CommunityService communityService; @XxlJob("timedTaskDiscussInspectStatusJobHandler") public ReturnT<String> timedTaskDiscussInspectStatusJobHandler(String param) throws Exception { log.info("定时任务扫描议事投票状态"); R r = communityService.timedTaskDiscussInspectStatus(); log.info("执行结果【{}】", r.toString()); return ReturnT.SUCCESS; } } springcloud_k8s_panzhihuazhihuishequ/zuul/src/main/java/com/panzhihua/zuul/filters/JWTAuthenticationTokenFilter.java
@@ -247,8 +247,8 @@ noLoginUrl.add("/api/applets/partybuilding/pageactivity"); noLoginUrl.add("/api/applets/community/pagevolunteer"); noLoginUrl.add("/api/applets/community/volunteer"); noLoginUrl.add("/api/applets/discuss/increase-view-num"); noLoginUrl.add("/api/applets/community/evaluate/page"); if (noLoginUrl.contains(requestURI)) { List<SimpleGrantedAuthority> authorities = new ArrayList<>(); authorities.add(new SimpleGrantedAuthority(SecurityConstants.ROLE_APPLETS));