Merge branch 'feature/community-center' into preview

master
yang 2025-01-18 19:04:15 +08:00
commit d5157ce481
31 changed files with 366 additions and 204 deletions

View File

@ -6,18 +6,15 @@ import com.mcwl.common.core.domain.AjaxResult;
import com.mcwl.common.core.page.PageDomain;
import com.mcwl.common.core.page.TableDataInfo;
import com.mcwl.communityCenter.domain.Community;
import com.mcwl.communityCenter.domain.dto.CommunityDto;
import com.mcwl.communityCenter.domain.vo.CommunityVo;
import com.mcwl.communityCenter.domain.dto.CommunityRes;
import com.mcwl.communityCenter.service.CommunityService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
*
@ -46,15 +43,13 @@ public class CommunityController {
/**
*
*
* @param communityDto
* @param communityRes
* @return
*/
@ApiOperation(value = "添加社区")
@PostMapping("add")
public AjaxResult addCommunity(@RequestBody CommunityDto communityDto) {
Community community = new Community();
BeanUtil.copyProperties(communityDto, community);
communityService.save(community);
public AjaxResult addCommunity(@RequestBody CommunityRes communityRes) {
communityService.addCommunity(communityRes);
return AjaxResult.success();
}
@ -65,7 +60,7 @@ public class CommunityController {
* @return
*/
@ApiOperation(value = "删除社区")
@PostMapping("delete")
@GetMapping("delete")
public AjaxResult deleteCommunity(@NotNull(message = "id不能为空")
@ApiParam(value = "id", required = true)
Long id) {

View File

@ -7,6 +7,7 @@ import com.mcwl.communityCenter.domain.Community;
import com.mcwl.communityCenter.service.InviteService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
@ -34,7 +35,9 @@ public class InviteController {
*/
@ApiOperation(value = "邀请码链接")
@GetMapping("inviteCode")
public AjaxResult inviteCode(Long communityId) {
public AjaxResult inviteCode(@NotNull(message = "社区不能为空")
@ApiParam(value = "社区", required = true)
Long communityId) {
// 获取邀请码链接
String inviteCode = inviteService.getInviteCode(communityId);
if (StringUtils.isBlank(inviteCode)) {

View File

@ -1,30 +1,27 @@
package com.mcwl.web.controller.communityCenter;
import cn.hutool.core.bean.BeanUtil;
import com.mcwl.common.core.domain.AjaxResult;
import com.mcwl.common.core.page.PageDomain;
import com.mcwl.common.core.page.TableDataInfo;
import com.mcwl.communityCenter.domain.Community;
import cn.hutool.core.bean.BeanUtil;
import com.mcwl.common.core.domain.AjaxResult;
import com.mcwl.common.core.page.PageDomain;
import com.mcwl.common.core.page.TableDataInfo;
import com.mcwl.communityCenter.domain.Publish;
import com.mcwl.communityCenter.domain.dto.PublishDetailRes;
import com.mcwl.communityCenter.domain.dto.PublishPageRes;
import com.mcwl.communityCenter.domain.dto.PublishRes;
import com.mcwl.communityCenter.domain.vo.PublishVo;
import com.mcwl.communityCenter.service.PublishService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotNull;
import java.util.Objects;
/**
*
*/
@Api(tags = "发布")
@Api(tags = "社区帖子发布")
@RestController
@RequestMapping("publish")
@RequiredArgsConstructor
@ -35,23 +32,21 @@ public class PublishController {
/**
*
*
* @return
*/
@ApiOperation(value = "获取发布列表")
@PostMapping("list")
public TableDataInfo getCommunityList(@RequestBody PageDomain pageDomain) {
return publishService.listByPage(pageDomain);
public TableDataInfo list(@RequestBody PublishPageRes publishPageRes) {
return publishService.getPublishList(publishPageRes);
}
/**
*
*/
@ApiOperation(value = "获取发布详情")
@GetMapping("detail")
public AjaxResult getPublishDetail(Long id) {
@PostMapping("detail")
public AjaxResult getPublishDetail(@RequestBody PublishDetailRes publishDetailRes) {
PublishVo publishVo = publishService.getDetail(id);
PublishVo publishVo = publishService.getDetail(publishDetailRes);
if (Objects.isNull(publishVo)) {
return AjaxResult.error("获取详情失败");
}
@ -61,12 +56,10 @@ public class PublishController {
/**
*
*/
@ApiOperation(value = "添加")
@PostMapping("add")
public AjaxResult addPublish(@RequestBody PublishRes publishRes) {
Publish publish = new Publish();
BeanUtil.copyProperties(publishRes, publish);
return AjaxResult.success(publishService.save(publish));
@ApiOperation(value = "发布")
@PostMapping("publish")
public AjaxResult publish(@RequestBody PublishRes publishRes) {
return publishService.publish(publishRes);
}
/**

View File

@ -2,20 +2,17 @@ package com.mcwl.web.controller.communityCenter;
import com.mcwl.common.core.domain.AjaxResult;
import com.mcwl.common.core.page.PageDomain;
import com.mcwl.common.core.page.TableDataInfo;
import com.mcwl.communityCenter.domain.dto.QuestionPageRes;
import com.mcwl.communityCenter.domain.dto.QuestionReplyDto;
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.service.QuestionService;
import io.swagger.annotations.Api;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Objects;
@ -48,8 +45,9 @@ public class QuestionController {
/**
*
*/
@GetMapping("listUnReplied")
public TableDataInfo listUnReplied(QuestionPageRes questionPageRes) {
@PostMapping("listUnReplied")
@ApiOperation(value = "获取未回复问题列表")
public TableDataInfo listUnReplied(@RequestBody QuestionPageRes questionPageRes) {
return questionService.listUnReplied(questionPageRes);
}
@ -58,6 +56,7 @@ public class QuestionController {
*
*/
@GetMapping("detail")
@ApiOperation(value = "获取问题详情")
public AjaxResult getQuestionDetail(@NotNull(message = "id不能为空") Long id) {
QuestionVo questionVo = questionService.getDetail(id);
if (Objects.isNull(questionVo)) {
@ -70,9 +69,10 @@ public class QuestionController {
*
*/
@PostMapping("reply")
public AjaxResult reply(QuestionReplyDto questionReplyDto) {
@ApiOperation(value = "回复")
public AjaxResult reply(@RequestBody QuestionReplyRes questionReplyRes) {
questionService.reply(questionReplyDto);
questionService.reply(questionReplyRes);
return AjaxResult.success();

View File

@ -132,7 +132,7 @@ swagger:
# 是否开启swagger
enabled: true
# 请求前缀
pathMapping: /dev-api
pathMapping:
# 防止XSS攻击
xss:

View File

@ -21,6 +21,12 @@ public class Community extends BaseEntity {
@ApiModelProperty(value = "社区id")
private Long id;
/**
* id
*/
@ApiModelProperty(value = "用户id")
private Long userId;
/**
*
*/

View File

@ -29,6 +29,11 @@ public class Publish extends BaseEntity {
@TableField(fill = FieldFill.INSERT)
private Long tenantId;
/**
* id
*/
private Long communityId;
/**
*
*/

View File

@ -37,6 +37,7 @@ public class Question extends BaseEntity {
/**
* id
*/
@ApiModelProperty(value = "社区id")
private Long communityId;
/**
@ -66,6 +67,7 @@ public class Question extends BaseEntity {
/**
*
*/
@ApiModelProperty(value = "答复时间")
private Date replyTime;
/**

View File

@ -1,35 +0,0 @@
package com.mcwl.communityCenter.domain;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.mcwl.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
*
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("cc_user_community")
public class UserCommunity extends BaseEntity {
@TableId
private Long id;
/**
* id - id
*/
@TableField(fill = FieldFill.INSERT)
private Long tenantId;
/**
* id
*/
private Long communityId;
}

View File

@ -1,12 +1,9 @@
package com.mcwl.communityCenter.domain.dto;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.mcwl.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@ -17,7 +14,7 @@ import javax.validation.constraints.NotNull;
@Data
@TableName("cc_community")
@ApiModel(value = "社区请求参数")
public class CommunityDto {
public class CommunityRes {
/**
*

View File

@ -0,0 +1,27 @@
package com.mcwl.communityCenter.domain.dto;
import com.mcwl.common.core.page.PageDomain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull;
@Data
@ApiModel(value = "发布详情请求参数")
public class PublishDetailRes {
@ApiParam(value = "发布id", required = true)
@NotNull(message = "发布id不能为空")
private Long id;
@ApiParam(value = "租户id", required = true)
@NotNull(message = "租户id不能为空")
private Long tenantId;
@ApiParam(value = "社区id", required = true)
@NotNull(message = "社区id不能为空")
private Long communityId;
}

View File

@ -0,0 +1,25 @@
package com.mcwl.communityCenter.domain.dto;
import com.mcwl.common.core.page.PageDomain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull;
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "发布分页请求参数")
public class PublishPageRes extends PageDomain {
@NotNull(message = "社区id不能为空")
@ApiParam(value = "社区id", required = true)
private Long communityId;
@NotNull(message = "租户id不能为空")
@ApiParam(value = "租户id", required = true)
private Long tenantId;
}

View File

@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
@ -13,6 +14,18 @@ import java.util.Date;
@Data
@ApiModel(description = "发布请求参数")
public class PublishRes {
/**
* id
*/
@ApiModelProperty(value = "租户id", required = true)
@NotNull(message = "租户id不能为空")
private Long tenantId;
/**
* id
*/
@ApiModelProperty(value = "社区id", required = true)
@NotNull(message = "社区id不能为空")
private Long communityId;
/**
*
*/
@ -26,9 +39,4 @@ public class PublishRes {
@ApiModelProperty(value = "发布时间 - 定时发布")
private Date publishTime;
/**
*
*/
@ApiModelProperty(value = "状态")
private Integer status;
}

View File

@ -1,6 +1,8 @@
package com.mcwl.communityCenter.domain.dto;
import com.mcwl.common.core.page.PageDomain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ -8,9 +10,11 @@ import javax.validation.constraints.NotNull;
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "提问分页请求参数")
public class QuestionPageRes extends PageDomain {
@NotNull(message = "社区不能为空")
@ApiModelProperty(value = "社区id", required = true)
private Long communityId;
}

View File

@ -1,23 +1,28 @@
package com.mcwl.communityCenter.domain.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data
public class QuestionReplyDto {
@ApiModel(value = "回复问题")
public class QuestionReplyRes {
/**
* id
*/
@NotNull(message = "问题id不能为空")
@ApiModelProperty(value = "问题id", required = true)
private Long questionId;
/**
*
*/
@NotBlank(message = "回复内容不能为空")
@ApiModelProperty(value = "回复内容", required = true)
private String content;
}

View File

@ -1,47 +1,77 @@
package com.mcwl.communityCenter.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import springfox.documentation.annotations.ApiIgnore;
import java.util.Date;
/**
*
*/
@Data
@ApiModel(description = "发布信息")
public class PublishVo {
/**
*
*/
@ApiModelProperty(value = "主键")
private Long id;
/**
* id - id
*/
@ApiModelProperty(value = "租户id", hidden = true)
private Long tenantId;
/**
* id
*/
@ApiModelProperty(value = "社区id")
private Long communityId;
/**
* id
*/
@ApiModelProperty(value = "用户id")
private Long userId;
/**
*
*/
@ApiModelProperty(value = "用户名")
private String userName;
/**
*
*/
@ApiModelProperty(value = "头像")
private String avatar;
/**
*
*/
@ApiModelProperty(value = "内容")
private String content;
/**
* -
*/
@ApiModelProperty(value = "发布时间 - 定时发布")
private Date publishTime;
/**
*
*/
@ApiModelProperty(value = "点赞数")
private Integer likeNum;
/**
*
*/
@ApiModelProperty(value = "评论数")
private Integer commentNum;

View File

@ -21,9 +21,10 @@ public class CustomTenantHandler implements TenantLineHandler {
* .
*/
static {
tables.add("cc_publish");
// 发布表
// tables.add("cc_publish");
// 提问表
tables.add("cc_question");
tables.add("cc_user_community");
}

View File

@ -3,7 +3,16 @@ package com.mcwl.communityCenter.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mcwl.communityCenter.domain.Community;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import javax.validation.constraints.NotNull;
@Mapper
public interface CommunityMapper extends BaseMapper<Community> {
Community getByUserIdAndCommunityId(@NotNull(message = "租户id不能为空")
@Param("userId")
Long userId,
@NotNull(message = "社区id不能为空")
@Param("communityId")
Long communityId);
}

View File

@ -3,7 +3,18 @@ package com.mcwl.communityCenter.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mcwl.communityCenter.domain.Invite;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import javax.validation.constraints.NotNull;
import java.util.Set;
@Mapper
public interface InviteMapper extends BaseMapper<Invite> {
Set<Long> selectInviteIds(@NotNull(message = "租户id不能为空")
@Param("tenantId")
Long tenantId,
@NotNull(message = "社区id不能为空")
@Param("communityId")
Long communityId);
}

View File

@ -1,10 +0,0 @@
package com.mcwl.communityCenter.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mcwl.communityCenter.domain.Question;
import com.mcwl.communityCenter.domain.UserCommunity;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserCommunityMapper extends BaseMapper<UserCommunity> {
}

View File

@ -4,7 +4,14 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.mcwl.common.core.page.PageDomain;
import com.mcwl.common.core.page.TableDataInfo;
import com.mcwl.communityCenter.domain.Community;
import com.mcwl.communityCenter.domain.dto.CommunityRes;
public interface CommunityService extends IService<Community> {
TableDataInfo listByPage(PageDomain pageDomain);
/**
*
* @param communityRes
*/
void addCommunity(CommunityRes communityRes);
}

View File

@ -1,14 +1,28 @@
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.PageDomain;
import com.mcwl.common.core.page.TableDataInfo;
import com.mcwl.communityCenter.domain.Community;
import com.mcwl.communityCenter.domain.Publish;
import com.mcwl.communityCenter.domain.dto.PublishDetailRes;
import com.mcwl.communityCenter.domain.dto.PublishPageRes;
import com.mcwl.communityCenter.domain.dto.PublishRes;
import com.mcwl.communityCenter.domain.vo.PublishVo;
public interface PublishService extends IService<Publish> {
TableDataInfo listByPage(PageDomain pageDomain);
import javax.validation.constraints.NotNull;
import java.util.List;
PublishVo getDetail(Long id);
public interface PublishService extends IService<Publish> {
PublishVo getDetail(PublishDetailRes publishDetailRes);
/**
*
* @param publishRes
*/
AjaxResult publish(PublishRes publishRes);
TableDataInfo getPublishList(PublishPageRes publishPageRes);
}

View File

@ -2,10 +2,9 @@ package com.mcwl.communityCenter.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mcwl.common.core.page.TableDataInfo;
import com.mcwl.communityCenter.domain.Publish;
import com.mcwl.communityCenter.domain.Question;
import com.mcwl.communityCenter.domain.dto.QuestionPageRes;
import com.mcwl.communityCenter.domain.dto.QuestionReplyDto;
import com.mcwl.communityCenter.domain.dto.QuestionReplyRes;
import com.mcwl.communityCenter.domain.dto.QuestionRes;
import com.mcwl.communityCenter.domain.vo.QuestionVo;
@ -26,7 +25,7 @@ public interface QuestionService extends IService<Question> {
/**
*
* @param questionReplyDto
* @param questionReplyRes
*/
void reply(QuestionReplyDto questionReplyDto);
void reply(QuestionReplyRes questionReplyRes);
}

View File

@ -1,8 +0,0 @@
package com.mcwl.communityCenter.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mcwl.communityCenter.domain.Question;
import com.mcwl.communityCenter.domain.UserCommunity;
public interface UserCommunityService extends IService<UserCommunity> {
}

View File

@ -1,18 +1,22 @@
package com.mcwl.communityCenter.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.page.PageDomain;
import com.mcwl.common.core.page.TableDataInfo;
import com.mcwl.common.utils.HttpUtil;
import com.mcwl.common.utils.SecurityUtils;
import com.mcwl.common.utils.StringUtils;
import com.mcwl.communityCenter.domain.Community;
import com.mcwl.communityCenter.domain.dto.CommunityRes;
import com.mcwl.communityCenter.domain.vo.CommunityVo;
import com.mcwl.communityCenter.mapper.CommunityMapper;
import com.mcwl.communityCenter.service.CommunityService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
@ -20,6 +24,7 @@ import java.util.List;
import java.util.Objects;
@Service
@RequiredArgsConstructor
public class CommunityServiceImpl extends ServiceImpl<CommunityMapper, Community> implements CommunityService {
@ -37,7 +42,7 @@ public class CommunityServiceImpl extends ServiceImpl<CommunityMapper, Community
OrderItem orderItem = new OrderItem(pageDomain.getOrderByColumn(), isAsc);
page.addOrder(orderItem);
baseMapper.selectPage(page, null);
baseMapper.selectPage(page, new LambdaQueryWrapper<Community>().eq(Community::getUserId, SecurityUtils.getUserId()));
List<Community> communityList = page.getRecords();
List<CommunityVo> communityVoList = new ArrayList<>();
@ -56,5 +61,14 @@ public class CommunityServiceImpl extends ServiceImpl<CommunityMapper, Community
return tableDataInfo;
}
@Override
public void addCommunity(CommunityRes communityRes) {
Community community = new Community();
BeanUtil.copyProperties(communityRes, community);
community.setUserId(SecurityUtils.getUserId());
baseMapper.insert(community);
}
}

View File

@ -1,52 +1,40 @@
package com.mcwl.communityCenter.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.page.PageDomain;
import com.mcwl.common.core.page.TableDataInfo;
import com.mcwl.common.utils.SecurityUtils;
import com.mcwl.common.utils.ShareCodeUtils;
import com.mcwl.communityCenter.constant.InviteConstant;
import com.mcwl.communityCenter.constant.StatusConstant;
import com.mcwl.communityCenter.domain.Community;
import com.mcwl.communityCenter.domain.Invite;
import com.mcwl.communityCenter.domain.InviteCodeMapping;
import com.mcwl.communityCenter.domain.Publish;
import com.mcwl.communityCenter.domain.UserCommunity;
import com.mcwl.communityCenter.domain.vo.PublishVo;
import com.mcwl.communityCenter.mapper.InviteMapper;
import com.mcwl.communityCenter.mapper.PublishMapper;
import com.mcwl.communityCenter.service.CommunityService;
import com.mcwl.communityCenter.service.InviteCodeMappingService;
import com.mcwl.communityCenter.service.InviteService;
import com.mcwl.communityCenter.service.PublishService;
import com.mcwl.communityCenter.service.UserCommunityService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@Service
@RequiredArgsConstructor
public class InviteServiceImpl extends ServiceImpl<InviteMapper, Invite> implements InviteService {
private final UserCommunityService userCommunityService;
private final InviteCodeMappingService inviteCodeMappingService;
private final CommunityService communityService;
@Override
public String getInviteCode(Long communityId) {
// 查询用户的社区
UserCommunity userCommunity = userCommunityService.lambdaQuery()
.eq(UserCommunity::getCommunityId, communityId)
Community userCommunity = communityService.lambdaQuery()
.eq(Community::getId, communityId)
.eq(Community::getUserId, SecurityUtils.getUserId())
.one();
if (Objects.isNull(userCommunity)) {

View File

@ -1,79 +1,143 @@
package com.mcwl.communityCenter.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.github.pagehelper.PageInfo;
import com.mcwl.common.constant.HttpStatus;
import com.mcwl.common.core.page.PageDomain;
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.domain.Community;
import com.mcwl.communityCenter.domain.Publish;
import com.mcwl.communityCenter.domain.Question;
import com.mcwl.communityCenter.domain.dto.PublishDetailRes;
import com.mcwl.communityCenter.domain.dto.PublishPageRes;
import com.mcwl.communityCenter.domain.dto.PublishRes;
import com.mcwl.communityCenter.domain.vo.PublishVo;
import com.mcwl.communityCenter.mapper.CommunityMapper;
import com.mcwl.communityCenter.mapper.InviteMapper;
import com.mcwl.communityCenter.mapper.PublishMapper;
import com.mcwl.communityCenter.mapper.QuestionMapper;
import com.mcwl.communityCenter.service.PublishService;
import com.mcwl.system.service.ISysUserService;
import lombok.RequiredArgsConstructor;
import nonapi.io.github.classgraph.concurrency.AutoCloseableExecutorService;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.*;
import java.util.concurrent.ThreadPoolExecutor;
@Service
@RequiredArgsConstructor
public class PublishServiceImpl extends ServiceImpl<PublishMapper, Publish> implements PublishService {
@Override
public TableDataInfo listByPage(PageDomain pageDomain) {
// 分页查询
Page<Publish> page = new Page<>(pageDomain.getPageNum(), pageDomain.getPageSize());
boolean isAsc = Objects.equals(pageDomain.getIsAsc(), "asc");
OrderItem orderItem = new OrderItem(pageDomain.getOrderByColumn(), isAsc);
page.addOrder(orderItem);
// 条件设置
LambdaQueryWrapper<Publish> lqw = new LambdaQueryWrapper<>();
private final QuestionMapper questionMapper;
// 查询
baseMapper.selectPage(page, lqw);
private final ISysUserService sysUserService;
// 返回数据
List<PublishVo> publishVoList = new ArrayList<>();
private final InviteMapper inviteMapper;
// 封装数据
List<Publish> publishList = page.getRecords();
for (Publish publish : publishList) {
PublishVo publishVo = new PublishVo();
BeanUtil.copyProperties(publish, publishVo);
publishVo.setUserName(SecurityUtils.getUsername());
publishVo.setAvatar(SecurityUtils.getLoginUser().getUser().getAvatar());
// TODO 评论数
publishVo.setCommentNum(0);
publishVoList.add(publishVo);
private CommunityMapper userCommunityMapper;
}
private final ThreadPoolExecutor threadPoll = new AutoCloseableExecutorService(10);
TableDataInfo rspData = new TableDataInfo();
rspData.setCode(HttpStatus.SUCCESS);
rspData.setMsg("查询成功");
rspData.setRows(publishVoList);
rspData.setTotal(page.getTotal());
return rspData;
}
@Override
public PublishVo getDetail(Long id) {
Publish publish = baseMapper.selectById(id);
public PublishVo getDetail(PublishDetailRes publishDetailRes) {
Long id = publishDetailRes.getId();
Long tenantId = publishDetailRes.getTenantId();
Long communityId = publishDetailRes.getCommunityId();
Publish publish = baseMapper.selectOne(new LambdaQueryWrapper<Publish>()
.eq(Publish::getId, id)
.eq(Publish::getTenantId, tenantId)
.eq(Publish::getCommunityId, communityId));
if (Objects.isNull(publish)) {
return null;
}
PublishVo publishVo = new PublishVo();
BeanUtil.copyProperties(publish, publishVo);
publishVo.setUserName(SecurityUtils.getUsername());
publishVo.setAvatar(SecurityUtils.getLoginUser().getUser().getAvatar());
Long userId = publish.getUserId();
SysUser sysUser = sysUserService.selectUserById(userId);
publishVo.setUserName(sysUser.getUserName());
publishVo.setAvatar(sysUser.getAvatar());
return publishVo;
}
@Override
public AjaxResult publish(PublishRes publishRes) {
Long userId = SecurityUtils.getUserId();
Community community = userCommunityMapper.getByUserIdAndCommunityId(publishRes.getTenantId(), publishRes.getCommunityId());
if (Objects.isNull(community)) {
return AjaxResult.error(HttpStatus.ERROR, "用户社区未创建");
}
Set<Long> invites = inviteMapper.selectInviteIds(publishRes.getTenantId(), publishRes.getCommunityId());
// 判断用户是否是群主
if (!Objects.equals(userId, publishRes.getTenantId())) {
// 判断用户是否被邀请
if (invites.isEmpty() || !invites.contains(userId)) {
return AjaxResult.error(HttpStatus.ERROR, "您没有被邀请");
}
}
Publish publish = new Publish();
BeanUtil.copyProperties(publishRes, publish);
publish.setUserId(userId);
if (Objects.isNull(publish.getPublishTime())) {
publish.setPublishTime(new Date());
}
baseMapper.insert(publish);
return AjaxResult.success();
}
@Override
public TableDataInfo getPublishList(PublishPageRes publishPageRes) {
Page<Publish> page = new Page<>(publishPageRes.getPageNum(), publishPageRes.getPageSize());
if (StringUtils.isBlank(publishPageRes.getOrderByColumn())) {
publishPageRes.setOrderByColumn("create_time");
}
boolean isAsc = Objects.equals(publishPageRes.getIsAsc(), "asc");
OrderItem orderItem = new OrderItem(publishPageRes.getOrderByColumn(), isAsc);
page.addOrder(orderItem);
// 查询条件
LambdaQueryWrapper<Publish> lqw = new LambdaQueryWrapper<>();
lqw.eq(Publish::getCommunityId, publishPageRes.getCommunityId())
.eq(Publish::getTenantId, publishPageRes.getTenantId());
baseMapper.selectPage(page, lqw);
List<Publish> publishList = page.getRecords();
List<PublishVo> publishVoList = new ArrayList<>();
for (Publish publish : publishList) {
PublishVo publishVo = new PublishVo();
BeanUtil.copyProperties(publish, publishVo);
Long userId = publish.getUserId();
SysUser sysUser = sysUserService.selectUserById(userId);
publishVo.setUserName(sysUser.getUserName());
publishVo.setAvatar(sysUser.getAvatar());
publishVoList.add(publishVo);
}
// 封装返回
TableDataInfo tableDataInfo = new TableDataInfo();
tableDataInfo.setRows(publishVoList);
tableDataInfo.setTotal(page.getTotal());
tableDataInfo.setCode(HttpStatus.SUCCESS);
tableDataInfo.setMsg("查询成功");
return tableDataInfo;
}
}

View File

@ -1,7 +1,6 @@
package com.mcwl.communityCenter.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -13,18 +12,13 @@ import com.mcwl.common.utils.SecurityUtils;
import com.mcwl.common.utils.StringUtils;
import com.mcwl.communityCenter.constant.StatusConstant;
import com.mcwl.communityCenter.domain.CommunityAdvice;
import com.mcwl.communityCenter.domain.Invite;
import com.mcwl.communityCenter.domain.Publish;
import com.mcwl.communityCenter.domain.Question;
import com.mcwl.communityCenter.domain.dto.QuestionPageRes;
import com.mcwl.communityCenter.domain.dto.QuestionReplyDto;
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.PublishMapper;
import com.mcwl.communityCenter.mapper.QuestionMapper;
import com.mcwl.communityCenter.service.InviteService;
import com.mcwl.communityCenter.service.PublishService;
import com.mcwl.communityCenter.service.QuestionService;
import com.mcwl.system.service.ISysUserService;
import lombok.RequiredArgsConstructor;
@ -152,12 +146,12 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
/**
*
*
* @param questionReplyDto
* @param questionReplyRes
*/
@Override
public void reply(QuestionReplyDto questionReplyDto) {
public void reply(QuestionReplyRes questionReplyRes) {
Long questionId = questionReplyDto.getQuestionId();
Long questionId = questionReplyRes.getQuestionId();
LambdaQueryWrapper<Question> lqw = new LambdaQueryWrapper<>();
lqw.eq(Question::getId, questionId)
.eq(Question::getStatus, StatusConstant.STATUS_UNREPLIED);
@ -169,7 +163,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
return;
}
question.setContent(questionReplyDto.getContent());
question.setContent(questionReplyRes.getContent());
question.setStatus(StatusConstant.STATUS_REPLIED);
question.setReplyTime(new Date());

View File

@ -1,14 +0,0 @@
package com.mcwl.communityCenter.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mcwl.communityCenter.domain.Question;
import com.mcwl.communityCenter.domain.UserCommunity;
import com.mcwl.communityCenter.mapper.QuestionMapper;
import com.mcwl.communityCenter.mapper.UserCommunityMapper;
import com.mcwl.communityCenter.service.QuestionService;
import com.mcwl.communityCenter.service.UserCommunityService;
import org.springframework.stereotype.Service;
@Service
public class UserCommunityServiceImpl extends ServiceImpl<UserCommunityMapper, UserCommunity> implements UserCommunityService {
}

View File

@ -0,0 +1,14 @@
<?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.mcwl.communityCenter.mapper.CommunityMapper">
<select id="getByUserIdAndCommunityId" resultType="com.mcwl.communityCenter.domain.Community">
select id, user_id
from cc_community
where user_id = #{userId}
and id = #{communityId}
and del_flag = '0';
</select>
</mapper>

View File

@ -0,0 +1,14 @@
<?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.mcwl.communityCenter.mapper.InviteMapper">
<select id="selectInviteIds" resultType="java.lang.Long">
select invitee_user_id
from cc_invite
where tenant_id = #{tenantId}
and community_id = #{communityId}
and del_flag = '0'
</select>
</mapper>