Эх сурвалжийг харах

[Feature] 在线留言V1.0

AA 10 сар өмнө
parent
commit
ce20e28e77
20 өөрчлөгдсөн 489 нэмэгдсэн , 60 устгасан
  1. 36 0
      db/db240817-addCommentTable.sql
  2. 32 8
      pom.xml
  3. 6 0
      src/main/java/com/dragon/tj/portal/auth/common/constants/Role.java
  4. 12 19
      src/main/java/com/dragon/tj/portal/auth/config/WebSecurityConfig.java
  5. 0 3
      src/main/java/com/dragon/tj/portal/auth/module/hmac/HmacAuthenticationFilter.java
  6. 9 9
      src/main/java/com/dragon/tj/portal/common/constants/BusinessConstants.java
  7. 3 0
      src/main/java/com/dragon/tj/portal/common/constants/CommonConstants.java
  8. 6 0
      src/main/java/com/dragon/tj/portal/common/enums/log/ModuleEnum.java
  9. 0 2
      src/main/java/com/dragon/tj/portal/controller/AppController.java
  10. 0 2
      src/main/java/com/dragon/tj/portal/controller/BusinessController.java
  11. 78 0
      src/main/java/com/dragon/tj/portal/controller/CommentController.java
  12. 0 2
      src/main/java/com/dragon/tj/portal/controller/ExternalAppController.java
  13. 0 2
      src/main/java/com/dragon/tj/portal/controller/IssueController.java
  14. 69 0
      src/main/java/com/dragon/tj/portal/entity/CommentDetailInfo.java
  15. 64 0
      src/main/java/com/dragon/tj/portal/entity/CommentInfo.java
  16. 13 0
      src/main/java/com/dragon/tj/portal/mapper/CommentDetailMapper.java
  17. 13 0
      src/main/java/com/dragon/tj/portal/mapper/CommentInfoMapper.java
  18. 20 0
      src/main/java/com/dragon/tj/portal/service/CommentService.java
  19. 111 0
      src/main/java/com/dragon/tj/portal/service/impl/CommentServiceImpl.java
  20. 17 13
      src/main/java/com/dragon/tj/portal/service/impl/InstallInfoServiceImpl.java

+ 36 - 0
db/db240817-addCommentTable.sql

@@ -0,0 +1,36 @@
+-- portal.comment_info definition
+
+CREATE TABLE `comment_info`
+(
+    `id`                 bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
+    `content`            text COMMENT '内容',
+    `create_user_idcard` varchar(18)  DEFAULT NULL COMMENT '创建人身份证号',
+    `create_user`        varchar(255) DEFAULT NULL COMMENT '创建人',
+    `create_org_code`    varchar(20)  DEFAULT NULL COMMENT '创建人部门code',
+    `create_org_name`    varchar(100) DEFAULT NULL COMMENT '创建人部门名称',
+    `create_time`        datetime     DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+    `update_time`        datetime     DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+    `del_flag`           tinyint      DEFAULT '0' COMMENT '删除',
+    PRIMARY KEY (`id`) USING BTREE,
+    KEY                  `idx_comment_info_create_user_idcard` (`create_user_idcard`) USING BTREE,
+    KEY                  `idx_comment_info_del_flag` (`del_flag`) USING BTREE
+);
+
+-- portal.comment_detail_info definition
+
+CREATE TABLE `comment_detail_info`
+(
+    `id`                 bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
+    `comment_id`         bigint NOT NULL COMMENT '主键ID',
+    `content`            text COMMENT '内容',
+    `create_user_idcard` varchar(18)  DEFAULT NULL COMMENT '创建人身份证号',
+    `create_user`        varchar(255) DEFAULT NULL COMMENT '创建人',
+    `create_org_code`    varchar(20)  DEFAULT NULL COMMENT '创建人部门code',
+    `create_org_name`    varchar(100) DEFAULT NULL COMMENT '创建人部门名称',
+    `create_time`        datetime     DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+    `update_time`        datetime     DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+    `del_flag`           tinyint      DEFAULT '0' COMMENT '删除',
+    PRIMARY KEY (`id`) USING BTREE,
+    KEY                  `idx_comment_detail_info_comment_id` (`comment_id`) USING BTREE,
+    KEY                  `idx_comment_detail_info_del_flag` (`del_flag`) USING BTREE
+);

+ 32 - 8
pom.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
@@ -16,6 +16,7 @@
     <properties>
         <java.version>1.8</java.version>
         <mapstruct.version>1.5.2.Final</mapstruct.version>
+        <redisson.version>3.33.0</redisson.version>
     </properties>
     <dependencies>
         <!--tomcat-->
@@ -130,11 +131,7 @@
         </dependency>
 
         <!--redis start-->
-        <dependency>
-            <groupId>org.springframework.data</groupId>
-            <artifactId>spring-data-redis</artifactId>
-        </dependency>
-        <!--缓存依赖-->
+        <!-- USE lettuce -->
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-data-redis</artifactId>
@@ -143,6 +140,30 @@
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-pool2</artifactId>
         </dependency>
+
+
+        <!-- OR USE redisson -->
+        <!-- <dependency> -->
+        <!--     <groupId>org.redisson</groupId> -->
+        <!--     <artifactId>redisson-spring-boot-starter</artifactId> -->
+        <!--     <version>${redisson.version}</version> -->
+        <!--     <exclusions> -->
+        <!--         <exclusion> -->
+        <!--             <groupId>org.redisson</groupId> -->
+        <!--             <artifactId>redisson-spring-data-33</artifactId> -->
+        <!--         </exclusion> -->
+        <!--         <exclusion> -->
+        <!--             <groupId>org.springframework.boot</groupId> -->
+        <!--             <artifactId>spring-boot-starter-actuator</artifactId> -->
+        <!--         </exclusion> -->
+        <!--     </exclusions> -->
+        <!-- </dependency> -->
+        <!-- <dependency> -->
+        <!--     <groupId>org.redisson</groupId> -->
+        <!--     <artifactId>redisson-spring-data-27</artifactId> -->
+        <!--     <version>${redisson.version}</version> -->
+        <!-- </dependency> -->
+
         <!--redis end -->
 
         <!--apache-commons-->
@@ -229,8 +250,6 @@
             <version>2.0.6</version>
         </dependency>
 
-
-
     </dependencies>
 
     <build>
@@ -272,6 +291,11 @@
                 </configuration>
             </plugin>
 
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-dependency-plugin</artifactId>
+            </plugin>
+
         </plugins>
     </build>
 

+ 6 - 0
src/main/java/com/dragon/tj/portal/auth/common/constants/Role.java

@@ -0,0 +1,6 @@
+package com.dragon.tj.portal.auth.common.constants;
+
+public interface Role {
+    String ADMIN = "ADMIN";
+    String GZT = "gzt";
+}

+ 12 - 19
src/main/java/com/dragon/tj/portal/auth/config/WebSecurityConfig.java

@@ -38,30 +38,32 @@ import java.nio.charset.StandardCharsets;
 @Configuration
 @EnableWebSecurity
 public class WebSecurityConfig {
+    private static final StringBuilder whiteList = new StringBuilder();
+    private static final String DELIMITER_COMMA = ",";
+
+    static {
+        // 白名单
+        whiteList.append("/test/login").append(DELIMITER_COMMA)
+                .append("/file/**").append(DELIMITER_COMMA);
+    }
+
     @Value("${cas.base.url}")
     private String casBaseUrl;
-
     @Value("${cas.login.url}")
     private String casLoginUrl;
-
     @Value("${app.logout.url}")
     private String appLogoutUrl;
-
     @Value("${cas.service.url}")
     private String casServiceUrl;
-
     @Value("${cas.filter.url}")
     private String casFilterUrl;
-
     @Value("${cas.target.url}")
     private String casTargetUrl;
-
     @Value("${cas.failure.url}")
     private String casFailureUrl;
 
     @Autowired
     private JdbcTemplate jdbcTemplate;
-
     @Autowired
     private JwtTokenAuthenticationFilter jwtTokenAuthenticationFilter;
     @Autowired
@@ -71,15 +73,6 @@ public class WebSecurityConfig {
     @Autowired
     private JwtTokenLogoutSuccessHandler logoutSuccessHandler;
 
-    private static final StringBuilder whiteList = new StringBuilder();
-    private static final String DELIMITER_COMMA = ",";
-
-    static {
-        // 白名单
-        whiteList.append("/test/login").append(DELIMITER_COMMA)
-                .append("/file/**").append(DELIMITER_COMMA);
-    }
-
     @Bean
     public WebSecurityCustomizer webSecurityCustomizer() {
         return (web) -> web.ignoring()
@@ -116,9 +109,9 @@ public class WebSecurityConfig {
         HmacAuthenticationFilter filter = new HmacAuthenticationFilter("/api/**");
         filter.setJdbcTemplate(jdbcTemplate);
         filter.setAuthenticationFailureHandler(new AuthenticationEntryPointFailureHandler(apiAuthenticationEntryPoint()));
-        filter.setAuthenticationSuccessHandler((request, response, authentication) -> {
-            SecurityContextHolder.getContext().setAuthentication(authentication);
-        });
+        filter.setAuthenticationSuccessHandler((request, response, authentication) ->
+                SecurityContextHolder.getContext().setAuthentication(authentication)
+        );
         return filter;
     }
 

+ 0 - 3
src/main/java/com/dragon/tj/portal/auth/module/hmac/HmacAuthenticationFilter.java

@@ -3,8 +3,6 @@ package com.dragon.tj.portal.auth.module.hmac;
 import org.apache.commons.codec.digest.HmacAlgorithms;
 import org.apache.commons.codec.digest.HmacUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.security.authentication.BadCredentialsException;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
@@ -20,7 +18,6 @@ import java.io.IOException;
 import java.util.UUID;
 
 public class HmacAuthenticationFilter extends AbstractAuthenticationProcessingFilter {
-    private static final Logger LOGGER = LoggerFactory.getLogger(HmacAuthenticationFilter.class);
 
     private JdbcTemplate jdbcTemplate;
 

+ 9 - 9
src/main/java/com/dragon/tj/portal/common/constants/BusinessConstants.java

@@ -10,31 +10,31 @@ public interface BusinessConstants {
     /**
      * 1 通知公告
      */
-    public static final Integer DICT_ITEM_ID_1 = 1;
+    Integer DICT_ITEM_ID_1 = 1;
     /**
      * 2 信息交流
      */
-    public static final Integer DICT_ITEM_ID_2 = 2;
+    Integer DICT_ITEM_ID_2 = 2;
     /**
      * 3 标准规范
      */
-    public static final Integer DICT_ITEM_ID_3 = 3;
+    Integer DICT_ITEM_ID_3 = 3;
 
     /**
      * 4 任务类
      */
-    public static final Integer DICT_ITEM_ID_4 = 4;
+    Integer DICT_ITEM_ID_4 = 4;
     /**
      * 5 通知类
      */
-    public static final Integer DICT_ITEM_ID_5 = 5;
+    Integer DICT_ITEM_ID_5 = 5;
     /**
      * 6 超期提醒类
      */
-    public static final Integer DICT_ITEM_ID_6 = 6;
+    Integer DICT_ITEM_ID_6 = 6;
 
-    public static final String MENU_APP_PRE = "APP-";
-    public static final String TOPIC_PRE = "sseTopic-";
-    public static final String DEFAULT_ADMIN = "admin";
+    String MENU_APP_PRE = "APP-";
+    String TOPIC_PRE = "sseTopic-";
+    String DEFAULT_ADMIN = "admin";
 
 }

+ 3 - 0
src/main/java/com/dragon/tj/portal/common/constants/CommonConstants.java

@@ -38,4 +38,7 @@ public interface CommonConstants {
 
     String sysCode = "sys_portal";
 
+    String YES = "1";
+    String NO = "0";
+
 }

+ 6 - 0
src/main/java/com/dragon/tj/portal/common/enums/log/ModuleEnum.java

@@ -41,6 +41,12 @@ public enum ModuleEnum {
     ISSUE_UPDATE("6003", "问题添加"),
     ISSUE_QUERY("6004", "问题查询"),
 
+    COMMENT("7000", "在线留言"),
+    COMMENT_ADD("7001", "留言添加"),
+    COMMENT_QUERY("7004", "留言查询"),
+    COMMENT_DETAIL_ADD("7101", "留言详情添加"),
+    COMMENT_DETAIL_QUERY("7104", "留言详情查询"),
+
     LOGIN("9999", "登录"),
     LOGOUT("9998", "退出登录");
 

+ 0 - 2
src/main/java/com/dragon/tj/portal/controller/AppController.java

@@ -11,7 +11,6 @@ import com.dragon.tj.portal.entity.PageParam;
 import com.dragon.tj.portal.service.AppService;
 import com.dragon.tj.portal.service.InstallInfoService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -27,7 +26,6 @@ import java.util.Map;
 
 @RestController
 @RequestMapping("/app")
-@EnableScheduling
 public class AppController {
 
     @Autowired

+ 0 - 2
src/main/java/com/dragon/tj/portal/controller/BusinessController.java

@@ -11,7 +11,6 @@ import com.dragon.tj.portal.entity.PageParam;
 import com.dragon.tj.portal.service.BusinessService;
 import com.dragon.tj.portal.service.InstallInfoService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -26,7 +25,6 @@ import java.util.Map;
 
 @RestController
 @RequestMapping("/business")
-@EnableScheduling
 public class BusinessController {
 
     @Autowired

+ 78 - 0
src/main/java/com/dragon/tj/portal/controller/CommentController.java

@@ -0,0 +1,78 @@
+package com.dragon.tj.portal.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dragon.tj.portal.auth.model.LoginUser;
+import com.dragon.tj.portal.auth.util.SecurityUtils;
+import com.dragon.tj.portal.common.base.R;
+import com.dragon.tj.portal.common.enums.log.ModuleEnum;
+import com.dragon.tj.portal.component.log.annotation.SysLog;
+import com.dragon.tj.portal.entity.CommentDetailInfo;
+import com.dragon.tj.portal.entity.CommentInfo;
+import com.dragon.tj.portal.entity.PageParam;
+import com.dragon.tj.portal.service.CommentService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 在线留言
+ */
+@RestController
+@RequestMapping("/comment")
+public class CommentController {
+
+    private final CommentService commentService;
+
+    public CommentController(CommentService commentService) {
+        this.commentService = commentService;
+    }
+
+    /*
+     *   CRUD
+     * */
+    @SysLog(value = "提交留言", module = ModuleEnum.COMMENT_ADD)
+    @PostMapping("add")
+    public R<Integer> add(@RequestBody CommentInfo commentInfo) {
+        LoginUser loginUser = SecurityUtils.getLoginUser();
+        int b = commentService.add(commentInfo, loginUser);
+        if (b == 0) {
+            return R.failed("添加失败!!!");
+        }
+
+        return R.ok(b);
+    }
+
+    /*
+     *   通过标题,内容搜索
+     * */
+    @SysLog(value = "通过内容搜索", module = ModuleEnum.COMMENT_QUERY)
+    @PostMapping("search")
+    public R<Page<CommentInfo>> search(@RequestBody PageParam<CommentInfo> pageParam) {
+        return R.ok(commentService.search(pageParam));
+    }
+
+    /**
+     * 详情查询
+     */
+    @SysLog(value = "详情搜索", module = ModuleEnum.COMMENT_DETAIL_QUERY)
+    @PostMapping("detail/search")
+    public R<Page<CommentDetailInfo>> detailSearch(@RequestBody PageParam<CommentDetailInfo> pageParam) {
+        return R.ok(commentService.detailSearch(pageParam));
+    }
+
+    /**
+     * 详情新增
+     */
+    @SysLog(value = "详情添加", module = ModuleEnum.COMMENT_ADD)
+    @PostMapping("detail/add")
+    public R<Integer> detailAdd(@RequestBody CommentDetailInfo detailInfo) {
+        LoginUser loginUser = SecurityUtils.getLoginUser();
+        int b = commentService.detailAdd(detailInfo, loginUser);
+        if (b == 0) {
+            return R.failed("添加失败!!!");
+        }
+        return R.ok(b);
+    }
+
+}

+ 0 - 2
src/main/java/com/dragon/tj/portal/controller/ExternalAppController.java

@@ -7,7 +7,6 @@ import com.dragon.tj.portal.entity.ExternalApp;
 import com.dragon.tj.portal.entity.PageParam;
 import com.dragon.tj.portal.service.ExternalAppService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -17,7 +16,6 @@ import org.springframework.web.bind.annotation.RestController;
 
 @RestController
 @RequestMapping("/external")
-@EnableScheduling
 public class ExternalAppController {
 
     @Autowired

+ 0 - 2
src/main/java/com/dragon/tj/portal/controller/IssueController.java

@@ -9,7 +9,6 @@ import com.dragon.tj.portal.entity.IssueInfo;
 import com.dragon.tj.portal.entity.PageParam;
 import com.dragon.tj.portal.service.IssueService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -21,7 +20,6 @@ import java.time.LocalDateTime;
 
 @RestController
 @RequestMapping("/issue")
-@EnableScheduling
 public class IssueController {
 
     @Autowired

+ 69 - 0
src/main/java/com/dragon/tj/portal/entity/CommentDetailInfo.java

@@ -0,0 +1,69 @@
+package com.dragon.tj.portal.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 在线留言详情信息
+ */
+@Getter
+@Setter
+@Accessors(chain = true)
+@TableName("comment_detail_info")
+public class CommentDetailInfo implements Serializable {
+    private static final long serialVersionUID = 1830610337148759007L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * foreign_key: comment_info.id
+     */
+    private Long commentId;
+
+    /**
+     * 内容
+     */
+    private String content;
+
+    /**
+     * 创建人
+     */
+    private String createUserIdcard;
+    private String createUser;
+
+    /**
+     * 创建人部门名称和code
+     */
+    private String createOrgCode;
+    private String createOrgName;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime createTime;
+
+    /**
+     * 更新时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime updateTime;
+
+    /**
+     * 删除状态 默认0 有效 1无效
+     */
+    private Integer delFlag;
+
+}

+ 64 - 0
src/main/java/com/dragon/tj/portal/entity/CommentInfo.java

@@ -0,0 +1,64 @@
+package com.dragon.tj.portal.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 在线留言信息
+ */
+@Getter
+@Setter
+@Accessors(chain = true)
+@TableName("comment_info")
+public class CommentInfo implements Serializable {
+    private static final long serialVersionUID = 1830610337148759007L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 内容
+     */
+    private String content;
+
+    /**
+     * 创建人
+     */
+    private String createUserIdcard;
+    private String createUser;
+
+    /**
+     * 创建人部门名称和code
+     */
+    private String createOrgCode;
+    private String createOrgName;
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime createTime;
+
+    /**
+     * 更新时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime updateTime;
+
+    /**
+     * 删除状态 默认0 有效 1无效
+     */
+    private Integer delFlag;
+
+}

+ 13 - 0
src/main/java/com/dragon/tj/portal/mapper/CommentDetailMapper.java

@@ -0,0 +1,13 @@
+package com.dragon.tj.portal.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dragon.tj.portal.entity.CommentDetailInfo;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 应用程序
+ */
+@Mapper
+public interface CommentDetailMapper extends BaseMapper<CommentDetailInfo> {
+
+}

+ 13 - 0
src/main/java/com/dragon/tj/portal/mapper/CommentInfoMapper.java

@@ -0,0 +1,13 @@
+package com.dragon.tj.portal.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dragon.tj.portal.entity.CommentInfo;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 应用程序
+ */
+@Mapper
+public interface CommentInfoMapper extends BaseMapper<CommentInfo> {
+
+}

+ 20 - 0
src/main/java/com/dragon/tj/portal/service/CommentService.java

@@ -0,0 +1,20 @@
+package com.dragon.tj.portal.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dragon.tj.portal.auth.model.LoginUser;
+import com.dragon.tj.portal.entity.CommentDetailInfo;
+import com.dragon.tj.portal.entity.CommentInfo;
+import com.dragon.tj.portal.entity.PageParam;
+
+public interface CommentService {
+    int add(CommentInfo commentInfo, LoginUser loginUser);
+
+    /**
+     * 分页搜索
+     */
+    Page<CommentInfo> search(PageParam<CommentInfo> pageParam);
+
+    Page<CommentDetailInfo> detailSearch(PageParam<CommentDetailInfo> pageParam);
+
+    int detailAdd(CommentDetailInfo detailInfo, LoginUser loginUser);
+}

+ 111 - 0
src/main/java/com/dragon/tj/portal/service/impl/CommentServiceImpl.java

@@ -0,0 +1,111 @@
+package com.dragon.tj.portal.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.dragon.tj.portal.auth.common.constants.Role;
+import com.dragon.tj.portal.auth.model.LoginUser;
+import com.dragon.tj.portal.auth.util.SecurityUtils;
+import com.dragon.tj.portal.common.constants.CommonConstants;
+import com.dragon.tj.portal.entity.CommentDetailInfo;
+import com.dragon.tj.portal.entity.CommentInfo;
+import com.dragon.tj.portal.entity.PageParam;
+import com.dragon.tj.portal.mapper.CommentDetailMapper;
+import com.dragon.tj.portal.mapper.CommentInfoMapper;
+import com.dragon.tj.portal.service.CommentService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
+
+@Service
+public class CommentServiceImpl implements CommentService {
+
+    private final CommentInfoMapper commentInfoMapper;
+    private final CommentDetailMapper commentDetailMapper;
+
+    public CommentServiceImpl(CommentInfoMapper commentInfoMapper, CommentDetailMapper commentDetailMapper) {
+        this.commentInfoMapper = commentInfoMapper;
+        this.commentDetailMapper = commentDetailMapper;
+    }
+
+    /*
+     * CRUD
+     * */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int add(CommentInfo commentInfo, LoginUser loginUser) {
+        commentInfo.setCreateUser(loginUser.getUsername());
+        commentInfo.setCreateUserIdcard(loginUser.getIdCard());
+        commentInfo.setCreateOrgCode(loginUser.getOrgCode());
+        commentInfo.setCreateOrgName(loginUser.getUser().getOrgName());
+        int insert = commentInfoMapper.insert(commentInfo);
+        if (insert > 0) {
+            CommentDetailInfo detailInfo = new CommentDetailInfo();
+            detailInfo.setCommentId(commentInfo.getId())
+                    .setContent(commentInfo.getContent())
+                    .setCreateUserIdcard(commentInfo.getCreateUserIdcard())
+                    .setCreateUser(commentInfo.getCreateUser())
+                    .setCreateOrgCode(commentInfo.getCreateOrgCode())
+                    .setCreateOrgName(commentInfo.getCreateOrgName())
+                    .setCreateTime(commentInfo.getCreateTime());
+            commentDetailMapper.insert(detailInfo);
+        }
+        return insert;
+    }
+
+    @Override
+    public Page<CommentInfo> search(PageParam<CommentInfo> pageParam) {
+        CommentInfo commentInfo = pageParam.getParams();
+        Page<CommentInfo> rowPage = new Page<>(pageParam.getPage(), pageParam.getSize());
+
+        LambdaQueryWrapper<CommentInfo> queryWrapper = new LambdaQueryWrapper<>();
+
+        LoginUser loginUser = SecurityUtils.getLoginUser();
+        if (!loginUser.getPermissions().contains(Role.ADMIN)) {
+            queryWrapper.eq(StringUtils.isNotEmpty(loginUser.getIdCard()),
+                    CommentInfo::getCreateUserIdcard, loginUser.getIdCard());
+        }
+
+        queryWrapper.eq(commentInfo.getDelFlag() != null,
+                CommentInfo::getDelFlag, commentInfo.getDelFlag());
+
+        // 内容
+        queryWrapper.like(StringUtils.isNotEmpty(commentInfo.getContent()),
+                CommentInfo::getContent, commentInfo.getContent());
+
+        queryWrapper.orderByDesc(CommentInfo::getCreateTime);
+
+        return commentInfoMapper.selectPage(rowPage, queryWrapper);
+    }
+
+    @Override
+    public Page<CommentDetailInfo> detailSearch(PageParam<CommentDetailInfo> pageParam) {
+        Page<CommentDetailInfo> rowPage = new Page<>(pageParam.getPage(), pageParam.getSize());
+
+        CommentDetailInfo detailParam = pageParam.getParams();
+        LambdaQueryWrapper<CommentDetailInfo> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(CommentDetailInfo::getDelFlag, CommonConstants.NO);
+        queryWrapper.eq(CommentDetailInfo::getCommentId, detailParam.getCommentId());
+        queryWrapper.orderByAsc(CommentDetailInfo::getCreateTime);
+
+        return commentDetailMapper.selectPage(rowPage, queryWrapper);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int detailAdd(CommentDetailInfo detailInfo, LoginUser loginUser) {
+        detailInfo.setCreateUserIdcard(loginUser.getIdCard())
+                .setCreateUser(loginUser.getUsername())
+                .setCreateOrgCode(loginUser.getOrgCode())
+                .setCreateOrgName(loginUser.getUser().getOrgName());
+        int insert = commentDetailMapper.insert(detailInfo);
+        if (insert > 0) {
+            CommentInfo commentInfo = new CommentInfo();
+            commentInfo.setId(detailInfo.getCommentId());
+            commentInfo.setUpdateTime(LocalDateTime.now());
+            commentInfoMapper.updateById(commentInfo);
+        }
+        return insert;
+    }
+}

+ 17 - 13
src/main/java/com/dragon/tj/portal/service/impl/InstallInfoServiceImpl.java

@@ -13,11 +13,13 @@ import com.dragon.tj.portal.mapper.app.InstallInfoMapper;
 import com.dragon.tj.portal.service.AppService;
 import com.dragon.tj.portal.service.InstallInfoService;
 import com.google.common.collect.Sets;
+import io.jsonwebtoken.lang.Collections;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -51,7 +53,7 @@ public class InstallInfoServiceImpl extends ServiceImpl<InstallInfoMapper, Insta
     public void batchUpdate(List<InstallInfo> list, int isBusiness) {
         LoginUser loginUser = SecurityUtils.getLoginUser();
 
-        if (list.size() > 0) {
+        if (!list.isEmpty()) {
             Map<String, List<Long>> appTypes = getAppTypes(loginUser.getIdCard());
             List<Long> specialAppIds = appTypes.get("special");
 //            List<Long> otherAppIds = appTypes.get("other");
@@ -61,11 +63,13 @@ public class InstallInfoServiceImpl extends ServiceImpl<InstallInfoMapper, Insta
             wrapper.eq(loginUser != null, "user_idcard", loginUser.getIdCard());
             wrapper.eq(isBusiness == 0, "business_id", isBusiness);
             wrapper.ne(isBusiness != 0, "business_id", 0);
-            if (detail.getIsSpecial() == 1) {
-                // 删除专项工具应用
-                wrapper.in("app_id", specialAppIds);
-            } else {
-                wrapper.notIn("app_id", specialAppIds);
+            if (!Collections.isEmpty(specialAppIds)) {
+                if (detail.getIsSpecial() == 1) {
+                    // 删除专项工具应用
+                    wrapper.in("app_id", specialAppIds);
+                } else {
+                    wrapper.notIn("app_id", specialAppIds);
+                }
             }
             installInfoMapper.delete(wrapper);
         }
@@ -79,15 +83,15 @@ public class InstallInfoServiceImpl extends ServiceImpl<InstallInfoMapper, Insta
     }
 
     public Map<String, List<Long>> getAppTypes(String idCard) {
-
-        QueryWrapper wrapper = new QueryWrapper<>();
+        QueryWrapper<InstallInfo> wrapper = new QueryWrapper<>();
         wrapper.select("app_id");
         wrapper.eq("user_idcard", idCard);
-        List<Long> appIds = installInfoMapper.selectObjs(wrapper);
-
-        Map<String, List<Long>> appType = appService.checkAppTypeById(appIds);
-
-        return appType;
+        List<Object> appIds = installInfoMapper.selectObjs(wrapper);
+        if (appIds.isEmpty()) {
+            return new HashMap<>();
+        }
+        List<Long> appIdList = appIds.stream().map(item -> (Long) item).collect(Collectors.toList());
+        return appService.checkAppTypeById(appIdList);
     }
 }