diff --git a/laws-modules/src/main/java/com/jero/modules/laws/common/constant/FieldCommon.java b/laws-modules/src/main/java/com/jero/modules/laws/common/constant/FieldCommon.java index 0371e073..fc140f00 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/common/constant/FieldCommon.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/common/constant/FieldCommon.java @@ -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"; // 中文双引号 diff --git a/laws-modules/src/main/java/com/jero/modules/laws/common/constant/ResultCommon.java b/laws-modules/src/main/java/com/jero/modules/laws/common/constant/ResultCommon.java index 6fe425af..487ca5d4 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/common/constant/ResultCommon.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/common/constant/ResultCommon.java @@ -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条 diff --git a/laws-modules/src/main/java/com/jero/modules/laws/standard/controller/LawsNewsFeedController.java b/laws-modules/src/main/java/com/jero/modules/laws/standard/controller/LawsNewsFeedController.java index 0d66ad42..bac08f6c 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/standard/controller/LawsNewsFeedController.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/standard/controller/LawsNewsFeedController.java @@ -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 { - @Autowired - private ILawsNewsFeedService lawsNewsFeedService; - - /** - * 分页列表查询 - * - * @param lawsNewsFeed - * @param pageNo - * @param pageSize - * @param req - * @return - */ - @AutoLog(value = "动态消息-分页列表查询") - @ApiOperation(value="动态消息-分页列表查询", notes="动态消息-分页列表查询") - @GetMapping(value = "/page") - public Result> queryPageList(LawsNewsFeed lawsNewsFeed, - @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, - HttpServletRequest req) { - IPage 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> queryList(LawsNewsFeed lawsNewsFeed, HttpServletRequest req) { + * 分页列表查询 + * + * @param lawsNewsFeed + * @param pageNo + * @param pageSize + * @param req + * @return + */ + @AutoLog(value = "动态消息-分页列表查询") + @ApiOperation(value = "动态消息-分页列表查询", notes = "动态消息-分页列表查询") + @GetMapping(value = "/page") + public Result> queryPageList(LawsNewsFeed lawsNewsFeed, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + IPage 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> queryList(LawsNewsFeed lawsNewsFeed, HttpServletRequest req) { List list = lawsNewsFeedService.queryList(lawsNewsFeed, req); return Result.OK(list); - } + } - /** - * 添加 - * - * @param lawsNewsFeed - * @return - */ - @AutoLog(value = "动态消息-添加") - @ApiOperation(value="动态消息-添加", notes="动态消息-添加") - @PostMapping(value = "/add") - public Result add(@Validated @RequestBody LawsNewsFeed lawsNewsFeed) { - lawsNewsFeedService.add(lawsNewsFeed); - return Result.OK("操作成功!"); - } - - /** - * 编辑 - * - * @param lawsNewsFeed - * @return - */ - @AutoLog(value = "动态消息-编辑") - @ApiOperation(value="动态消息-编辑", notes="动态消息-编辑") - @PostMapping(value = "/edit") - public Result 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 delete(@RequestBody Map map) { - if(!map.containsKey("id") || StringUtils.isEmpty(map.get("id"))){ - return Result.error("请选择数据!"); + @AutoLog(value = "动态消息-保存") + @ApiOperation(value = "动态消息-保存", notes = "动态消息-保存") + @PostMapping(value = "/save") + public Result 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 deleteBatch(@RequestBody Map 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 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 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 delete(@RequestBody Map 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 deleteBatch(@RequestBody Map 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 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 importExcel(HttpServletRequest request, HttpServletResponse response) { return super.importExcel(request, response, LawsNewsFeed.class); diff --git a/laws-modules/src/main/java/com/jero/modules/laws/standard/entity/LawsNewsFeed.java b/laws-modules/src/main/java/com/jero/modules/laws/standard/entity/LawsNewsFeed.java index e485f4f4..40748d33 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/standard/entity/LawsNewsFeed.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/standard/entity/LawsNewsFeed.java @@ -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; } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/standard/service/impl/LawsNewsFeedServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/standard/service/impl/LawsNewsFeedServiceImpl.java index ea0b453f..53d21242 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/standard/service/impl/LawsNewsFeedServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/standard/service/impl/LawsNewsFeedServiceImpl.java @@ -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 implements ILawsNewsFeedService { + @Autowired + private ILawsPushRangeService lawsPushRangeService; /** * 分页查询 @@ -41,6 +54,7 @@ public class LawsNewsFeedServiceImpl extends ServiceImpl queryWrapper = QueryGenerator.initQueryWrapper(lawsNewsFeed, req.getParameterMap()); Page page = new Page<>(pageNo, pageSize); + return page(page, queryWrapper); } @@ -64,10 +78,47 @@ public class LawsNewsFeedServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(LawsPushRange::getUniqueRelationFlag, lawsNewsFeed.getId()); + lawsPushRangeService.remove(queryWrapper); + + // 如果推送范围不为空 + if (StringUtils.isNotBlank(pushRange)) { + List userIdList = Arrays.asList(pushRange.split(",")); + List pushRangeList = new ArrayList(); + userIdList.forEach(userId -> { + LawsPushRange lawsPushRange = new LawsPushRange(); + lawsPushRange.setUniqueRelationFlag(lawsNewsFeed.getId()); + lawsPushRange.setUserId(userId); + pushRangeList.add(lawsPushRange); + }); + lawsPushRangeService.saveBatch(pushRangeList); + } } /** diff --git a/laws-single-startup/src/main/resources/i18n/messages.properties b/laws-single-startup/src/main/resources/i18n/messages.properties index 61a99b84..c3242c69 100644 --- a/laws-single-startup/src/main/resources/i18n/messages.properties +++ b/laws-single-startup/src/main/resources/i18n/messages.properties @@ -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 diff --git a/laws-single-startup/src/main/resources/i18n/messages_en.properties b/laws-single-startup/src/main/resources/i18n/messages_en.properties index f0577f88..0aa0a63f 100644 --- a/laws-single-startup/src/main/resources/i18n/messages_en.properties +++ b/laws-single-startup/src/main/resources/i18n/messages_en.properties @@ -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 diff --git a/laws-single-startup/src/main/resources/i18n/messages_zh.properties b/laws-single-startup/src/main/resources/i18n/messages_zh.properties index cc185b00..2f06a94a 100644 --- a/laws-single-startup/src/main/resources/i18n/messages_zh.properties +++ b/laws-single-startup/src/main/resources/i18n/messages_zh.properties @@ -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