18339543638 2 лет назад
Родитель
Сommit
d8bd4950e0

+ 14 - 0
tr-modules-api/tr-module-system-api/src/main/java/cn/tr/module/api/sys/notice/SysNoticeApi.java

@@ -0,0 +1,14 @@
+package cn.tr.module.api.sys.notice;
+
+
+import java.util.*;
+/**
+ * @ClassName : SysNoticeApi
+ * @Description :
+ * @Author : LF
+ * @Date: 2023年11月06日
+ */
+
+public interface SysNoticeApi {
+    List<SysNoticeBO> selectList();
+}

+ 45 - 0
tr-modules-api/tr-module-system-api/src/main/java/cn/tr/module/api/sys/notice/SysNoticeBO.java

@@ -0,0 +1,45 @@
+package cn.tr.module.api.sys.notice;
+
+import lombok.Data;
+import lombok.ToString;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 系统公告传输对象
+ *
+ * @author lf
+ * @date  2023/11/06 10:12
+ **/
+@Data
+@ToString
+public class SysNoticeBO implements Serializable {
+    private static final long serialVersionUID = 1L;
+    private String id;
+
+    /**
+     * 标题
+     */
+    private String title;
+
+    /**
+     * 类型
+     */
+    private String type;
+
+    /**
+     * 内容
+     */
+    private String content;
+
+
+    /**
+     * 发布人昵称
+     */
+    private String updateNickName;
+
+    /**
+     * 发布时间
+     */
+    private Date updateTime;
+}

+ 81 - 0
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/notice/controller/SysNoticeController.java

@@ -0,0 +1,81 @@
+package cn.tr.module.sys.notice.controller;
+
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.tr.core.validation.Insert;
+import cn.tr.core.validation.Update;
+import cn.tr.core.pojo.CommonResult;
+import lombok.AllArgsConstructor;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+import cn.tr.module.sys.notice.dto.SysNoticeDTO;
+import cn.tr.module.sys.notice.service.ISysNoticeService;
+import cn.tr.module.sys.notice.dto.SysNoticeQueryDTO;
+import java.util.*;
+import cn.tr.plugin.mybatis.base.BaseController;
+import org.springframework.web.bind.annotation.*;
+import cn.tr.module.api.sys.log.annotation.OperateLog;
+import cn.tr.core.pojo.TableDataInfo;
+/**
+ * 系统公告控制器
+ *
+ * @author lf
+ * @date  2023/11/06 10:12
+ */
+@Api(tags = "系统公告")
+@RestController
+@RequestMapping("/sys/notice/notice")
+@AllArgsConstructor
+public class SysNoticeController extends BaseController{
+
+    private final ISysNoticeService sysNoticeService;
+
+    @ApiOperationSupport(author = "lf",order = 1)
+    @ApiOperation(value="根据条件查询系统公告",notes = "权限: 无")
+    @PostMapping("/query/page")
+    public TableDataInfo<SysNoticeDTO> selectList(@RequestBody SysNoticeQueryDTO query) {
+        startPage();
+        return getDataTable(sysNoticeService.selectSysNoticeList(query));
+    }
+
+    @ApiOperationSupport(author = "lf",order = 2)
+    @ApiOperation(value = "根据id查询系统公告",notes = "权限: notice:notice:query")
+    @GetMapping("/detail/{id}")
+    @SaCheckPermission("notice:notice:query")
+    public CommonResult<SysNoticeDTO> findById(@PathVariable("id") String id){
+        startPage();
+        return CommonResult.success(sysNoticeService.selectSysNoticeById(id));
+    }
+
+    @ApiOperationSupport(author = "lf",order = 3)
+    @ApiOperation(value="添加系统公告",notes = "权限: notice:notice:add")
+    @PostMapping("/add")
+    @OperateLog
+    @SaCheckPermission("notice:notice:add")
+    public CommonResult<Boolean> add(@RequestBody@Validated(Insert.class) SysNoticeDTO source) {
+        return CommonResult.success(sysNoticeService.insertSysNotice(source));
+    }
+
+    @ApiOperationSupport(author = "lf",order = 4)
+    @ApiOperation(value="通过主键id编辑系统公告",notes = "权限: notice:notice:edit")
+    @PostMapping("/edit")
+    @OperateLog
+    @SaCheckPermission("notice:notice:edit")
+    public CommonResult<Boolean> edit(@RequestBody@Validated(Update.class) SysNoticeDTO source) {
+        return CommonResult.success(sysNoticeService.updateSysNoticeById(source));
+    }
+
+    @ApiOperationSupport(author = "lf",order = 5)
+    @ApiOperation(value="删除系统公告",notes = "权限: notice:notice:remove")
+    @PostMapping("/removeByIds")
+    @OperateLog
+    @SaCheckPermission("notice:notice:remove")
+    public CommonResult<Integer> delete(@RequestBody Collection<String> ids) {
+        return CommonResult.success(sysNoticeService.removeSysNoticeByIds(ids));
+    }
+}

+ 39 - 0
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/notice/dto/SysNoticeDTO.java

@@ -0,0 +1,39 @@
+package cn.tr.module.sys.notice.dto;
+
+import cn.tr.core.utils.UserUtil;
+import cn.tr.plugin.mybatis.pojo.BaseDTO;
+import lombok.ToString;
+import cn.tr.core.validation.Update;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import javax.validation.constraints.*;
+
+/**
+ * 系统公告传输对象
+ *
+ * @author lf
+ * @date  2023/11/06 10:12
+ **/
+@Data
+@ToString
+public class SysNoticeDTO extends BaseDTO {
+    private static final long serialVersionUID = 1L;
+    @ApiModelProperty(value = "id", position = 1)
+     @NotBlank  (message = "主键不能为空",groups = {Update.class})
+    private String id;
+
+    @ApiModelProperty(value = "公告名称", position = 2)
+    private String title;
+
+    @ApiModelProperty(value = "公告类型", position = 3)
+    private String type;
+
+    @ApiModelProperty(value = "公告内容", position = 4)
+    private String content;
+
+
+    @ApiModelProperty(value = "发布人昵称", position = 4)
+    public String getUpdateNickName() {
+        return UserUtil.getNickName(getUpdateBy());
+    }
+}

+ 25 - 0
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/notice/dto/SysNoticeQueryDTO.java

@@ -0,0 +1,25 @@
+package cn.tr.module.sys.notice.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.ToString;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+/**
+ * 系统公告查询参数
+ *
+ * @author lf
+ * @date  2023/11/06 10:12
+ **/
+@Data
+@ApiModel("系统公告查询参数")
+@ToString
+public class SysNoticeQueryDTO  {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("公告类型")
+    private String type;
+
+    @ApiModelProperty("模糊查询(标题)")
+    private String blurry;
+}

+ 31 - 0
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/notice/mapper/SysNoticeMapper.java

@@ -0,0 +1,31 @@
+package cn.tr.module.sys.notice.mapper;
+
+import cn.tr.module.api.sys.notice.SysNoticeBO;
+import cn.tr.module.sys.notice.po.SysNoticePO;
+import cn.tr.module.sys.notice.dto.SysNoticeDTO;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+* 系统公告映射工具
+*
+* @author lf
+* @date  2023/11/06 10:12
+**/
+@Mapper
+public interface SysNoticeMapper {
+    SysNoticeMapper INSTANCE = Mappers.getMapper(SysNoticeMapper.class);
+
+    SysNoticePO convertPO(SysNoticeDTO source);
+
+    SysNoticeDTO convertDto(SysNoticePO source);
+
+    List<SysNoticeDTO> convertDtoList(List<SysNoticePO> source);
+
+    List<SysNoticePO> convertPOList(List<SysNoticeDTO> source);
+
+    List<SysNoticeBO> convertBOList(List<SysNoticeDTO> source);
+
+}

+ 40 - 0
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/notice/po/SysNoticePO.java

@@ -0,0 +1,40 @@
+package cn.tr.module.sys.notice.po;
+
+import cn.tr.plugin.mybatis.pojo.TenantPO;   
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+/**
+ * 系统公告实体
+ *
+ * @author lf
+ * @date  2023/11/06 10:12
+ **/
+@Data
+@TableName(value="sys_notice",autoResultMap = true)
+@EqualsAndHashCode(callSuper = true)
+@ToString
+public class SysNoticePO extends TenantPO {
+
+    /** id */
+    @TableId
+    @ApiModelProperty(value = "id", position = 1)
+    private String id;
+
+    /** 公告名称 */
+    @ApiModelProperty(value = "公告名称", position = 2)
+    private String title;
+
+    /** 公告类型 */
+    @ApiModelProperty(value = "公告类型", position = 3)
+    private String type;
+
+    /** 公告内容 */
+    @ApiModelProperty(value = "公告内容", position = 4)
+    private String content;
+
+}

+ 29 - 0
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/notice/provider/SysNoticeProvider.java

@@ -0,0 +1,29 @@
+package cn.tr.module.sys.notice.provider;
+
+import cn.tr.core.pojo.PageDomain;
+import cn.tr.core.strategy.PageStrategy;
+import cn.tr.module.api.sys.notice.SysNoticeApi;
+import cn.tr.module.api.sys.notice.SysNoticeBO;
+import cn.tr.module.sys.notice.dto.SysNoticeQueryDTO;
+import cn.tr.module.sys.notice.mapper.SysNoticeMapper;
+import cn.tr.module.sys.notice.service.ISysNoticeService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @ClassName : SysNoticeProvider
+ * @Description :
+ * @Author : LF
+ * @Date: 2023年11月06日
+ */
+@Component
+@AllArgsConstructor
+public class SysNoticeProvider implements SysNoticeApi {
+    private final ISysNoticeService noticeService;
+    @Override
+    public List<SysNoticeBO> selectList() {
+        return  SysNoticeMapper.INSTANCE.convertBOList(noticeService.selectSysNoticeList(new SysNoticeQueryDTO()));
+    }
+}

+ 16 - 0
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/notice/repository/SysNoticeRepository.java

@@ -0,0 +1,16 @@
+package cn.tr.module.sys.notice.repository;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+import cn.tr.module.sys.notice.po.SysNoticePO;
+/**
+ * 系统公告Mapper接口
+ *
+ * @author lf
+ * @date  2023/11/06 10:12
+ **/
+@Repository
+@Mapper
+public interface SysNoticeRepository extends BaseMapper<SysNoticePO> {
+}

+ 54 - 0
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/notice/service/ISysNoticeService.java

@@ -0,0 +1,54 @@
+package cn.tr.module.sys.notice.service;
+
+import cn.tr.module.sys.notice.dto.SysNoticeDTO;
+import cn.tr.module.sys.notice.dto.SysNoticeQueryDTO;
+import java.util.*;
+
+/**
+ * 系统公告Service接口
+ *
+ * @author lf
+ * @date  2023/11/06 10:12
+ **/
+public interface ISysNoticeService{
+
+    /**
+     * 根据条件查询系统公告
+     * @param    query 查询参数
+     * @author   lf
+     * @date      2023/11/06 10:12
+     */
+    List<SysNoticeDTO> selectSysNoticeList(SysNoticeQueryDTO query);
+
+    /**
+     * 根据id查询系统公告
+     * @param    id 主键id
+     * @author   lf
+     * @date      2023/11/06 10:12
+     */
+    SysNoticeDTO selectSysNoticeById(String id);
+
+    /**
+     * 编辑系统公告
+     * @param   source 编辑实体类
+     * @author  lf
+     * @date     2023/11/06 10:12
+     */
+    boolean updateSysNoticeById(SysNoticeDTO source);
+
+    /**
+     * 新增系统公告
+     * @param   source 新增实体类
+     * @author lf
+     * @date  2023/11/06 10:12
+     */
+    boolean insertSysNotice(SysNoticeDTO source);
+
+    /**
+     * 删除系统公告详情
+     * @param  ids 删除主键集合
+     * @author lf
+     * @date    2023/11/06 10:12
+     */
+    int removeSysNoticeByIds(Collection<String> ids);
+}

+ 95 - 0
tr-modules/tr-module-system/src/main/java/cn/tr/module/sys/notice/service/impl/SysNoticeServiceImpl.java

@@ -0,0 +1,95 @@
+package cn.tr.module.sys.notice.service.impl;
+
+import cn.hutool.core.util.StrUtil;
+import cn.tr.core.exception.TRExcCode;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import cn.hutool.core.collection.CollectionUtil;
+import org.springframework.transaction.annotation.Transactional;
+import cn.tr.core.exception.ServiceException;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import cn.tr.module.sys.notice.repository.SysNoticeRepository;
+import cn.tr.module.sys.notice.po.SysNoticePO;
+import cn.tr.module.sys.notice.dto.SysNoticeDTO;
+import cn.tr.module.sys.notice.dto.SysNoticeQueryDTO;
+import java.util.*;
+import cn.tr.module.sys.notice.service.ISysNoticeService;
+import cn.tr.module.sys.notice.mapper.SysNoticeMapper;
+/**
+ * 系统公告Service接口实现类
+ *
+ * @author lf
+ * @date  2023/11/06 10:12
+ **/
+@Service
+public class SysNoticeServiceImpl implements ISysNoticeService {
+    @Autowired
+    private SysNoticeRepository baseRepository;
+
+
+    /**
+    * 根据条件查询系统公告
+    * @param    query 查询参数
+    * @author   lf
+    * @date      2023/11/06 10:12
+    */
+    @Override
+    public List<SysNoticeDTO> selectSysNoticeList(SysNoticeQueryDTO query){
+        return SysNoticeMapper.INSTANCE.convertDtoList(
+                baseRepository.selectList(new LambdaQueryWrapper<SysNoticePO>()
+                        .eq(StrUtil.isNotBlank(query.getType()),SysNoticePO::getType,query.getType())
+                        .like(StrUtil.isNotBlank(query.getBlurry()),SysNoticePO::getTitle,query.getBlurry())
+                )
+        );
+    };
+
+    /**
+    * 根据id查询系统公告
+    * @param    id 主键id
+    * @author   lf
+    * @date      2023/11/06 10:12
+    */
+    @Override
+    public SysNoticeDTO selectSysNoticeById(String id){
+        return SysNoticeMapper.INSTANCE.convertDto(baseRepository.selectById(id));
+    };
+
+    /**
+    * 编辑系统公告
+    * @param   source 编辑实体类
+    * @author  lf
+    * @date     2023/11/06 10:12
+    */
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public boolean updateSysNoticeById(SysNoticeDTO source){
+            return baseRepository.updateById(SysNoticeMapper.INSTANCE.convertPO(source))!=0;
+    };
+
+    /**
+    * 新增系统公告
+    * @param   source 新增实体类
+    * @author lf
+    * @date  2023/11/06 10:12
+    */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean insertSysNotice(SysNoticeDTO source){
+        return baseRepository.insert(SysNoticeMapper.INSTANCE.convertPO(source))!=0;
+    };
+
+    /**
+    * 删除系统公告详情
+    * @param  ids 删除主键集合
+    * @author lf
+    * @date    2023/11/06 10:12
+    */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int removeSysNoticeByIds(Collection<String> ids){
+        if(CollectionUtil.isEmpty(ids)){
+            throw new ServiceException(TRExcCode.SYSTEM_ERROR_B0001,"请选择要删除的数据");
+        }
+        return baseRepository.deleteBatchIds(ids);
+    };
+}

+ 0 - 1
tr-test/src/main/java/cn/tr/test/WebApplication.java

@@ -18,7 +18,6 @@ import org.springframework.scheduling.annotation.EnableAsync;
 @EnableAsync
 public class WebApplication {
     public static void main(String[] args) {
-        SaStrategy.me.checkElementAnnotation= t->{};
         SpringApplication.run(WebApplication.class);
     }