feat: 提问

master
yang 2025-01-18 20:03:04 +08:00
parent d5157ce481
commit 8fda8397f2
8 changed files with 55 additions and 47 deletions

View File

@ -14,6 +14,7 @@ import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
/**
@ -35,7 +36,7 @@ public class CommunityController {
*/
@ApiOperation(value = "社区列表")
@PostMapping("list")
public TableDataInfo getCommunityList(@RequestBody PageDomain pageDomain) {
public TableDataInfo getCommunityList(@RequestBody @Valid PageDomain pageDomain) {
return communityService.listByPage(pageDomain);
}
@ -48,7 +49,7 @@ public class CommunityController {
*/
@ApiOperation(value = "添加社区")
@PostMapping("add")
public AjaxResult addCommunity(@RequestBody CommunityRes communityRes) {
public AjaxResult addCommunity(@RequestBody @Valid CommunityRes communityRes) {
communityService.addCommunity(communityRes);
return AjaxResult.success();
}
@ -62,8 +63,9 @@ public class CommunityController {
@ApiOperation(value = "删除社区")
@GetMapping("delete")
public AjaxResult deleteCommunity(@NotNull(message = "id不能为空")
@ApiParam(value = "id", required = true)
Long id) {
@ApiParam(value = "id", required = true)
@Valid
Long id) {
communityService.removeById(id);
return AjaxResult.success();
}

View File

@ -14,6 +14,7 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
@ -37,6 +38,7 @@ public class InviteController {
@GetMapping("inviteCode")
public AjaxResult inviteCode(@NotNull(message = "社区不能为空")
@ApiParam(value = "社区", required = true)
@Valid
Long communityId) {
// 获取邀请码链接
String inviteCode = inviteService.getInviteCode(communityId);
@ -51,8 +53,13 @@ public class InviteController {
*/
@ApiOperation(value = "接受邀请")
@GetMapping("acceptInvite")
public AjaxResult acceptInvite(@NotNull(message = "社区不能为空") Long communityId,
@NotBlank(message = "邀请码不能为空") String inviteCode) {
@Valid
public AjaxResult acceptInvite(@NotNull(message = "社区不能为空")
@ApiParam(value = "社区", required = true)
Long communityId,
@NotBlank(message = "邀请码不能为空")
@ApiParam(value = "邀请码", required = true)
String inviteCode) {
// 接受邀请
boolean result = inviteService.acceptInvite(communityId, inviteCode);
if (result) {

View File

@ -1,7 +1,6 @@
package com.mcwl.web.controller.communityCenter;
import com.mcwl.common.core.domain.AjaxResult;
import com.mcwl.common.core.page.TableDataInfo;
import com.mcwl.communityCenter.domain.dto.PublishDetailRes;
@ -15,6 +14,7 @@ import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.util.Objects;
@ -35,7 +35,7 @@ public class PublishController {
*/
@ApiOperation(value = "获取发布列表")
@PostMapping("list")
public TableDataInfo list(@RequestBody PublishPageRes publishPageRes) {
public TableDataInfo list(@RequestBody @Valid PublishPageRes publishPageRes) {
return publishService.getPublishList(publishPageRes);
}
@ -44,7 +44,7 @@ public class PublishController {
*/
@ApiOperation(value = "获取发布详情")
@PostMapping("detail")
public AjaxResult getPublishDetail(@RequestBody PublishDetailRes publishDetailRes) {
public AjaxResult getPublishDetail(@RequestBody @Valid PublishDetailRes publishDetailRes) {
PublishVo publishVo = publishService.getDetail(publishDetailRes);
if (Objects.isNull(publishVo)) {
@ -58,7 +58,7 @@ public class PublishController {
*/
@ApiOperation(value = "发布")
@PostMapping("publish")
public AjaxResult publish(@RequestBody PublishRes publishRes) {
public AjaxResult publish(@RequestBody @Valid PublishRes publishRes) {
return publishService.publish(publishRes);
}
@ -67,7 +67,7 @@ public class PublishController {
*/
@ApiOperation(value = "删除")
@GetMapping("remove")
public AjaxResult deletePublish(Long id) {
public AjaxResult deletePublish(@NotNull(message = "id不能为空") @ApiParam(value = "id") @Valid Long id) {
return AjaxResult.success(publishService.removeById(id));
}

View File

@ -13,6 +13,7 @@ import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.util.Objects;
@ -33,11 +34,10 @@ public class QuestionController {
*/
@PostMapping("addQuestion")
@ApiOperation(value = "提问")
public AjaxResult addQuestion(@RequestBody QuestionRes questionRes) {
public AjaxResult addQuestion(@RequestBody @Valid QuestionRes questionRes) {
questionService.addQuestion(questionRes);
return AjaxResult.success();
return questionService.addQuestion(questionRes);
}
@ -47,7 +47,7 @@ public class QuestionController {
*/
@PostMapping("listUnReplied")
@ApiOperation(value = "获取未回复问题列表")
public TableDataInfo listUnReplied(@RequestBody QuestionPageRes questionPageRes) {
public TableDataInfo listUnReplied(@RequestBody @Valid QuestionPageRes questionPageRes) {
return questionService.listUnReplied(questionPageRes);
}
@ -57,7 +57,7 @@ public class QuestionController {
*/
@GetMapping("detail")
@ApiOperation(value = "获取问题详情")
public AjaxResult getQuestionDetail(@NotNull(message = "id不能为空") Long id) {
public AjaxResult getQuestionDetail(@NotNull(message = "id不能为空") @Valid Long id) {
QuestionVo questionVo = questionService.getDetail(id);
if (Objects.isNull(questionVo)) {
return AjaxResult.error("获取详情失败");
@ -70,7 +70,7 @@ public class QuestionController {
*/
@PostMapping("reply")
@ApiOperation(value = "回复")
public AjaxResult reply(@RequestBody QuestionReplyRes questionReplyRes) {
public AjaxResult reply(@RequestBody @Valid QuestionReplyRes questionReplyRes) {
questionService.reply(questionReplyRes);

View File

@ -53,10 +53,10 @@ public class Question extends BaseEntity {
private String content;
/**
* id
*
*/
@ApiModelProperty(value = "答复用户id")
private Long replyUserId;
@ApiModelProperty(value = "提问图片")
private String questionUrl;
/**
*
@ -70,12 +70,6 @@ public class Question extends BaseEntity {
@ApiModelProperty(value = "答复时间")
private Date replyTime;
/**
*
*/
@ApiModelProperty(value = "提问图片")
private String questionUrl;
/**
*
*/

View File

@ -18,7 +18,7 @@ public class QuestionRes {
* id
*/
@NotNull(message = "租户不能为空")
@ApiModelProperty(value = "租户ID", hidden = true)
@ApiModelProperty(value = "租户ID", required = true)
private Long tenantId;
/**
@ -28,13 +28,6 @@ public class QuestionRes {
@ApiModelProperty(value = "社区ID", required = true, position = 1)
private Long communityId;
/**
* id
*/
@NotNull(message = "提问用户不能为空")
@ApiModelProperty(value = "提问用户id", required = true, position = 2)
private Long questionUserId;
/**
*
*/
@ -52,7 +45,7 @@ public class QuestionRes {
* 0 1
*/
//swagger给上默认值
@ApiModelProperty(value = "是否匿名", example = "0", allowableValues = "0,1", position = 5)
@ApiModelProperty(value = "是否匿名", position = 5)
private Integer isAnonymous = 0;

View File

@ -1,6 +1,7 @@
package com.mcwl.communityCenter.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mcwl.common.core.domain.AjaxResult;
import com.mcwl.common.core.page.TableDataInfo;
import com.mcwl.communityCenter.domain.Question;
import com.mcwl.communityCenter.domain.dto.QuestionPageRes;
@ -16,7 +17,7 @@ public interface QuestionService extends IService<Question> {
*
* @param questionRes
*/
void addQuestion(QuestionRes questionRes);
AjaxResult addQuestion(QuestionRes questionRes);
TableDataInfo listUnReplied(QuestionPageRes questionPageRes);

View File

@ -6,11 +6,13 @@ import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mcwl.common.constant.HttpStatus;
import com.mcwl.common.core.domain.AjaxResult;
import com.mcwl.common.core.domain.entity.SysUser;
import com.mcwl.common.core.page.TableDataInfo;
import com.mcwl.common.utils.SecurityUtils;
import com.mcwl.common.utils.StringUtils;
import com.mcwl.communityCenter.constant.StatusConstant;
import com.mcwl.communityCenter.domain.Community;
import com.mcwl.communityCenter.domain.CommunityAdvice;
import com.mcwl.communityCenter.domain.Question;
import com.mcwl.communityCenter.domain.dto.QuestionPageRes;
@ -18,7 +20,9 @@ import com.mcwl.communityCenter.domain.dto.QuestionReplyRes;
import com.mcwl.communityCenter.domain.dto.QuestionRes;
import com.mcwl.communityCenter.domain.vo.QuestionVo;
import com.mcwl.communityCenter.mapper.CommunityAdviceMapper;
import com.mcwl.communityCenter.mapper.CommunityMapper;
import com.mcwl.communityCenter.mapper.QuestionMapper;
import com.mcwl.communityCenter.service.CommunityService;
import com.mcwl.communityCenter.service.QuestionService;
import com.mcwl.system.service.ISysUserService;
import lombok.RequiredArgsConstructor;
@ -37,6 +41,8 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
private final CommunityAdviceMapper communityAdviceMapper;
private final CommunityService communityService;
private final ISysUserService sysUserService;
/**
@ -46,27 +52,30 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void addQuestion(QuestionRes questionRes) {
Long questionUserId = questionRes.getQuestionUserId();
public AjaxResult addQuestion(QuestionRes questionRes) {
Long communityId = questionRes.getCommunityId();
Long userId = SecurityUtils.getUserId();
if (Objects.equals(questionUserId, userId)) {
return;
}
// 获取租户id
Long tenantId = questionRes.getTenantId();
// 答复人是否是群主
boolean isInviteUser = !Objects.equals(tenantId, questionUserId);
Community community = communityService.lambdaQuery()
.eq(Community::getId, communityId)
.eq(Community::getUserId, tenantId).one();
if (isInviteUser) {
return;
if (Objects.isNull(community)) {
return AjaxResult.error("租户或社区不存在");
}
if (Objects.equals(tenantId, userId)) {
return AjaxResult.error("您不能提问自己的问题");
}
//TODO 再加个判断提问人userId是否在社区中
Question question = new Question();
BeanUtil.copyProperties(questionRes, question);
question.setQuestionUserId(userId);
question.setStatus(StatusConstant.STATUS_UNREPLIED);
baseMapper.insert(question);
@ -74,12 +83,14 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
CommunityAdvice communityAdvice = new CommunityAdvice();
communityAdvice.setTenantId(tenantId);
communityAdvice.setCommunityId(communityId);
communityAdvice.setUserId(questionUserId);
communityAdvice.setUserId(tenantId);
communityAdvice.setTitle("您有新的问题");
communityAdvice.setContent(questionRes.getContent());
communityAdviceMapper.insert(communityAdvice);
return AjaxResult.success();
}
@Override