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 lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
/** /**
@ -35,7 +36,7 @@ public class CommunityController {
*/ */
@ApiOperation(value = "社区列表") @ApiOperation(value = "社区列表")
@PostMapping("list") @PostMapping("list")
public TableDataInfo getCommunityList(@RequestBody PageDomain pageDomain) { public TableDataInfo getCommunityList(@RequestBody @Valid PageDomain pageDomain) {
return communityService.listByPage(pageDomain); return communityService.listByPage(pageDomain);
} }
@ -48,7 +49,7 @@ public class CommunityController {
*/ */
@ApiOperation(value = "添加社区") @ApiOperation(value = "添加社区")
@PostMapping("add") @PostMapping("add")
public AjaxResult addCommunity(@RequestBody CommunityRes communityRes) { public AjaxResult addCommunity(@RequestBody @Valid CommunityRes communityRes) {
communityService.addCommunity(communityRes); communityService.addCommunity(communityRes);
return AjaxResult.success(); return AjaxResult.success();
} }
@ -63,6 +64,7 @@ public class CommunityController {
@GetMapping("delete") @GetMapping("delete")
public AjaxResult deleteCommunity(@NotNull(message = "id不能为空") public AjaxResult deleteCommunity(@NotNull(message = "id不能为空")
@ApiParam(value = "id", required = true) @ApiParam(value = "id", required = true)
@Valid
Long id) { Long id) {
communityService.removeById(id); communityService.removeById(id);
return AjaxResult.success(); 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.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.util.ArrayList; import java.util.ArrayList;
@ -37,6 +38,7 @@ public class InviteController {
@GetMapping("inviteCode") @GetMapping("inviteCode")
public AjaxResult inviteCode(@NotNull(message = "社区不能为空") public AjaxResult inviteCode(@NotNull(message = "社区不能为空")
@ApiParam(value = "社区", required = true) @ApiParam(value = "社区", required = true)
@Valid
Long communityId) { Long communityId) {
// 获取邀请码链接 // 获取邀请码链接
String inviteCode = inviteService.getInviteCode(communityId); String inviteCode = inviteService.getInviteCode(communityId);
@ -51,8 +53,13 @@ public class InviteController {
*/ */
@ApiOperation(value = "接受邀请") @ApiOperation(value = "接受邀请")
@GetMapping("acceptInvite") @GetMapping("acceptInvite")
public AjaxResult acceptInvite(@NotNull(message = "社区不能为空") Long communityId, @Valid
@NotBlank(message = "邀请码不能为空") String inviteCode) { 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); boolean result = inviteService.acceptInvite(communityId, inviteCode);
if (result) { if (result) {

View File

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

View File

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

View File

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

View File

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

View File

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