wangzaijun 7 mēneši atpakaļ
vecāks
revīzija
8c74aac9af
30 mainītis faili ar 1312 papildinājumiem un 473 dzēšanām
  1. 4 1
      readme.md
  2. 17 25
      service-base/pom.xml
  3. 70 0
      service-base/src/main/java/com/simuwang/base/common/conts/UserConstants.java
  4. 58 0
      service-base/src/main/java/com/simuwang/base/common/exception/ServiceException.java
  5. 35 35
      service-base/src/main/java/com/simuwang/base/common/util/PageUtils.java
  6. 2 1
      service-base/src/main/java/com/simuwang/base/common/util/ServletUtils.java
  7. 29 1
      service-base/src/main/java/com/simuwang/base/common/util/StringUtil.java
  8. 1 0
      service-base/src/main/java/com/simuwang/base/mapper/CompanyEmailConfigMapper.java
  9. 26 0
      service-base/src/main/java/com/simuwang/base/mapper/CompanyEmailSendHistoryMapper.java
  10. 84 0
      service-base/src/main/java/com/simuwang/base/mapper/system/SysConfigMapper.java
  11. 1 1
      service-base/src/main/java/com/simuwang/base/pojo/dos/CompanyEmailSendHistoryDO.java
  12. 1 1
      service-base/src/main/java/com/simuwang/base/pojo/vo/CompanyEmailSendHistoryVO.java
  13. 28 0
      service-base/src/main/java/com/simuwang/base/pojo/vo/MailboxInfoTableVO.java
  14. 53 0
      service-base/src/main/java/com/simuwang/base/pojo/vo/MailboxInfoVO.java
  15. 8 0
      service-base/src/main/resources/mapper/CompanyEmailConfigMapper.xml
  16. 69 0
      service-base/src/main/resources/mapper/CompanyEmailHistoryMapper.xml
  17. 127 0
      service-base/src/main/resources/mapper/system/SysConfigMapper.xml
  18. 162 162
      service-manage/src/main/java/com/simuwang/manage/api/base/BaseController.java
  19. 0 24
      service-manage/src/main/java/com/simuwang/manage/api/company/CompanyEmailConfigController.java
  20. 110 2
      service-manage/src/main/java/com/simuwang/manage/api/company/CompanyEmailSendHistoryController.java
  21. 17 0
      service-manage/src/main/java/com/simuwang/manage/api/email/EmailConfigController.java
  22. 80 80
      service-manage/src/main/java/com/simuwang/manage/api/fund/FundInformationController.java
  23. 115 125
      service-manage/src/main/java/com/simuwang/manage/api/system/SysConfigController.java
  24. 75 0
      service-manage/src/main/java/com/simuwang/manage/api/system/SysLoginController.java
  25. 3 0
      service-manage/src/main/java/com/simuwang/manage/service/CompanyEmailConfigService.java
  26. 20 0
      service-manage/src/main/java/com/simuwang/manage/service/CompanyEmailSendHistoryService.java
  27. 12 0
      service-manage/src/main/java/com/simuwang/manage/service/impl/CompanyEmailConfigServiceImpl.java
  28. 49 0
      service-manage/src/main/java/com/simuwang/manage/service/impl/CompanyEmailSendHistoryServiceImpl.java
  29. 51 11
      service-manage/src/main/java/com/simuwang/manage/service/impl/system/SysConfigServiceImpl.java
  30. 5 4
      service-manage/src/main/java/com/simuwang/manage/service/system/SysConfigService.java

+ 4 - 1
readme.md

@@ -1,7 +1,9 @@
 # 数据采集系统
 
+**!!!引入包时请评估是否有必要,放在依赖数量急剧扩大**
+
 ### 架构说明
-> 项目使用springboot3.3.x+mybatis plus搭建,权限框架暂定shiro
+> 项目使用springboot3.3.x+mybatis plus搭建,权限框架暂定shiro
 
 
 ### 各模块说明
@@ -38,6 +40,7 @@
 ### FAQ
 
 - 1. 下列包的作用?
+    
 ```xml
 <dependency>
     <groupId>com.smppw</groupId>

+ 17 - 25
service-base/pom.xml

@@ -33,12 +33,23 @@
             <groupId>com.zaxxer</groupId>
             <artifactId>HikariCP</artifactId>
         </dependency>
-<!--        &lt;!&ndash; pagehelper 分页插件 &ndash;&gt;-->
-<!--        <dependency>-->
-<!--            <groupId>com.github.pagehelper</groupId>-->
-<!--            <artifactId>pagehelper-spring-boot-starter</artifactId>-->
-<!--            <version>2.0.0</version>-->
-<!--        </dependency>-->
+        <!-- pagehelper 分页插件 -->
+        <dependency>
+            <groupId>com.github.pagehelper</groupId>
+            <artifactId>pagehelper-spring-boot-starter</artifactId>
+            <version>2.0.0</version>
+            <!-- 去除mybatis依赖 -->
+            <exclusions>
+                <exclusion>
+                    <groupId>org.mybatis</groupId>
+                    <artifactId>mybatis</artifactId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>jsqlparser</artifactId>
+                    <groupId>com.github.jsqlparser</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
 <!--        <dependency>-->
 <!--            <groupId>com.baomidou</groupId>-->
 <!--            <artifactId>mybatis-plus</artifactId>-->
@@ -160,11 +171,6 @@
             <groupId>jakarta.servlet</groupId>
             <artifactId>jakarta.servlet-api</artifactId>
         </dependency>
-<!--        <dependency>-->
-<!--            <groupId>org.springframework</groupId>-->
-<!--            <artifactId>spring-web</artifactId>-->
-<!--            <version>6.1.12</version>-->
-<!--        </dependency>-->
 
         <!-- jjwt依赖包 -->
         <dependency>
@@ -178,18 +184,4 @@
             <version>0.12.1</version>
         </dependency>
     </dependencies>
-
-    <repositories>
-        <repository>
-            <id>smppw-release</id>
-            <url>http://120.24.213.180:8081/nexus/content/repositories/releases/</url>
-        </repository>
-        <repository>
-            <id>smppw-snapshots</id>
-            <url>http://120.24.213.180:8081/nexus/content/repositories/snapshots/</url>
-            <snapshots>
-                <enabled>true</enabled>
-            </snapshots>
-        </repository>
-    </repositories>
 </project>

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 70 - 0
service-base/src/main/java/com/simuwang/base/common/conts/UserConstants.java


+ 58 - 0
service-base/src/main/java/com/simuwang/base/common/exception/ServiceException.java

@@ -0,0 +1,58 @@
+package com.simuwang.base.common.exception;
+
+/**
+ * 业务异常
+ * 
+ * @author ruoyi
+ */
+public final class ServiceException extends RuntimeException
+{
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 错误提示
+     */
+    private String message;
+
+    /**
+     * 错误明细,内部调试错误
+     *
+     * 和 一致的设计
+     */
+    private String detailMessage;
+
+    /**
+     * 空构造方法,避免反序列化问题
+     */
+    public ServiceException()
+    {
+    }
+
+    public ServiceException(String message)
+    {
+        this.message = message;
+    }
+
+    public String getDetailMessage()
+    {
+        return detailMessage;
+    }
+
+    public ServiceException setDetailMessage(String detailMessage)
+    {
+        this.detailMessage = detailMessage;
+        return this;
+    }
+
+    @Override
+    public String getMessage()
+    {
+        return message;
+    }
+
+    public ServiceException setMessage(String message)
+    {
+        this.message = message;
+        return this;
+    }
+}

+ 35 - 35
service-base/src/main/java/com/simuwang/base/common/util/PageUtils.java

@@ -1,35 +1,35 @@
-//package com.simuwang.base.common.util;
-//
-//import com.github.pagehelper
-//        .PageHelper;
-//import com.simuwang.base.common.page.PageDomain;
-//import com.simuwang.base.common.page.TableSupport;
-//
-///**
-// * 分页工具类
-// *
-// * @author ruoyi
-// */
-//public class PageUtils extends PageHelper
-//{
-//    /**
-//     * 设置请求分页数据
-//     */
-//    public static void startPage()
-//    {
-//        PageDomain pageDomain = TableSupport.buildPageRequest();
-//        Integer pageNum = pageDomain.getPageNum();
-//        Integer pageSize = pageDomain.getPageSize();
-//        String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());
-//        Boolean reasonable = pageDomain.getReasonable();
-//        PageHelper.startPage(pageNum, pageSize, orderBy).setReasonable(reasonable);
-//    }
-//
-//    /**
-//     * 清理分页的线程变量
-//     */
-//    public static void clearPage()
-//    {
-//        PageHelper.clearPage();
-//    }
-//}
+package com.simuwang.base.common.util;
+
+import com.github.pagehelper
+        .PageHelper;
+import com.simuwang.base.common.page.PageDomain;
+import com.simuwang.base.common.page.TableSupport;
+
+/**
+ * 分页工具类
+ *
+ * @author ruoyi
+ */
+public class PageUtils extends PageHelper
+{
+    /**
+     * 设置请求分页数据
+     */
+    public static void startPage()
+    {
+        PageDomain pageDomain = TableSupport.buildPageRequest();
+        Integer pageNum = pageDomain.getPageNum();
+        Integer pageSize = pageDomain.getPageSize();
+        String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());
+        Boolean reasonable = pageDomain.getReasonable();
+        PageHelper.startPage(pageNum, pageSize, orderBy).setReasonable(reasonable);
+    }
+
+    /**
+     * 清理分页的线程变量
+     */
+    public static void clearPage()
+    {
+        PageHelper.clearPage();
+    }
+}

+ 2 - 1
service-base/src/main/java/com/simuwang/base/common/util/ServletUtils.java

@@ -137,7 +137,7 @@ public class ServletUtils
      * @param response 渲染对象
      * @param string 待渲染的字符串
      */
-    public static void renderString(HttpServletResponse response, String string)
+    public static String renderString(HttpServletResponse response, String string)
     {
         try
         {
@@ -150,6 +150,7 @@ public class ServletUtils
         {
             e.printStackTrace();
         }
+        return null;
     }
 
     /**

+ 29 - 1
service-base/src/main/java/com/simuwang/base/common/util/StringUtil.java

@@ -19,7 +19,11 @@ public class StringUtil {
 
     /** 空字符串 */
     private static final String NULLSTR = "";
-
+    private static final int STRING_BUILDER_SIZE = 256;
+    public static final String SPACE = " ";
+    public static final String EMPTY = "";
+    public static final String LF = "\n";
+    public static final String CR = "\r";
     /** 下划线 */
     private static final char SEPARATOR = '_';
 
@@ -638,4 +642,28 @@ public class StringUtil {
         }
         return sb.toString();
     }
+
+    public static boolean equals(CharSequence cs1, CharSequence cs2) {
+        if (cs1 == cs2) {
+            return true;
+        } else if (cs1 != null && cs2 != null) {
+            if (cs1.length() != cs2.length()) {
+                return false;
+            } else if (cs1 instanceof String && cs2 instanceof String) {
+                return cs1.equals(cs2);
+            } else {
+                int length = cs1.length();
+
+                for(int i = 0; i < length; ++i) {
+                    if (cs1.charAt(i) != cs2.charAt(i)) {
+                        return false;
+                    }
+                }
+
+                return true;
+            }
+        } else {
+            return false;
+        }
+    }
 }

+ 1 - 0
service-base/src/main/java/com/simuwang/base/mapper/CompanyEmailConfigMapper.java

@@ -12,4 +12,5 @@ import org.apache.ibatis.annotations.Mapper;
  */
 @Mapper
 public interface CompanyEmailConfigMapper extends BaseMapper<CompanyEmailConfigDO> {
+    void deleteCompanyEmailConfig(String email);
 }

+ 26 - 0
service-base/src/main/java/com/simuwang/base/mapper/CompanyEmailSendHistoryMapper.java

@@ -0,0 +1,26 @@
+package com.simuwang.base.mapper;
+
+import com.simuwang.base.pojo.vo.CompanyEmailSendHistoryVO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * FileName: CompanyEmailSendHistoryMapper
+ * Author:   chenjianhua
+ * Date:     2024/9/9 10:19
+ * Description: ${DESCRIPTION}
+ */
+@Mapper
+public interface CompanyEmailSendHistoryMapper {
+    public List<CompanyEmailSendHistoryVO> searchCompanyEmailList(@Param("companyName") String companyName,
+                                                                  @Param("email") String email,
+                                                                  @Param("sendStatus") Integer sendStatus);
+
+    List<CompanyEmailSendHistoryVO> searchEmailHistory(@Param("email") String email);
+
+    void deleteEmailHistory(@Param("email")String email);
+
+    void deleteEmailHistoryByIds(@Param("ids") String[] split);
+}

+ 84 - 0
service-base/src/main/java/com/simuwang/base/mapper/system/SysConfigMapper.java

@@ -0,0 +1,84 @@
+package com.simuwang.base.mapper.system;
+
+import com.simuwang.base.pojo.dos.SysConfigDO;
+import com.simuwang.base.pojo.vo.SysConfigVO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * FileName: SysConfigMapper
+ * Author:   chenjianhua
+ * Date:     2024/9/8 12:46
+ * Description: ${DESCRIPTION}
+ */
+@Mapper
+public interface SysConfigMapper {
+    /**
+     * 查询参数配置信息
+     *
+     * @param config 参数配置信息
+     * @return 参数配置信息
+     */
+    public SysConfigDO selectConfig(SysConfigVO config);
+
+    /**
+     * 通过ID查询配置
+     *
+     * @param configId 参数ID
+     * @return 参数配置信息
+     */
+    public SysConfigDO selectConfigById(Long configId);
+
+    /**
+     * 查询参数配置列表
+     *
+     * @param config 参数配置信息
+     * @return 参数配置集合
+     */
+    public List<SysConfigDO> selectConfigList(SysConfigVO config);
+
+    /**
+     * 根据键名查询参数配置信息
+     *
+     * @param configKey 参数键名
+     * @return 参数配置信息
+     */
+    public SysConfigDO checkConfigKeyUnique(String configKey);
+
+    /**
+     * 新增参数配置
+     *
+     * @param config 参数配置信息
+     * @return 结果
+     */
+    public int insertConfig(SysConfigDO config);
+
+    /**
+     * 修改参数配置
+     *
+     * @param config 参数配置信息
+     * @return 结果
+     */
+    public int updateConfig(SysConfigDO config);
+
+    /**
+     * 删除参数配置
+     *
+     * @param configId 参数ID
+     * @return 结果
+     */
+    public int deleteConfigById(@Param("configId") Long configId);
+
+    /**
+     * 批量删除参数信息
+     *
+     * @param configIds 需要删除的参数ID
+     * @return 结果
+     */
+    public int deleteConfigByIds(@Param("configIds") Long[] configIds);
+
+
+    String selectConfigByKey(@Param("configKey") String configKey);
+}

+ 1 - 1
service-base/src/main/java/com/simuwang/base/pojo/dos/CompanyEmailSendHistoryDO.java

@@ -15,7 +15,7 @@ import java.util.Date;
  * Description: ${DESCRIPTION}
  */
 @Data
-@TableName("company_email_config")
+@TableName("company_email_send_history")
 public class CompanyEmailSendHistoryDO {
     /**
      * 主键Id

+ 1 - 1
service-base/src/main/java/com/simuwang/base/pojo/vo/CompanyEmailSendHistoryVO.java

@@ -33,7 +33,7 @@ public class CompanyEmailSendHistoryVO {
      */
     private String email;
     /**
-     * 邮箱地址
+     * 发送状态
      */
     private Integer sendStatus;
     /**

+ 28 - 0
service-base/src/main/java/com/simuwang/base/pojo/vo/MailboxInfoTableVO.java

@@ -0,0 +1,28 @@
+package com.simuwang.base.pojo.vo;
+
+import lombok.Data;
+
+@Data
+public class MailboxInfoTableVO {
+    /**
+     * 主键Id
+     */
+    private Integer id;
+    /**
+     * 邮箱账号
+     */
+    private String email;
+    /**
+     * cron表达式
+     */
+    private String cron;
+    /**
+     * 是否开启,0-不开启,1-开启
+     */
+    private Integer openStatus;
+    /**
+     * 备注信息
+     */
+    private String description;
+
+}

+ 53 - 0
service-base/src/main/java/com/simuwang/base/pojo/vo/MailboxInfoVO.java

@@ -0,0 +1,53 @@
+package com.simuwang.base.pojo.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class MailboxInfoVO {
+    /**
+     * 主键Id
+     */
+    private Integer id;
+    /**
+     * 邮箱类型:1-QQ邮箱,2-腾讯企业邮箱,3-网易邮箱,4-新浪邮箱,99-其他
+     */
+    private Integer type;
+    /**
+     * 邮箱账号
+     */
+    private String email;
+    /**
+     * 邮箱密码
+     */
+    private String password;
+    /**
+     * 协议
+     */
+    private String protocol;
+    /**
+     * 收件服务器
+     */
+    private String server;
+    /**
+     * 端口
+     */
+    private Integer port;
+    /**
+     * cron表达式
+     */
+    private String cron;
+    /**
+     * 是否开启,0-不开启,1-开启
+     */
+    private Integer openStatus;
+    /**
+     * 备注信息
+     */
+    private String description;
+
+}

+ 8 - 0
service-base/src/main/resources/mapper/CompanyEmailConfigMapper.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.simuwang.base.mapper.CompanyEmailConfigMapper">
+
+    <update id="deleteCompanyEmailConfig">
+        update PPW_EMAIL.company_email_config set isvalid =0 where email=#{email}
+    </update>
+</mapper>

+ 69 - 0
service-base/src/main/resources/mapper/CompanyEmailHistoryMapper.xml

@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.simuwang.base.mapper.CompanyEmailSendHistoryMapper">
+    <resultMap id="BaseResultMap" type="com.simuwang.base.pojo.vo.CompanyEmailSendHistoryVO">
+        <id column="id" property="id"/>
+        <result column="company_id" property="companyId"/>
+        <result column="company_name" property="companyName"/>
+        <result column="email" property="email"/>
+        <result column="send_status" property="sendStatus"/>
+        <result column="send_time" property="sendTime"/>
+        <result column="send_remark" property="sendRemark"/>
+    </resultMap>
+    <update id="deleteEmailHistory">
+        update company_email_send_history set isvalid =0,updatetime=sysdate() where email=#{email}
+    </update>
+    <update id="deleteEmailHistoryByIds">
+        update company_email_send_history set isvalid =0,updatetime=sysdate() where id in
+        <foreach item="id" collection="ids" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+
+    <select id="searchCompanyEmailList" resultMap="BaseResultMap">
+        SELECT
+            cec.id,
+            cec.company_id,
+            c.company_name,
+            cec.email,
+            MAX(cesh.send_time) AS send_time,
+            cesh.send_remark,
+            cesh.send_status
+        FROM
+            PPW_EMAIL.company_email_config cec
+                JOIN PPW_EMAIL.company_information c
+                     ON cec.company_id = c.company_id
+                LEFT JOIN PPW_EMAIL.company_email_send_history cesh
+                     ON cec.email = cesh.email
+        WHERE cec.isvalid = 1
+          AND cesh.isvalid = 1 and c.isvalid=1
+        <if test="companyName != null and companyName !=''">
+            and (c.company_name like concat('',#{companyName},'') or c.company_short_name like concat('',#{companyName},''))
+        </if>
+        <if test="email != null and email !=''">
+            and cec.email like concat('',#{email},'')
+        </if>
+        <if test="sendStatus != null and sendStatus !=''">
+            and cesh.send_status=#{sendStatus}
+        </if>
+    </select>
+    <select id="searchEmailHistory" resultMap="BaseResultMap">
+        SELECT
+            cec.id,
+            cec.company_id,
+            c.company_name,
+            cec.email,
+            cesh.send_time,
+            cesh.send_remark,
+            cesh.send_status
+        FROM
+            PPW_EMAIL.company_email_send_history cesh
+            JOIN PPW_EMAIL.company_email_config cec
+            ON cec.email = cesh.email
+        WHERE cec.isvalid = 1
+        AND cesh.isvalid = 1
+        <if test="email != null and email !=''">
+            and cec.email=#{email}
+        </if>
+    </select>
+</mapper>

+ 127 - 0
service-base/src/main/resources/mapper/system/SysConfigMapper.xml

@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.simuwang.base.mapper.system.SysConfigMapper">
+    
+    <resultMap type="com.simuwang.base.pojo.dos.SysConfigDO" id="SysConfigResult">
+    	<id     property="configId"      column="configId"      />
+        <result property="configName"    column="configName"    />
+        <result property="configKey"     column="configKey"     />
+        <result property="configValue"   column="configNalue"   />
+        <result property="configType"    column="configType"    />
+        <result property="creatorId"     column="creatorid"      />
+        <result property="createTime"    column="createtime"    />
+        <result property="updaterId"     column="updaterid"      />
+        <result property="updateTime"    column="updatetime"    />
+        <result property="isvalid"       column="isvalid"    />
+    </resultMap>
+    
+    <sql id="selectConfigDo">
+        select config_id, config_name, config_key, config_value, config_type, creatorid, createtime, updaterid, updatetime, remark,isvalid
+		from sys_config
+    </sql>
+    
+    <!-- 查询条件 -->
+	<sql id="sqlwhereSearch">
+		<where>
+			<if test="configId !=null">
+				and config_id = #{configId}
+			</if>
+			<if test="configKey !=null and configKey != ''">
+				and config_key = #{configKey}
+			</if>
+		</where>
+	</sql>
+    
+    <select id="selectConfig" parameterType="com.simuwang.base.pojo.dos.SysConfigDO" resultMap="SysConfigResult">
+        <include refid="selectConfigDo"/>
+        <include refid="sqlwhereSearch"/>
+    </select>
+    
+    <select id="selectConfigList" parameterType="com.simuwang.base.pojo.dos.SysConfigDO" resultMap="SysConfigResult">
+        <include refid="selectConfigDo"/>
+        <where>
+			<if test="configName != null and configName != ''">
+				AND config_name like concat('%', #{configName}, '%')
+			</if>
+			<if test="configType != null and configType != ''">
+				AND config_type = #{configType}
+			</if>
+			<if test="configKey != null and configKey != ''">
+				AND config_key like concat('%', #{configKey}, '%')
+			</if>
+			<if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
+				and date_format(create_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')
+			</if>
+			<if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
+				and date_format(create_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')
+			</if>
+		</where>
+    </select>
+    
+    <select id="selectConfigById" parameterType="Long" resultMap="SysConfigResult">
+        <include refid="selectConfigDo"/>
+        where config_id = #{configId} and isvalid =1
+    </select>
+	
+    <select id="checkConfigKeyUnique" parameterType="String" resultMap="SysConfigResult">
+        <include refid="selectConfigDo"/>
+        where config_key = #{configKey}  and isvalid =1 limit 1
+    </select>
+    <select id="selectConfigByKey" resultType="java.lang.String">
+
+    </select>
+
+    <insert id="insertConfig" parameterType="com.simuwang.base.pojo.dos.SysConfigDO">
+        insert into sys_config (
+			<if test="configName != null and configName != '' ">config_name,</if>
+			<if test="configKey != null and configKey != '' ">config_key,</if>
+			<if test="configValue != null and configValue != '' ">config_value,</if>
+			<if test="configType != null and configType != '' ">config_type,</if>
+			<if test="creatorId != null and creatorId != ''">creatorid,</if>
+            <if test="updaterId != null and updaterId != ''">updaterid,</if>
+			<if test="remark != null and remark != ''">remark,</if>
+            isvalid,
+ 			createtime,
+            updatetime,
+        )values(
+			<if test="configName != null and configName != ''">#{configName},</if>
+			<if test="configKey != null and configKey != ''">#{configKey},</if>
+			<if test="configValue != null and configValue != ''">#{configValue},</if>
+			<if test="configType != null and configType != ''">#{configType},</if>
+			<if test="creatorId != null and creatorId != ''">#{creatorId},</if>
+            <if test="updaterId != null and updaterId != ''">#{updaterId},</if>
+			<if test="remark != null and remark != ''">#{remark},</if>
+            1,
+ 			sysdate(),
+            sysdate()
+		)
+    </insert>
+	 
+    <update id="updateConfig" parameterType="com.simuwang.base.pojo.dos.SysConfigDO">
+        update sys_config 
+        <set>
+            <if test="configName != null and configName != ''">config_name = #{configName},</if>
+            <if test="configKey != null and configKey != ''">config_key = #{configKey},</if>
+            <if test="configValue != null and configValue != ''">config_value = #{configValue},</if>
+            <if test="configType != null and configType != ''">config_type = #{configType},</if>
+            <if test="updaterId != null and updaterId != ''">updaterid = #{updaterId},</if>
+            <if test="remark != null">remark = #{remark},</if>
+ 			updatetime = sysdate()
+        </set>
+        where config_id = #{configId} and isvalid=1
+    </update>
+	
+    <delete id="deleteConfigById" parameterType="Long">
+        UPDATE sys_config SET isvalid=0  where config_id = #{configId}
+    </delete>
+    
+    <delete id="deleteConfigByIds" parameterType="Long">
+        UPDATE sys_config SET isvalid=0 where config_id in
+        <foreach item="configId" collection="configIds" open="(" separator="," close=")">
+        	#{configId}
+        </foreach>
+    </delete>
+    
+</mapper>

+ 162 - 162
service-manage/src/main/java/com/simuwang/manage/api/base/BaseController.java

@@ -1,162 +1,162 @@
-//package com.simuwang.manage.api.base;
-//
-//import com.github.pagehelper.PageHelper;
-//import com.github.pagehelper.PageInfo;
-//import com.simuwang.base.common.page.PageDomain;
-//import com.simuwang.base.common.page.TableDataInfo;
-//import com.simuwang.base.common.page.TableSupport;
-//import com.simuwang.base.common.result.AjaxResult;
-//import com.simuwang.base.common.util.DateUtils;
-//import com.simuwang.base.common.util.PageUtils;
-//import com.simuwang.base.common.util.SqlUtil;
-//import com.simuwang.base.common.util.StringUtil;
-//import com.smppw.common.pojo.enums.status.ResultCode;
-//import org.slf4j.Logger;
-//import org.slf4j.LoggerFactory;
-//import org.springframework.web.bind.WebDataBinder;
-//import org.springframework.web.bind.annotation.InitBinder;
-//
-//import java.beans.PropertyEditorSupport;
-//import java.util.Date;
-//import java.util.List;
-//
-///**
-// * FileName: BaseController
-// * Author:   chenjianhua
-// * Date:     2024/9/8 10:02
-// * Description: ${DESCRIPTION}
-// */
-//public class BaseController {
-//        protected final Logger logger = LoggerFactory.getLogger(this.getClass());
-//
-//        /**
-//         * 将前台传递过来的日期格式的字符串,自动转化为Date类型
-//         */
-//        @InitBinder
-//        public void initBinder(WebDataBinder binder)
-//        {
-//            // Date 类型转换
-//            binder.registerCustomEditor(Date.class, new PropertyEditorSupport()
-//            {
-//                @Override
-//                public void setAsText(String text)
-//                {
-//                    setValue(DateUtils.parseDate(text));
-//                }
-//            });
-//        }
-//
-//        /**
-//         * 设置请求分页数据
-//         */
-//        protected void startPage()
-//        {
-//            PageUtils.startPage();
-//        }
-//
-//        /**
-//         * 设置请求排序数据
-//         */
-//        protected void startOrderBy()
-//        {
-//            PageDomain pageDomain = TableSupport.buildPageRequest();
-//            if (StringUtil.isNotEmpty(pageDomain.getOrderBy()))
-//            {
-//                String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());
-//                PageHelper.orderBy(orderBy);
-//            }
-//        }
-//
-//        /**
-//         * 清理分页的线程变量
-//         */
-//        protected void clearPage()
-//        {
-//            PageUtils.clearPage();
-//        }
-//
-//        /**
-//         * 响应请求分页数据
-//         */
-//        @SuppressWarnings({ "rawtypes", "unchecked" })
-//        protected TableDataInfo getDataTable(List<?> list)
-//        {
-//            TableDataInfo rspData = new TableDataInfo();
-//            rspData.setCode(ResultCode.SUCCESS.getCode());
-//            rspData.setMsg(null);
-//            rspData.setRows(list);
-//            rspData.setTotal(new PageInfo(list).getTotal());
-//            return rspData;
-//        }
-//
-//    /**
-//     * 响应返回结果
-//     *
-//     * @param rows 影响行数
-//     * @return 操作结果
-//     */
-//    protected AjaxResult toAjax(int rows)
-//    {
-//        return rows > 0 ? success() : error();
-//    }
-//
-//    /**
-//     * 响应返回结果
-//     *
-//     * @param result 结果
-//     * @return 操作结果
-//     */
-//    protected AjaxResult toAjax(boolean result)
-//    {
-//        return result ? success() : error();
-//    }
-//
-//    /**
-//     * 返回成功
-//     */
-//    public AjaxResult success()
-//    {
-//        return AjaxResult.success();
-//    }
-//
-//    /**
-//     * 返回失败消息
-//     */
-//    public AjaxResult error()
-//    {
-//        return AjaxResult.error();
-//    }
-//
-//    /**
-//     * 返回成功消息
-//     */
-//    public AjaxResult success(String message)
-//    {
-//        return AjaxResult.success(message);
-//    }
-//
-//    /**
-//     * 返回成功数据
-//     */
-//    public static AjaxResult success(Object data)
-//    {
-//        return AjaxResult.success("操作成功", data);
-//    }
-//
-//    /**
-//     * 返回失败消息
-//     */
-//    public AjaxResult error(String message)
-//    {
-//        return AjaxResult.error(message);
-//    }
-//
-//    /**
-//     * 返回错误码消息
-//     */
-//    public AjaxResult error(AjaxResult.Type type, String message)
-//    {
-//        return new AjaxResult(type, message);
-//    }
-//
-//}
+package com.simuwang.manage.api.base;
+
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.simuwang.base.common.page.PageDomain;
+import com.simuwang.base.common.page.TableDataInfo;
+import com.simuwang.base.common.page.TableSupport;
+import com.simuwang.base.common.result.AjaxResult;
+import com.simuwang.base.common.util.DateUtils;
+import com.simuwang.base.common.util.PageUtils;
+import com.simuwang.base.common.util.SqlUtil;
+import com.simuwang.base.common.util.StringUtil;
+import com.smppw.common.pojo.enums.status.ResultCode;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.WebDataBinder;
+import org.springframework.web.bind.annotation.InitBinder;
+
+import java.beans.PropertyEditorSupport;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * FileName: BaseController
+ * Author:   chenjianhua
+ * Date:     2024/9/8 10:02
+ * Description: ${DESCRIPTION}
+ */
+public class BaseController {
+        protected final Logger logger = LoggerFactory.getLogger(this.getClass());
+
+        /**
+         * 将前台传递过来的日期格式的字符串,自动转化为Date类型
+         */
+        @InitBinder
+        public void initBinder(WebDataBinder binder)
+        {
+            // Date 类型转换
+            binder.registerCustomEditor(Date.class, new PropertyEditorSupport()
+            {
+                @Override
+                public void setAsText(String text)
+                {
+                    setValue(DateUtils.parseDate(text));
+                }
+            });
+        }
+
+        /**
+         * 设置请求分页数据
+         */
+        protected void startPage()
+        {
+            PageUtils.startPage();
+        }
+
+        /**
+         * 设置请求排序数据
+         */
+        protected void startOrderBy()
+        {
+            PageDomain pageDomain = TableSupport.buildPageRequest();
+            if (StringUtil.isNotEmpty(pageDomain.getOrderBy()))
+            {
+                String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());
+                PageHelper.orderBy(orderBy);
+            }
+        }
+
+        /**
+         * 清理分页的线程变量
+         */
+        protected void clearPage()
+        {
+            PageUtils.clearPage();
+        }
+
+        /**
+         * 响应请求分页数据
+         */
+        @SuppressWarnings({ "rawtypes", "unchecked" })
+        protected TableDataInfo getDataTable(List<?> list)
+        {
+            TableDataInfo rspData = new TableDataInfo();
+            rspData.setCode(ResultCode.SUCCESS.getCode());
+            rspData.setMsg(null);
+            rspData.setRows(list);
+            rspData.setTotal(new PageInfo(list).getTotal());
+            return rspData;
+        }
+
+    /**
+     * 响应返回结果
+     *
+     * @param rows 影响行数
+     * @return 操作结果
+     */
+    protected AjaxResult toAjax(int rows)
+    {
+        return rows > 0 ? success() : error();
+    }
+
+    /**
+     * 响应返回结果
+     *
+     * @param result 结果
+     * @return 操作结果
+     */
+    protected AjaxResult toAjax(boolean result)
+    {
+        return result ? success() : error();
+    }
+
+    /**
+     * 返回成功
+     */
+    public AjaxResult success()
+    {
+        return AjaxResult.success();
+    }
+
+    /**
+     * 返回失败消息
+     */
+    public AjaxResult error()
+    {
+        return AjaxResult.error();
+    }
+
+    /**
+     * 返回成功消息
+     */
+    public AjaxResult success(String message)
+    {
+        return AjaxResult.success(message);
+    }
+
+    /**
+     * 返回成功数据
+     */
+    public static AjaxResult success(Object data)
+    {
+        return AjaxResult.success("操作成功", data);
+    }
+
+    /**
+     * 返回失败消息
+     */
+    public AjaxResult error(String message)
+    {
+        return AjaxResult.error(message);
+    }
+
+    /**
+     * 返回错误码消息
+     */
+    public AjaxResult error(AjaxResult.Type type, String message)
+    {
+        return new AjaxResult(type, message);
+    }
+
+}

+ 0 - 24
service-manage/src/main/java/com/simuwang/manage/api/company/CompanyEmailConfigController.java

@@ -21,29 +21,5 @@ import java.util.List;
 @RequestMapping("/company")
 public class CompanyEmailConfigController {
     private static final Logger logger = LoggerFactory.getLogger(CompanyEmailConfigController.class);
-    @Autowired
-    private CompanyEmailConfigService companyEmailConfigService;
-    @PostMapping("save-email-config")
-    public ResultVo saveCompanyEmailConfig(@RequestBody List<CompanyEmailConfigVO> companyEmailConfigVOS){
-        ResultVo vo = new ResultVo(ResultCode.SAVE_SUCCESS);
-        try{
-            companyEmailConfigService.saveCompanyEmailConfig(companyEmailConfigVOS);
-        }catch (Exception e){
-            vo = new ResultVo(ResultCode.SAVE_SUCCESS);
-            logger.error(e.getMessage(),e);
-        }
-        return vo;
-    }
 
-    @PostMapping("delete-email-config")
-    public ResultVo deleteCompanyEmailConfig(@RequestParam("id")Integer id){
-        ResultVo vo = new ResultVo(ResultCode.DELETE_SUCCESS);
-        try{
-            companyEmailConfigService.deleteCompanyEmailConfig(id);
-        }catch (Exception e){
-            vo = new ResultVo(ResultCode.DELETE_FAILED);
-            logger.error(e.getMessage(),e);
-        }
-        return vo;
-    }
 }

+ 110 - 2
service-manage/src/main/java/com/simuwang/manage/api/company/CompanyEmailSendHistoryController.java

@@ -1,11 +1,21 @@
 package com.simuwang.manage.api.company;
 
 
+import com.simuwang.base.common.page.TableDataInfo;
+import com.simuwang.base.common.result.AjaxResult;
+import com.simuwang.base.pojo.vo.CompanyEmailConfigVO;
+import com.simuwang.base.pojo.vo.CompanyEmailSendHistoryVO;
+import com.simuwang.manage.api.base.BaseController;
+import com.simuwang.manage.service.CompanyEmailConfigService;
+import com.simuwang.manage.service.CompanyEmailSendHistoryService;
+import com.smppw.common.pojo.ResultVo;
+import com.smppw.common.pojo.enums.status.ResultCode;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
-
 import java.util.List;
+import java.util.Map;
 
 /**
  * FileName: CompanyInformationController
@@ -15,8 +25,106 @@ import java.util.List;
  */
 @RestController
 @RequestMapping("/company")
-public class CompanyEmailSendHistoryController {
+public class CompanyEmailSendHistoryController extends BaseController {
     private static final Logger logger = LoggerFactory.getLogger(CompanyEmailSendHistoryController.class);
+    @Autowired
+    private CompanyEmailSendHistoryService companyEmailSendHistoryService;
+
+    @Autowired
+    private CompanyEmailConfigService companyEmailConfigService;
+    /**
+     * 表格查询
+     * @param email
+     * @return
+     */
+    @RequestMapping("search-company-email")
+    public TableDataInfo searchCompanyEmail(@RequestParam(value = "companyName",required = false)String companyName,
+                                            @RequestParam(value = "email",required = false)String email,
+                                            @RequestParam(value = "sendStatus",required = false)Integer sendStatus){
+        List<CompanyEmailSendHistoryVO> result = companyEmailSendHistoryService.searchCompanyEmail(companyName,email,sendStatus);
+        return getDataTable(result);
+    }
+
+    /**
+     * 查询邮箱发送历史
+     * @param email
+     * @return
+     */
+    @RequestMapping("search-email-history")
+    public TableDataInfo searchEmailHistory(@RequestParam(value = "email",required = false)String email){
+        List<CompanyEmailSendHistoryVO> result = companyEmailSendHistoryService.searchEmailHistory(email);
+        return getDataTable(result);
+    }
+
+    /**
+     * 删除邮箱配置
+     * @param email
+     * @return
+     */
+    @PostMapping("delete-email")
+    public AjaxResult deleteEmail(@RequestParam(value = "email",required = false)String email){
+        companyEmailSendHistoryService.deleteEmail(email);
+        return AjaxResult.success();
+    }
+    /**
+     * 删除邮箱发送历史数据
+     * @param ids
+     * @return
+     */
+    @PostMapping("delete-email-history")
+    public AjaxResult deleteEmailHistory(String ids){
+        companyEmailSendHistoryService.deleteEmailHistory(ids);
+        return AjaxResult.success();
+    }
+
+    /**
+     * 保存邮箱配置
+     * @param companyEmailConfigVOS
+     * @return
+     */
+    @PostMapping("save-email-config")
+    public ResultVo saveCompanyEmailConfig(@RequestBody List<CompanyEmailConfigVO> companyEmailConfigVOS){
+        ResultVo vo = new ResultVo(ResultCode.SAVE_SUCCESS);
+        try{
+            companyEmailConfigService.saveCompanyEmailConfig(companyEmailConfigVOS);
+        }catch (Exception e){
+            vo = new ResultVo(ResultCode.SAVE_SUCCESS);
+            logger.error(e.getMessage(),e);
+        }
+        return vo;
+    }
 
+    /**
+     * 修改邮箱配置
+     * @param companyEmailConfigVO
+     * @return
+     */
+    @PostMapping("update-email-config")
+    public ResultVo updateCompanyEmailConfig(@RequestBody CompanyEmailConfigVO companyEmailConfigVO){
+        ResultVo vo = new ResultVo(ResultCode.SAVE_SUCCESS);
+        try{
+            companyEmailConfigService.updateCompanyEmailConfig(companyEmailConfigVO);
+        }catch (Exception e){
+            vo = new ResultVo(ResultCode.SAVE_SUCCESS);
+            logger.error(e.getMessage(),e);
+        }
+        return vo;
+    }
 
+    /**
+     * 删除邮箱配置
+     * @param id
+     * @return
+     */
+    @PostMapping("delete-email-config")
+    public ResultVo deleteCompanyEmailConfig(@RequestParam("id")Integer id){
+        ResultVo vo = new ResultVo(ResultCode.DELETE_SUCCESS);
+        try{
+            companyEmailConfigService.deleteCompanyEmailConfig(id);
+        }catch (Exception e){
+            vo = new ResultVo(ResultCode.DELETE_FAILED);
+            logger.error(e.getMessage(),e);
+        }
+        return vo;
+    }
 }

+ 17 - 0
service-manage/src/main/java/com/simuwang/manage/api/email/EmailConfigController.java

@@ -0,0 +1,17 @@
+package com.simuwang.manage.api.email;
+
+import com.simuwang.manage.api.base.BaseController;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * FileName: EmailConfigController
+ * Author:   chenjianhua
+ * Date:     2024/9/9 11:40
+ * Description: ${DESCRIPTION}
+ */
+@RestController
+@RequestMapping("/email")
+public class EmailConfigController extends BaseController {
+
+}

+ 80 - 80
service-manage/src/main/java/com/simuwang/manage/api/fund/FundInformationController.java

@@ -1,80 +1,80 @@
-//package com.simuwang.manage.api.fund;
-//
-//import com.simuwang.base.common.page.TableDataInfo;
-//import com.simuwang.base.pojo.vo.FundInformationVO;
-//import com.simuwang.base.pojo.vo.FundReportFrequencyVO;
-//import com.simuwang.manage.api.base.BaseController;
-//import com.simuwang.manage.service.FundInformationService;
-//import com.simuwang.manage.service.FundReportFrequencyService;
-//import com.smppw.common.pojo.ResultVo;
-//import com.smppw.common.pojo.enums.status.ResultCode;
-//import org.slf4j.Logger;
-//import org.slf4j.LoggerFactory;
-//import org.springframework.beans.factory.annotation.Autowired;
-//import org.springframework.web.bind.annotation.*;
-//
-//import java.util.List;
-//import java.util.Map;
-//
-///**
-// * FileName: FundInformationController
-// * Author:   chenjianhua
-// * Date:     2024/9/6 15:01
-// * Description: ${DESCRIPTION}
-// */
-//@RestController
-//@RequestMapping("/fund")
-//public class FundInformationController extends BaseController {
-//
-//    private static final Logger logger = LoggerFactory.getLogger(FundInformationController.class);
-//
-//
-//    @Autowired
-//    private FundInformationService fundInformationService;
-//
-//    @Autowired
-//    private FundReportFrequencyService fundReportFrequencyService;
-//    /**
-//     * 搜索输入框查询
-//     * @param keyword
-//     * @return
-//     */
-//    @RequestMapping("search-info")
-//    public TableDataInfo searchFundInfo(@RequestParam(value = "keyword",required = false)String keyword){
-//        List<Map<String,String>> result = fundInformationService.searchFundInfo(keyword);
-//        return getDataTable(result);
-//    }
-//
-//    /**
-//     * @param fundShortName
-//     * @param companyShortName
-//     * @param navFrequency
-//     * @param assetFrequency
-//     * @return
-//     */
-//    @RequestMapping("search-list")
-//    public List<FundInformationVO> searchFundInfoList(
-//              @RequestParam(value = "fundId",required = false)String fundId,
-//              @RequestParam(value = "fundShortName",required = false)String fundShortName,
-//              @RequestParam(value = "companyShortName",required = false)String companyShortName,
-//              @RequestParam(value = "navFrequency",required = false)Integer navFrequency,
-//              @RequestParam(value = "assetFrequency",required = false)Integer assetFrequency,
-//              @RequestParam(value = "startDate",required = false)Integer startDate,
-//              @RequestParam(value = "endDate",required = false)Integer endDate){
-//        List<FundInformationVO> result = fundInformationService.searchFundInfoList(fundId,fundShortName,companyShortName,navFrequency,assetFrequency,startDate,endDate);
-//        return result;
-//    }
-//
-//    @PostMapping("/save-frequency")
-//    public ResultVo saveFundReportFrequency(@RequestBody FundReportFrequencyVO fundReportFrequency){
-//        ResultVo vo = new ResultVo(ResultCode.SAVE_SUCCESS);
-//        try{
-//            fundReportFrequencyService.saveFundReportFrequency(fundReportFrequency);
-//        }catch (Exception e){
-//            vo = new ResultVo(ResultCode.SAVE_FAILED);
-//            logger.error(e.getMessage(),e);
-//        }
-//        return vo;
-//    }
-//
-//}
+package com.simuwang.manage.api.fund;
+
+import com.simuwang.base.common.page.TableDataInfo;
+import com.simuwang.base.pojo.vo.FundInformationVO;
+import com.simuwang.base.pojo.vo.FundReportFrequencyVO;
+import com.simuwang.manage.api.base.BaseController;
+import com.simuwang.manage.service.FundInformationService;
+import com.simuwang.manage.service.FundReportFrequencyService;
+import com.smppw.common.pojo.ResultVo;
+import com.smppw.common.pojo.enums.status.ResultCode;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * FileName: FundInformationController
+ * Author:   chenjianhua
+ * Date:     2024/9/6 15:01
+ * Description: ${DESCRIPTION}
+ */
+@RestController
+@RequestMapping("/fund")
+public class FundInformationController extends BaseController {
+
+    private static final Logger logger = LoggerFactory.getLogger(FundInformationController.class);
+
+
+    @Autowired
+    private FundInformationService fundInformationService;
+
+    @Autowired
+    private FundReportFrequencyService fundReportFrequencyService;
+    /**
+     * 搜索输入框查询
+     * @param keyword
+     * @return
+     */
+    @RequestMapping("search-info")
+    public TableDataInfo searchFundInfo(@RequestParam(value = "keyword",required = false)String keyword){
+        List<Map<String,String>> result = fundInformationService.searchFundInfo(keyword);
+        return getDataTable(result);
+    }
+
+    /**
+     * @param fundShortName
+     * @param companyShortName
+     * @param navFrequency
+     * @param assetFrequency
+     * @return
+     */
+    @RequestMapping("search-list")
+    public List<FundInformationVO> searchFundInfoList(
+              @RequestParam(value = "fundId",required = false)String fundId,
+              @RequestParam(value = "fundShortName",required = false)String fundShortName,
+              @RequestParam(value = "companyShortName",required = false)String companyShortName,
+              @RequestParam(value = "navFrequency",required = false)Integer navFrequency,
+              @RequestParam(value = "assetFrequency",required = false)Integer assetFrequency,
+              @RequestParam(value = "startDate",required = false)Integer startDate,
+              @RequestParam(value = "endDate",required = false)Integer endDate){
+        List<FundInformationVO> result = fundInformationService.searchFundInfoList(fundId,fundShortName,companyShortName,navFrequency,assetFrequency,startDate,endDate);
+        return result;
+    }
+
+    @PostMapping("/save-frequency")
+    public ResultVo saveFundReportFrequency(@RequestBody FundReportFrequencyVO fundReportFrequency){
+        ResultVo vo = new ResultVo(ResultCode.SAVE_SUCCESS);
+        try{
+            fundReportFrequencyService.saveFundReportFrequency(fundReportFrequency);
+        }catch (Exception e){
+            vo = new ResultVo(ResultCode.SAVE_FAILED);
+            logger.error(e.getMessage(),e);
+        }
+        return vo;
+    }
+
+}

+ 115 - 125
service-manage/src/main/java/com/simuwang/manage/api/system/SysConfigController.java

@@ -1,125 +1,115 @@
-//package com.simuwang.manage.api.system;
-//
-//import com.simuwang.base.common.page.TableDataInfo;
-//import com.simuwang.base.common.result.AjaxResult;
-//import com.simuwang.base.pojo.vo.SysConfigVO;
-//import com.simuwang.manage.api.base.BaseController;
-//import com.simuwang.manage.service.system.SysConfigService;
-//import org.springframework.beans.factory.annotation.Autowired;
-//import org.springframework.stereotype.Controller;
-//import org.springframework.ui.ModelMap;
-//import org.springframework.validation.annotation.Validated;
-//import org.springframework.web.bind.annotation.*;
-//
-//import java.util.List;
-//
-///**
-// * 参数配置 信息操作处理
-// *
-// * @author ruoyi
-// */
-//@Controller
-//@RequestMapping("/system/config")
-//public class SysConfigController extends BaseController
-//{
-//    private String prefix = "system/config";
-//
-//    @Autowired
-//    private SysConfigService configService;
-//
-//    @GetMapping()
-//    public String config()
-//    {
-//        return prefix + "/config";
-//    }
-//
-//    /**
-//     * 查询参数配置列表
-//     */
-//    @PostMapping("/list")
-//    @ResponseBody
-//    public TableDataInfo list(SysConfigVO config)
-//    {
-//        startPage();
-//        List<SysConfigVO> list = configService.selectConfigList(config);
-//        return getDataTable(list);
-//    }
-//    /**
-//     * 新增参数配置
-//     */
-//    @GetMapping("/add")
-//    public String add()
-//    {
-//        return prefix + "/add";
-//    }
-//
-//    /**
-//     * 新增保存参数配置
-//     */
-//    @PostMapping("/add")
-//    @ResponseBody
-//    public AjaxResult addSave(@Validated SysConfigVO config)
-//    {
-//        if (!configService.checkConfigKeyUnique(config))
-//        {
-//            return error("新增参数'" + config.getConfigName() + "'失败,参数键名已存在");
-//        }
-//        return toAjax(configService.insertConfig(config));
-//    }
-//
-//    /**
-//     * 修改参数配置
-//     */
-//    @GetMapping("/edit/{configId}")
-//    public String edit(@PathVariable("configId") Long configId, ModelMap mmap)
-//    {
-//        mmap.put("config", configService.selectConfigById(configId));
-//        return prefix + "/edit";
-//    }
-//
-//    /**
-//     * 修改保存参数配置
-//     */
-//    @PostMapping("/edit")
-//    @ResponseBody
-//    public AjaxResult editSave(@Validated SysConfigVO config)
-//    {
-//        if (!configService.checkConfigKeyUnique(config))
-//        {
-//            return error("修改参数'" + config.getConfigName() + "'失败,参数键名已存在");
-//        }
-//        return toAjax(configService.updateConfig(config));
-//    }
-//
-//    /**
-//     * 删除参数配置
-//     */
-//    @PostMapping("/remove")
-//    @ResponseBody
-//    public AjaxResult remove(String ids)
-//    {
-//        configService.deleteConfigByIds(ids);
-//        return success();
-//    }
-//
-//    /**
-//     * 刷新参数缓存
-//     */
-//    @GetMapping("/refreshCache")
-//    @ResponseBody
-//    public AjaxResult refreshCache()
-//    {
-//        configService.resetConfigCache();
-//        return success();
-//    }
-//
-//    /**
-//     * 校验参数键名
-//     */
-//    @PostMapping("/checkConfigKeyUnique")
-//    @ResponseBody
-//    public boolean checkConfigKeyUnique(SysConfigVO config)
-//    {
-//        return configService.checkConfigKeyUnique(config);
-//    }
-//}
+package com.simuwang.manage.api.system;
+
+import com.simuwang.base.common.page.TableDataInfo;
+import com.simuwang.base.common.result.AjaxResult;
+import com.simuwang.base.pojo.dos.SysConfigDO;
+import com.simuwang.base.pojo.vo.SysConfigVO;
+import com.simuwang.manage.api.base.BaseController;
+import com.simuwang.manage.service.system.SysConfigService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 参数配置 信息操作处理
+ *
+ * @author ruoyi
+ */
+@Controller
+@RequestMapping("/system/config")
+public class SysConfigController extends BaseController
+{
+    private String prefix = "system/config";
+
+    @Autowired
+    private SysConfigService configService;
+
+    @GetMapping()
+    public String config()
+    {
+        return prefix + "/config";
+    }
+
+    /**
+     * 查询参数配置列表
+     */
+    @PostMapping("/list")
+    @ResponseBody
+    public TableDataInfo list(SysConfigVO config)
+    {
+        startPage();
+        List<SysConfigDO> list = configService.selectConfigList(config);
+        return getDataTable(list);
+    }
+    /**
+     * 新增参数配置
+     */
+    @GetMapping("/add")
+    public String add()
+    {
+        return prefix + "/add";
+    }
+
+    /**
+     * 新增保存参数配置
+     */
+    @PostMapping("/add")
+    @ResponseBody
+    public AjaxResult addSave(@Validated SysConfigVO config)
+    {
+        if (!configService.checkConfigKeyUnique(config))
+        {
+            return error("新增参数'" + config.getConfigName() + "'失败,参数键名已存在");
+        }
+        return toAjax(configService.insertConfig(config));
+    }
+
+    /**
+     * 修改参数配置
+     */
+    @GetMapping("/edit/{configId}")
+    public String edit(@PathVariable("configId") Long configId, ModelMap mmap)
+    {
+        mmap.put("config", configService.selectConfigById(configId));
+        return prefix + "/edit";
+    }
+
+    /**
+     * 修改保存参数配置
+     */
+    @PostMapping("/edit")
+    @ResponseBody
+    public AjaxResult editSave(@Validated SysConfigVO config)
+    {
+        if (!configService.checkConfigKeyUnique(config))
+        {
+            return error("修改参数'" + config.getConfigName() + "'失败,参数键名已存在");
+        }
+        return toAjax(configService.updateConfig(config));
+    }
+
+    /**
+     * 删除参数配置
+     */
+    @PostMapping("/remove")
+    @ResponseBody
+    public AjaxResult remove(String ids)
+    {
+        configService.deleteConfigByIds(ids);
+        return success();
+    }
+
+    /**
+     * 校验参数键名
+     */
+    @PostMapping("/checkConfigKeyUnique")
+    @ResponseBody
+    public boolean checkConfigKeyUnique(SysConfigVO config)
+    {
+        return configService.checkConfigKeyUnique(config);
+    }
+}

+ 75 - 0
service-manage/src/main/java/com/simuwang/manage/api/system/SysLoginController.java

@@ -0,0 +1,75 @@
+package com.simuwang.manage.api.system;
+
+
+import com.simuwang.base.common.text.Convert;
+import com.simuwang.base.common.util.ServletUtils;
+import com.simuwang.manage.api.base.BaseController;
+import com.simuwang.manage.service.system.SysConfigService;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.GetMapping;
+
+/**
+ * 登录验证
+ * 
+ * @author ruoyi
+ */
+@Controller
+public class SysLoginController extends BaseController
+{
+    /**
+     * 是否开启记住我功能
+     */
+    @Value("${shiro.rememberMe.enabled: false}")
+    private boolean rememberMe;
+
+    @Autowired
+    private SysConfigService configService;
+
+    @GetMapping("/login")
+    public String login(HttpServletRequest request, HttpServletResponse response, ModelMap mmap)
+    {
+        // 如果是Ajax请求,返回Json字符串。
+        if (ServletUtils.isAjaxRequest(request))
+        {
+            return ServletUtils.renderString(response, "{\"code\":\"1\",\"msg\":\"未登录或登录超时。请重新登录\"}");
+        }
+        // 是否开启记住我
+        mmap.put("isRemembered", rememberMe);
+        // 是否开启用户注册
+        mmap.put("isAllowRegister", Convert.toBool(configService.getKey("sys.account.registerUser"), false));
+        return "login";
+    }
+
+//    @PostMapping("/login")
+//    @ResponseBody
+//    public AjaxResult ajaxLogin(String username, String password, Boolean rememberMe)
+//    {
+//        UsernamePasswordToken token = new UsernamePasswordToken(username, password, rememberMe);
+//        Subject subject = SecurityUtils.getSubject();
+//        try
+//        {
+//            subject.login(token);
+//            return success();
+//        }
+//        catch (AuthenticationException e)
+//        {
+//            String msg = "用户或密码错误";
+//            if (StringUtils.isNotEmpty(e.getMessage()))
+//            {
+//                msg = e.getMessage();
+//            }
+//            return error(msg);
+//        }
+//    }
+
+    @GetMapping("/unauth")
+    public String unauth()
+    {
+        return "error/unauth";
+    }
+}

+ 3 - 0
service-manage/src/main/java/com/simuwang/manage/service/CompanyEmailConfigService.java

@@ -11,7 +11,10 @@ import java.util.List;
  * Description: ${DESCRIPTION}
  */
 public interface CompanyEmailConfigService {
+
     void saveCompanyEmailConfig(List<CompanyEmailConfigVO> companyEmailConfigVOS);
 
     void deleteCompanyEmailConfig(Integer id);
+
+    void updateCompanyEmailConfig(CompanyEmailConfigVO companyEmailConfigVO);
 }

+ 20 - 0
service-manage/src/main/java/com/simuwang/manage/service/CompanyEmailSendHistoryService.java

@@ -0,0 +1,20 @@
+package com.simuwang.manage.service;
+
+import com.simuwang.base.pojo.vo.CompanyEmailSendHistoryVO;
+
+import java.util.List;
+
+/**
+ * FileName: CompanyEmailSendHistoryService
+ * Author:   chenjianhua
+ * Date:     2024/9/9 10:06
+ * Description: ${DESCRIPTION}
+ */
+public interface CompanyEmailSendHistoryService {
+    List<CompanyEmailSendHistoryVO> searchCompanyEmail(String companyName, String email, Integer sendStatus);
+    List<CompanyEmailSendHistoryVO> searchEmailHistory(String email);
+
+    void deleteEmail(String email);
+
+    void deleteEmailHistory(String ids);
+}

+ 12 - 0
service-manage/src/main/java/com/simuwang/manage/service/impl/CompanyEmailConfigServiceImpl.java

@@ -50,4 +50,16 @@ public class CompanyEmailConfigServiceImpl implements CompanyEmailConfigService
             companyEmailConfigMapper.updateById(configDO);
         }
     }
+
+    @Override
+    public void updateCompanyEmailConfig(CompanyEmailConfigVO companyEmailConfigVO) {
+        CompanyEmailConfigDO configDO = companyEmailConfigMapper.selectById(companyEmailConfigVO.getId());
+        if(configDO != null){
+            configDO.setEmail(companyEmailConfigVO.getEmail());
+            configDO.setCompanyId(companyEmailConfigVO.getCompanyId());
+            configDO.setCompanyName(companyEmailConfigVO.getCompanyName());
+            configDO.setUpdateTime(new Date());
+            companyEmailConfigMapper.updateById(configDO);
+        }
+    }
 }

+ 49 - 0
service-manage/src/main/java/com/simuwang/manage/service/impl/CompanyEmailSendHistoryServiceImpl.java

@@ -0,0 +1,49 @@
+package com.simuwang.manage.service.impl;
+
+import com.simuwang.base.mapper.CompanyEmailConfigMapper;
+import com.simuwang.base.mapper.CompanyEmailSendHistoryMapper;
+import com.simuwang.base.pojo.vo.CompanyEmailSendHistoryVO;
+import com.simuwang.manage.service.CompanyEmailSendHistoryService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * FileName: CompanyEmailSendHistoryServiceImpl
+ * Author:   chenjianhua
+ * Date:     2024/9/9 10:06
+ * Description: ${DESCRIPTION}
+ */
+@Service
+public class CompanyEmailSendHistoryServiceImpl implements CompanyEmailSendHistoryService {
+    @Autowired
+    private CompanyEmailSendHistoryMapper companyEmailSendHistoryMapper;
+
+    @Autowired
+    private CompanyEmailConfigMapper companyEmailConfigMapper;
+    @Override
+    public List<CompanyEmailSendHistoryVO> searchCompanyEmail(String companyName, String email, Integer sendStatus) {
+        return companyEmailSendHistoryMapper.searchCompanyEmailList(companyName,email,sendStatus);
+    }
+
+    @Override
+    public List<CompanyEmailSendHistoryVO> searchEmailHistory(String email) {
+        return companyEmailSendHistoryMapper.searchEmailHistory(email);
+    }
+
+    @Override
+    @Transactional
+    public void deleteEmail(String email) {
+        //删除配置
+        companyEmailConfigMapper.deleteCompanyEmailConfig(email);
+        //删除历史
+        companyEmailSendHistoryMapper.deleteEmailHistory(email);
+    }
+
+    @Override
+    public void deleteEmailHistory(String ids) {
+        companyEmailSendHistoryMapper.deleteEmailHistoryByIds(ids.split(","));
+    }
+}

+ 51 - 11
service-manage/src/main/java/com/simuwang/manage/service/impl/system/SysConfigServiceImpl.java

@@ -1,9 +1,17 @@
 package com.simuwang.manage.service.impl.system;
 
+import com.simuwang.base.common.conts.UserConstants;
+import com.simuwang.base.common.exception.ServiceException;
+import com.simuwang.base.common.text.Convert;
+import com.simuwang.base.common.util.StringUtil;
+import com.simuwang.base.mapper.system.SysConfigMapper;
+import com.simuwang.base.pojo.dos.SysConfigDO;
 import com.simuwang.base.pojo.vo.SysConfigVO;
 import com.simuwang.manage.service.system.SysConfigService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -14,9 +22,11 @@ import java.util.List;
  */
 @Service
 public class SysConfigServiceImpl implements SysConfigService {
+    @Autowired
+    private SysConfigMapper sysConfigMapper;
     @Override
-    public List<SysConfigVO> selectConfigList(SysConfigVO config) {
-        return null;
+    public List<SysConfigDO> selectConfigList(SysConfigVO config) {
+        return sysConfigMapper.selectConfigList(config);
     }
 
     @Override
@@ -25,27 +35,57 @@ public class SysConfigServiceImpl implements SysConfigService {
     }
 
     @Override
-    public SysConfigVO selectConfigById(Long configId) {
-        return null;
+    public SysConfigDO selectConfigById(Long configId) {
+        SysConfigDO sysConfigDO = sysConfigMapper.selectConfigById(configId);
+        return sysConfigDO;
     }
 
     @Override
     public boolean checkConfigKeyUnique(SysConfigVO config) {
-        return false;
+        Long configId = StringUtil.isNull(config.getConfigId()) ? -1L : config.getConfigId();
+        SysConfigDO info = sysConfigMapper.checkConfigKeyUnique(config.getConfigKey());
+        if (StringUtil.isNotNull(info) && info.getConfigId().longValue() != configId.longValue())
+        {
+            return UserConstants.NOT_UNIQUE;
+        }
+        return UserConstants.UNIQUE;
     }
 
-    @Override
-    public void resetConfigCache() {
-
-    }
 
     @Override
     public void deleteConfigByIds(String ids) {
-
+        Long[] configIds = Convert.toLongArray(ids);
+        for (Long configId : configIds)
+        {
+            SysConfigDO config = selectConfigById(configId);
+            if (StringUtil.equals(UserConstants.YES, config.getConfigType()))
+            {
+                throw new ServiceException(String.format("内置参数【%1$s】不能删除 ", config.getConfigKey()));
+            }
+            sysConfigMapper.deleteConfigById(configId);
+        }
     }
 
     @Override
     public int updateConfig(SysConfigVO config) {
-        return 0;
+        SysConfigDO temp = sysConfigMapper.selectConfigById(config.getConfigId());
+        temp.setUpdateTime(new Date());
+        temp.setConfigKey(config.getConfigKey());
+        temp.setConfigType(config.getConfigType());
+        temp.setConfigValue(config.getConfigValue());
+        temp.setConfigName(config.getConfigName());
+        return sysConfigMapper.updateConfig(temp);
+    }
+
+    @Override
+    public String getKey(String configKey) {
+        SysConfigVO config = new SysConfigVO();
+        config.setConfigKey(configKey);
+        SysConfigDO retConfig = sysConfigMapper.selectConfig(config);
+        if (StringUtil.isNotNull(retConfig))
+        {
+            return retConfig.getConfigValue();
+        }
+        return StringUtil.EMPTY;
     }
 }

+ 5 - 4
service-manage/src/main/java/com/simuwang/manage/service/system/SysConfigService.java

@@ -1,5 +1,6 @@
 package com.simuwang.manage.service.system;
 
+import com.simuwang.base.pojo.dos.SysConfigDO;
 import com.simuwang.base.pojo.vo.SysConfigVO;
 
 import java.util.List;
@@ -11,17 +12,17 @@ import java.util.List;
  * Description: ${DESCRIPTION}
  */
 public interface SysConfigService {
-    List<SysConfigVO> selectConfigList(SysConfigVO config);
+    List<SysConfigDO> selectConfigList(SysConfigVO config);
 
     int insertConfig(SysConfigVO config);
 
-    SysConfigVO selectConfigById(Long configId);
+    SysConfigDO selectConfigById(Long configId);
 
     boolean checkConfigKeyUnique(SysConfigVO config);
 
-    void resetConfigCache();
-
     void deleteConfigByIds(String ids);
 
     int updateConfig(SysConfigVO config);
+
+    String getKey(String configKey);
 }