package com.panzhihua.applets.api; import cn.hutool.core.util.StrUtil; import com.panzhihua.applets.weixin.CheckService; import com.panzhihua.common.constants.Constants; import com.panzhihua.common.controller.BaseController; import com.panzhihua.common.model.dtos.community.*; 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 com.panzhihua.common.validated.PutGroup; 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; import org.springframework.util.ObjectUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.validation.Valid; import java.util.Date; import java.util.List; import java.util.Objects; /** * @program: springcloud_k8s_panzhihuazhihuishequ * @description: 一起议 * @author: huang.hongfa weixin hhf9596 qq 959656820 * @create: 2021-01-22 15:30 **/ @Slf4j @Api(tags = {"一起议"}) @RestController @RequestMapping("/") public class DiscussApi extends BaseController { @Resource private CommunityService communityService; @Resource private CheckService checkService; @ApiOperation(value = "一起议-新增") @PostMapping("discuss") public R addDiscuss(@RequestBody @Validated(AddGroup.class) ComActDiscussDTO comActDiscussDTO) { String openid = this.getLoginUserInfo().getOpenid(); String appId = this.getAppId(); // 微信内容审核 String discussSubject = comActDiscussDTO.getDiscussSubject(); if (StrUtil.isNotBlank(discussSubject)) { String result = checkService.checkMessageBy(discussSubject, openid, appId); if (StrUtil.isNotBlank(result)) { return R.fail(501, "填写内容存在 " + result + " 违规信息"); } } //微信图片审核 String photoPah = comActDiscussDTO.getPhotoPah(); if (StrUtil.isNotBlank(photoPah)) { if (!checkService.checkImageBy(photoPah, appId)) { return R.fail(501, "上传图片存在违规信息"); } } Integer type = comActDiscussDTO.getType(); String voteTitle = comActDiscussDTO.getVoteTitle(); List discussOptions = comActDiscussDTO.getDiscussOptions(); if (type.equals(2)) { if (ObjectUtils.isEmpty(voteTitle)) { return R.fail("投票标题不能为空"); } 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)) { return R.fail("地址不能为空"); } else if (address.contains("null")) { comActDiscussDTO.setAddress(null); } LoginUserInfoVO loginUserInfo = this.getLoginUserInfo(); Long userId = loginUserInfo.getUserId(); 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.setLoginUserId(loginUserInfo.getUserId()); Integer isMy = pageComActDiscussDTO.getIsMy(); if (null != isMy && isMy.intValue() == 1) { pageComActDiscussDTO.setUserId(loginUserInfo.getUserId()); } } return communityService.pageDiscussApplets(pageComActDiscussDTO); } @ApiOperation(value = "一起议-分页查询-脱敏", response = ComActDiscussVO.class) @PostMapping("pageDiscussDesensitize") public R pageDiscussDesensitize(@RequestBody PageComActDiscussDTO pageComActDiscussDTO) { if (Objects.isNull(pageComActDiscussDTO.getType())) { return R.fail("查询类型不能为空"); } LoginUserInfoVO loginUserInfo = this.getLoginUserInfoSureNoLogin(); if (loginUserInfo != null) { pageComActDiscussDTO.setCommunityId(loginUserInfo.getCommunityId()); pageComActDiscussDTO.setLoginUserId(loginUserInfo.getUserId()); Integer isMy = pageComActDiscussDTO.getIsMy(); if (null != isMy && isMy.intValue() == 1) { pageComActDiscussDTO.setUserId(loginUserInfo.getUserId()); } } return communityService.pageDiscussAppletsDesensitize(pageComActDiscussDTO); } @ApiOperation(value = "一起议-回复") @PostMapping("discusscomment") public R addDiscussComment(@RequestBody ComActDiscussCommentDTO comActDiscussCommentDTO) { String comment = comActDiscussCommentDTO.getComment(); if (ObjectUtils.isEmpty(comment)) { return R.fail("回复不能为空"); } Long discussId = comActDiscussCommentDTO.getDiscussId(); if (null == discussId || 0 == discussId) { return R.fail("一起议主键不能为空"); } String result = checkService.checkMessageBy(comment, this.getLoginUserInfo().getOpenid(), this.getAppId()); if (StrUtil.isNotBlank(result)) { return R.fail(501, "填写内容存在 " + result + " 违规信息"); } comActDiscussCommentDTO.setUserId(this.getUserId()); // 议事投票计算积分 AddComActIntegralUserDTO integralUserDTO = new AddComActIntegralUserDTO(discussId, AddComActIntegralUserDTO.integralType.cyystp, this.getCommunityId(), this.getUserId()); integralUserDTO.setIsComment(1); communityService.addIntegralTradeAdmin(integralUserDTO); return communityService.addDiscussComment(comActDiscussCommentDTO); } @ApiOperation(value = "一起议-点赞、取消点赞") @PutMapping("discussuser") public R putDiscussUser(@RequestBody @Validated ComActDiscussUserDTO comActDiscussUserDTO) { comActDiscussUserDTO.setUserId(this.getUserId()); return communityService.putDiscussUser(comActDiscussUserDTO); } @ApiOperation(value = "一起议-评论-点赞、取消点赞") @PutMapping("discusscommentuser") public R putDiscussCommentUser(@RequestBody @Validated ComActDiscussCommentUserDTO comActDiscussUserDTO) { comActDiscussUserDTO.setUserId(this.getUserId()); return communityService.putDiscussCommentUser(comActDiscussUserDTO); } @ApiOperation(value = "一起议-详情", response = ComActDiscussVO.class) @GetMapping("discuss") @ApiImplicitParam(name = "id", value = "一起议主键", required = true) public R detailDiscuss(@RequestParam("id") Long id) { Long userId = 0L; LoginUserInfoVO loginUserInfo = this.getLoginUserInfoSureNoLogin(); if (loginUserInfo != null) { userId = loginUserInfo.getUserId(); } return communityService.detailDiscussApplets(id, userId); } @ApiOperation(value = "一起议-详情-脱敏", response = ComActDiscussVO.class) @GetMapping("discussDesensitize") @ApiImplicitParam(name = "id", value = "一起议主键", required = true) public R detailDiscussDesensitize(@RequestParam("id") Long id) { Long userId = 0L; LoginUserInfoVO loginUserInfo = this.getLoginUserInfoSureNoLogin(); if (loginUserInfo != null) { userId = loginUserInfo.getUserId(); } return communityService.detailDiscussAppletsDesensitize(id, userId); } @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("一起议主键不能为空"); } Long userId = 0L; LoginUserInfoVO loginUserInfo = this.getLoginUserInfoSureNoLogin(); if (loginUserInfo != null) { userId = loginUserInfo.getUserId(); } pageComActDiscussCommentDTO.setLoginUserId(userId); return communityService.pageDiscussCommentApplets(pageComActDiscussCommentDTO); } /** * 议事投票-评论-删除 小程序 * * 分页参数 * @return ComActDiscussCommentVO */ @ApiOperation(value = "一起议-评论-删除接口") @DeleteMapping("deleteCommentApplets") public R deleteCommentApplets(@RequestParam("id") String id) { return communityService.deleteCommentApplets(id); } @ApiOperation(value = "一起议-评论-分页查询-脱敏", response = ComActDiscussCommentVO.class) @PostMapping("pageDiscussCommentDesensitize") public R pageDiscussCommentDesensitize(@RequestBody PageComActDiscussCommentDTO pageComActDiscussCommentDTO) { Long id = pageComActDiscussCommentDTO.getId(); if (null == id || 0 == id) { return R.fail("一起议主键不能为空"); } Long userId = 0L; LoginUserInfoVO loginUserInfo = this.getLoginUserInfoSureNoLogin(); if (loginUserInfo != null) { userId = loginUserInfo.getUserId(); } pageComActDiscussCommentDTO.setLoginUserId(userId); return communityService.pageDiscussCommentAppletsDesensitize(pageComActDiscussCommentDTO); } @ApiOperation(value = "一起议-评论-回复") @PostMapping("discusscommentback") public R addDiscussCommentBack(@RequestBody ComActDiscussCommentDTO comActDiscussCommentDTO) { String comment = comActDiscussCommentDTO.getComment(); if (ObjectUtils.isEmpty(comment)) { return R.fail("回复不能为空"); } Long id = comActDiscussCommentDTO.getId(); if (null == id || 0 == id) { return R.fail("评论主键不能为空"); } String result = checkService.checkMessageBy(comment, this.getLoginUserInfo().getOpenid(), this.getAppId()); if (StrUtil.isNotBlank(result)) { return R.fail(501, "填写内容存在 " + result + " 违规信息"); } comActDiscussCommentDTO.setUserId(this.getUserId()); return communityService.addDiscussCommentBack(comActDiscussCommentDTO); } @ApiOperation(value = "一起议-投票") @PostMapping("discussoptionuser") public R addDiscussOptionUser(@RequestBody @Valid DiscussVoteOptionDTO discussVoteOptionDTO) { List options = discussVoteOptionDTO.getOptions(); if (options.isEmpty()) { return R.fail("选项内容不能为空"); } discussVoteOptionDTO.setUserId(this.getUserId()); options.forEach(option -> { // 议事投票计算积分 AddComActIntegralUserDTO integralUserDTO = new AddComActIntegralUserDTO(option.getId(), AddComActIntegralUserDTO.integralType.cyystp, this.getCommunityId(), this.getUserId()); integralUserDTO.setIsComment(2); communityService.addIntegralTradeAdmin(integralUserDTO); }); return communityService.addDiscussOptionUser(discussVoteOptionDTO); } @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); } @ApiOperation(value = "一起议-获取是否有发布权限", response = Boolean.class) @GetMapping("discuss/permissions") public R getDiscussPermissions() { LoginUserInfoVO loginUserInfo = this.getLoginUserInfo(); ComActDiscussDTO comActDiscussDTO = new ComActDiscussDTO(); comActDiscussDTO.setLoginUserInfo(loginUserInfo); comActDiscussDTO.setIsApplets(true); comActDiscussDTO.setCommunityId(loginUserInfo.getCommunityId()); return communityService.getDiscussPermissions(comActDiscussDTO); } }