feat:社区

feature/resource
yang 2025-01-16 17:26:12 +08:00
parent 7efb7973ef
commit 02d8dc45dd
26 changed files with 550 additions and 19 deletions

View File

@ -2,25 +2,61 @@ package com.mcwl.web.controller.communityCenter;
import com.mcwl.communityCenter.domain.Community;
import com.mcwl.communityCenter.service.CommunityCenterService;
import com.mcwl.communityCenter.service.CommunityService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
*
*/
@RestController
@RequestMapping("community")
@RequiredArgsConstructor
public class CommunityController {
private final CommunityCenterService communityCenterService;
private final CommunityService communityService;
/**
*
* @return
*/
@GetMapping("list")
public List<Community> getCommunityList(){
return communityCenterService.list();
return communityService.list();
}
/**
*
* @param community
* @return
*/
@PostMapping("add")
public boolean addCommunity(@RequestBody Community community){
return communityService.save(community);
}
/**
*
* @param id id
* @return
*/
@PostMapping("delete")
public boolean deleteCommunity(Long id){
return communityService.removeById(id);
}
/**
*
* @param community
* @return
*/
@PostMapping("update")
public boolean updateCommunity(@RequestBody Community community){
return communityService.updateById(community);
}
}

View File

@ -0,0 +1,33 @@
package com.mcwl.web.controller.communityCenter;
import com.mcwl.common.core.domain.AjaxResult;
import com.mcwl.communityCenter.service.InviteMappingService;
import com.mcwl.communityCenter.service.InviteService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
*
*/
@RestController
@RequestMapping("invite")
@RequiredArgsConstructor
public class InviteController {
private final InviteService inviteService;
/**
*
*/
@GetMapping("inviteCode")
public AjaxResult inviteCode(){
// 获取邀请码链接
String inviteCode = inviteService.getInviteCode();
return AjaxResult.success(inviteCode);
}
}

View File

@ -1,17 +1,22 @@
package com.mcwl.web.controller.communityCenter;
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.service.CommunityCenterService;
import com.mcwl.communityCenter.domain.dto.PublishRes;
import com.mcwl.communityCenter.domain.vo.PublishVo;
import com.mcwl.communityCenter.service.PublishService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Objects;
/**
*
*/
@RestController
@RequestMapping("publish")
@RequiredArgsConstructor
@ -20,9 +25,45 @@ public class PublishController {
private final PublishService publishService;
@GetMapping("list")
public List<Publish> getCommunityList(){
return publishService.list();
/**
*
*
* @return
*/
@PostMapping("list")
public TableDataInfo getCommunityList(@RequestBody PageDomain pageDomain) {
return publishService.listByPage(pageDomain);
}
/**
*
*/
@GetMapping("detail")
public AjaxResult getPublishDetail(Long id) {
PublishVo publishVo = publishService.getDetail(id);
if (Objects.isNull(publishVo)) {
return AjaxResult.error("获取详情失败");
}
return AjaxResult.success(publishVo);
}
/**
*
*/
@PostMapping("add")
public AjaxResult addPublish(@RequestBody PublishRes publishRes) {
Publish publish = new Publish();
BeanUtil.copyProperties(publishRes, publish);
return AjaxResult.success(publishService.save(publish));
}
/**
*
*/
@GetMapping("remove")
public AjaxResult deletePublish(Long id) {
return AjaxResult.success(publishService.removeById(id));
}
}

View File

@ -0,0 +1,19 @@
package com.mcwl.web.controller.communityCenter;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
*
*/
@RestController
@RequestMapping("question")
@RequiredArgsConstructor
public class QuestionController {
}

View File

@ -152,5 +152,17 @@ public class MemberController {
return AjaxResult.success(unitPrice);
}
/**
*
*/
@GetMapping("isMember")
public AjaxResult isMember() {
Long userId = SecurityUtils.getUserId();
Member member = memberService.getUseUserMemberByUserId(userId);
if (Optional.ofNullable(member).isPresent()) {
return AjaxResult.success(true);
}
return AjaxResult.success(false);
}
}

View File

@ -47,6 +47,15 @@ public class SysUserController extends BaseController
@Autowired
private ISysPostService postService;
/**
* id
*/
@GetMapping("/getUserId")
public AjaxResult getSysUserId() {
Long userId = SecurityUtils.getUserId();
return AjaxResult.success(userId);
}
/**
*
*/

View File

@ -5,6 +5,7 @@ import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.fasterxml.jackson.annotation.JsonFormat;
@ -28,17 +29,21 @@ public class BaseEntity implements Serializable
private String searchValue;
/** 创建者 */
@TableField(fill = FieldFill.INSERT)
private String createBy;
/** 创建时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField(fill = FieldFill.INSERT)
private Date createTime;
/** 更新者 */
@TableField(fill = FieldFill.UPDATE)
private String updateBy;
/** 更新时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField(fill = FieldFill.UPDATE)
private Date updateTime;
// 删除标志0代表存在 2代表删除

View File

@ -0,0 +1,33 @@
package com.mcwl.common.handler;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.mcwl.common.utils.SecurityUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
/**
* mybatis-plus
*/
@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createBy", SecurityUtils.getUsername(), metaObject);
this.setFieldValByName("createTime", new Date(), metaObject);
this.setFieldValByName("tenantId", SecurityUtils.getUserId(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateBy", SecurityUtils.getUsername(), metaObject);
this.setFieldValByName("updateTime", new Date(), metaObject);
}
}

View File

@ -7,7 +7,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
/**
*
*
*/
@Data
@EqualsAndHashCode(callSuper = true)

View File

@ -0,0 +1,34 @@
package com.mcwl.communityCenter.domain;
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_invite")
public class Invite extends BaseEntity {
@TableId
private Long id;
/**
* id - id
*/
private Long tenantId;
/**
*
*/
private Long inviteeUserId;
/**
*
*/
private String type;
}

View File

@ -0,0 +1,34 @@
package com.mcwl.communityCenter.domain;
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_invite_mapping")
public class InviteMapping extends BaseEntity {
@TableId
private String id;
/**
* id - id
*/
private String tenantId;
/**
*
*/
private String inviteUrl;
/**
*
*/
private String status;
}

View File

@ -1,6 +1,8 @@
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;
@ -24,6 +26,7 @@ public class Publish extends BaseEntity {
/**
* id - id
*/
@TableField(fill = FieldFill.INSERT)
private Long tenantId;
/**
@ -36,6 +39,16 @@ public class Publish extends BaseEntity {
*/
private Date publishTime;
/**
*
*/
private Integer likeNum;
/**
*
*/
private Integer commentNum;
/**
*
*/

View File

@ -1,6 +1,8 @@
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;
@ -22,6 +24,7 @@ public class Question extends BaseEntity {
/**
* id - id
*/
@TableField(fill = FieldFill.INSERT)
private Long tenantId;
/**
@ -34,6 +37,11 @@ public class Question extends BaseEntity {
*/
private String content;
/**
* id
*/
private Long replyUserId;
/**
*
*/

View File

@ -1,6 +1,8 @@
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;
@ -22,6 +24,7 @@ public class UserCommunity extends BaseEntity {
/**
* id - id
*/
@TableField(fill = FieldFill.INSERT)
private Long tenantId;
/**

View File

@ -0,0 +1,28 @@
package com.mcwl.communityCenter.domain.dto;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.Date;
/**
*
*/
@Data
public class PublishRes {
/**
*
*/
@NotBlank(message = "内容不能为空")
private String content;
/**
* -
*/
private Date publishTime;
/**
*
*/
private Integer status;
}

View File

@ -0,0 +1,50 @@
package com.mcwl.communityCenter.domain.vo;
import lombok.Data;
import java.util.Date;
@Data
public class PublishVo {
private Long id;
/**
* id - id
*/
private Long tenantId;
/**
*
*/
private String userName;
/**
*
*/
private String avatar;
/**
*
*/
private String content;
/**
* -
*/
private Date publishTime;
/**
*
*/
private Integer likeNum;
/**
*
*/
private Integer commentNum;
}

View File

@ -0,0 +1,11 @@
package com.mcwl.communityCenter.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mcwl.communityCenter.domain.Community;
import com.mcwl.communityCenter.domain.Invite;
import com.mcwl.communityCenter.domain.InviteMapping;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface InviteMapper extends BaseMapper<Invite> {
}

View File

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

View File

@ -3,5 +3,5 @@ package com.mcwl.communityCenter.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mcwl.communityCenter.domain.Community;
public interface CommunityCenterService extends IService<Community> {
public interface CommunityService extends IService<Community> {
}

View File

@ -0,0 +1,9 @@
package com.mcwl.communityCenter.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mcwl.communityCenter.domain.Invite;
import com.mcwl.communityCenter.domain.InviteMapping;
public interface InviteMappingService extends IService<InviteMapping> {
String getInviteCode();
}

View File

@ -0,0 +1,12 @@
package com.mcwl.communityCenter.service;
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.Invite;
import com.mcwl.communityCenter.domain.Publish;
import com.mcwl.communityCenter.domain.vo.PublishVo;
public interface InviteService extends IService<Invite> {
String getInviteCode();
}

View File

@ -1,8 +1,14 @@
package com.mcwl.communityCenter.service;
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.Publish;
import com.mcwl.communityCenter.domain.vo.PublishVo;
public interface PublishService extends IService<Publish> {
TableDataInfo listByPage(PageDomain pageDomain);
PublishVo getDetail(Long id);
}

View File

@ -3,9 +3,9 @@ package com.mcwl.communityCenter.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mcwl.communityCenter.domain.Community;
import com.mcwl.communityCenter.mapper.CommunityMapper;
import com.mcwl.communityCenter.service.CommunityCenterService;
import com.mcwl.communityCenter.service.CommunityService;
import org.springframework.stereotype.Service;
@Service
public class CommunityCenterServiceImpl extends ServiceImpl<CommunityMapper, Community> implements CommunityCenterService {
public class CommunityServiceImpl extends ServiceImpl<CommunityMapper, Community> implements CommunityService {
}

View File

@ -0,0 +1,25 @@
package com.mcwl.communityCenter.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mcwl.communityCenter.domain.Invite;
import com.mcwl.communityCenter.domain.InviteMapping;
import com.mcwl.communityCenter.mapper.InviteMapper;
import com.mcwl.communityCenter.mapper.InviteMappingMapper;
import com.mcwl.communityCenter.service.InviteMappingService;
import com.mcwl.communityCenter.service.InviteService;
import org.springframework.stereotype.Service;
@Service
public class InviteMappingServiceImpl extends ServiceImpl<InviteMappingMapper, InviteMapping> implements InviteMappingService {
@Override
public String getInviteCode() {
return "https://aaa.com";
}
}

View File

@ -0,0 +1,32 @@
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.communityCenter.domain.Invite;
import com.mcwl.communityCenter.domain.Publish;
import com.mcwl.communityCenter.domain.vo.PublishVo;
import com.mcwl.communityCenter.mapper.InviteMapper;
import com.mcwl.communityCenter.mapper.PublishMapper;
import com.mcwl.communityCenter.service.InviteService;
import com.mcwl.communityCenter.service.PublishService;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@Service
public class InviteServiceImpl extends ServiceImpl<InviteMapper, Invite> implements InviteService {
@Override
public String getInviteCode() {
String url = "https://www.yaoqing.com?name=lisi";
return url;
}
}

View File

@ -1,11 +1,79 @@
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.page.TableDataInfo;
import com.mcwl.common.utils.SecurityUtils;
import com.mcwl.communityCenter.domain.Publish;
import com.mcwl.communityCenter.domain.vo.PublishVo;
import com.mcwl.communityCenter.mapper.PublishMapper;
import com.mcwl.communityCenter.service.PublishService;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@Service
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<>();
// 查询
baseMapper.selectPage(page, lqw);
// 返回数据
List<PublishVo> publishVoList = new ArrayList<>();
// 封装数据
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);
}
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);
if (Objects.isNull(publish)) {
return null;
}
PublishVo publishVo = new PublishVo();
BeanUtil.copyProperties(publish, publishVo);
publishVo.setUserName(SecurityUtils.getUsername());
publishVo.setAvatar(SecurityUtils.getLoginUser().getUser().getAvatar());
return publishVo;
}
}