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 _STANDARD_SPLIT = "_standardSplit";
// 树节点编码
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 EXIST_STANDARD_NUMBER = "message.exists.standard.number"; // 标准编号已经存在
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条
@@ -1,11 +1,12 @@
package com.jero.modules.laws.standard.controller;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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.service.ILawsNewsFeedService;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -22,152 +23,156 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.formula.functions.T;
/**
/**
* @Description: 动态消息
* @Author: jero-boot
* @Date: 2023-09-11
* @Date: 2023-09-11
* @Version: V1.0
*/
@Api(tags="动态消息")
@Api(tags = "动态消息")
@RestController
@RequestMapping("/laws/standard/lawsNewsFeed")
@Slf4j
public class LawsNewsFeedController extends JeroController<LawsNewsFeed, ILawsNewsFeedService> {
@Autowired
private ILawsNewsFeedService lawsNewsFeedService;
/**
* 分页列表查询
*
* @param lawsNewsFeed
* @param pageNo
* @param pageSize
* @param req
* @return
*/
@AutoLog(value = "动态消息-分页列表查询")
@ApiOperation(value="动态消息-分页列表查询", notes="动态消息-分页列表查询")
@GetMapping(value = "/page")
public Result<IPage<LawsNewsFeed>> queryPageList(LawsNewsFeed lawsNewsFeed,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) {
IPage<LawsNewsFeed> pageList = lawsNewsFeedService.queryPage(lawsNewsFeed, pageNo, pageSize, req);
return Result.OK(pageList);
}
@Autowired
private ILawsNewsFeedService lawsNewsFeedService;
/**
* 列表查询
*
* @param lawsNewsFeed
* @param req
* @return
*/
@AutoLog(value = "动态消息-列表查询")
@ApiOperation(value="动态消息-列表查询", notes="动态消息-列表查询")
@GetMapping(value = "/list")
public Result<List<LawsNewsFeed>> queryList(LawsNewsFeed lawsNewsFeed, HttpServletRequest req) {
* 分页列表查询
*
* @param lawsNewsFeed
* @param pageNo
* @param pageSize
* @param req
* @return
*/
@AutoLog(value = "动态消息-分页列表查询")
@ApiOperation(value = "动态消息-分页列表查询", notes = "动态消息-分页列表查询")
@GetMapping(value = "/page")
public Result<IPage<LawsNewsFeed>> queryPageList(LawsNewsFeed lawsNewsFeed,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
HttpServletRequest req) {
IPage<LawsNewsFeed> pageList = lawsNewsFeedService.queryPage(lawsNewsFeed, pageNo, pageSize, req);
return Result.OK(pageList);
}
/**
* 列表查询
*
* @param lawsNewsFeed
* @param req
* @return
*/
@AutoLog(value = "动态消息-列表查询")
@ApiOperation(value = "动态消息-列表查询", notes = "动态消息-列表查询")
@GetMapping(value = "/list")
public Result<List<LawsNewsFeed>> queryList(LawsNewsFeed lawsNewsFeed, HttpServletRequest req) {
List<LawsNewsFeed> list = lawsNewsFeedService.queryList(lawsNewsFeed, req);
return Result.OK(list);
}
}
/**
* 添加
*
* @param lawsNewsFeed
* @return
*/
@AutoLog(value = "动态消息-添加")
@ApiOperation(value="动态消息-添加", notes="动态消息-添加")
@PostMapping(value = "/add")
public Result<T> add(@Validated @RequestBody LawsNewsFeed lawsNewsFeed) {
lawsNewsFeedService.add(lawsNewsFeed);
return Result.OK("操作成功!");
}
/**
* 编辑
*
* @param lawsNewsFeed
* @return
*/
@AutoLog(value = "动态消息-编辑")
@ApiOperation(value="动态消息-编辑", notes="动态消息-编辑")
@PostMapping(value = "/edit")
public Result<T> edit(@Validated @RequestBody LawsNewsFeed lawsNewsFeed) {
lawsNewsFeedService.editById(lawsNewsFeed);
return Result.OK("操作成功!");
}
/**
* 通过id删除
*
* @param map
* @return
*/
@AutoLog(value = "动态消息-通过id删除")
@ApiOperation(value="动态消息-通过id删除", notes="动态消息-通过id删除")
@PostMapping(value = "/delete")
public Result<T> delete(@RequestBody Map<String, String> map) {
if(!map.containsKey("id") || StringUtils.isEmpty(map.get("id"))){
return Result.error("请选择数据!");
@AutoLog(value = "动态消息-保存")
@ApiOperation(value = "动态消息-保存", notes = "动态消息-保存")
@PostMapping(value = "/save")
public Result<String> save(@Validated @RequestBody LawsNewsFeed lawsNewsFeed) {
// 第一次保存,附上初值
if (Objects.isNull(lawsNewsFeed.getReleaseStatus())) {
lawsNewsFeed.setReleaseStatus(0);
lawsNewsFeed.setReadCount(0);
}
lawsNewsFeedService.deleteById(map.get("id"));
return Result.OK("删除成功!");
}
// 发布时间不为空(发布后的保存,发布时间更新)
if (!Objects.isNull(lawsNewsFeed.getReleaseTime())) {
lawsNewsFeed.setReleaseTime(new Date());
}
lawsNewsFeedService.add(lawsNewsFeed);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 批量删除
*
* @param map
* @return
*/
@AutoLog(value = "动态消息-批量删除")
@ApiOperation(value="动态消息-批量删除", notes="动态消息-批量删除")
@PostMapping(value = "/deleteBatch")
public Result<T> deleteBatch(@RequestBody Map<String, String> map) {
if(!map.containsKey("ids") || StringUtils.isEmpty(map.get("ids"))){
return Result.error("请选择数据!");
}
this.lawsNewsFeedService.deleteByIds(Arrays.asList(map.get("ids").split(",")));
return Result.OK("批量删除成功!");
}
/**
* 通过id查询
*
* @param id
* @return
*/
@AutoLog(value = "动态消息-通过id查询")
@ApiOperation(value="动态消息-通过id查询", notes="动态消息-通过id查询")
@GetMapping(value = "/queryById")
public Result<LawsNewsFeed> queryById(@RequestParam(name="id",required=true) String id) {
LawsNewsFeed lawsNewsFeed = lawsNewsFeedService.queryById(id);
if(lawsNewsFeed==null) {
return Result.error("未找到对应数据");
}
return Result.OK(lawsNewsFeed);
}
@AutoLog(value = "动态消息-发布")
@ApiOperation(value = "动态消息-发布", notes = "动态消息-发布")
@PostMapping(value = "/release")
public Result<String> release(@Validated @RequestBody LawsNewsFeed lawsNewsFeed) {
// 第一次发布,赋初值
if (Objects.isNull(lawsNewsFeed.getReleaseStatus())) {
lawsNewsFeed.setReleaseStatus(1);
lawsNewsFeed.setReadCount(0);
}
// 不管第几次发布,发布时间都更新
lawsNewsFeed.setReleaseTime(new Date());
lawsNewsFeedService.add(lawsNewsFeed);
return Result.OK(MessageUtils.getMessage(ResultCommon.OK));
}
/**
* 导出excel
*
* @param request
* @param lawsNewsFeed
*/
* 通过id删除
*
* @param map
* @return
*/
@AutoLog(value = "动态消息-通过id删除")
@ApiOperation(value = "动态消息-通过id删除", notes = "动态消息-通过id删除")
@PostMapping(value = "/delete")
public Result<T> delete(@RequestBody Map<String, String> map) {
if (!map.containsKey("id") || StringUtils.isEmpty(map.get("id"))) {
return Result.error("请选择数据!");
}
lawsNewsFeedService.deleteById(map.get("id"));
return Result.OK("删除成功!");
}
/**
* 批量删除
*
* @param map
* @return
*/
@AutoLog(value = "动态消息-批量删除")
@ApiOperation(value = "动态消息-批量删除", notes = "动态消息-批量删除")
@PostMapping(value = "/deleteBatch")
public Result<T> deleteBatch(@RequestBody Map<String, String> map) {
if (!map.containsKey("ids") || StringUtils.isEmpty(map.get("ids"))) {
return Result.error("请选择数据!");
}
this.lawsNewsFeedService.deleteByIds(Arrays.asList(map.get("ids").split(",")));
return Result.OK("批量删除成功!");
}
/**
* 通过id查询
*
* @param id
* @return
*/
@AutoLog(value = "动态消息-通过id查询")
@ApiOperation(value = "动态消息-通过id查询", notes = "动态消息-通过id查询")
@GetMapping(value = "/queryById")
public Result<LawsNewsFeed> queryById(@RequestParam(name = "id", required = true) String id) {
LawsNewsFeed lawsNewsFeed = lawsNewsFeedService.queryById(id);
if (lawsNewsFeed == null) {
return Result.error("未找到对应数据");
}
return Result.OK(lawsNewsFeed);
}
/**
* 导出excel
*
* @param request
* @param lawsNewsFeed
*/
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, LawsNewsFeed lawsNewsFeed) {
return super.exportXls(request, lawsNewsFeed, LawsNewsFeed.class, "动态消息");
}
/**
* 通过excel导入数据
*
* @param request
* @param response
* @return
*/
* 通过excel导入数据
*
* @param request
* @param response
* @return
*/
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<LawsNewsFeed> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, LawsNewsFeed.class);
@@ -1,23 +1,21 @@
package com.jero.modules.laws.standard.entity;
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.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.jero.common.aspect.annotation.Dict;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import com.jero.common.aspect.annotation.Dict;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import javax.validation.constraints.Max;
/**
* @Description: 动态消息
@@ -68,18 +66,22 @@ public class LawsNewsFeed implements Serializable {
/**动态分类*/
@Excel(name = "动态分类", width = 15)
@ApiModelProperty(value = "动态分类")
@Dict(dicCode = "dynamic_news_type")
private java.lang.String dynamicClassification;
/**动态详情*/
@Excel(name = "动态详情", width = 15)
@ApiModelProperty(value = "动态详情")
@Max(value = 2000, message = "动态详情超出最大限度")
private java.lang.String dynamicDetails;
/**资料文本*/
@Excel(name = "资料文本", width = 15)
@ApiModelProperty(value = "资料文本")
@Max(value = 2000, message = "资料文本超出最大限度")
private java.lang.String dataText;
/**发布状态(0-未发布、1-已发布)*/
@Excel(name = "发布状态(0-未发布、1-已发布)", width = 15)
@ApiModelProperty(value = "发布状态(0-未发布、1-已发布)")
@Dict(dicCode = "dynamic_news_status")
private java.lang.Integer releaseStatus;
/**发布时间*/
@Excel(name = "发布时间", width = 15, format = "yyyy-MM-dd")
@@ -91,4 +93,15 @@ public class LawsNewsFeed implements Serializable {
@Excel(name = "阅读次数", width = 15)
@ApiModelProperty(value = "阅读次数")
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;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.LawsPushRange;
import com.jero.modules.laws.standard.mapper.LawsNewsFeedMapper;
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.transaction.annotation.Transactional;
import com.jero.common.exception.JeroBootException;
import java.util.Arrays;
import java.util.List;
import java.util.Date;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -26,6 +37,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@Transactional(rollbackFor = JeroBootException.class)
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) {
QueryWrapper<LawsNewsFeed> queryWrapper = QueryGenerator.initQueryWrapper(lawsNewsFeed, req.getParameterMap());
Page<LawsNewsFeed> page = new Page<>(pageNo, pageSize);
return page(page, queryWrapper);
}
@@ -64,10 +78,47 @@ public class LawsNewsFeedServiceImpl extends ServiceImpl<LawsNewsFeedMapper, Law
*/
@Override
public void add(LawsNewsFeed lawsNewsFeed) {
Date now = new Date();
lawsNewsFeed.setCreateTime(now);
lawsNewsFeed.setUpdateTime(now);
save(lawsNewsFeed);
if (StringUtils.isBlank(lawsNewsFeed.getDynamicHeading())) {
throw new JeroBootException(ResultCommon.EMPTY_COMMON, "dynamicHeading");
}
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.exists.standard.number=standard number already exists
message.no.exists.param=param {0} not exists
message.no.permission=No data operation permission
successfully.cleared=successfully cleared
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.exists.standard.number=standard number already 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
@@ -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.exists.standard.number=标准编号已经存在
message.no.exists.param=参数{0}不存在
message.no.permission=没有数据操作权限
successfully.cleared=\u6E05\u9664\u6210\u529F
successfully.deleted.in.bulk=\u6279\u91CF\u5220\u9664\u6210\u529F