Commit df829e20 authored by 刘基明's avatar 刘基明

讨论区产品

parent 9b60af56
......@@ -14,9 +14,12 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
public class TopicAttachment {
@ApiModelProperty(value = " 88:产品 300:课程包 323: 线下活动 未定:资管人")
@ApiModelProperty(value = " 88:产品 300:课程包 323:线下活动 90:资管人")
private String type;
@ApiModelProperty(value = "type=88时 ,0 公募,1 私募,2 白名单,3 私有")
private String subType;
@ApiModelProperty(value = "对象详情")
private TopicAttachmentDetail detail;
......
package com.tanpu.community.api.beans.qo;
import com.tanpu.community.api.beans.resp.CoursePackageSimpleResp;
import com.tanpu.community.api.beans.resp.FundCompanyVO;
import com.tanpu.community.api.beans.vo.feign.activity.OfflineActivitySimpleResp;
import com.tanpu.community.api.beans.vo.feign.product.FundInfoBaseResp;
import com.tanpu.community.api.beans.vo.feign.product.FundCompanyVO;
import com.tanpu.community.api.beans.vo.feign.product.ProductInfoVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
......@@ -19,7 +19,7 @@ import lombok.NoArgsConstructor;
public class TopicAttachmentDetail {
@ApiModelProperty("产品信息")
private FundInfoBaseResp product;
private ProductInfoVO fund;
@ApiModelProperty("新版课程")
private CoursePackageSimpleResp coursePackage;
@ApiModelProperty("线下活动")
......
package com.tanpu.community.api.beans.vo.feign;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
/**
* @author: zhoupeng
* @email: zhoupeng_08@163.com
*/
@ApiModel("净值")
@Data
@Builder
@AllArgsConstructor
public class Net {
@ApiModelProperty("基金ID")
private String fundId;
@ApiModelProperty("净值日期 返回时间戳")
private Long netDate;
@ApiModelProperty("单位净值")
private String netValue;
@ApiModelProperty("累计净值(分红再投)")
private String cumulativeNav;
public Net() {
}
public Net(Long netDate, String netValue, String cumulativeNav) {
this.netDate = netDate;
this.netValue = netValue;
this.cumulativeNav = cumulativeNav;
}
}
package com.tanpu.community.api.beans.vo.feign.product;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author: zhoupeng
* @email: zhoupeng_08@163.com
*/
@ApiModel("栏目信息")
@Data
public class ColumnVO {
@ApiModelProperty("栏目id")
private String id;
@ApiModelProperty("名称")
private String title;
}
package com.tanpu.community.api.beans.resp;
package com.tanpu.community.api.beans.vo.feign.product;
import com.tanpu.community.api.beans.vo.feign.product.Net;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......
package com.tanpu.community.api.beans.vo.feign.product;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author: zyh
* @date: 2021-08-02 1:58 下午
* @description: 通用组装类
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class LabelValVo {
private String label;
private String value;
}
package com.tanpu.community.api.beans.resp;
package com.tanpu.community.api.beans.vo.feign.product;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
......
package com.tanpu.community.api.beans.vo.feign.product;
import com.tanpu.community.api.beans.vo.feign.course.ColumnVO;
import com.tanpu.community.api.beans.vo.feign.Net;
import com.tanpu.community.api.beans.vo.feign.Type;
import com.tanpu.community.api.beans.vo.feign.course.ColumnVO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -10,177 +9,283 @@ import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* @author: zhoupeng
* @email: zhoupeng_08@163.com
*/
@ApiModel("产品信息")
@Data
public class ProductInfoVO {
@ApiModelProperty("产品名称")
private String productName;
@ApiModelProperty("产品名称 (同productName) 请忽略此字段")
private String fundName;
@ApiModelProperty("产品名称 ")
public String fundName;
@ApiModelProperty("产品id")
private String fundId;
public String fundId;
@ApiModelProperty("产品code")
public String fundCode;
@ApiModelProperty("产品标签")
public String fundTag;
@ApiModelProperty("产品标签")
public String fundTagDesc;
@ApiModelProperty("对比产品id")
private String ratioId;
public String ratioId;
@ApiModelProperty("累计收益")
private String cumulativeProfit;
public String cumulativeProfit;
@ApiModelProperty("运行时间")
private String runTime;
public String runTime;
@ApiModelProperty("产品编码")
private String productCode;
public String productCode;
@ApiModelProperty("近一个月收益率")
private String ret1m;
public String ret1m;
@ApiModelProperty("最近一年")
private String ret1y;
public String ret1y;
@ApiModelProperty("最近一年")
private BigDecimal ret1ySort;
public BigDecimal ret1ySort;
@ApiModelProperty("近一年收益 (同最近一年) 请忽略此字段")
private String near1YearProfit;
public String near1YearProfit;
@ApiModelProperty("今年以来")
private String retYtd;
public String retYtd;
@ApiModelProperty("成立以来收益率")
private String retIncep;
public String retIncep;
@ApiModelProperty("成立以来")
private BigDecimal retIncepSort;
public BigDecimal retIncepSort;
@ApiModelProperty("最新净值")
private Net net;
public Net net;
@ApiModelProperty("风险等级")
private Integer riskLevel;
public Integer riskLevel;
@ApiModelProperty("私募基金类型:1-信托计划,2-有限合伙,3-券商资管,4-公募专户,5-单账户,6-证券投资基金,7-海外基金,8-期货资管,9-保险资管、10-创业投资基金、11-股权投资基金、12-银行理财、13-类固收信托、-1其他投资基金 \t\t\n" +
"公募基金类型:1-混合型、2-债券型、3-定开债券、4-联接基金、5-货币型、6-债券指数、7-保本型、8-理财型、9-QDII、10-股票指数、11-QDII-指数、12-股票型、13-固定收益、14-分级杠杆、15-ETF-场内、16-QDII-ETF、17-债券创新-场内、18-封闭式")
public Integer fundType;
@ApiModelProperty("基金类型名称")
private String fundTypeName;
public String fundTypeName;
@ApiModelProperty("起投金额 单位:万")
private String money;
public String money;
@ApiModelProperty("初始规模")
private String initialSize;
public String initialSize;
@ApiModelProperty("最低追加金额")
private String minMoney;
public String minMoney;
@ApiModelProperty("封闭期")
private Integer lockupPeriod;
public Integer lockupPeriod;
@ApiModelProperty("开放日")
private String openDay;
public String openDay;
@ApiModelProperty("开放日")
private String redeemDayStr;
public String redeemDayStr;
@ApiModelProperty("申购日")
private Long applyDay;
public Long applyDay;
@ApiModelProperty("赎回日")
private Long redeemDay;
public Long redeemDay;
@ApiModelProperty("产品标签")
private List<ProductLabel> productLabels;
public List<ProductLabel> productLabels;
@ApiModelProperty("管理人的解答")
private List<String> problems;
public List<String> problems;
@ApiModelProperty("回答总数")
private Integer answerCount;
public Integer answerCount;
@ApiModelProperty("描述")
private String desc;
public String desc;
@ApiModelProperty("产品来源 1:探普 2:私募排排 -1:自建产品")
private Integer dataSources;
public Integer dataSources;
@ApiModelProperty("产品类型 0:公募 1:私募 2:白名单 3:私有基金")
private Integer productType;
public Integer productType;
@ApiModelProperty("策略类型")
private String strategy;
public String strategy;
@ApiModelProperty("策略类型")
private String substrategy;
public String substrategy;
@ApiModelProperty("策略类型")
private String substrategyName;
public String substrategyName;
@ApiModelProperty("策略类型名称")
private String strategyName;
public String strategyName;
@ApiModelProperty("基金公司id")
private String trustId;
public String trustId;
@ApiModelProperty("基金公司名称")
private String trustName;
public String trustName;
@ApiModelProperty("是否可预约 0:不可预约 1:可预约")
private Integer isAppoint;
public Integer isAppoint;
@ApiModelProperty("是否有研报 0:没有 1:有研报")
private Integer isReport;
public Integer isReport;
private String dailyIncrease;
public String dailyIncrease;
private Type type;
public Type type;
@ApiModelProperty("栏目信息")
private List<ColumnVO> vos;
public List<ColumnVO> vos;
@ApiModelProperty("成立日期")
private Long inceptionDate;
public Long inceptionDate;
@ApiModelProperty("备案编码")
private String registerNumber;
public String registerNumber;
@ApiModelProperty("经理id")
private String managerId;
public String managerId;
@ApiModelProperty("经理姓名")
private String managerName;
public String managerName;
@ApiModelProperty("经理数量")
private Integer managerNum;
public Integer managerNum;
@ApiModelProperty("基金数量")
private Integer fundNum;
public Integer fundNum;
@ApiModelProperty("公司资产规模")
private String companyAssetSize;
public String companyAssetSize;
@ApiModelProperty("点评")
private List<Type> commentContent;
public List<Type> commentContent;
@ApiModelProperty("热推 1:表示热推")
private Integer hotPush = 0;
public Integer hotPush = 0;
/**
* 是否推荐 0 否 1:是
*/
private Integer isRecommend;
public Integer isRecommend;
/**
* 推荐
*/
private String recommend;
public String recommend;
/**
* 基金文件
*/
private String fundFile;
public String fundFile;
/**
* 是否支持线上电签(妥妥递) 0:否 1:是
*/
public Integer isSignOnline;
@ApiModelProperty("近X月内的收益")
public String retOfMouth;
@ApiModelProperty("多少个月")
public String mouth;
@ApiModelProperty("成立日期 - 年")
public String inceptionDateYear;
@ApiModelProperty("成立以来年化")
public String retIncepA;
@ApiModelProperty("最大回撤")
public String maxdrawdownIncep;
@ApiModelProperty("夏普比率")
public String sharperatioIncep;
@ApiModelProperty("对标产品名称")
public String benchmarkProductName;
@ApiModelProperty("对标基金id")
public String benchmarkProductId;
@ApiModelProperty("对标基金类型")
public Integer benchmarkProductType;
@ApiModelProperty("对标基金一年涨幅")
public String benchmarkProductRet1y;
@ApiModelProperty("对标基金最新净值时间")
public Long benchmarkProductTime;
@ApiModelProperty("对标基金最新净值")
public String benchmarkProductNet;
@ApiModelProperty(value = "基金托管人姓名", notes = "查询详情时使用")
public String custodianName;
@ApiModelProperty("指数id,以'IN'开头(后加36进制编码格式,不足8位长度左补零) 例:IN00000001")
public String primaryBenchmarkId;
@ApiModelProperty("探普基金 - 主分类")
public Integer tampType;
@ApiModelProperty("探普基金 - 标签")
public List<LabelValVo> tampLabelList;
@ApiModelProperty("是否成立 0:募集中 1:已成立")
private Integer isInception;
@ApiModelProperty("成立时长 单位:年")
private String inceptionDuration;
@ApiModelProperty("下投资管人")
private String tampAssetsManager;
@ApiModelProperty("认/申购费率")
private String purchaseRates;
@ApiModelProperty("管理费率")
private String managementRate;
@ApiModelProperty("业绩报酬提取比例")
private String exPerformanceRewardRatio;
@ApiModelProperty("运作费率-申购费TPFA服务费(探普白名单+探普FOF精选+探普热销)")
private String tampTpfaApplyfee;
@ApiModelProperty("运作费率-管理费探普服务费(探普白名单+探普FOF精选)")
private String tampServiceMangfee;
@ApiModelProperty("运作费率-业绩报酬探普服务费(探普白名单+探普FOF精选)")
private String tampServiceAchfee;
@ApiModelProperty("运作费率-管理费TPFA服务费(探普热销)")
private String tampTpfaMangfee;
@ApiModelProperty("运作费率-业绩报酬TPFA服务费(探普热销)")
private String tampTpfaAchfee;
@ApiModelProperty("运作费率-销售服务费)")
private String serviceCharge;
@ApiModelProperty("运作费率-销售服务费(探普服务费)")
private String tampServiceCharge;
@ApiModelProperty("投顾费率")
private String investAdviserFee;
@ApiModelProperty("趋势缩略图")
private String trendChart;
@ApiModelProperty("收益 不满1个月不展示,不满3个月展示1个月收益,不满半年展示3个月收益,不满一年展示近半年收益,满一年展示近一年收益")
private LabelValVo fundProfit;
@ApiModelProperty("预约人数")
private Long appointPersonNum;
@ApiModelProperty("交易方式 0:线下 1:线上 2:线下+线上")
private String tradeWay;
@ApiModelProperty("基金来源 ht - 恒泰 | other - 其他")
private String fundSource;
}
package com.tanpu.community.api.beans.vo.feign.product;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
@ApiModel("类型")
@Data
@AllArgsConstructor
@NoArgsConstructor
@SuperBuilder
public class Type {
@ApiModelProperty("类型id")
private String id;
@ApiModelProperty("类型value")
private String value;
@ApiModelProperty(value = "标签名称", notes = "获客线索用")
private String labelName;
@ApiModelProperty("资源数量")
private Integer resourceNum;
@ApiModelProperty("扩展字段")
private String ext;
@ApiModelProperty("产品名称")
private String productName;
@ApiModelProperty("基金代码")
private String fundCode;
@ApiModelProperty("基金类型")
private Integer fundType;
@ApiModelProperty("近一年收益")
private String ret1y;
@ApiModelProperty("最新净值")
private String net;
@ApiModelProperty("最新净值日期")
private String netDate;
}
package com.tanpu.community.feign.product;
import com.tanpu.common.api.CommonResp;
import com.tanpu.community.api.beans.resp.FundCompanyVO;
import com.tanpu.community.api.beans.vo.feign.product.FundCompanyVO;
import com.tanpu.community.api.beans.vo.feign.fund.FundCompanySimpleVO;
import com.tanpu.community.api.beans.vo.feign.product.ProductInfoVO;
import feign.hystrix.FallbackFactory;
......
package com.tanpu.community.feign.product;
import com.tanpu.common.api.CommonResp;
import com.tanpu.community.api.beans.resp.FundCompanyVO;
import com.tanpu.community.api.beans.vo.feign.product.FundCompanyVO;
import com.tanpu.community.api.beans.vo.feign.fund.FundCompanySimpleVO;
import com.tanpu.community.api.beans.vo.feign.product.ProductInfoVO;
import io.swagger.annotations.ApiOperation;
......@@ -16,12 +16,12 @@ import java.util.List;
//@FeignClient(value = "service-product", contextId = "product", fallbackFactory = FeignBackClientForProducts.class, url = "http://172.20.0.68:8194/product")
public interface FeignClientForProducts {
@ApiOperation("获取产品详情")
@ApiOperation("获取私募产品详情")
@GetMapping("/product/detail")
CommonResp<ProductInfoVO> getProductDetailInfo(@ApiParam("产品id") @RequestParam("id") String id);
@ApiOperation("根据id查询列表")
@ApiOperation("批量获取私募产品详情")
@GetMapping("/getProductInfoByIds")
CommonResp<List<ProductInfoVO>> getProductInfoByIds(@ApiParam("产品id") @RequestParam("fundIds") List<String> fundIds);
......
......@@ -15,7 +15,7 @@ import java.util.List;
//@FeignClient(value = "service-fundpublic",path = "/fundpublic")
public interface FeignForPublicFund {
@ApiOperation("获取产品详情")
@ApiOperation("获取公募产品详情")
@GetMapping("/product/list")
CommonResp<List<ProductInfoVO>> getProductList(@ApiParam("产品id") @RequestParam("ids") List<String> ids);
......
......@@ -3,11 +3,11 @@ package com.tanpu.community.service;
import com.tanpu.common.api.CommonResp;
import com.tanpu.common.exception.BizException;
import com.tanpu.community.api.beans.resp.CoursePackageSimpleResp;
import com.tanpu.community.api.beans.resp.FundCompanyVO;
import com.tanpu.community.api.beans.vo.feign.activity.OfflineActivitySimpleResp;
import com.tanpu.community.api.beans.vo.feign.course.CourseSimpleResp;
import com.tanpu.community.api.beans.vo.feign.course.ShortVideoBaseInfoResp;
import com.tanpu.community.api.beans.vo.feign.fatools.UserInfoResp;
import com.tanpu.community.api.beans.vo.feign.product.FundCompanyVO;
import com.tanpu.community.api.beans.vo.feign.product.ProductInfoVO;
import com.tanpu.community.api.beans.vo.feign.zhibo.ZhiboListResp;
import com.tanpu.community.cache.LocalCache;
......
......@@ -2,6 +2,7 @@ package com.tanpu.community.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.tanpu.biz.common.enums.RelTypeEnum;
import com.tanpu.common.enums.fund.ProductTypeEnum;
import com.tanpu.community.api.beans.qo.ThemeQo;
import com.tanpu.community.api.beans.qo.TopicAttachment;
import com.tanpu.community.api.beans.qo.TopicAttachmentDetail;
......@@ -9,9 +10,10 @@ import com.tanpu.community.api.beans.qo.TopicFollowQo;
import com.tanpu.community.api.beans.qo.TopicPageDetailQo;
import com.tanpu.community.api.beans.qo.TopicRankQo;
import com.tanpu.community.api.beans.resp.CoursePackageSimpleResp;
import com.tanpu.community.api.beans.resp.FundCompanyVO;
import com.tanpu.community.api.beans.vo.feign.product.FundCompanyVO;
import com.tanpu.community.api.beans.vo.feign.activity.OfflineActivitySimpleResp;
import com.tanpu.community.api.beans.vo.feign.fatools.UserInfoResp;
import com.tanpu.community.api.beans.vo.feign.product.ProductInfoVO;
import com.tanpu.community.api.enums.DeleteTagEnum;
import com.tanpu.community.api.enums.StatusEnum;
import com.tanpu.community.api.enums.TopicSpecialPermissionEnum;
......@@ -32,6 +34,7 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
......@@ -184,8 +187,18 @@ public class TopicService {
for (TopicSubjectEntity entity : topicSubjectEntities) {
if (RelTypeEnum.FUND.type.equals(entity.getSubjectType().toString())) {
List<ProductInfoVO> fund = Collections.emptyList();
// 基金
TopicAttachment attach = TopicAttachment.builder().type(RelTypeEnum.FUND.type).detail(null).build();
if (entity.getSubjectSubType() == ProductTypeEnum.PRIVATE.type || entity.getSubjectSubType() == ProductTypeEnum.TAMP.type) {
fund = feignService.getProductInfoByIds(Collections.singletonList(entity.getSubjectId()));
} else if (entity.getSubjectSubType() == ProductTypeEnum.PUBLIC.type) {
fund = feignService.getPublicFundList(Collections.singletonList(entity.getSubjectId()));
} else {
fund = Arrays.asList(new ProductInfoVO());
}
TopicAttachment attach = TopicAttachment.builder().type(RelTypeEnum.FUND_COMPANY.type)
.subType(String.valueOf(entity.getSubjectSubType()))
.detail(TopicAttachmentDetail.builder().fund(fund.get(0)).build()).build();
attachements.add(attach);
} else if (RelTypeEnum.FUND_COMPANY.type.equals(entity.getSubjectType().toString())) {
// 资管人
......
......@@ -124,6 +124,8 @@ tanpu:
svc: https://testtamper.tanpuyun.com
diagnose:
svc: https://testtamper.tanpuyun.com
fundpublic:
svc: https://testtamper.tanpuyun.com
#打印SQL语句
logging:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment