add 动态消息保存、发布

This commit is contained in:
liao
2023-09-20 14:04:25 +08:00
parent a6dc8e91df
commit dc8d91666e
8 changed files with 210 additions and 135 deletions
@@ -81,6 +81,8 @@ public class FieldCommon {
// 字典值统一后缀 // 字典值统一后缀
public static final String _DICT_TEXT = "_dictText"; public static final String _DICT_TEXT = "_dictText";
// 标准拆分单后缀
public static final String _STANDARD_SPLIT = "_standardSplit";
// 树节点编码 // 树节点编码
public static final String NODE_CODE = "nodeCode"; public static final String NODE_CODE = "nodeCode";
// 中文双引号 // 中文双引号
@@ -18,6 +18,7 @@ public class ResultCommon {
public static final String EMPTY_COMMON = "message.empty.common"; // {0}不能为空 public static final String EMPTY_COMMON = "message.empty.common"; // {0}不能为空
public static final String EXIST_STANDARD_NUMBER = "message.exists.standard.number"; // 标准编号已经存在 public static final String EXIST_STANDARD_NUMBER = "message.exists.standard.number"; // 标准编号已经存在
public static final String NOT_EXIST_PARAM = "message.no.exists.param"; // 参数{0}不存在 public static final String NOT_EXIST_PARAM = "message.no.exists.param"; // 参数{0}不存在
public static final String NO_PERMISSION = "message.no.permission"; // 没有数据操作权限
public static final String RMR_SET_QUALITY_OVER_TEN = "es.rmr.setQuality.overTen"; // 请最多选择10条 public static final String RMR_SET_QUALITY_OVER_TEN = "es.rmr.setQuality.overTen"; // 请最多选择10条
@@ -1,11 +1,12 @@
package com.jero.modules.laws.standard.controller; package com.jero.modules.laws.standard.controller;
import java.util.Arrays; import java.util.*;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.jero.common.api.vo.Result; import com.jero.common.api.vo.Result;
import com.jero.common.util.MessageUtils;
import com.jero.modules.laws.common.constant.ResultCommon;
import com.jero.modules.laws.standard.entity.LawsNewsFeed; import com.jero.modules.laws.standard.entity.LawsNewsFeed;
import com.jero.modules.laws.standard.service.ILawsNewsFeedService; import com.jero.modules.laws.standard.service.ILawsNewsFeedService;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -71,32 +72,36 @@ public class LawsNewsFeedController extends JeroController<LawsNewsFeed, ILawsNe
return Result.OK(list); return Result.OK(list);
} }
/** @AutoLog(value = "动态消息-保存")
* 添加 @ApiOperation(value = "动态消息-保存", notes = "动态消息-保存")
* @PostMapping(value = "/save")
* @param lawsNewsFeed public Result<String> save(@Validated @RequestBody LawsNewsFeed lawsNewsFeed) {
* @return // 第一次保存,附上初值
*/ if (Objects.isNull(lawsNewsFeed.getReleaseStatus())) {
@AutoLog(value = "动态消息-添加") lawsNewsFeed.setReleaseStatus(0);
@ApiOperation(value="动态消息-添加", notes="动态消息-添加") lawsNewsFeed.setReadCount(0);
@PostMapping(value = "/add") }
public Result<T> add(@Validated @RequestBody LawsNewsFeed lawsNewsFeed) { // 发布时间不为空(发布后的保存,发布时间更新)
if (!Objects.isNull(lawsNewsFeed.getReleaseTime())) {
lawsNewsFeed.setReleaseTime(new Date());
}
lawsNewsFeedService.add(lawsNewsFeed); lawsNewsFeedService.add(lawsNewsFeed);
return Result.OK("操作成功!"); return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
} }
/** @AutoLog(value = "动态消息-发布")
* 编辑 @ApiOperation(value = "动态消息-发布", notes = "动态消息-发布")
* @PostMapping(value = "/release")
* @param lawsNewsFeed public Result<String> release(@Validated @RequestBody LawsNewsFeed lawsNewsFeed) {
* @return // 第一次发布,赋初值
*/ if (Objects.isNull(lawsNewsFeed.getReleaseStatus())) {
@AutoLog(value = "动态消息-编辑") lawsNewsFeed.setReleaseStatus(1);
@ApiOperation(value="动态消息-编辑", notes="动态消息-编辑") lawsNewsFeed.setReadCount(0);
@PostMapping(value = "/edit") }
public Result<T> edit(@Validated @RequestBody LawsNewsFeed lawsNewsFeed) { // 不管第几次发布,发布时间都更新
lawsNewsFeedService.editById(lawsNewsFeed); lawsNewsFeed.setReleaseTime(new Date());
return Result.OK("操作成功!"); lawsNewsFeedService.add(lawsNewsFeed);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
} }
/** /**
@@ -1,23 +1,21 @@
package com.jero.modules.laws.standard.entity; package com.jero.modules.laws.standard.entity;
import java.io.Serializable; import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.jero.common.aspect.annotation.Dict;
import lombok.Data; import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel; import org.jeecgframework.poi.excel.annotation.Excel;
import com.jero.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import javax.validation.constraints.Max;
/** /**
* @Description: 动态消息 * @Description: 动态消息
@@ -68,18 +66,22 @@ public class LawsNewsFeed implements Serializable {
/**动态分类*/ /**动态分类*/
@Excel(name = "动态分类", width = 15) @Excel(name = "动态分类", width = 15)
@ApiModelProperty(value = "动态分类") @ApiModelProperty(value = "动态分类")
@Dict(dicCode = "dynamic_news_type")
private java.lang.String dynamicClassification; private java.lang.String dynamicClassification;
/**动态详情*/ /**动态详情*/
@Excel(name = "动态详情", width = 15) @Excel(name = "动态详情", width = 15)
@ApiModelProperty(value = "动态详情") @ApiModelProperty(value = "动态详情")
@Max(value = 2000, message = "动态详情超出最大限度")
private java.lang.String dynamicDetails; private java.lang.String dynamicDetails;
/**资料文本*/ /**资料文本*/
@Excel(name = "资料文本", width = 15) @Excel(name = "资料文本", width = 15)
@ApiModelProperty(value = "资料文本") @ApiModelProperty(value = "资料文本")
@Max(value = 2000, message = "资料文本超出最大限度")
private java.lang.String dataText; private java.lang.String dataText;
/**发布状态(0-未发布、1-已发布)*/ /**发布状态(0-未发布、1-已发布)*/
@Excel(name = "发布状态(0-未发布、1-已发布)", width = 15) @Excel(name = "发布状态(0-未发布、1-已发布)", width = 15)
@ApiModelProperty(value = "发布状态(0-未发布、1-已发布)") @ApiModelProperty(value = "发布状态(0-未发布、1-已发布)")
@Dict(dicCode = "dynamic_news_status")
private java.lang.Integer releaseStatus; private java.lang.Integer releaseStatus;
/**发布时间*/ /**发布时间*/
@Excel(name = "发布时间", width = 15, format = "yyyy-MM-dd") @Excel(name = "发布时间", width = 15, format = "yyyy-MM-dd")
@@ -91,4 +93,15 @@ public class LawsNewsFeed implements Serializable {
@Excel(name = "阅读次数", width = 15) @Excel(name = "阅读次数", width = 15)
@ApiModelProperty(value = "阅读次数") @ApiModelProperty(value = "阅读次数")
private java.lang.Integer readCount; private java.lang.Integer readCount;
/**编辑人*/
@ApiModelProperty(value = "编辑人")
private String writer;
/**推送范围标识(1-指定用户、2-全体用户)*/
@ApiModelProperty(value = "推送范围标识(1-指定用户、2-全体用户)")
private Integer pushRangeFlag;
@ApiModelProperty(value = "阅读次数")
@TableField(exist = false)
private String pushRange;
} }
@@ -1,12 +1,23 @@
package com.jero.modules.laws.standard.service.impl; package com.jero.modules.laws.standard.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jero.common.system.vo.LoginUser;
import com.jero.modules.laws.common.constant.ResultCommon;
import com.jero.modules.laws.standard.entity.LawsNewsFeed; import com.jero.modules.laws.standard.entity.LawsNewsFeed;
import com.jero.modules.laws.standard.entity.LawsPushRange;
import com.jero.modules.laws.standard.mapper.LawsNewsFeedMapper; import com.jero.modules.laws.standard.mapper.LawsNewsFeedMapper;
import com.jero.modules.laws.standard.service.ILawsNewsFeedService; import com.jero.modules.laws.standard.service.ILawsNewsFeedService;
import com.jero.modules.laws.standard.service.ILawsPushRangeService;
import com.spire.ms.System.Collections.ArrayList;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import com.jero.common.exception.JeroBootException; import com.jero.common.exception.JeroBootException;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Date; import java.util.Date;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -26,6 +37,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@Transactional(rollbackFor = JeroBootException.class) @Transactional(rollbackFor = JeroBootException.class)
public class LawsNewsFeedServiceImpl extends ServiceImpl<LawsNewsFeedMapper, LawsNewsFeed> implements ILawsNewsFeedService { public class LawsNewsFeedServiceImpl extends ServiceImpl<LawsNewsFeedMapper, LawsNewsFeed> implements ILawsNewsFeedService {
@Autowired
private ILawsPushRangeService lawsPushRangeService;
/** /**
* 分页查询 * 分页查询
@@ -41,6 +54,7 @@ public class LawsNewsFeedServiceImpl extends ServiceImpl<LawsNewsFeedMapper, Law
HttpServletRequest req) { HttpServletRequest req) {
QueryWrapper<LawsNewsFeed> queryWrapper = QueryGenerator.initQueryWrapper(lawsNewsFeed, req.getParameterMap()); QueryWrapper<LawsNewsFeed> queryWrapper = QueryGenerator.initQueryWrapper(lawsNewsFeed, req.getParameterMap());
Page<LawsNewsFeed> page = new Page<>(pageNo, pageSize); Page<LawsNewsFeed> page = new Page<>(pageNo, pageSize);
return page(page, queryWrapper); return page(page, queryWrapper);
} }
@@ -64,10 +78,47 @@ public class LawsNewsFeedServiceImpl extends ServiceImpl<LawsNewsFeedMapper, Law
*/ */
@Override @Override
public void add(LawsNewsFeed lawsNewsFeed) { public void add(LawsNewsFeed lawsNewsFeed) {
Date now = new Date(); if (StringUtils.isBlank(lawsNewsFeed.getDynamicHeading())) {
lawsNewsFeed.setCreateTime(now); throw new JeroBootException(ResultCommon.EMPTY_COMMON, "dynamicHeading");
lawsNewsFeed.setUpdateTime(now); }
save(lawsNewsFeed); if (StringUtils.isBlank(lawsNewsFeed.getDynamicClassification())) {
throw new JeroBootException(ResultCommon.EMPTY_COMMON, "dynamicClassification");
}
// 推送范围
String pushRange = lawsNewsFeed.getPushRange();
if (StringUtils.isBlank(pushRange)) {
// 全体用户可见
lawsNewsFeed.setPushRangeFlag(2);
} else {
// 指定用户可见
lawsNewsFeed.setPushRangeFlag(1);
}
// 判断是否拥有操作权限
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if (StringUtils.isNotBlank(lawsNewsFeed.getWriter())
&& !lawsNewsFeed.getWriter().equals(loginUser.getId())) {
throw new JeroBootException(ResultCommon.NO_PERMISSION);
}
lawsNewsFeed.setWriter(loginUser.getId());
saveOrUpdate(lawsNewsFeed);
// 删除推送
LambdaQueryWrapper<LawsPushRange> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(LawsPushRange::getUniqueRelationFlag, lawsNewsFeed.getId());
lawsPushRangeService.remove(queryWrapper);
// 如果推送范围不为空
if (StringUtils.isNotBlank(pushRange)) {
List<String> userIdList = Arrays.asList(pushRange.split(","));
List<LawsPushRange> pushRangeList = new ArrayList();
userIdList.forEach(userId -> {
LawsPushRange lawsPushRange = new LawsPushRange();
lawsPushRange.setUniqueRelationFlag(lawsNewsFeed.getId());
lawsPushRange.setUserId(userId);
pushRangeList.add(lawsPushRange);
});
lawsPushRangeService.saveBatch(pushRangeList);
}
} }
/** /**
@@ -14,6 +14,7 @@ message.empty.standard.number=The standard number cannot be empty
message.empty.standard.name=The standard name cannot be empty message.empty.standard.name=The standard name cannot be empty
message.exists.standard.number=standard number already exists message.exists.standard.number=standard number already exists
message.no.exists.param=param {0} not exists message.no.exists.param=param {0} not exists
message.no.permission=No data operation permission
successfully.cleared=successfully cleared successfully.cleared=successfully cleared
successfully.deleted.in.bulk=successfully deleted in bulk successfully.deleted.in.bulk=successfully deleted in bulk
@@ -13,6 +13,7 @@ message.empty.standard.number=The standard number cannot be empty
message.empty.standard.name=The standard name cannot be empty message.empty.standard.name=The standard name cannot be empty
message.exists.standard.number=standard number already exists message.exists.standard.number=standard number already exists
message.no.exists.param=param {0} not exists message.no.exists.param=param {0} not exists
message.no.permission=No data operation permission
es.rmr.setQuality.overTen=Please select up to 10 es.rmr.setQuality.overTen=Please select up to 10
@@ -14,6 +14,7 @@ message.empty.standard.number=\u6807\u51C6\u7F16\u53F7\u4E0D\u80FD\u4E3A\u7A7A
message.empty.standard.name=\u6807\u51C6\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A message.empty.standard.name=\u6807\u51C6\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A
message.exists.standard.number=标准编号已经存在 message.exists.standard.number=标准编号已经存在
message.no.exists.param=参数{0}不存在 message.no.exists.param=参数{0}不存在
message.no.permission=没有数据操作权限
successfully.cleared=\u6E05\u9664\u6210\u529F successfully.cleared=\u6E05\u9664\u6210\u529F
successfully.deleted.in.bulk=\u6279\u91CF\u5220\u9664\u6210\u529F successfully.deleted.in.bulk=\u6279\u91CF\u5220\u9664\u6210\u529F