Browse Source

简报查询

guomengjiao 5 months ago
parent
commit
b9cac7230e

+ 19 - 0
common/src/main/java/com/jeesite/common/constant/Constants.java

@@ -180,4 +180,23 @@ public interface Constants {
     String WEBSITE_TOKEN = "website-token";
 
     String PREFIX_USER_FORGET_TOKEN = "bjfl:user:forget:token:";
+
+    // 简报
+    interface briefReport{
+        String BRIEFING_INFO_IMAGE = "briefing_info_image";     //图片
+        String BRIEFING_INFO_PREVIEW_PDF = "briefing_info_preview_pdf";     //预览pdf
+        String BRIEFING_INFO_PDF = "briefing_info_pdf";     //pdf
+        String BRIEFING_INFO_PPT = "briefing_info_ppt";     //ppt
+    }
+
+    interface enableType{
+        String YES = "1";
+        String NO = "0";
+    }
+
+    interface orderPayStatus{
+        String WAIT = "0";
+        String PAY_SUCCESS = "1";
+        String PAY_ERROR = "2";
+    }
 }

+ 86 - 0
modules/bjflapi/src/main/java/com/jeesite/modules/bjflapi/report/ResearchBriefReportControllerApi.java

@@ -0,0 +1,86 @@
+package com.jeesite.modules.bjflapi.report;
+
+import com.jeesite.common.collect.ListUtils;
+import com.jeesite.common.collect.MapUtils;
+import com.jeesite.common.entity.Page;
+import com.jeesite.modules.report.entity.ResearchBriefReport;
+import com.jeesite.modules.report.entity.ResearchBriefReportLabel;
+import com.jeesite.modules.report.service.ResearchBriefReportService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping(value = "${adminPath}/api/report/researchBriefReport")
+@Api(value = "ResearchBriefReportControllerApi", tags = "简报智库接口")
+public class ResearchBriefReportControllerApi {
+    @Resource
+    private ResearchBriefReportService researchBriefReportService;
+
+    /**
+     * 简报智库分页列表
+     *
+     * @return
+     */
+    @PostMapping(value = "/pageList")
+    @ApiOperation(value = "简报智库", notes = "简报智库列表")
+    public Page<ResearchBriefReport> pageList(ResearchBriefReport researchBriefReport) {
+        return researchBriefReportService.findReportPage(researchBriefReport);
+    }
+
+    /**
+     * 简报智库分类
+     *
+     * @return
+     */
+    @PostMapping(value = "/categoryList")
+    @ApiOperation(value = "简报智库", notes = "简报智库类别")
+    public List<ResearchBriefReportLabel> categoryList() {
+        // 分类
+        return researchBriefReportService.marketTypeList();
+    }
+
+    /**
+     * 简报智库表单
+     *
+     * @return
+     */
+    @GetMapping(value = "/form")
+    @ApiOperation(value = "简报智库表单", notes = "简报智库表单")
+    public Map<String, Object> researchBriefReportForm(ResearchBriefReport researchBriefReport, HttpServletRequest request) {
+        Map<String, Object> map = MapUtils.newHashMap();
+        ResearchBriefReport vo = researchBriefReportService.researchBriefReportForm(researchBriefReport, request);
+        map.put("vo", vo);
+
+        List<ResearchBriefReport> list = ListUtils.newArrayList();
+        if (vo != null) {
+            ResearchBriefReport query = new ResearchBriefReport();
+            query.setNotId(vo.getId());
+            query.setMarketType(vo.getMarketType());
+            query.setTopLabelId(vo.getTopLabelId());
+            query.setSecondLabelId(vo.getSecondLabelId());
+            list = researchBriefReportService.moreReportList(query);
+        }
+        map.put("list", list);
+        return map;
+    }
+
+    /**
+     * 热门报告
+     *
+     * @return
+     */
+    @GetMapping(value = "/hotReports")
+    @ApiOperation(value = "简报智库列表", notes = "热门报告,查询最新6个")
+    public List<ResearchBriefReport> hotReports() {
+        return researchBriefReportService.hotReports(6);
+    }
+}

+ 2 - 0
modules/report/src/main/java/com/jeesite/modules/report/dao/ResearchBriefReportLabelDao.java

@@ -22,4 +22,6 @@ public interface ResearchBriefReportLabelDao extends CrudDao<ResearchBriefReport
     long findPageCount(@Param("info") ResearchBriefReportLabel researchBriefReportLabel);
 
     String findNames(@Param("parentId") String parentId);
+
+    List<ResearchBriefReportLabel> findChildList();
 }

+ 57 - 0
modules/report/src/main/java/com/jeesite/modules/report/entity/ResearchBriefReport.java

@@ -46,6 +46,15 @@ public class ResearchBriefReport extends DataEntity<ResearchBriefReport> {
 	private String topLabelName;		// 一级标签id
 	private String secondLabelName;		// 二级标签id
 
+	//新增字段
+	private String imageFileName;		// 图片名称
+	private String previewPdfFileName;		// 预览pdf文件
+	private String pdfFileName;		// pdf文件
+	private String pptFileName;		// ppt文件
+
+	private String useShowPay; //是否展示收费按钮 0否 1是
+	private String notId;
+
 	public ResearchBriefReport() {
 		this(null);
 	}
@@ -157,4 +166,52 @@ public class ResearchBriefReport extends DataEntity<ResearchBriefReport> {
 	public void setSecondLabelName(String secondLabelName) {
 		this.secondLabelName = secondLabelName;
 	}
+
+	public String getImageFileName() {
+		return imageFileName;
+	}
+
+	public void setImageFileName(String imageFileName) {
+		this.imageFileName = imageFileName;
+	}
+
+	public String getPreviewPdfFileName() {
+		return previewPdfFileName;
+	}
+
+	public void setPreviewPdfFileName(String previewPdfFileName) {
+		this.previewPdfFileName = previewPdfFileName;
+	}
+
+	public String getPdfFileName() {
+		return pdfFileName;
+	}
+
+	public void setPdfFileName(String pdfFileName) {
+		this.pdfFileName = pdfFileName;
+	}
+
+	public String getPptFileName() {
+		return pptFileName;
+	}
+
+	public void setPptFileName(String pptFileName) {
+		this.pptFileName = pptFileName;
+	}
+
+	public String getUseShowPay() {
+		return useShowPay;
+	}
+
+	public void setUseShowPay(String useShowPay) {
+		this.useShowPay = useShowPay;
+	}
+
+	public String getNotId() {
+		return notId;
+	}
+
+	public void setNotId(String notId) {
+		this.notId = notId;
+	}
 }

+ 10 - 0
modules/report/src/main/java/com/jeesite/modules/report/entity/ResearchBriefReportLabel.java

@@ -6,6 +6,7 @@ import com.jeesite.common.mybatis.annotation.Table;
 import com.jeesite.common.mybatis.mapper.query.QueryType;
 
 import javax.validation.constraints.Size;
+import java.util.List;
 
 /**
  * 简报分类Entity
@@ -29,6 +30,7 @@ public class ResearchBriefReportLabel extends DataEntity<ResearchBriefReportLabe
 	private Integer levelNum;		// 层次
 	private Integer sortNum;		// 排序
 	private String parentName;
+	private List<ResearchBriefReportLabel> childList;
 
 	public ResearchBriefReportLabel() {
 		this(null);
@@ -79,4 +81,12 @@ public class ResearchBriefReportLabel extends DataEntity<ResearchBriefReportLabe
 	public void setParentName(String parentName) {
 		this.parentName = parentName;
 	}
+
+	public List<ResearchBriefReportLabel> getChildList() {
+		return childList;
+	}
+
+	public void setChildList(List<ResearchBriefReportLabel> childList) {
+		this.childList = childList;
+	}
 }

+ 125 - 4
modules/report/src/main/java/com/jeesite/modules/report/service/ResearchBriefReportService.java

@@ -1,15 +1,25 @@
 package com.jeesite.modules.report.service;
 
+import com.jeesite.common.constant.Constants;
 import com.jeesite.common.entity.Page;
+import com.jeesite.common.lang.StringUtils;
 import com.jeesite.common.service.CrudService;
+import com.jeesite.modules.file.entity.FileEntity;
+import com.jeesite.modules.file.entity.FileUpload;
 import com.jeesite.modules.file.utils.FileUploadUtils;
 import com.jeesite.modules.report.dao.ResearchBriefReportDao;
 import com.jeesite.modules.report.dao.ResearchBriefReportLabelDao;
+import com.jeesite.modules.report.dao.WebsiteUserOrderDao;
 import com.jeesite.modules.report.entity.ResearchBriefReport;
+import com.jeesite.modules.report.entity.ResearchBriefReportLabel;
+import com.jeesite.modules.report.entity.WebsiteUserOrder;
+import com.jeesite.modules.sys.utils.RedisUtil;
+import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -23,6 +33,10 @@ public class ResearchBriefReportService extends CrudService<ResearchBriefReportD
 
 	@Resource
 	private ResearchBriefReportLabelDao researchBriefReportLabelDao;
+	@Resource
+	private RedisUtil redisUtil;
+	@Resource
+	private WebsiteUserOrderDao websiteUserOrderDao;
 
 	/**
 	 * 获取单条数据
@@ -76,10 +90,10 @@ public class ResearchBriefReportService extends CrudService<ResearchBriefReportD
 	@Transactional
 	public void save(ResearchBriefReport researchBriefReport) {
 		super.save(researchBriefReport);
-		FileUploadUtils.saveFileUpload(researchBriefReport,researchBriefReport.getId(),"briefing_info_image");
-		FileUploadUtils.saveFileUpload(researchBriefReport,researchBriefReport.getId(),"briefing_info_preview_pdf");
-		FileUploadUtils.saveFileUpload(researchBriefReport,researchBriefReport.getId(),"briefing_info_pdf");
-		FileUploadUtils.saveFileUpload(researchBriefReport,researchBriefReport.getId(),"briefing_info_ppt");
+		FileUploadUtils.saveFileUpload(researchBriefReport,researchBriefReport.getId(), Constants.briefReport.BRIEFING_INFO_IMAGE);
+		FileUploadUtils.saveFileUpload(researchBriefReport,researchBriefReport.getId(),Constants.briefReport.BRIEFING_INFO_PREVIEW_PDF);
+		FileUploadUtils.saveFileUpload(researchBriefReport,researchBriefReport.getId(),Constants.briefReport.BRIEFING_INFO_PDF);
+		FileUploadUtils.saveFileUpload(researchBriefReport,researchBriefReport.getId(),Constants.briefReport.BRIEFING_INFO_PPT);
 	}
 	
 	/**
@@ -105,4 +119,111 @@ public class ResearchBriefReportService extends CrudService<ResearchBriefReportD
 	public long findAnyLableId(String id) {
 		return dao.findAnyLableId(id);
 	}
+
+	public List<ResearchBriefReportLabel> marketTypeList() {
+		//一级
+		ResearchBriefReportLabel where = new ResearchBriefReportLabel();
+		where.setParentId("0");
+		List<ResearchBriefReportLabel> list = researchBriefReportLabelDao.findList(where);
+		//子级
+		List<ResearchBriefReportLabel> childList = researchBriefReportLabelDao.findChildList();
+		return list.stream().map(r -> {
+			r.setChildList(childList.stream().filter(rc -> rc.getParentId().contains(r.getId())).collect(Collectors.toList()));
+			return r;
+		}).collect(Collectors.toList());
+	}
+
+	public ResearchBriefReport researchBriefReportForm(ResearchBriefReport researchBriefReport, HttpServletRequest request) {
+		ResearchBriefReport old = dao.get(researchBriefReport);
+		if (old == null) {
+			return old;
+		}
+		String reportId = old.getId();
+		old.setPreviewPdfFileName(convertFile(reportId, Constants.briefReport.BRIEFING_INFO_PREVIEW_PDF));
+		if (Constants.enableType.YES.equals(old.getUseDownPay())) {
+			old.setUseShowPay(Constants.enableType.YES);
+			//判断这个报告是否支付过
+			if (isPay(request, reportId)) {
+				old.setUseShowPay(Constants.enableType.NO);
+			}
+		} else {
+			old.setUseShowPay(Constants.enableType.NO);
+		}
+		if (Constants.enableType.NO.equals(old.getUseShowPay())) {
+			old.setPdfFileName(convertFile(reportId, Constants.briefReport.BRIEFING_INFO_PDF));
+			old.setPptFileName(convertFile(reportId, Constants.briefReport.BRIEFING_INFO_PPT));
+		}
+		return old;
+	}
+
+	private boolean isPay(HttpServletRequest request, String reportId) {
+		String token = request.getHeader(Constants.WEBSITE_TOKEN);//header方式
+		if (StringUtils.isEmpty(token)) {
+			return false;
+		}
+		String uid = (String) redisUtil.get(Constants.PREFIX_USER_TOKEN + token);
+		if (StringUtils.isEmpty(uid)) {
+			return false;
+		}
+		//查是否有订单
+		WebsiteUserOrder orderWhere = new WebsiteUserOrder();
+		orderWhere.setWebsiteUserId(uid);
+		orderWhere.setResearchBriefReportId(reportId);
+		orderWhere.setPayStatus(Constants.orderPayStatus.PAY_SUCCESS);
+		List<WebsiteUserOrder> list = websiteUserOrderDao.findList(orderWhere);
+		if (CollectionUtils.isNotEmpty(list)) {
+			return true;
+		}
+		return false;
+	}
+
+	public List<ResearchBriefReport> moreReportList(ResearchBriefReport where) {
+		where.setPageNo(1);
+		where.setPageSize(8);
+		List<ResearchBriefReport> list = dao.findResearchBriefReportList(where);
+		return list.stream().map(r -> {
+			r.setImageFileName(convertFile(r.getId(), Constants.briefReport.BRIEFING_INFO_IMAGE));
+			return r;
+		}).collect(Collectors.toList());
+	}
+
+	public List<ResearchBriefReport> hotReports(int topNo) {
+		ResearchBriefReport where = new ResearchBriefReport();
+		where.setPageNo(1);
+		where.setPageSize(topNo);
+		List<ResearchBriefReport> list = dao.findResearchBriefReportList(where);
+		return list.stream().map(r -> {
+			r.setImageFileName(convertFile(r.getId(), Constants.briefReport.BRIEFING_INFO_IMAGE));
+			return r;
+		}).collect(Collectors.toList());
+	}
+
+	public Page<ResearchBriefReport> findReportPage(ResearchBriefReport researchBriefReport) {
+		int pageSize = researchBriefReport.getPageSize();
+		Page page = new Page(researchBriefReport.getPageNo(),pageSize);
+		List<ResearchBriefReport> list = dao.findResearchBriefReportList(researchBriefReport);
+		list = list.stream().map(r -> {
+			r.setImageFileName(convertFile(r.getId(), Constants.briefReport.BRIEFING_INFO_IMAGE));
+			return r;
+		}).collect(Collectors.toList());
+		page.setList(list);
+		long total = dao.findResearchBriefReportCount(researchBriefReport);
+		long count = total / pageSize;
+		if(total % pageSize > 0){
+			count = count +1;
+		}
+		page.setCount(count);
+		return page;
+	}
+
+	private String convertFile(String bizKey, String bizType) {
+		List<FileUpload> list = FileUploadUtils.findFileUpload(bizKey, bizType);
+		if (CollectionUtils.isNotEmpty(list)) {
+			FileEntity fileEntity = list.get(0).getFileEntity();
+			if (fileEntity != null) {
+				return fileEntity.getFileId() + '.' + fileEntity.getFileExtension();
+			}
+		}
+		return null;
+	}
 }

+ 10 - 11
modules/report/src/main/java/com/jeesite/modules/report/web/WebsiteUserOrderController.java

@@ -1,24 +1,20 @@
 package com.jeesite.modules.report.web;
 
-import java.util.List;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
+import com.jeesite.common.entity.Page;
+import com.jeesite.common.web.BaseController;
+import com.jeesite.modules.report.entity.WebsiteUserOrder;
+import com.jeesite.modules.report.service.WebsiteUserOrderService;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
-import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.ModelAttribute;
-import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 
-import com.jeesite.common.config.Global;
-import com.jeesite.common.entity.Page;
-import com.jeesite.common.web.BaseController;
-import com.jeesite.modules.report.entity.WebsiteUserOrder;
-import com.jeesite.modules.report.service.WebsiteUserOrderService;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 
 /**
  * 简报智库订单Controller
@@ -57,6 +53,9 @@ public class WebsiteUserOrderController extends BaseController {
 	@RequestMapping(value = "listData")
 	@ResponseBody
 	public Page<WebsiteUserOrder> listData(WebsiteUserOrder websiteUserOrder, HttpServletRequest request, HttpServletResponse response) {
+		if (StringUtils.isEmpty(websiteUserOrder.getWebsiteUserId())) {
+			return null;
+		}
 		websiteUserOrder.setPage(new Page<>(request, response));
 		Page<WebsiteUserOrder> page = websiteUserOrderService.findPage(websiteUserOrder);
 		return page;

+ 1 - 0
modules/report/src/main/resources/mappings/modules/report/ResearchBriefReportDao.xml

@@ -26,6 +26,7 @@
         <if test="rr.topLabelId != null and rr.topLabelId != ''">and top_label_id = #{rr.topLabelId}</if>
         <if test="rr.secondLabelId != null and rr.secondLabelId != ''">and second_label_id = #{rr.secondLabelId}</if>
         <if test="rr.useDownPay != null and rr.useDownPay != ''">and use_down_pay = #{rr.useDownPay}</if>
+        <if test="rr.notId != null and rr.notId != ''">and id != #{rr.notId}</if>
     </sql>
 
     <select id="findResearchBriefReportList"

+ 5 - 0
modules/report/src/main/resources/mappings/modules/report/ResearchBriefReportLabelDao.xml

@@ -58,4 +58,9 @@
     <select id="findNames" resultType="java.lang.String">
         select GROUP_CONCAT(name) from research_brief_report_label a where FIND_IN_SET( a.id, #{parentId}) > 0
     </select>
+
+    <select id="findChildList" resultType="com.jeesite.modules.report.entity.ResearchBriefReportLabel">
+        select * from research_brief_report_label a
+        where a.status = '0' and a.parent_id != '0'
+    </select>
 </mapper>