This commit is contained in:
王鹏
2025-08-14 14:59:52 +08:00
commit e528aa4876
1229 changed files with 230350 additions and 0 deletions

View File

@@ -0,0 +1,169 @@
package com.ruoyi.cms.message.controller;
import java.util.List;
import java.util.Set;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.cms.message.domain.CmsMessageLike;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.framework.web.service.SysPermissionService;
import com.ruoyi.system.service.ISysUserService;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.cms.message.domain.CmsMessage;
import com.ruoyi.cms.message.service.ICmsMessageService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 留言管理Controller
*
* @author ning
* @date 2022-01-15
*/
@RestController
@RequestMapping("/cms/message")
public class CmsMessageController extends BaseController
{
@Autowired
private ICmsMessageService cmsMessageService;
@Autowired
private SysPermissionService permissionService;
/**
* 首页查询留言列表
*/
@GetMapping("/cms/list")
public TableDataInfo cmsList(CmsMessage cmsMessage)
{
startPage();
List<CmsMessage> list = cmsMessageService.selectMessageList(cmsMessage);
return getDataTable(list);
}
/**
* 首页新增留言
*/
@PostMapping("/cms/addMessage")
public AjaxResult addMessage(@RequestBody CmsMessage cmsMessage)
{
Long parentId = cmsMessage.getParentId();
if (parentId!=null){
CmsMessage message = cmsMessageService.selectCmsMessageById(parentId);
if (message.getMainId()!=null){
cmsMessage.setMainId(message.getMainId());
}else {
cmsMessage.setMainId(parentId);
}
}
return toAjax(cmsMessageService.insertCmsMessage(cmsMessage));
}
/**
* 首页新增点赞
*/
@PostMapping("/cms/addCmsMessageLike")
public AjaxResult addCmsMessageLike(@RequestBody CmsMessageLike cmsMessageLike)
{
return toAjax(cmsMessageService.addCmsMessageLike(cmsMessageLike));
}
/**
* 首页删除点赞
*/
@Log(title = "删除留言点赞", businessType = BusinessType.DELETE)
@PostMapping("/cms/delCmsMessageLike")
public AjaxResult delCmsMessageLike(@RequestBody CmsMessageLike cmsMessageLike)
{
return toAjax(cmsMessageService.delCmsMessageLike(cmsMessageLike));
}
/**
* 查询留言管理列表
*/
@PreAuthorize("@ss.hasPermi('cms:message:list')")
@GetMapping("/list")
public TableDataInfo list(CmsMessage cmsMessage)
{
startPage();
// 角色集合
Set<String> roles = permissionService.getRolePermission(getLoginUser().getUser());
if (!SecurityUtils.isAdmin(getUserId())&&!roles.contains("admin")&&!roles.contains("cms")){
cmsMessage.setCreateBy(getUsername());
}
cmsMessage.setDelFlag("0");
List<CmsMessage> list = cmsMessageService.selectCmsMessageList(cmsMessage);
return getDataTable(list);
}
/**
* 导出留言管理列表
*/
@PreAuthorize("@ss.hasPermi('cms:message:export')")
@Log(title = "留言管理", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, CmsMessage cmsMessage)
{
List<CmsMessage> list = cmsMessageService.selectCmsMessageList(cmsMessage);
ExcelUtil<CmsMessage> util = new ExcelUtil<CmsMessage>(CmsMessage.class);
util.exportExcel(response, list, "留言管理数据");
}
/**
* 获取留言管理详细信息
*/
@PreAuthorize("@ss.hasPermi('cms:message:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return AjaxResult.success(cmsMessageService.selectCmsMessageById(id));
}
/**
* 新增留言管理
*/
@PreAuthorize("@ss.hasPermi('cms:message:add')")
@Log(title = "留言管理", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody CmsMessage cmsMessage)
{
return toAjax(cmsMessageService.insertCmsMessage(cmsMessage));
}
/**
* 修改留言管理
*/
@PreAuthorize("@ss.hasPermi('cms:message:edit')")
@Log(title = "留言管理", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody CmsMessage cmsMessage)
{
return toAjax(cmsMessageService.updateCmsMessage(cmsMessage));
}
/**
* 删除留言管理
*/
@PreAuthorize("@ss.hasPermi('cms:message:remove')")
@Log(title = "留言管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(cmsMessageService.deleteCmsMessageByIds(ids));
}
}

View File

@@ -0,0 +1,201 @@
package com.ruoyi.cms.message.domain;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import java.util.List;
/**
* 留言管理对象 cms_message
*
* @author ning
* @date 2022-01-15
*/
public class CmsMessage extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** ID */
private Long id;
/** 父留言id */
@Excel(name = "父留言id")
private Long parentId;
/** 主留言id(第一级留言) */
@Excel(name = "主留言id(第一级留言)")
private Long mainId;
/** 点赞数量 */
@Excel(name = "点赞数量")
private Long likeNum;
/** 内容 */
@Excel(name = "内容")
private String content;
/** 留言类型0代表留言 1代表回复 */
@Excel(name = "留言类型0代表留言 1代表回复")
private String type;
/** 被留言者id可以是人、项目、资源 */
@Excel(name = "被留言者id可以是人、项目、资源")
private Long blogId;
/** 留言者id */
@Excel(name = "留言者id")
private Long userId;
/** 删除标志0代表存在 1代表删除 */
@Excel(name = "删除标志0代表存在 1代表删除")
private String delFlag;
/** 头像 */
private String avatar;
/** 回复 */
private List<CmsMessage> children;
/** 父留言者 */
private String pCreateBy;
/** 点赞 */
private boolean isLike;
public void setId(Long id)
{
this.id = id;
}
public Long getId()
{
return id;
}
public void setParentId(Long parentId)
{
this.parentId = parentId;
}
public Long getParentId()
{
return parentId;
}
public void setLikeNum(Long likeNum)
{
this.likeNum = likeNum;
}
public Long getMainId() {
return mainId;
}
public void setMainId(Long mainId) {
this.mainId = mainId;
}
public Long getLikeNum()
{
return likeNum;
}
public void setContent(String content)
{
this.content = content;
}
public String getContent()
{
return content;
}
public void setType(String type)
{
this.type = type;
}
public String getType()
{
return type;
}
public void setBlogId(Long blogId)
{
this.blogId = blogId;
}
public Long getBlogId()
{
return blogId;
}
public void setUserId(Long userId)
{
this.userId = userId;
}
public Long getUserId()
{
return userId;
}
public String getDelFlag() {
return delFlag;
}
public void setDelFlag(String delFlag) {
this.delFlag = delFlag;
}
public String getAvatar() {
return avatar;
}
public void setAvatar(String avatar) {
this.avatar = avatar;
}
public List<CmsMessage> getChildren() {
return children;
}
public void setChildren(List<CmsMessage> children) {
this.children = children;
}
public String getPCreateBy() {
return pCreateBy;
}
public void setPCreateBy(String pCreateBy) {
this.pCreateBy = pCreateBy;
}
public boolean getIsLike() {
return isLike;
}
public void setIsLike(boolean isLike) {
this.isLike = isLike;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("parentId", getParentId())
.append("mainId", getMainId())
.append("likeNum", getLikeNum())
.append("content", getContent())
.append("type", getType())
.append("blogId", getBlogId())
.append("userId", getUserId())
.append("delFlag", getDelFlag())
.append("avatar",getAvatar())
.append("children",getChildren())
.append("pCreateBy",getPCreateBy())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("isLike", getIsLike())
.toString();
}
}

View File

@@ -0,0 +1,60 @@
package com.ruoyi.cms.message.domain;
/**
* @program: RuoYi-Vue
* @Author: WangNing
* @Description: 〈留言点赞实体类〉
* @Date: 2022/1/19 8:38
*/
import com.ruoyi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* @Author: WangNing
* @Description:〈留言点赞实体类〉
* @Date: 2022/1/19 8:38
**/
public class CmsMessageLike extends BaseEntity {
private static final long serialVersionUID = 1L;
private Long messageId;
private Long userId;
/** 点赞数量 */
private Long likeNum;
public Long getMessageId() {
return messageId;
}
public void setMessageId(Long messageId) {
this.messageId = messageId;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public Long getLikeNum() {
return likeNum;
}
public void setLikeNum(Long likeNum) {
this.likeNum = likeNum;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("messageId", getMessageId())
.append("userId", getUserId())
.append("likeNum", getLikeNum())
.toString();
}
}

View File

@@ -0,0 +1,26 @@
package com.ruoyi.cms.message.mapper;
import com.ruoyi.cms.message.domain.CmsMessageLike;
import java.util.List;
/**
* @program: RuoYi-Vue
* @Author: WangNing
* @Description: 〈数据层〉
* @Date: 2022/1/19 8:42
*/
public interface CmsMessageLikeMapper {
/**
* 查询列表
*/
public List<CmsMessageLike> selectCmsMessageLikeList(CmsMessageLike cmsMessageLike);
/**
* 新增
*/
public int addCmsMessageLike(CmsMessageLike cmsMessageLike);
/**
* 删除关联
*/
public int deleteCmsMessageLike(CmsMessageLike cmsMessageLike);
}

View File

@@ -0,0 +1,93 @@
package com.ruoyi.cms.message.mapper;
import java.util.List;
import com.ruoyi.cms.message.domain.CmsMessage;
import org.apache.ibatis.annotations.Param;
/**
* 留言管理Mapper接口
*
* @author ning
* @date 2022-01-15
*/
public interface CmsMessageMapper
{
/**
* 查询留言管理
*
* @param id 留言管理主键
* @return 留言管理
*/
public CmsMessage selectCmsMessageById(Long id);
/**
* 查询留言管理列表
*
* @param cmsMessage 留言管理
* @return 留言管理集合
*/
public List<CmsMessage> selectCmsMessageList(CmsMessage cmsMessage);
public List<CmsMessage> selectCmsMessageListBetweenCreateTime(@Param("type") String type, @Param("delFlag") String delFlag, @Param("createTimeBegin") String createTimeBegin, @Param("createTimeEnd") String createTimeEnd);
/**
* 查询子留言列表
*/
public List<CmsMessage> selectChildMessageList(CmsMessage cmsMessage);
/**
* 新增留言管理
*
* @param cmsMessage 留言管理
* @return 结果
*/
public int insertCmsMessage(CmsMessage cmsMessage);
/**
* 修改留言管理
*
* @param cmsMessage 留言管理
* @return 结果
*/
public int updateCmsMessage(CmsMessage cmsMessage);
/**
* 删除留言管理
*
* @param id 留言管理主键
* @return 结果
*/
public int deleteCmsMessageById(Long id);
/**
* 批量删除留言管理
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteCmsMessageByIds(Long[] ids);
/**
* 删除留言管理
*
* @param id 留言管理主键
* @return 结果
*/
public int updateDelFlagById(Long id);
/**
* 批量删除留言管理
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int updateDelFlagByIds(Long[] ids);
/**
* 统计留言数量
*
* @param cmsMessage 查询条件
* @return 留言数量
*/
public int countCmsMessage(CmsMessage cmsMessage);
}

View File

@@ -0,0 +1,77 @@
package com.ruoyi.cms.message.service;
import java.util.List;
import com.ruoyi.cms.message.domain.CmsMessage;
import com.ruoyi.cms.message.domain.CmsMessageLike;
/**
* 留言管理Service接口
*
* @author ning
* @date 2022-01-15
*/
public interface ICmsMessageService
{
/**
* 首页查询留言列表
*/
public List<CmsMessage> selectMessageList(CmsMessage cmsMessage);
/**
* 首页新增点赞
*/
public int addCmsMessageLike(CmsMessageLike cmsMessageLike);
/**
* 首页删除点赞
*/
public int delCmsMessageLike(CmsMessageLike cmsMessageLike);
/**
* 查询留言管理
*
* @param id 留言管理主键
* @return 留言管理
*/
public CmsMessage selectCmsMessageById(Long id);
/**
* 查询留言管理列表
*
* @param cmsMessage 留言管理
* @return 留言管理集合
*/
public List<CmsMessage> selectCmsMessageList(CmsMessage cmsMessage);
/**
* 新增留言管理
*
* @param cmsMessage 留言管理
* @return 结果
*/
public int insertCmsMessage(CmsMessage cmsMessage);
/**
* 修改留言管理
*
* @param cmsMessage 留言管理
* @return 结果
*/
public int updateCmsMessage(CmsMessage cmsMessage);
/**
* 批量删除留言管理
*
* @param ids 需要删除的留言管理主键集合
* @return 结果
*/
public int deleteCmsMessageByIds(Long[] ids);
/**
* 删除留言管理信息
*
* @param id 留言管理主键
* @return 结果
*/
public int deleteCmsMessageById(Long id);
}

View File

@@ -0,0 +1,274 @@
package com.ruoyi.cms.message.service.impl;
import java.util.ArrayList;
import java.util.List;
import com.ruoyi.cms.message.domain.CmsMessageLike;
import com.ruoyi.cms.message.mapper.CmsMessageLikeMapper;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.system.mapper.SysUserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.cms.message.mapper.CmsMessageMapper;
import com.ruoyi.cms.message.domain.CmsMessage;
import com.ruoyi.cms.message.service.ICmsMessageService;
/**
* 留言管理Service业务层处理
*
* @author ning
* @date 2022-01-15
*/
@Service
public class CmsMessageServiceImpl implements ICmsMessageService
{
@Autowired
private CmsMessageMapper cmsMessageMapper;
@Autowired
private SysUserMapper sysUserMapper;
@Autowired
private CmsMessageLikeMapper cmsMessageLikeMapper;
/**
* 首页查询留言列表
*/
@Override
public List<CmsMessage> selectMessageList(CmsMessage cmsMessage) {
//判断是否登录
Long logUserUserId = null;
String createBy = cmsMessage.getCreateBy();
if (createBy!=null&&!"".equals(createBy)){
SysUser logUser = sysUserMapper.selectUserByUserName(createBy);
logUserUserId = logUser.getUserId();
}
cmsMessage.setCreateBy(null);
cmsMessage.setType("0");
cmsMessage.setDelFlag("0");
List<CmsMessage> cmsMessageList = cmsMessageMapper.selectCmsMessageList(cmsMessage);
for (CmsMessage message : cmsMessageList) {
//添加头像
Long userId = message.getUserId();
if (userId!=null){
SysUser user = sysUserMapper.selectUserById(userId);
message.setAvatar(user.getAvatar());
}
//添加是否被点赞
if (logUserUserId!=null){
CmsMessageLike messageLike = new CmsMessageLike();
messageLike.setMessageId(message.getId());
messageLike.setUserId(logUserUserId);
List<CmsMessageLike> likeList = cmsMessageLikeMapper.selectCmsMessageLikeList(messageLike);
if (likeList.size()>0){
message.setIsLike(true);
}else {
message.setIsLike(false);
}
}
//添加子评论(回复)
CmsMessage childMessage = new CmsMessage();
childMessage.setType("1");
childMessage.setMainId(message.getId());
List<CmsMessage> childMessageList = cmsMessageMapper.selectChildMessageList(childMessage);
if (childMessageList.size()>0){
for (CmsMessage childListMessage : childMessageList) {
//添加头像
Long childUserId = childListMessage.getUserId();
if (childUserId!=null){
SysUser user = sysUserMapper.selectUserById(childUserId);
childListMessage.setAvatar(user.getAvatar());
}
//添加是否被点赞
if (logUserUserId!=null){
CmsMessageLike messageLike = new CmsMessageLike();
messageLike.setMessageId(message.getId());
messageLike.setUserId(logUserUserId);
List<CmsMessageLike> likeList = cmsMessageLikeMapper.selectCmsMessageLikeList(messageLike);
if (likeList.size()>0){
message.setIsLike(true);
}else {
message.setIsLike(false);
}
}
//添加父留言信息
CmsMessage byId = cmsMessageMapper.selectCmsMessageById(childListMessage.getParentId());
childListMessage.setPCreateBy(byId.getCreateBy());
}
message.setChildren(childMessageList);
}
}
return cmsMessageList;
}
@Override
public int addCmsMessageLike(CmsMessageLike cmsMessageLike) {
int result = -1;
String createBy = cmsMessageLike.getCreateBy();
if (!"".equals(createBy)&&createBy!=null){
SysUser user = sysUserMapper.selectUserByUserName(createBy);
if (user!=null){
cmsMessageLike.setUserId(user.getUserId());
cmsMessageLikeMapper.addCmsMessageLike(cmsMessageLike);
}
}
//修改点赞数量
CmsMessage cmsMessage = new CmsMessage();
cmsMessage.setId(cmsMessageLike.getMessageId());
cmsMessage.setLikeNum(cmsMessageLike.getLikeNum());
result = cmsMessageMapper.updateCmsMessage(cmsMessage);
return result;
}
@Override
public int delCmsMessageLike(CmsMessageLike cmsMessageLike) {
int result = -1;
String createBy = cmsMessageLike.getCreateBy();
if (!"".equals(createBy)&&createBy!=null){
SysUser user = sysUserMapper.selectUserByUserName(createBy);
if (user!=null){
cmsMessageLike.setUserId(user.getUserId());
cmsMessageLikeMapper.deleteCmsMessageLike(cmsMessageLike);
}
}
//修改点赞数量
CmsMessage cmsMessage = new CmsMessage();
cmsMessage.setId(cmsMessageLike.getMessageId());
cmsMessage.setLikeNum(cmsMessageLike.getLikeNum());
result = cmsMessageMapper.updateCmsMessage(cmsMessage);
return result;
}
/**
* 查询留言管理
*
* @param id 留言管理主键
* @return 留言管理
*/
@Override
public CmsMessage selectCmsMessageById(Long id)
{
return cmsMessageMapper.selectCmsMessageById(id);
}
/**
* 查询留言管理列表
*
* @param cmsMessage 留言管理
* @return 留言管理
*/
@Override
public List<CmsMessage> selectCmsMessageList(CmsMessage cmsMessage)
{
List<CmsMessage> cmsMessageList = new ArrayList<>();
//判断用户权限
String createBy = cmsMessage.getCreateBy();
if (createBy!=null&&!"".equals(createBy)){
SysUser user = sysUserMapper.selectUserByUserName(createBy);
if (user!=null){
List<CmsMessage> MessageList = cmsMessageMapper.selectCmsMessageList(cmsMessage);
for (CmsMessage message : MessageList) {
//查询子评论(回复)
CmsMessage childMessage = new CmsMessage();
childMessage.setType("1");
childMessage.setParentId(message.getId());
List<CmsMessage> childMessageList = cmsMessageMapper.selectCmsMessageList(childMessage);
if (childMessageList.size()>0){
cmsMessageList.addAll(childMessageList);
}
}
cmsMessageList.addAll(MessageList);
}
}else {
cmsMessageList = cmsMessageMapper.selectCmsMessageList(cmsMessage);
}
for (CmsMessage message : cmsMessageList) {
//添加头像
Long userId = message.getUserId();
if (userId!=null){
SysUser user = sysUserMapper.selectUserById(userId);
message.setAvatar(user.getAvatar());
}
//添加父留言信息
Long parentId = message.getParentId();
if (parentId!=null){
CmsMessage parentMessage = cmsMessageMapper.selectCmsMessageById(parentId);
message.setPCreateBy(parentMessage.getCreateBy());
}
}
//排序
// String[] sortNameArr1 = {"createTime"};
// //true升序false降序
// boolean[] isAscArr1 = {false};
// ListSortUtils.sort(cmsMessageList, sortNameArr1, isAscArr1);
// cmsMessageList.sort((a,b)->a.getCreateBy().compareTo(b.getCreateBy()));
// Collections.sort(cmsMessageList, new Comparator<CmsMessage>() {
// @Override
// public int compare(CmsMessage o1, CmsMessage o2) {
// //升序
// //return o1.getCreateBy().compareTo(o2.getCreateBy());
// //降序
// return o2.getCreateBy().compareTo(o1.getCreateBy());
// }
// });
return cmsMessageList;
}
/**
* 新增留言管理
*
* @param cmsMessage 留言管理
* @return 结果
*/
@Override
public int insertCmsMessage(CmsMessage cmsMessage)
{
String createBy = cmsMessage.getCreateBy();
if (createBy!=null&&!"".equals(createBy)){
SysUser user = sysUserMapper.selectUserByUserName(createBy);
if (user!=null){
cmsMessage.setUserId(user.getUserId());
}
}
cmsMessage.setCreateTime(DateUtils.getNowDate());
return cmsMessageMapper.insertCmsMessage(cmsMessage);
}
/**
* 修改留言管理
*
* @param cmsMessage 留言管理
* @return 结果
*/
@Override
public int updateCmsMessage(CmsMessage cmsMessage)
{
cmsMessage.setUpdateTime(DateUtils.getNowDate());
return cmsMessageMapper.updateCmsMessage(cmsMessage);
}
/**
* 批量删除留言管理
*
* @param ids 需要删除的留言管理主键
* @return 结果
*/
@Override
public int deleteCmsMessageByIds(Long[] ids)
{
return cmsMessageMapper.updateDelFlagByIds(ids);
}
/**
* 删除留言管理信息
*
* @param id 留言管理主键
* @return 结果
*/
@Override
public int deleteCmsMessageById(Long id)
{
return cmsMessageMapper.updateDelFlagById(id);
}
}