feat(communityCenter): 举报

feature/community-center
yang 2025-05-10 18:00:48 +08:00
parent 5f354654ab
commit 43a6bc98b8
10 changed files with 254 additions and 25 deletions

View File

@ -119,4 +119,15 @@ public class PublishController {
return R.ok(); return R.ok();
} }
/**
*
*/
@ApiOperation(value = "举报")
@PostMapping("report")
public R<Object> reportPublish(@RequestBody @Valid PublishReportRes publishReportRes) {
publishService.reportPublish(publishReportRes);
return R.ok();
}
} }

View File

@ -3,18 +3,17 @@ package com.mcwl.web.controller.communityCenter;
import com.mcwl.common.core.domain.R; import com.mcwl.common.core.domain.R;
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.dto.EditPublishReportStatusRes;
import com.mcwl.communityCenter.domain.dto.PublishReportRes; import com.mcwl.communityCenter.domain.dto.PublishReportRes;
import com.mcwl.communityCenter.service.PublishReportService; import com.mcwl.communityCenter.service.PublishReportService;
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 lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid; import javax.validation.Valid;
import javax.validation.constraints.NotNull;
/** /**
* *
@ -25,21 +24,8 @@ import javax.validation.Valid;
@RequiredArgsConstructor @RequiredArgsConstructor
public class PublishReportController { public class PublishReportController {
private final PublishService publishService;
private final PublishReportService publishReportService; private final PublishReportService publishReportService;
/**
*
*/
@ApiOperation(value = "举报")
@PostMapping("report")
public R<Object> reportPublish(@RequestBody @Valid PublishReportRes publishReportRes) {
publishService.reportPublish(publishReportRes);
return R.ok();
}
/** /**
* *
*/ */
@ -49,6 +35,26 @@ public class PublishReportController {
return publishReportService.getReportList(pageDomain); return publishReportService.getReportList(pageDomain);
} }
/**
*
*/
@ApiOperation(value = "修改状态")
@PostMapping("updateStatus")
public R<Object> updateStatus(@RequestBody @Valid EditPublishReportStatusRes editPublishReportStatusRes) {
publishReportService.updateStatus(editPublishReportStatusRes);
return R.ok();
}
/**
*
*/
@ApiOperation(value = "删除举报")
@GetMapping("delete")
public R<Object> delete(@Valid @NotNull(message = "举报id不能为空") Long id) {
publishReportService.removeReportById(id);
return R.ok();
}
} }

View File

@ -44,9 +44,9 @@ public class PublishReport extends BaseEntity {
private Integer reportType; private Integer reportType;
/** /**
* *
*/ */
private String content; private String description;
/** /**
* 0 1 ) * 0 1 )

View File

@ -0,0 +1,44 @@
package com.mcwl.communityCenter.domain.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
*
*/
@Data
@ApiModel(value = "修改举报状态请求参数")
public class EditPublishReportStatusRes {
/**
* id
*/
@ApiModelProperty(value = "租户id", required = true)
@NotNull(message = "租户id不能为空")
private Long tenantId;
/**
* id
*/
@ApiModelProperty(value = "社区id", required = true)
@NotNull(message = "社区id不能为空")
private Long communityId;
/**
* id
*/
@ApiModelProperty(value = "发布id", required = true)
@NotNull(message = "发布id不能为空")
private Long publishId;
/**
*
*/
@ApiModelProperty(value = "状态", required = true)
@NotNull(message = "状态不能为空")
private Integer status;
}

View File

@ -45,6 +45,6 @@ public class PublishReportRes {
* *
*/ */
@ApiModelProperty(value = "举报内容") @ApiModelProperty(value = "举报内容")
private String content; private String description;
} }

View File

@ -0,0 +1,93 @@
package com.mcwl.communityCenter.domain.vo;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mcwl.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import java.util.Date;
/**
*
*/
@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(description = "举报返回参数")
public class PublishReportVo {
@ApiModelProperty(value = "id")
private Long id;
/**
* id
*/
@ApiModelProperty(value = "租户id")
private Long tenantId;
/**
* id
*/
@ApiModelProperty(value = "社区id")
private Long communityId;
/**
* id
*/
@ApiModelProperty(value = "发布id")
private Long publishId;
/**
*
*/
@ApiModelProperty(value = "举报人")
private String userName;
/**
*
*/
@ApiModelProperty(value = "举报类型")
private String reportType;
/**
* 0 1 )
*/
@ApiModelProperty(value = "状态0未处理 1已处理 )")
private Integer status;
/**
*
*/
@ApiModelProperty(value = "描述")
private String description;
/**
*
*/
@ApiModelProperty(value = "内容")
private String content;
/**
* url
*/
@ApiModelProperty(value = "图片url")
private String imgUrl;
/**
* url
*/
@ApiModelProperty(value = "文件url")
private String fileUrl;
/**
*
*/
@ApiModelProperty(value = "举报时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
}

View File

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mcwl.communityCenter.domain.Publish; import com.mcwl.communityCenter.domain.Publish;
import com.mcwl.communityCenter.domain.PublishReport; import com.mcwl.communityCenter.domain.PublishReport;
import com.mcwl.communityCenter.domain.dto.EditPublishReportStatusRes;
import com.mcwl.communityCenter.domain.dto.MyPublishPageRes; import com.mcwl.communityCenter.domain.dto.MyPublishPageRes;
import com.mcwl.communityCenter.domain.dto.PublishPageRes; import com.mcwl.communityCenter.domain.dto.PublishPageRes;
import com.mcwl.communityCenter.domain.vo.PublishVo; import com.mcwl.communityCenter.domain.vo.PublishVo;
@ -18,4 +19,10 @@ public interface PublishReportMapper extends BaseMapper<PublishReport> {
@InterceptorIgnore(tenantLine = "true") @InterceptorIgnore(tenantLine = "true")
void insertReport(@Param("publishReport") PublishReport publishReport); void insertReport(@Param("publishReport") PublishReport publishReport);
@InterceptorIgnore(tenantLine = "true")
void updateStatus(@Param("editPublishReportStatusRes") EditPublishReportStatusRes editPublishReportStatusRes);
@InterceptorIgnore(tenantLine = "true")
void deleteReportById(@Param("id") Long id);
} }

View File

@ -11,10 +11,15 @@ import com.mcwl.communityCenter.domain.dto.*;
import com.mcwl.communityCenter.domain.vo.PublishVo; import com.mcwl.communityCenter.domain.vo.PublishVo;
import javax.validation.Valid; import javax.validation.Valid;
import javax.validation.constraints.NotNull;
public interface PublishReportService extends IService<PublishReport> { public interface PublishReportService extends IService<PublishReport> {
void saveReport(PublishReport publishReport); void saveReport(PublishReport publishReport);
TableDataInfo getReportList(@Valid PageDomain pageDomain); TableDataInfo getReportList(@Valid PageDomain pageDomain);
void updateStatus(@Valid EditPublishReportStatusRes editPublishReportStatusRes);
void removeReportById(Long id);
} }

View File

@ -11,6 +11,7 @@ import com.mcwl.common.core.domain.entity.SysUser;
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.exception.ServiceException; import com.mcwl.common.exception.ServiceException;
import com.mcwl.common.utils.DictUtils;
import com.mcwl.common.utils.SecurityUtils; import com.mcwl.common.utils.SecurityUtils;
import com.mcwl.common.utils.StringUtils; import com.mcwl.common.utils.StringUtils;
import com.mcwl.communityCenter.constant.AdviceConstant; import com.mcwl.communityCenter.constant.AdviceConstant;
@ -18,9 +19,11 @@ import com.mcwl.communityCenter.domain.*;
import com.mcwl.communityCenter.domain.dto.*; import com.mcwl.communityCenter.domain.dto.*;
import com.mcwl.communityCenter.domain.vo.CommentVo; import com.mcwl.communityCenter.domain.vo.CommentVo;
import com.mcwl.communityCenter.domain.vo.PersonHomeVo; import com.mcwl.communityCenter.domain.vo.PersonHomeVo;
import com.mcwl.communityCenter.domain.vo.PublishReportVo;
import com.mcwl.communityCenter.domain.vo.PublishVo; import com.mcwl.communityCenter.domain.vo.PublishVo;
import com.mcwl.communityCenter.mapper.*; import com.mcwl.communityCenter.mapper.*;
import com.mcwl.communityCenter.service.*; import com.mcwl.communityCenter.service.*;
import com.mcwl.system.init.DictInit;
import com.mcwl.system.service.ISysUserService; import com.mcwl.system.service.ISysUserService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -35,6 +38,9 @@ import java.util.Objects;
@RequiredArgsConstructor @RequiredArgsConstructor
public class PublishReportServiceImpl extends ServiceImpl<PublishReportMapper, PublishReport> implements PublishReportService { public class PublishReportServiceImpl extends ServiceImpl<PublishReportMapper, PublishReport> implements PublishReportService {
private final ISysUserService sysUserService;
private final PublishMapper publishMapper;
@Override @Override
public void saveReport(PublishReport publishReport) { public void saveReport(PublishReport publishReport) {
@ -46,13 +52,58 @@ public class PublishReportServiceImpl extends ServiceImpl<PublishReportMapper, P
@Override @Override
public TableDataInfo getReportList(PageDomain pageDomain) { public TableDataInfo getReportList(PageDomain pageDomain) {
Page<PublishReport> page = new Page<>(pageDomain.getPageNum(), pageDomain.getPageSize()); Page<PublishReport> page = new Page<>(pageDomain.getPageNum(), pageDomain.getPageSize());
baseMapper.selectPage(page, new LambdaQueryWrapper<PublishReport>()); baseMapper.selectPage(page, new LambdaQueryWrapper<PublishReport>()
List<PublishReport> records = page.getRecords(); .orderByAsc(PublishReport::getStatus)
.orderByDesc(PublishReport::getCreateTime));
List<PublishReport> publishReportList = page.getRecords();
List<PublishReportVo> publishReportVoList = new ArrayList<>();
for (PublishReport publishReport : publishReportList) {
PublishReportVo publishReportVo = BeanUtil.copyProperties(publishReport, PublishReportVo.class);
publishReportVo.setUserName(sysUserService.selectUserById(publishReport.getUserId()).getUserName());
publishReportVo.setReportType(DictInit.getDictValue("community_report", publishReport.getReportType().toString()));
Publish publish = publishMapper.selectByIdAndTenantIdAndCommunityId(publishReport.getPublishId(), publishReport.getTenantId(), publishReport.getCommunityId());
if (Objects.nonNull(publish)) {
publishReportVo.setContent(publish.getContent());
publishReportVo.setImgUrl(publish.getImageUrl());
publishReportVo.setFileUrl(publish.getFileUrl());
}
publishReportVoList.add(publishReportVo);
}
TableDataInfo tableDataInfo = new TableDataInfo(); TableDataInfo tableDataInfo = new TableDataInfo();
tableDataInfo.setRows(records); tableDataInfo.setRows(publishReportVoList);
tableDataInfo.setTotal(page.getTotal()); tableDataInfo.setTotal(page.getTotal());
tableDataInfo.setCode(HttpStatus.SUCCESS); tableDataInfo.setCode(HttpStatus.SUCCESS);
tableDataInfo.setMsg("查询成功"); tableDataInfo.setMsg("查询成功");
return tableDataInfo; return tableDataInfo;
} }
@Override
public void updateStatus(EditPublishReportStatusRes editPublishReportStatusRes) {
baseMapper.updateStatus(editPublishReportStatusRes);
Long tenantId = editPublishReportStatusRes.getTenantId();
Long communityId = editPublishReportStatusRes.getCommunityId();
Long publishId = editPublishReportStatusRes.getPublishId();
if (editPublishReportStatusRes.getStatus() == 2) {
PublishRemoveRes publishRemoveRes = new PublishRemoveRes();
publishRemoveRes.setTenantId(tenantId);
publishRemoveRes.setCommunityId(communityId);
publishRemoveRes.setPublishId(publishId);
publishMapper.removePublish(publishRemoveRes);
}
}
@Override
public void removeReportById(Long id) {
baseMapper.deleteReportById(id);
}
} }

View File

@ -5,8 +5,20 @@
<mapper namespace="com.mcwl.communityCenter.mapper.PublishReportMapper"> <mapper namespace="com.mcwl.communityCenter.mapper.PublishReportMapper">
<insert id="insertReport"> <insert id="insertReport">
INSERT INTO cc_report(tenant_id, community_id, publish_id, user_id, report_type, content) INSERT INTO cc_report(tenant_id, community_id, publish_id, user_id, report_type, description, create_time)
VALUES (#{publishReport.tenantId}, #{publishReport.communityId}, #{publishReport.publishId}, VALUES (#{publishReport.tenantId}, #{publishReport.communityId}, #{publishReport.publishId},
#{publishReport.userId}, #{publishReport.reportType}, #{publishReport.content}) #{publishReport.userId}, #{publishReport.reportType}, #{publishReport.description}, NOW())
</insert> </insert>
<update id="updateStatus">
UPDATE cc_report
SET status = #{editPublishReportStatusRes.status}
WHERE tenant_id = #{editPublishReportStatusRes.tenantId}
AND community_id = #{editPublishReportStatusRes.communityId}
AND publish_id = #{editPublishReportStatusRes.publishId}
</update>
<update id="deleteReportById">
UPDATE cc_report
SET del_flag = '2'
WHERE id = #{id}
</update>
</mapper> </mapper>