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.PageDomain;
import com.mcwl.common.core.page.TableDataInfo; import com.mcwl.common.core.page.TableDataInfo;
import com.mcwl.communityCenter.domain.Community; import com.mcwl.communityCenter.domain.Community;
import com.mcwl.communityCenter.domain.dto.CommunityDto; import com.mcwl.communityCenter.domain.dto.CommunityRes;
import com.mcwl.communityCenter.domain.vo.CommunityVo;
import com.mcwl.communityCenter.service.CommunityService; import com.mcwl.communityCenter.service.CommunityService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; 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.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.util.List;
/** /**
* *
@ -46,15 +43,13 @@ public class CommunityController {
/** /**
* *
* *
* @param communityDto * @param communityRes
* @return * @return
*/ */
@ApiOperation(value = "添加社区") @ApiOperation(value = "添加社区")
@PostMapping("add") @PostMapping("add")
public AjaxResult addCommunity(@RequestBody CommunityDto communityDto) { public AjaxResult addCommunity(@RequestBody CommunityRes communityRes) {
Community community = new Community(); communityService.addCommunity(communityRes);
BeanUtil.copyProperties(communityDto, community);
communityService.save(community);
return AjaxResult.success(); return AjaxResult.success();
} }
@ -65,7 +60,7 @@ public class CommunityController {
* @return * @return
*/ */
@ApiOperation(value = "删除社区") @ApiOperation(value = "删除社区")
@PostMapping("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)
Long id) { Long id) {

View File

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

View File

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

View File

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

View File

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

View File

@ -21,6 +21,12 @@ public class Community extends BaseEntity {
@ApiModelProperty(value = "社区id") @ApiModelProperty(value = "社区id")
private Long 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) @TableField(fill = FieldFill.INSERT)
private Long tenantId; private Long tenantId;
/**
* id
*/
private Long communityId;
/** /**
* *
*/ */

View File

@ -37,6 +37,7 @@ public class Question extends BaseEntity {
/** /**
* id * id
*/ */
@ApiModelProperty(value = "社区id")
private Long communityId; private Long communityId;
/** /**
@ -66,6 +67,7 @@ public class Question extends BaseEntity {
/** /**
* *
*/ */
@ApiModelProperty(value = "答复时间")
private Date replyTime; 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; package com.mcwl.communityCenter.domain.dto;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.mcwl.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
@ -17,7 +14,7 @@ import javax.validation.constraints.NotNull;
@Data @Data
@TableName("cc_community") @TableName("cc_community")
@ApiModel(value = "社区请求参数") @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 lombok.Data;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date; import java.util.Date;
/** /**
@ -13,6 +14,18 @@ import java.util.Date;
@Data @Data
@ApiModel(description = "发布请求参数") @ApiModel(description = "发布请求参数")
public class PublishRes { 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 = "发布时间 - 定时发布") @ApiModelProperty(value = "发布时间 - 定时发布")
private Date publishTime; private Date publishTime;
/**
*
*/
@ApiModelProperty(value = "状态")
private Integer status;
} }

View File

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

View File

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

View File

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

View File

@ -21,9 +21,10 @@ public class CustomTenantHandler implements TenantLineHandler {
* . * .
*/ */
static { static {
tables.add("cc_publish"); // 发布表
// tables.add("cc_publish");
// 提问表
tables.add("cc_question"); 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.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mcwl.communityCenter.domain.Community; import com.mcwl.communityCenter.domain.Community;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import javax.validation.constraints.NotNull;
@Mapper @Mapper
public interface CommunityMapper extends BaseMapper<Community> { 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.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mcwl.communityCenter.domain.Invite; import com.mcwl.communityCenter.domain.Invite;
import org.apache.ibatis.annotations.Mapper; 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 @Mapper
public interface InviteMapper extends BaseMapper<Invite> { 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.PageDomain;
import com.mcwl.common.core.page.TableDataInfo; import com.mcwl.common.core.page.TableDataInfo;
import com.mcwl.communityCenter.domain.Community; import com.mcwl.communityCenter.domain.Community;
import com.mcwl.communityCenter.domain.dto.CommunityRes;
public interface CommunityService extends IService<Community> { public interface CommunityService extends IService<Community> {
TableDataInfo listByPage(PageDomain pageDomain); TableDataInfo listByPage(PageDomain pageDomain);
/**
*
* @param communityRes
*/
void addCommunity(CommunityRes communityRes);
} }

View File

@ -1,14 +1,28 @@
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.PageDomain; import com.mcwl.common.core.page.PageDomain;
import com.mcwl.common.core.page.TableDataInfo; import com.mcwl.common.core.page.TableDataInfo;
import com.mcwl.communityCenter.domain.Community; import com.mcwl.communityCenter.domain.Community;
import com.mcwl.communityCenter.domain.Publish; 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.domain.vo.PublishVo;
public interface PublishService extends IService<Publish> { import javax.validation.constraints.NotNull;
TableDataInfo listByPage(PageDomain pageDomain); 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.baomidou.mybatisplus.extension.service.IService;
import com.mcwl.common.core.page.TableDataInfo; import com.mcwl.common.core.page.TableDataInfo;
import com.mcwl.communityCenter.domain.Publish;
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;
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.dto.QuestionRes;
import com.mcwl.communityCenter.domain.vo.QuestionVo; 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; package com.mcwl.communityCenter.service.impl;
import cn.hutool.core.bean.BeanUtil; 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.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.page.PageDomain; import com.mcwl.common.core.page.PageDomain;
import com.mcwl.common.core.page.TableDataInfo; 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.common.utils.StringUtils;
import com.mcwl.communityCenter.domain.Community; import com.mcwl.communityCenter.domain.Community;
import com.mcwl.communityCenter.domain.dto.CommunityRes;
import com.mcwl.communityCenter.domain.vo.CommunityVo; import com.mcwl.communityCenter.domain.vo.CommunityVo;
import com.mcwl.communityCenter.mapper.CommunityMapper; import com.mcwl.communityCenter.mapper.CommunityMapper;
import com.mcwl.communityCenter.service.CommunityService; import com.mcwl.communityCenter.service.CommunityService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
@ -20,6 +24,7 @@ import java.util.List;
import java.util.Objects; import java.util.Objects;
@Service @Service
@RequiredArgsConstructor
public class CommunityServiceImpl extends ServiceImpl<CommunityMapper, Community> implements CommunityService { 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); OrderItem orderItem = new OrderItem(pageDomain.getOrderByColumn(), isAsc);
page.addOrder(orderItem); page.addOrder(orderItem);
baseMapper.selectPage(page, null); baseMapper.selectPage(page, new LambdaQueryWrapper<Community>().eq(Community::getUserId, SecurityUtils.getUserId()));
List<Community> communityList = page.getRecords(); List<Community> communityList = page.getRecords();
List<CommunityVo> communityVoList = new ArrayList<>(); List<CommunityVo> communityVoList = new ArrayList<>();
@ -56,5 +61,14 @@ public class CommunityServiceImpl extends ServiceImpl<CommunityMapper, Community
return tableDataInfo; 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; 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.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.SecurityUtils;
import com.mcwl.common.utils.ShareCodeUtils; import com.mcwl.common.utils.ShareCodeUtils;
import com.mcwl.communityCenter.constant.InviteConstant; import com.mcwl.communityCenter.constant.InviteConstant;
import com.mcwl.communityCenter.constant.StatusConstant; import com.mcwl.communityCenter.constant.StatusConstant;
import com.mcwl.communityCenter.domain.Community;
import com.mcwl.communityCenter.domain.Invite; import com.mcwl.communityCenter.domain.Invite;
import com.mcwl.communityCenter.domain.InviteCodeMapping; 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.InviteMapper;
import com.mcwl.communityCenter.mapper.PublishMapper; import com.mcwl.communityCenter.service.CommunityService;
import com.mcwl.communityCenter.service.InviteCodeMappingService; import com.mcwl.communityCenter.service.InviteCodeMappingService;
import com.mcwl.communityCenter.service.InviteService; import com.mcwl.communityCenter.service.InviteService;
import com.mcwl.communityCenter.service.PublishService;
import com.mcwl.communityCenter.service.UserCommunityService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects; import java.util.Objects;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class InviteServiceImpl extends ServiceImpl<InviteMapper, Invite> implements InviteService { public class InviteServiceImpl extends ServiceImpl<InviteMapper, Invite> implements InviteService {
private final UserCommunityService userCommunityService;
private final InviteCodeMappingService inviteCodeMappingService; private final InviteCodeMappingService inviteCodeMappingService;
private final CommunityService communityService;
@Override @Override
public String getInviteCode(Long communityId) { public String getInviteCode(Long communityId) {
// 查询用户的社区 // 查询用户的社区
UserCommunity userCommunity = userCommunityService.lambdaQuery() Community userCommunity = communityService.lambdaQuery()
.eq(UserCommunity::getCommunityId, communityId) .eq(Community::getId, communityId)
.eq(Community::getUserId, SecurityUtils.getUserId())
.one(); .one();
if (Objects.isNull(userCommunity)) { if (Objects.isNull(userCommunity)) {

View File

@ -1,79 +1,143 @@
package com.mcwl.communityCenter.service.impl; package com.mcwl.communityCenter.service.impl;
import cn.hutool.core.bean.BeanUtil; 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.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.OrderItem; 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.github.pagehelper.PageInfo;
import com.mcwl.common.constant.HttpStatus; 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.core.page.TableDataInfo;
import com.mcwl.common.utils.SecurityUtils; 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.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.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.PublishMapper;
import com.mcwl.communityCenter.mapper.QuestionMapper;
import com.mcwl.communityCenter.service.PublishService; 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 org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.*;
import java.util.List; import java.util.concurrent.ThreadPoolExecutor;
import java.util.Objects;
@Service @Service
@RequiredArgsConstructor
public class PublishServiceImpl extends ServiceImpl<PublishMapper, Publish> implements PublishService { 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);
// 条件设置 private final QuestionMapper questionMapper;
LambdaQueryWrapper<Publish> lqw = new LambdaQueryWrapper<>();
// 查询 private final ISysUserService sysUserService;
baseMapper.selectPage(page, lqw);
// 返回数据 private final InviteMapper inviteMapper;
List<PublishVo> publishVoList = new ArrayList<>();
// 封装数据 private CommunityMapper userCommunityMapper;
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 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 @Override
public PublishVo getDetail(Long id) { public PublishVo getDetail(PublishDetailRes publishDetailRes) {
Long id = publishDetailRes.getId();
Publish publish = baseMapper.selectById(id); 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)) { if (Objects.isNull(publish)) {
return null; return null;
} }
PublishVo publishVo = new PublishVo(); PublishVo publishVo = new PublishVo();
BeanUtil.copyProperties(publish, publishVo); BeanUtil.copyProperties(publish, publishVo);
publishVo.setUserName(SecurityUtils.getUsername()); Long userId = publish.getUserId();
publishVo.setAvatar(SecurityUtils.getLoginUser().getUser().getAvatar()); SysUser sysUser = sysUserService.selectUserById(userId);
publishVo.setUserName(sysUser.getUserName());
publishVo.setAvatar(sysUser.getAvatar());
return publishVo; 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; package com.mcwl.communityCenter.service.impl;
import cn.hutool.core.bean.BeanUtil; 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.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.common.utils.StringUtils;
import com.mcwl.communityCenter.constant.StatusConstant; import com.mcwl.communityCenter.constant.StatusConstant;
import com.mcwl.communityCenter.domain.CommunityAdvice; 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.Question;
import com.mcwl.communityCenter.domain.dto.QuestionPageRes; 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.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.PublishMapper;
import com.mcwl.communityCenter.mapper.QuestionMapper; 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.communityCenter.service.QuestionService;
import com.mcwl.system.service.ISysUserService; import com.mcwl.system.service.ISysUserService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -152,12 +146,12 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
/** /**
* *
* *
* @param questionReplyDto * @param questionReplyRes
*/ */
@Override @Override
public void reply(QuestionReplyDto questionReplyDto) { public void reply(QuestionReplyRes questionReplyRes) {
Long questionId = questionReplyDto.getQuestionId(); Long questionId = questionReplyRes.getQuestionId();
LambdaQueryWrapper<Question> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Question> lqw = new LambdaQueryWrapper<>();
lqw.eq(Question::getId, questionId) lqw.eq(Question::getId, questionId)
.eq(Question::getStatus, StatusConstant.STATUS_UNREPLIED); .eq(Question::getStatus, StatusConstant.STATUS_UNREPLIED);
@ -169,7 +163,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
return; return;
} }
question.setContent(questionReplyDto.getContent()); question.setContent(questionReplyRes.getContent());
question.setStatus(StatusConstant.STATUS_REPLIED); question.setStatus(StatusConstant.STATUS_REPLIED);
question.setReplyTime(new Date()); 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>