Browse Source

feat: 渠道管理后端接口开发

chenjianhua 1 month ago
parent
commit
9572b5366c
24 changed files with 946 additions and 0 deletions
  1. 23 0
      service-base/src/main/java/com/simuwang/base/mapper/daq/ChannelEmailMapper.java
  2. 21 0
      service-base/src/main/java/com/simuwang/base/mapper/daq/ChannelMapper.java
  3. 10 0
      service-base/src/main/java/com/simuwang/base/mapper/daq/CompanyReportFrequencyMapper.java
  4. 4 0
      service-base/src/main/java/com/simuwang/base/mapper/daq/FundReportFrequencyMapper.java
  5. 58 0
      service-base/src/main/java/com/simuwang/base/pojo/dos/ChannelEmailInfoDO.java
  6. 44 0
      service-base/src/main/java/com/simuwang/base/pojo/dos/ChannelInfoDO.java
  7. 55 0
      service-base/src/main/java/com/simuwang/base/pojo/dos/ChannelPageInfoDO.java
  8. 75 0
      service-base/src/main/java/com/simuwang/base/pojo/dos/CompanyReportFrequencyDO.java
  9. 16 0
      service-base/src/main/java/com/simuwang/base/pojo/dto/query/ChannelIdPageQuery.java
  10. 16 0
      service-base/src/main/java/com/simuwang/base/pojo/dto/query/ChannelPageQuery.java
  11. 35 0
      service-base/src/main/java/com/simuwang/base/pojo/vo/ChannelEmailInfoVO.java
  12. 32 0
      service-base/src/main/java/com/simuwang/base/pojo/vo/ChannelInfoVO.java
  13. 35 0
      service-base/src/main/java/com/simuwang/base/pojo/vo/ChannelPageInfoVO.java
  14. 33 0
      service-base/src/main/java/com/simuwang/base/pojo/vo/CompanyReportFrequencyVO.java
  15. 31 0
      service-base/src/main/resources/mapper/daq/ChannelEmailMapper.xml
  16. 61 0
      service-base/src/main/resources/mapper/daq/ChannelMapper.xml
  17. 35 0
      service-base/src/main/resources/mapper/daq/CompanyReportFrequencyMapper.xml
  18. 7 0
      service-base/src/main/resources/mapper/daq/FundReportFrequencyMapper.xml
  19. 97 0
      service-manage/src/main/java/com/simuwang/manage/api/channel/ChannelController.java
  20. 17 0
      service-manage/src/main/java/com/simuwang/manage/api/company/CompanyEmailSendHistoryController.java
  21. 26 0
      service-manage/src/main/java/com/simuwang/manage/service/ChannelService.java
  22. 8 0
      service-manage/src/main/java/com/simuwang/manage/service/CompanyReportFrequencyService.java
  23. 131 0
      service-manage/src/main/java/com/simuwang/manage/service/impl/ChannelServiceImpl.java
  24. 76 0
      service-manage/src/main/java/com/simuwang/manage/service/impl/CompanyReportFrequencyServiceImpl.java

+ 23 - 0
service-base/src/main/java/com/simuwang/base/mapper/daq/ChannelEmailMapper.java

@@ -0,0 +1,23 @@
+package com.simuwang.base.mapper.daq;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.simuwang.base.pojo.dos.ChannelEmailInfoDO;
+import com.simuwang.base.pojo.dto.GetByIdQuery;
+import com.simuwang.base.pojo.dto.query.ChannelIdPageQuery;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface ChannelEmailMapper extends BaseMapper<ChannelEmailInfoDO> {
+    void deleteByChannelId(@Param("channelId") Integer id,@Param("userId") Integer userId);
+
+    ChannelEmailInfoDO selectByEmail(@Param("email") String email);
+
+    void deleteByIdAndUserId(@Param("id") Integer id, @Param("userId")Integer userId);
+
+    List<ChannelEmailInfoDO> searchChannelEmailList(ChannelIdPageQuery getByIdQuery);
+
+    long countChannelEmail(ChannelIdPageQuery getByIdQuery);
+}

+ 21 - 0
service-base/src/main/java/com/simuwang/base/mapper/daq/ChannelMapper.java

@@ -0,0 +1,21 @@
+package com.simuwang.base.mapper.daq;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.simuwang.base.pojo.dos.ChannelInfoDO;
+import com.simuwang.base.pojo.dos.ChannelPageInfoDO;
+import com.simuwang.base.pojo.dto.query.ChannelPageQuery;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface ChannelMapper extends BaseMapper<ChannelInfoDO> {
+    void deleteChannelById(@Param("id") Integer id,@Param("userId") Integer userId);
+
+    ChannelInfoDO selectByChannelName(@Param("channelName") String channelName);
+
+    List<ChannelPageInfoDO> searchChannelList(ChannelPageQuery channelPageQuery);
+
+    long countChannelInfo(ChannelPageQuery channelPageQuery);
+}

+ 10 - 0
service-base/src/main/java/com/simuwang/base/mapper/daq/CompanyReportFrequencyMapper.java

@@ -0,0 +1,10 @@
+package com.simuwang.base.mapper.daq;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.simuwang.base.pojo.dos.CompanyReportFrequencyDO;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface CompanyReportFrequencyMapper extends BaseMapper<CompanyReportFrequencyDO> {
+    CompanyReportFrequencyDO getFrequencyByCompanyId(String companyId);
+}

+ 4 - 0
service-base/src/main/java/com/simuwang/base/mapper/daq/FundReportFrequencyMapper.java

@@ -5,6 +5,8 @@ import com.simuwang.base.pojo.dos.FundReportFrequencyDO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 /**
  * FileName: FundReportFrequencyMapper
  * Author:   chenjianhua
@@ -14,4 +16,6 @@ import org.apache.ibatis.annotations.Param;
 @Mapper
 public interface FundReportFrequencyMapper extends BaseMapper<FundReportFrequencyDO> {
     public FundReportFrequencyDO getFrequencyByFundId(@Param("fundId") String fundId);
+
+    List<String> selectFundId(@Param("item")List<String> fundIdList);
 }

+ 58 - 0
service-base/src/main/java/com/simuwang/base/pojo/dos/ChannelEmailInfoDO.java

@@ -0,0 +1,58 @@
+package com.simuwang.base.pojo.dos;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.simuwang.base.common.util.DateUtils;
+import com.simuwang.base.pojo.vo.ChannelEmailInfoVO;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@TableName("channel_email_info")
+public class ChannelEmailInfoDO {
+    /**
+     * ID
+     */
+    @TableId(value = "id",type = IdType.AUTO)
+    private Integer id;
+    /**
+     * 渠道ID
+     */
+    @TableField("channel_id")
+    private String channelId;
+    /**
+     * 邮箱地址
+     */
+    @TableField("email")
+    private String email;
+
+    @TableField("isvalid")
+    private Integer isvalid;
+
+    @TableField("createtime")
+    private Date createTime;
+
+    @TableField("updatetime")
+    private Date updateTime;
+
+    @TableField("creatorid")
+    private Integer creatorId;
+
+    @TableField("updaterid")
+    private Integer updaterId;
+
+    public ChannelEmailInfoVO toVo() {
+        ChannelEmailInfoVO vo = new ChannelEmailInfoVO();
+        vo.setId(id);
+        vo.setChannelId(channelId);
+        vo.setEmail(email);
+        vo.setUpdaterId(updaterId);
+        vo.setCreatorId(creatorId);
+        vo.setCreateTime(DateUtils.format(createTime, "yyyy-MM-dd HH:mm:ss"));
+        vo.setUpdateTime(DateUtils.format(updateTime, "yyyy-MM-dd HH:mm:ss"));
+        return vo;
+    }
+}

+ 44 - 0
service-base/src/main/java/com/simuwang/base/pojo/dos/ChannelInfoDO.java

@@ -0,0 +1,44 @@
+package com.simuwang.base.pojo.dos;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@TableName("channel_info")
+public class ChannelInfoDO {
+    /**
+     * ID
+     */
+    @TableId(value = "id",type = IdType.AUTO)
+    private Integer id;
+    /**
+     * 渠道名称
+     */
+    @TableField("channel_name")
+    private String channelName;
+    /**
+     * 渠道备注
+     */
+    @TableField("channel_remark")
+    private String channelRemark;
+
+    @TableField("isvalid")
+    private Integer isvalid;
+
+    @TableField("createtime")
+    private Date createTime;
+
+    @TableField("updatetime")
+    private Date updateTime;
+
+    @TableField("creatorid")
+    private Integer creatorId;
+
+    @TableField("updaterid")
+    private Integer updaterId;
+}

+ 55 - 0
service-base/src/main/java/com/simuwang/base/pojo/dos/ChannelPageInfoDO.java

@@ -0,0 +1,55 @@
+package com.simuwang.base.pojo.dos;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.simuwang.base.common.util.DateUtils;
+import com.simuwang.base.pojo.vo.ChannelPageInfoVO;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class ChannelPageInfoDO {
+    /**
+     * ID
+     */
+    private Integer id;
+    /**
+     * 渠道名称
+     */
+    private String channelName;
+    /**
+     * 邮箱地址
+     */
+    private String email;
+    /**
+     * 渠道备注
+     */
+    private String channelRemark;
+
+    private Integer isvalid;
+
+    private Date createTime;
+
+    private Date updateTime;
+
+    private Integer creatorId;
+
+    private Integer updaterId;
+
+    public ChannelPageInfoVO toVo() {
+        ChannelPageInfoVO vo = new ChannelPageInfoVO();
+        vo.setId(id);
+        vo.setChannelName(channelName);
+        vo.setEmail(email);
+        vo.setChannelRemark(channelRemark);
+        vo.setIsvalid(isvalid);
+        vo.setCreateTime(DateUtils.format(createTime,DateUtils.YYYY_MM_DD_HH_MM_SS));
+        vo.setUpdateTime(DateUtils.format(updateTime,DateUtils.YYYY_MM_DD_HH_MM_SS));
+        vo.setCreatorId(creatorId);
+        vo.setUpdaterId(updaterId);
+        return vo;
+    }
+}

+ 75 - 0
service-base/src/main/java/com/simuwang/base/pojo/dos/CompanyReportFrequencyDO.java

@@ -0,0 +1,75 @@
+package com.simuwang.base.pojo.dos;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * FileName: FundReportFrequency
+ * Author:   chenjianhua
+ * Date:     2024/9/6 14:21
+ * Description: ${DESCRIPTION}
+ */
+@Data
+@TableName("company_report_frequency")
+public class CompanyReportFrequencyDO {
+    /**
+     * 主键Id
+     */
+    @TableId(value = "id",type= IdType.AUTO)
+    private Integer id;
+    /**
+     * 公司ID
+     */
+    @TableField(value = "company_id")
+    private String companyId;
+    /**
+     * 净值报送频率,1-日频,2-周频,3-月频,4-季频,5-半年,6-年频,-1无固定
+     */
+    @TableField(value = "nav_frequency")
+    private Integer navFrequency;
+    /**
+     * 规模报送频率,1-日频,2-周频,3-月频,4-季频,5-半年,6-年频,-1无固定
+     */
+    @TableField(value = "asset_frequency")
+    private Integer assetFrequency;
+    /**
+     * 估值报送频率,1-日频,2-周频,3-月频,4-季频,5-半年,6-年频,-1无固定
+     */
+    @TableField(value = "valuation_frequency")
+    private Integer valuationFrequency;
+    /**
+     * 频率备注
+     */
+    @TableField(value = "frequency_remark")
+    private String frequencyRemark;
+    /**
+     * 创建者Id
+     */
+    @TableField(value = "creatorid")
+    private Integer creatorId;
+    /**
+     * 修改者Id;第一次创建时与Creator值相同,修改时与修改人值相同
+     */
+    @TableField(value = "updaterid")
+    private Integer updaterId;
+    /**
+     * 创建时间,默认第一次创建的getdate()时间
+     */
+    @TableField(value = "createtime")
+    private Date createTime;
+    /**
+     * 修改时间;第一次创建时与CreatTime值相同,修改时与修改时间相同
+     */
+    @TableField(value = "updatetime")
+    private Date updateTime;
+    /**
+     * 有效标识
+     */
+    @TableField(value = "isvalid")
+    private Integer isvalid;
+}

+ 16 - 0
service-base/src/main/java/com/simuwang/base/pojo/dto/query/ChannelIdPageQuery.java

@@ -0,0 +1,16 @@
+package com.simuwang.base.pojo.dto.query;
+
+import com.simuwang.base.common.support.query.PageQuery;
+
+public class ChannelIdPageQuery extends PageQuery {
+
+    private Integer channelId;
+
+    public Integer getChannelId() {
+        return channelId;
+    }
+
+    public void setChannelId(Integer channelId) {
+        this.channelId = channelId;
+    }
+}

+ 16 - 0
service-base/src/main/java/com/simuwang/base/pojo/dto/query/ChannelPageQuery.java

@@ -0,0 +1,16 @@
+package com.simuwang.base.pojo.dto.query;
+
+import com.simuwang.base.common.support.query.PageQuery;
+
+public class ChannelPageQuery extends PageQuery {
+
+    private String channelName;
+
+    public String getChannelName() {
+        return channelName;
+    }
+
+    public void setChannelName(String channelName) {
+        this.channelName = channelName;
+    }
+}

+ 35 - 0
service-base/src/main/java/com/simuwang/base/pojo/vo/ChannelEmailInfoVO.java

@@ -0,0 +1,35 @@
+package com.simuwang.base.pojo.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class ChannelEmailInfoVO {
+    /**
+     * ID
+     */
+    private Integer id;
+    /**
+     * 渠道ID
+     */
+    private String channelId;
+    /**
+     * 邮箱地址
+     */
+    private String email;
+
+    private Integer isvalid;
+
+    private String createTime;
+
+    private String updateTime;
+
+    private Integer creatorId;
+
+    private Integer updaterId;
+}

+ 32 - 0
service-base/src/main/java/com/simuwang/base/pojo/vo/ChannelInfoVO.java

@@ -0,0 +1,32 @@
+package com.simuwang.base.pojo.vo;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class ChannelInfoVO {
+    /**
+     * ID
+     */
+    private Integer id;
+    /**
+     * 渠道名称
+     */
+    private String channelName;
+    /**
+     * 渠道备注
+     */
+    private String channelRemark;
+
+    private Integer isvalid;
+
+    private String createTime;
+
+    private String updateTime;
+
+    private Integer creatorId;
+
+    private Integer updaterId;
+}

+ 35 - 0
service-base/src/main/java/com/simuwang/base/pojo/vo/ChannelPageInfoVO.java

@@ -0,0 +1,35 @@
+package com.simuwang.base.pojo.vo;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class ChannelPageInfoVO {
+    /**
+     * ID
+     */
+    private Integer id;
+    /**
+     * 渠道名称
+     */
+    private String channelName;
+    /**
+     * 邮箱地址
+     */
+    private String email;
+    /**
+     * 渠道备注
+     */
+    private String channelRemark;
+
+    private Integer isvalid;
+
+    private String createTime;
+
+    private String updateTime;
+
+    private Integer creatorId;
+
+    private Integer updaterId;
+}

+ 33 - 0
service-base/src/main/java/com/simuwang/base/pojo/vo/CompanyReportFrequencyVO.java

@@ -0,0 +1,33 @@
+package com.simuwang.base.pojo.vo;
+
+import lombok.Data;
+
+/**
+ * FileName: companyReportFrequency
+ * Author:   chenjianhua
+ * Date:     2024/9/6 14:21
+ * Description: ${DESCRIPTION}
+ */
+@Data
+public class CompanyReportFrequencyVO {
+    /**
+     * 公司ID
+     */
+    private String companyId;
+    /**
+     * 净值报送频率,1-日频,2-周频,3-月频,4-季频,5-半年,6-年频,-1无固定
+     */
+    private Integer navFrequency;
+    /**
+     * 规模报送频率,1-日频,2-周频,3-月频,4-季频,5-半年,6-年频,-1无固定
+     */
+    private Integer assetFrequency;
+    /**
+     * 估值报送频率,1-日频,2-周频,3-月频,4-季频,5-半年,6-年频,-1无固定
+     */
+    private Integer valuationFrequency;
+    /**
+     * 频率备注
+     */
+    private String frequencyRemark;
+}

+ 31 - 0
service-base/src/main/resources/mapper/daq/ChannelEmailMapper.xml

@@ -0,0 +1,31 @@
+<?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.daq.ChannelEmailMapper">
+
+    <resultMap id="BaseResultMap" type="com.simuwang.base.pojo.dos.ChannelEmailInfoDO" >
+        <id column="id" property="id" jdbcType="INTEGER" />
+        <result column="channel_id" property="channelId" jdbcType="VARCHAR" />
+        <result column="email" property="email" jdbcType="VARCHAR" />
+        <result column="creatorid" property="creatorId" jdbcType="INTEGER" />
+        <result column="createtime" property="createTime" jdbcType="TIMESTAMP" />
+        <result column="updaterid" property="updaterId" jdbcType="INTEGER" />
+        <result column="updatetime" property="updateTime" jdbcType="TIMESTAMP" />
+        <result column="isvalid" property="isvalid" jdbcType="INTEGER" />
+    </resultMap>
+    <delete id="deleteByChannelId">
+        update channel_email_info set isvalid=0,updatetime=now(),updaterid=#{userId} where channel_id=#{channelId}
+    </delete>
+    <delete id="deleteByIdAndUserId">
+        update channel_email_info set isvalid=0,updatetime=now(),updaterid=#{userId} where id=#{id}
+    </delete>
+    <select id="selectByEmail" resultMap="BaseResultMap">
+        select * from channel_email_info where isvalid=1 and email=#{email}
+    </select>
+    <select id="searchChannelEmailList" resultMap="BaseResultMap">
+        select * from channel_email_info where channel_id=#{channelId} and isvalid=1
+        order by updatetime desc limit #{offset},#{pageSize}
+    </select>
+    <select id="countChannelEmail" resultType="java.lang.Long">
+        select count(1) from channel_email_info where channel_id=#{channelId} and isvalid=1
+    </select>
+</mapper>

+ 61 - 0
service-base/src/main/resources/mapper/daq/ChannelMapper.xml

@@ -0,0 +1,61 @@
+<?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.daq.ChannelMapper">
+    <resultMap id="BaseResultMap" type="com.simuwang.base.pojo.dos.ChannelInfoDO" >
+        <id column="id" property="id" jdbcType="INTEGER" />
+        <result column="channel_name" property="channelName" jdbcType="VARCHAR" />
+        <result column="channel_remark" property="channelRemark" jdbcType="VARCHAR" />
+        <result column="creatorid" property="creatorId" jdbcType="INTEGER" />
+        <result column="createtime" property="createTime" jdbcType="TIMESTAMP" />
+        <result column="updaterid" property="updaterId" jdbcType="INTEGER" />
+        <result column="updatetime" property="updateTime" jdbcType="TIMESTAMP" />
+        <result column="isvalid" property="isvalid" jdbcType="INTEGER" />
+    </resultMap>
+
+    <delete id="deleteChannelById">
+        update channel_info set isvalid=0,updatetime=now(),updaterid=#{userId} where id=#{id}
+    </delete>
+    <select id="selectByChannelName" resultMap="BaseResultMap">
+        select * from channel_info where isvalid=1 and channel_name=#{channelName}
+    </select>
+
+    <resultMap id="BasePageResultMap" type="com.simuwang.base.pojo.dos.ChannelPageInfoDO" >
+        <id column="id" property="id" jdbcType="INTEGER" />
+        <result column="channel_name" property="channelName" jdbcType="VARCHAR" />
+        <result column="email" property="email" jdbcType="VARCHAR" />
+        <result column="channel_remark" property="channelRemark" jdbcType="VARCHAR" />
+        <result column="creatorid" property="creatorId" jdbcType="INTEGER" />
+        <result column="createtime" property="createTime" jdbcType="TIMESTAMP" />
+        <result column="updaterid" property="updaterId" jdbcType="INTEGER" />
+        <result column="updatetime" property="updateTime" jdbcType="TIMESTAMP" />
+        <result column="isvalid" property="isvalid" jdbcType="INTEGER" />
+    </resultMap>
+
+    <select id="searchChannelList" resultMap="BasePageResultMap">
+        select info.id,
+               info.channel_name,
+               info.channel_remark,
+               group_concat(e.email) as email,
+               info.createtime,
+               info.updatetime,
+               info.isvalid,
+               info.creatorid,
+               info.updaterid
+        from channel_info info
+        left join channel_email_info e
+        on info.id = e.channel_id and e.isvalid=1
+        where info.isvalid=1
+        <if test="channelName != null and channelName !=''">
+            and info.channel_name like concat('%',#{channelName},'%')
+        </if>
+        GROUP BY info.channel_name
+        order by info.createtime
+        limit #{offset},#{pageSize}
+    </select>
+    <select id="countChannelInfo" resultType="java.lang.Long">
+        select count(*) from channel_email_info where isvalid=1
+        <if test="channelName != null and channelName !=''">
+            and  info.channel_name like concat('%',#{channelName},'%')
+        </if>
+    </select>
+</mapper>

+ 35 - 0
service-base/src/main/resources/mapper/daq/CompanyReportFrequencyMapper.xml

@@ -0,0 +1,35 @@
+<?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.daq.CompanyReportFrequencyMapper">
+    <resultMap id="BaseResultMap" type="com.simuwang.base.pojo.dos.CompanyReportFrequencyDO">
+        <id column="id" property="id"/>
+        <result column="company_id" property="companyId"/>
+        <result column="nav_frequency" property="navFrequency"/>
+        <result column="asset_frequency" property="assetFrequency"/>
+        <result column="valuation_frequency" property="valuationFrequency"/>
+        <result column="frequency_remark" property="frequencyRemark"/>
+        <result column="creatorid" property="creatorId"/>
+        <result column="updaterid" property="updaterId"/>
+        <result column="createtime" property="createTime"/>
+        <result column="updatetime" property="updateTime"/>
+        <result column="isvalid" property="isvalid"/>
+    </resultMap>
+    <sql id="selectCompanyReportFrequencyVo">
+        select id, company_id, nav_frequency, frequency_remark, asset_frequency, creatorid, updaterid, updatetime, createtime, isvalid,valuation_frequency
+        from company_report_frequency
+    </sql>
+    <sql id="sqlwhereSearch">
+        <where>
+            isvalid =1
+            <if test="companyId !=null and companyId != ''">
+                and company_id = #{companyId}
+            </if>
+        </where>
+    </sql>
+    <select id="getFrequencyByCompanyId" resultMap="BaseResultMap"
+            parameterType="java.lang.String">
+        <include refid="selectCompanyReportFrequencyVo"/>
+        <include refid="sqlwhereSearch"/>
+    </select>
+
+</mapper>

+ 7 - 0
service-base/src/main/resources/mapper/daq/FundReportFrequencyMapper.xml

@@ -31,5 +31,12 @@
         <include refid="selectFundReportFrequencyVo"/>
         <include refid="sqlwhereSearch"/>
     </select>
+    <select id="selectFundId" resultType="java.lang.String">
+        select fund_id from fund_report_frequency where isvalid =1
+        and fund_id in
+        <foreach item="fundId" collection="item" open="(" separator="," close=")">
+            #{fundId}
+        </foreach>
+    </select>
 
 </mapper>

+ 97 - 0
service-manage/src/main/java/com/simuwang/manage/api/channel/ChannelController.java

@@ -0,0 +1,97 @@
+package com.simuwang.manage.api.channel;
+
+import com.simuwang.base.common.support.MybatisPage;
+import com.simuwang.base.pojo.dto.GetByIdQuery;
+import com.simuwang.base.pojo.dto.query.ChannelIdPageQuery;
+import com.simuwang.base.pojo.dto.query.ChannelPageQuery;
+import com.simuwang.base.pojo.vo.*;
+import com.simuwang.logging.SystemLog;
+import com.simuwang.manage.service.ChannelService;
+import com.smppw.common.pojo.ResultVo;
+import org.springframework.beans.factory.annotation.Autowired;
+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;
+
+import java.util.List;
+
+@SystemLog(value = "渠道管理")
+@RestController
+@RequestMapping("/v1/channel")
+public class ChannelController {
+    @Autowired
+    private ChannelService channelService;
+
+    /**
+     * 保存渠道信息
+     * @param channel
+     * @return
+     */
+    @SystemLog(value = "保存渠道信息", type = SystemLog.Type.INSERT)
+    @PostMapping("save-channel")
+    public ResultVo saveChannel(@RequestBody ChannelInfoVO channel) {
+        ResultVo vo = channelService.saveChannel(channel);
+        return vo;
+    }
+
+    /**
+     * 保存渠道邮件信息
+     * @param channelEmailInfoVOList
+     * @return
+     */
+    @SystemLog(value = "保存渠道邮件信息", type = SystemLog.Type.INSERT)
+    @PostMapping("save-channel-email")
+    public ResultVo saveChannelEmail(@RequestBody List<ChannelEmailInfoVO> channelEmailInfoVOList) {
+        ResultVo vo = channelService.saveChannelEmail(channelEmailInfoVOList);
+        return vo;
+    }
+
+    /**
+     * 删除渠道信息
+     * @param idListVO
+     * @return
+     */
+    @SystemLog(value = "删除渠道信息", type = SystemLog.Type.INSERT)
+    @PostMapping("delete-channel")
+    public ResultVo deleteChannel(@RequestBody IdListVO idListVO) {
+        ResultVo vo = channelService.deleteChannel(idListVO.getIdList());
+        return vo;
+    }
+
+    /**
+     * 删除渠道邮件
+     * @param idVO
+     * @return
+     */
+    @SystemLog(value = "删除渠道邮件", type = SystemLog.Type.INSERT)
+    @PostMapping("delete-channel-email")
+    public ResultVo deleteChannelEmail(@RequestBody IdVO idVO) {
+        ResultVo vo = channelService.deleteChannelEmail(idVO.getId());
+        return vo;
+    }
+
+    /**
+     * 查询渠道信息
+     * @param  channelPageQuery
+     * @return
+     */
+    @SystemLog(value = "查询渠道信息")
+    @RequestMapping("search-channel-list")
+    public MybatisPage<ChannelPageInfoVO> searchChannelList(ChannelPageQuery channelPageQuery){
+        MybatisPage<ChannelPageInfoVO> result = channelService.searchChannelList(channelPageQuery);
+        return result;
+    }
+
+    /**
+     * 查询渠道邮件
+     * @param  channelIdPageQuery
+     * @return
+     */
+    @SystemLog(value = "查询渠道邮件信息")
+    @RequestMapping("search-channel-email")
+    public MybatisPage<ChannelEmailInfoVO> searchChannelEmail(ChannelIdPageQuery channelIdPageQuery){
+        MybatisPage<ChannelEmailInfoVO> result = channelService.searchChannelEmailList(channelIdPageQuery);
+        return result;
+    }
+}

+ 17 - 0
service-manage/src/main/java/com/simuwang/manage/api/company/CompanyEmailSendHistoryController.java

@@ -8,6 +8,7 @@ import com.simuwang.base.pojo.vo.*;
 import com.simuwang.logging.SystemLog;
 import com.simuwang.manage.service.CompanyEmailConfigService;
 import com.simuwang.manage.service.CompanyEmailSendHistoryService;
+import com.simuwang.manage.service.CompanyReportFrequencyService;
 import com.smppw.common.pojo.ResultVo;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -31,6 +32,9 @@ public class CompanyEmailSendHistoryController{
     @Autowired
     private CompanyEmailConfigService companyEmailConfigService;
 
+    @Autowired
+    private CompanyReportFrequencyService companyReportFrequencyService;
+
     /**
      * 公司邮箱页面展示查询
      * @param companyEmailPageQuery
@@ -105,6 +109,19 @@ public class CompanyEmailSendHistoryController{
     }
 
     /**
+     * 保存公司数据报送频率
+     * @param companyReportFrequencyVO
+     * @return
+     */
+    @SystemLog(value = "保存公司数据报送频率", type = SystemLog.Type.INSERT)
+    @PostMapping("/save-company-frequency")
+    public ResultVo saveCompanyEmailConfig(@RequestBody CompanyReportFrequencyVO companyReportFrequencyVO){
+        ResultVo vo = companyReportFrequencyService.saveCompanyReportFrequency(companyReportFrequencyVO);
+        return vo;
+    }
+
+
+    /**
      * 修改邮箱配置
      * @param companyEmailConfigVO
      * @return

+ 26 - 0
service-manage/src/main/java/com/simuwang/manage/service/ChannelService.java

@@ -0,0 +1,26 @@
+package com.simuwang.manage.service;
+
+import com.simuwang.base.common.support.MybatisPage;
+import com.simuwang.base.pojo.dto.GetByIdQuery;
+import com.simuwang.base.pojo.dto.query.ChannelIdPageQuery;
+import com.simuwang.base.pojo.dto.query.ChannelPageQuery;
+import com.simuwang.base.pojo.vo.ChannelEmailInfoVO;
+import com.simuwang.base.pojo.vo.ChannelInfoVO;
+import com.simuwang.base.pojo.vo.ChannelPageInfoVO;
+import com.smppw.common.pojo.ResultVo;
+
+import java.util.List;
+
+public interface ChannelService {
+    ResultVo saveChannel(ChannelInfoVO channel);
+
+    ResultVo deleteChannel(List<Integer> id);
+
+    ResultVo saveChannelEmail(List<ChannelEmailInfoVO> channelEmailInfoVOList);
+
+    MybatisPage<ChannelPageInfoVO> searchChannelList(ChannelPageQuery channelPageQuery);
+
+    ResultVo deleteChannelEmail(Integer id);
+
+    MybatisPage<ChannelEmailInfoVO> searchChannelEmailList(ChannelIdPageQuery channelIdPageQuery);
+}

+ 8 - 0
service-manage/src/main/java/com/simuwang/manage/service/CompanyReportFrequencyService.java

@@ -0,0 +1,8 @@
+package com.simuwang.manage.service;
+
+import com.simuwang.base.pojo.vo.CompanyReportFrequencyVO;
+import com.smppw.common.pojo.ResultVo;
+
+public interface CompanyReportFrequencyService {
+    ResultVo saveCompanyReportFrequency(CompanyReportFrequencyVO companyReportFrequencyVO);
+}

+ 131 - 0
service-manage/src/main/java/com/simuwang/manage/service/impl/ChannelServiceImpl.java

@@ -0,0 +1,131 @@
+package com.simuwang.manage.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.simuwang.base.common.support.MybatisPage;
+import com.simuwang.base.mapper.daq.ChannelEmailMapper;
+import com.simuwang.base.mapper.daq.ChannelMapper;
+import com.simuwang.base.pojo.dos.ChannelEmailInfoDO;
+import com.simuwang.base.pojo.dos.ChannelInfoDO;
+import com.simuwang.base.pojo.dos.ChannelPageInfoDO;
+import com.simuwang.base.pojo.dos.CompanyEmailSendHistoryDO;
+import com.simuwang.base.pojo.dto.GetByIdQuery;
+import com.simuwang.base.pojo.dto.query.ChannelIdPageQuery;
+import com.simuwang.base.pojo.dto.query.ChannelPageQuery;
+import com.simuwang.base.pojo.vo.ChannelEmailInfoVO;
+import com.simuwang.base.pojo.vo.ChannelInfoVO;
+import com.simuwang.base.pojo.vo.ChannelPageInfoVO;
+import com.simuwang.base.pojo.vo.CompanyEmailSendHistoryVO;
+import com.simuwang.manage.service.ChannelService;
+import com.simuwang.shiro.utils.UserUtils;
+import com.smppw.common.pojo.ResultVo;
+import com.smppw.common.pojo.enums.status.ResultCode;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+@Service
+public class ChannelServiceImpl implements ChannelService {
+    @Autowired
+    private ChannelMapper channelMapper;
+
+    @Autowired
+    private ChannelEmailMapper channelEmailMapper;
+
+    @Override
+    public ResultVo saveChannel(ChannelInfoVO channel) {
+        ResultVo vo = new ResultVo(ResultCode.SAVE_SUCCESS.getCode());
+        Integer userId = UserUtils.getLoginUser().getUserId();
+        ChannelInfoDO channelInfoDO = BeanUtil.copyProperties(channel,ChannelInfoDO.class);
+        channelInfoDO.setUpdateTime(new Date());
+        channelInfoDO.setUpdaterId(userId);
+        channelInfoDO.setIsvalid(1);
+        if(channelInfoDO.getId() == null){
+            //判断渠道是否已经存在
+            ChannelInfoDO channelInfo = channelMapper.selectByChannelName(channelInfoDO.getChannelName());
+            if(channelInfo != null){
+                vo.setCode(ResultCode.SAVE_FAILED.getCode());
+                vo.setMsg("渠道已经存在无需添加");
+                vo.setData(false);
+                return vo;
+            }
+            channelInfoDO.setCreatorId(userId);
+            channelInfoDO.setCreateTime(new Date());
+            channelMapper.insert(channelInfoDO);
+        }else{
+            channelMapper.updateById(channelInfoDO);
+        }
+        vo.setData(true);
+        return vo;
+    }
+
+    @Override
+    public ResultVo deleteChannel(List<Integer> idList) {
+        ResultVo vo = new ResultVo(ResultCode.DELETE_SUCCESS.getCode());
+        for (Integer id : idList) {
+            Integer userId = UserUtils.getLoginUser().getUserId();
+            channelMapper.deleteChannelById(id,userId);
+            //删除渠道关联的邮箱
+            channelEmailMapper.deleteByChannelId(id,userId);
+        }
+        vo.setData(true);
+        return vo;
+    }
+
+    @Override
+    public ResultVo saveChannelEmail(List<ChannelEmailInfoVO> channelEmailInfoVOList) {
+        ResultVo vo = new ResultVo(ResultCode.SAVE_SUCCESS.getCode());
+        Integer userId = UserUtils.getLoginUser().getUserId();
+        List<ChannelEmailInfoDO> channelEmailInfoDOList = new ArrayList<>();
+        for (ChannelEmailInfoVO channelEmailInfoVO : channelEmailInfoVOList) {
+            ChannelEmailInfoDO emailInfoDO = channelEmailMapper.selectByEmail(channelEmailInfoVO.getEmail());
+            if(emailInfoDO != null && !emailInfoDO.getChannelId().equals(channelEmailInfoVO.getChannelId())){
+                vo.setCode(ResultCode.SAVE_FAILED.getCode());
+                vo.setData(false);
+                vo.setMsg(channelEmailInfoVO.getEmail()+"已经被其他渠道绑定,无法添加");
+                return vo;
+            }
+            ChannelEmailInfoDO channelEmailInfoDO = BeanUtil.copyProperties(channelEmailInfoVO,ChannelEmailInfoDO.class);
+            channelEmailInfoDO.setIsvalid(1);
+            channelEmailInfoDO.setUpdaterId(userId);
+            channelEmailInfoDO.setUpdateTime(new Date());
+            if(channelEmailInfoDO.getId() == null){
+                channelEmailInfoDO.setCreatorId(userId);
+                channelEmailInfoDO.setCreateTime(new Date());
+            }
+            channelEmailInfoDOList.add(channelEmailInfoDO);
+        }
+        channelEmailMapper.insertOrUpdate(channelEmailInfoDOList);
+        vo.setData(true);
+        return vo;
+    }
+
+    @Override
+    public MybatisPage<ChannelPageInfoVO> searchChannelList(ChannelPageQuery channelPageQuery) {
+        List<ChannelPageInfoDO> dataList = channelMapper.searchChannelList(channelPageQuery);
+        List<ChannelPageInfoVO> voList = dataList.stream().filter(Objects::nonNull).map(ChannelPageInfoDO::toVo).collect(Collectors.toList());
+        long total = channelMapper.countChannelInfo(channelPageQuery);
+        return MybatisPage.of(total, voList);
+    }
+
+    @Override
+    public ResultVo deleteChannelEmail(Integer id) {
+        ResultVo vo = new ResultVo(ResultCode.DELETE_SUCCESS.getCode());
+        Integer userId = UserUtils.getLoginUser().getUserId();
+        channelEmailMapper.deleteByIdAndUserId(id,userId);
+        vo.setData(true);
+        return vo;
+    }
+
+    @Override
+    public MybatisPage<ChannelEmailInfoVO> searchChannelEmailList(ChannelIdPageQuery channelIdPageQuery) {
+        List<ChannelEmailInfoDO> dataList = channelEmailMapper.searchChannelEmailList(channelIdPageQuery);
+        List<ChannelEmailInfoVO> voList = dataList.stream().filter(Objects::nonNull).map(ChannelEmailInfoDO::toVo).collect(Collectors.toList());
+        long total = channelEmailMapper.countChannelEmail(channelIdPageQuery);
+        return MybatisPage.of(total, voList);
+    }
+}

+ 76 - 0
service-manage/src/main/java/com/simuwang/manage/service/impl/CompanyReportFrequencyServiceImpl.java

@@ -0,0 +1,76 @@
+package com.simuwang.manage.service.impl;
+
+import com.simuwang.base.mapper.daq.CompanyReportFrequencyMapper;
+import com.simuwang.base.mapper.daq.FundInfoMapper;
+import com.simuwang.base.mapper.daq.FundReportFrequencyMapper;
+import com.simuwang.base.pojo.dos.CompanyReportFrequencyDO;
+import com.simuwang.base.pojo.dos.FundReportFrequencyDO;
+import com.simuwang.base.pojo.vo.CompanyReportFrequencyVO;
+import com.simuwang.manage.service.CompanyReportFrequencyService;
+import com.simuwang.shiro.utils.UserUtils;
+import com.smppw.common.pojo.ResultVo;
+import com.smppw.common.pojo.enums.status.ResultCode;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@Service
+public class CompanyReportFrequencyServiceImpl implements CompanyReportFrequencyService {
+    @Autowired
+    private CompanyReportFrequencyMapper companyReportFrequencyMapper;
+    @Autowired
+    private FundReportFrequencyMapper  fundReportFrequencyMapper;
+    @Autowired
+    private FundInfoMapper fundInfoMapper;
+
+    @Override
+    public ResultVo saveCompanyReportFrequency(CompanyReportFrequencyVO companyReportFrequencyVO) {
+        ResultVo vo = new ResultVo(ResultCode.SAVE_SUCCESS.getCode());
+        CompanyReportFrequencyDO companyReportFrequencyDO = new CompanyReportFrequencyDO();
+        companyReportFrequencyDO.setCompanyId(companyReportFrequencyVO.getCompanyId());
+        companyReportFrequencyDO.setAssetFrequency(companyReportFrequencyVO.getAssetFrequency());
+        companyReportFrequencyDO.setNavFrequency(companyReportFrequencyVO.getNavFrequency());
+        companyReportFrequencyDO.setValuationFrequency(companyReportFrequencyVO.getValuationFrequency());
+        companyReportFrequencyDO.setUpdateTime(new Date());
+        companyReportFrequencyDO.setFrequencyRemark(companyReportFrequencyVO.getFrequencyRemark());
+        companyReportFrequencyDO.setCreatorId(UserUtils.getLoginUser().getUserId());
+        companyReportFrequencyDO.setUpdaterId(UserUtils.getLoginUser().getUserId());
+        CompanyReportFrequencyDO oldFrequency = companyReportFrequencyMapper.getFrequencyByCompanyId(companyReportFrequencyVO.getCompanyId());
+        if(oldFrequency == null){
+            companyReportFrequencyDO.setCreateTime(new Date());
+            companyReportFrequencyDO.setIsvalid(1);
+            companyReportFrequencyMapper.insert(companyReportFrequencyDO);
+        }else{
+            companyReportFrequencyDO.setId(oldFrequency.getId());
+            companyReportFrequencyMapper.updateById(companyReportFrequencyDO);
+        }
+        //设置公司旗下基金的数据频率,已经存在的不做覆盖
+        List<String> fundIdList = fundInfoMapper.getFundIdByCompanyId(companyReportFrequencyVO.getCompanyId());
+        if(!fundIdList.isEmpty()){
+            List<String> fundReportFrequencyIdList = fundReportFrequencyMapper.selectFundId(fundIdList);
+            List<FundReportFrequencyDO> fundReportFrequencyDOList = new ArrayList<FundReportFrequencyDO>();
+            for (String fundId : fundIdList) {
+                if(fundReportFrequencyIdList.contains(fundId)){
+                    continue;
+                }
+                FundReportFrequencyDO fundReportFrequencyDO = new FundReportFrequencyDO();
+                fundReportFrequencyDO.setCreateTime(new Date());
+                fundReportFrequencyDO.setFundId(fundId);
+                fundReportFrequencyDO.setAssetFrequency(companyReportFrequencyVO.getAssetFrequency());
+                fundReportFrequencyDO.setNavFrequency(companyReportFrequencyVO.getNavFrequency());
+                fundReportFrequencyDO.setValuationFrequency(companyReportFrequencyVO.getValuationFrequency());
+                fundReportFrequencyDO.setUpdateTime(new Date());
+                fundReportFrequencyDO.setFrequencyRemark(companyReportFrequencyVO.getFrequencyRemark());
+                fundReportFrequencyDO.setCreatorId(UserUtils.getLoginUser().getUserId());
+                fundReportFrequencyDO.setUpdaterId(UserUtils.getLoginUser().getUserId());
+                fundReportFrequencyDOList.add(fundReportFrequencyDO);
+            }
+            fundReportFrequencyMapper.insert(fundReportFrequencyDOList);
+        }
+
+        return vo;
+    }
+}