Bläddra i källkod

微信移动端支付

guomengjiao 4 månader sedan
förälder
incheckning
5016cfbe1e

+ 94 - 44
.idea/workspace.xml

@@ -30,7 +30,10 @@
   <component name="ChangeListManager">
     <list default="true" id="fc9366aa-6566-4981-8149-d75e02f8e884" name="默认的" comment="微信移动端支付">
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/modules/report/src/main/java/com/jeesite/modules/report/entity/WebsiteUserOrder.java" beforeDir="false" afterPath="$PROJECT_DIR$/modules/report/src/main/java/com/jeesite/modules/report/entity/WebsiteUserOrder.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/common/src/main/java/com/jeesite/common/constant/Constants.java" beforeDir="false" afterPath="$PROJECT_DIR$/common/src/main/java/com/jeesite/common/constant/Constants.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/modules/report/src/main/java/com/jeesite/modules/report/entity/ResearchReport.java" beforeDir="false" afterPath="$PROJECT_DIR$/modules/report/src/main/java/com/jeesite/modules/report/entity/ResearchReport.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/modules/report/src/main/java/com/jeesite/modules/report/service/ResearchReportService.java" beforeDir="false" afterPath="$PROJECT_DIR$/modules/report/src/main/java/com/jeesite/modules/report/service/ResearchReportService.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/modules/report/src/main/resources/mappings/modules/report/ResearchReportDao.xml" beforeDir="false" afterPath="$PROJECT_DIR$/modules/report/src/main/resources/mappings/modules/report/ResearchReportDao.xml" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -220,6 +223,11 @@
         <option name="Make" enabled="true" />
       </method>
     </configuration>
+    <recent_temporary>
+      <list>
+        <item itemvalue="Application.DateUtils" />
+      </list>
+    </recent_temporary>
   </component>
   <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
   <component name="TaskManager">
@@ -458,42 +466,8 @@
       <workItem from="1735970618647" duration="252000" />
       <workItem from="1735970895886" duration="8433000" />
       <workItem from="1736126123480" duration="510000" />
-      <workItem from="1736127959643" duration="46192000" />
-    </task>
-    <task id="LOCAL-00037" summary="简报">
-      <created>1734948019915</created>
-      <option name="number" value="00037" />
-      <option name="presentableId" value="LOCAL-00037" />
-      <option name="project" value="LOCAL" />
-      <updated>1734948019915</updated>
-    </task>
-    <task id="LOCAL-00038" summary="按钮权限">
-      <created>1735007297455</created>
-      <option name="number" value="00038" />
-      <option name="presentableId" value="LOCAL-00038" />
-      <option name="project" value="LOCAL" />
-      <updated>1735007297455</updated>
-    </task>
-    <task id="LOCAL-00039" summary="简报下载">
-      <created>1735026920662</created>
-      <option name="number" value="00039" />
-      <option name="presentableId" value="LOCAL-00039" />
-      <option name="project" value="LOCAL" />
-      <updated>1735026920662</updated>
-    </task>
-    <task id="LOCAL-00040" summary="报告下载">
-      <created>1735034116817</created>
-      <option name="number" value="00040" />
-      <option name="presentableId" value="LOCAL-00040" />
-      <option name="project" value="LOCAL" />
-      <updated>1735034116817</updated>
-    </task>
-    <task id="LOCAL-00041" summary="报告支付">
-      <created>1735098267505</created>
-      <option name="number" value="00041" />
-      <option name="presentableId" value="LOCAL-00041" />
-      <option name="project" value="LOCAL" />
-      <updated>1735098267505</updated>
+      <workItem from="1736127959643" duration="53060000" />
+      <workItem from="1736385778472" duration="45750000" />
     </task>
     <task id="LOCAL-00042" summary="报告支付">
       <created>1735112174030</created>
@@ -803,12 +777,58 @@
       <option name="project" value="LOCAL" />
       <updated>1736316423146</updated>
     </task>
-    <option name="localTasksCounter" value="86" />
+    <task id="LOCAL-00086" summary="微信移动端支付">
+      <created>1736320393369</created>
+      <option name="number" value="00086" />
+      <option name="presentableId" value="LOCAL-00086" />
+      <option name="project" value="LOCAL" />
+      <updated>1736320393369</updated>
+    </task>
+    <task id="LOCAL-00087" summary="微信移动端支付">
+      <created>1736420774842</created>
+      <option name="number" value="00087" />
+      <option name="presentableId" value="LOCAL-00087" />
+      <option name="project" value="LOCAL" />
+      <updated>1736420774844</updated>
+    </task>
+    <task id="LOCAL-00088" summary="微信移动端支付">
+      <created>1736473318303</created>
+      <option name="number" value="00088" />
+      <option name="presentableId" value="LOCAL-00088" />
+      <option name="project" value="LOCAL" />
+      <updated>1736473318303</updated>
+    </task>
+    <task id="LOCAL-00089" summary="微信移动端支付">
+      <created>1736480120335</created>
+      <option name="number" value="00089" />
+      <option name="presentableId" value="LOCAL-00089" />
+      <option name="project" value="LOCAL" />
+      <updated>1736480120335</updated>
+    </task>
+    <task id="LOCAL-00090" summary="微信移动端支付">
+      <created>1736502405347</created>
+      <option name="number" value="00090" />
+      <option name="presentableId" value="LOCAL-00090" />
+      <option name="project" value="LOCAL" />
+      <updated>1736502405347</updated>
+    </task>
+    <option name="localTasksCounter" value="91" />
     <servers />
   </component>
   <component name="TypeScriptGeneratedFilesManager">
     <option name="version" value="3" />
   </component>
+  <component name="Vcs.Log.History.Properties">
+    <option name="COLUMN_ID_ORDER">
+      <list>
+        <option value="Default.Root" />
+        <option value="Default.Author" />
+        <option value="Default.Date" />
+        <option value="Default.Subject" />
+        <option value="Space.CommitStatus" />
+      </list>
+    </option>
+  </component>
   <component name="Vcs.Log.Tabs.Properties">
     <option name="TAB_STATES">
       <map>
@@ -879,6 +899,31 @@
             </State>
           </value>
         </entry>
+        <entry key="f63abd98-7c22-4bd8-ab7c-fb7f3db052f2">
+          <value>
+            <State>
+              <option name="SHOW_ONLY_AFFECTED_CHANGES" value="true" />
+              <option name="FILTERS">
+                <map>
+                  <entry key="branch">
+                    <value>
+                      <list>
+                        <option value="HEAD" />
+                      </list>
+                    </value>
+                  </entry>
+                  <entry key="roots">
+                    <value>
+                      <list>
+                        <option value="$PROJECT_DIR$" />
+                      </list>
+                    </value>
+                  </entry>
+                </map>
+              </option>
+            </State>
+          </value>
+        </entry>
       </map>
     </option>
   </component>
@@ -914,14 +959,19 @@
     <breakpoint-manager>
       <breakpoints>
         <line-breakpoint enabled="true" type="java-line">
-          <url>jar://$PROJECT_DIR$/../../../repository/com/jeesite/jeesite-framework/5.2.0-SNAPSHOT/jeesite-framework-5.2.0-SNAPSHOT.jar!/com/jeesite/modules/file/utils/FileUploadUtils.class</url>
-          <line>47</line>
-          <option name="timeStamp" value="17" />
+          <url>file://$PROJECT_DIR$/modules/report/src/main/java/com/jeesite/modules/report/service/ResearchReportService.java</url>
+          <line>735</line>
+          <option name="timeStamp" value="28" />
+        </line-breakpoint>
+        <line-breakpoint enabled="true" type="java-line">
+          <url>file://$PROJECT_DIR$/modules/report/src/main/java/com/jeesite/modules/report/service/ResearchReportService.java</url>
+          <line>736</line>
+          <option name="timeStamp" value="30" />
         </line-breakpoint>
         <line-breakpoint enabled="true" type="java-line">
-          <url>file://$PROJECT_DIR$/common/src/main/java/com/jeesite/common/reflect/ReflectUtils.java</url>
-          <line>53</line>
-          <option name="timeStamp" value="18" />
+          <url>file://$PROJECT_DIR$/modules/report/src/main/java/com/jeesite/modules/report/service/ResearchReportService.java</url>
+          <line>741</line>
+          <option name="timeStamp" value="31" />
         </line-breakpoint>
       </breakpoints>
     </breakpoint-manager>

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

@@ -213,4 +213,9 @@ public interface Constants {
         String PDF = "pdf";
         String PPT = "ppt";
     }
+
+    interface redisKey{
+        String REPORT_CATEGORY = "bjfl:report:category";
+        String REPORT_PUBLISHDATE = "bjfl:report:publish:date";
+    }
 }

+ 35 - 5
modules/report/src/main/java/com/jeesite/modules/report/entity/ResearchReport.java

@@ -1,11 +1,6 @@
 package com.jeesite.modules.report.entity;
 
-import javax.validation.constraints.Size;
-import java.util.Date;
-import com.jeesite.common.mybatis.annotation.JoinTable;
-import com.jeesite.common.mybatis.annotation.JoinTable.Type;
 import com.fasterxml.jackson.annotation.JsonFormat;
-
 import com.jeesite.common.entity.DataEntity;
 import com.jeesite.common.mybatis.annotation.Column;
 import com.jeesite.common.mybatis.annotation.Table;
@@ -13,6 +8,10 @@ import com.jeesite.common.mybatis.mapper.query.QueryType;
 import com.jeesite.common.utils.excel.annotation.ExcelField;
 import com.jeesite.common.utils.excel.annotation.ExcelFields;
 
+import javax.validation.constraints.Size;
+import java.lang.reflect.Field;
+import java.util.Date;
+
 /**
  * 研究报告Entity
  * @author wx
@@ -528,4 +527,35 @@ public class ResearchReport extends DataEntity<ResearchReport> {
 	public void setGeneralization(String generalization) {
 		this.generalization = generalization;
 	}
+
+	public static boolean areAllFieldsEmptyExceptOne(Object obj, String... excludeFields) {
+		Class<?> clazz = obj.getClass();
+		Field[] fields = clazz.getDeclaredFields();
+		int nonEmptyCount = 0;
+
+		for (Field field : fields) {
+			field.setAccessible(true);
+			try {
+				Object value = field.get(obj);
+				boolean isExcluded = false;
+				for (String excludeField : excludeFields) {
+					if (field.getName().equals("serialVersionUID") || field.getName().equals(excludeField)) {
+						isExcluded = true;
+						break;
+					}
+				}
+				if (!isExcluded && value != null && !(value instanceof String && ((String) value).isEmpty())) {
+					nonEmptyCount++;
+				}
+				if (nonEmptyCount >= 1) {
+					return false;
+				}
+			} catch (IllegalAccessException e) {
+				e.printStackTrace();
+			}
+		}
+
+		return nonEmptyCount == 0;
+	}
+
 }

+ 35 - 7
modules/report/src/main/java/com/jeesite/modules/report/service/ResearchReportService.java

@@ -1,7 +1,7 @@
 package com.jeesite.modules.report.service;
 
+import com.alibaba.fastjson.JSONArray;
 import com.jeesite.common.collect.ListUtils;
-import com.jeesite.common.config.Global;
 import com.jeesite.common.constant.Constants;
 import com.jeesite.common.entity.Page;
 import com.jeesite.common.idgen.IdGen;
@@ -11,7 +11,6 @@ import com.jeesite.common.service.ServiceException;
 import com.jeesite.common.utils.excel.ExcelImport;
 import com.jeesite.modules.basedata.dao.TemplateInfoDao;
 import com.jeesite.modules.basedata.entity.TemplateInfo;
-import com.jeesite.modules.report.async.ResearchReportAsyncService;
 import com.jeesite.modules.report.dao.ReportHtmlDao;
 import com.jeesite.modules.report.dao.ResearchReportDao;
 import com.jeesite.modules.report.dao.SiteInfoDao;
@@ -21,19 +20,16 @@ import com.jeesite.modules.report.entity.ResearchReport;
 import com.jeesite.modules.report.entity.SiteInfo;
 import com.jeesite.modules.report.util.TransContentUtils;
 import com.jeesite.modules.report.util.XmlUtils;
-import com.jeesite.modules.sys.entity.DictData;
-import com.jeesite.modules.sys.utils.DictUtils;
+import com.jeesite.modules.sys.utils.RedisUtil;
 import org.dom4j.DocumentException;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
-import java.util.Collections;
 import java.util.List;
-import java.util.Map;
 import java.util.regex.Matcher;
-import java.util.stream.Collectors;
 
 /**
  * 研究报告Service
@@ -48,6 +44,8 @@ public class ResearchReportService extends CrudService<ResearchReportDao, Resear
 	private SiteInfoDao siteInfoDao;
 	@Resource
 	private ReportHtmlDao reportHtmlDao;
+	@Resource
+	private RedisUtil redisUtil;
 
 	/**
 	 * 获取单条数据
@@ -701,6 +699,14 @@ public class ResearchReportService extends CrudService<ResearchReportDao, Resear
 	 * @return
 	 */
 	public List<ResearchReport> marketTypeList(ResearchReport researchReport){
+		String lang = researchReport.getLang();
+		//避免首次加载慢 有查询条件不会走缓存
+		if (StringUtils.isNotEmpty(lang) && ResearchReport.areAllFieldsEmptyExceptOne(researchReport, "lang")) {
+			String json = (String) redisUtil.get(Constants.redisKey.REPORT_CATEGORY + lang);
+			if (StringUtils.isNotEmpty(json)) {
+				return JSONArray.parseArray(json, ResearchReport.class);
+			}
+		}
 		return dao.marketTypeList(researchReport);
 	}
 
@@ -719,9 +725,31 @@ public class ResearchReportService extends CrudService<ResearchReportDao, Resear
 	 * @return
 	 */
 	public List<ResearchReport> findPublishDates(ResearchReport researchReport){
+		String lang = researchReport.getLang();
+		//避免首次加载慢 有查询条件不会走缓存
+		if (StringUtils.isNotEmpty(lang) && ResearchReport.areAllFieldsEmptyExceptOne(researchReport, "lang")) {
+			String json = (String) redisUtil.get(Constants.redisKey.REPORT_PUBLISHDATE + lang);
+			if (StringUtils.isNotEmpty(json)) {
+				return JSONArray.parseArray(json, ResearchReport.class);
+			}
+		}
 		return dao.findPublishDates(researchReport);
 	}
 
+	//放入缓存
+	@Scheduled(cron ="0 0/5 * * * ?")
+	public void putRedis() {
+		putRedisLang(Constants.lang.ZH_CH);
+		putRedisLang(Constants.lang.EN_US);
+	}
+
+	private void putRedisLang(String lang) {
+		ResearchReport report = new ResearchReport();
+		report.setLang(lang);
+		redisUtil.set(Constants.redisKey.REPORT_CATEGORY + lang, JSONArray.toJSONString(dao.marketTypeList(report)));
+		redisUtil.set(Constants.redisKey.REPORT_PUBLISHDATE + lang, JSONArray.toJSONString(dao.findPublishDates(report)));
+	}
+
 	/**
 	 * 根据id查询单行
 	 * @param report

+ 46 - 48
modules/report/src/main/resources/mappings/modules/report/ResearchReportDao.xml

@@ -72,6 +72,10 @@
 	<select id="findReportCount" parameterType="com.jeesite.modules.report.entity.ResearchReport"
 		resultType="java.lang.Long">
 		select count(1) from research_report b
+		left join bjfl_config.js_sys_config s1 on b.lang = 'zh-CN' and b.report_region = '0' and s1.config_key = 'cn.china.full.single.price'
+		left join bjfl_config.js_sys_config s2 on b.lang = 'zh-CN' and b.report_region = '1' and s2.config_key = 'cn.global.full.single.price'
+		left join bjfl_config.js_sys_config s3 on b.lang = 'en-US' and b.report_region = '0' and s3.config_key = 'en.china.full.single.price'
+		left join bjfl_config.js_sys_config s4 on b.lang = 'en-US' and b.report_region = '1' and s4.config_key = 'en.global.full.single.price'
 		where b.status = '0'
 		<include refid="whereStr02"/>
 	</select>
@@ -117,75 +121,69 @@
 		</if>
 	</sql>
 
-	<!--公共条件-->
-	<sql id="whereStr" >
-		<if test="report.lang != null and report.lang != ''">
-			and lang = #{report.lang}
-		</if>
-		<if test="report.queryKeyword != null and report.queryKeyword !=''">
-			and title like concat('%',#{report.queryKeyword},'%')
-		</if>
-		<if test="report.marketType != null and report.marketType !=''">
-			and market_type = #{report.marketType}
-		</if>
-		<if test="report.queryPrice != null">
-			<if test="report.queryPrice >= 15001">and price &gt;= #{report.queryPrice}</if>
-			<if test="15001 > report.queryPrice">and price &lt;= #{report.queryPrice}</if>
-		</if>
-		<if test="report.queryPublishDate != null">
-			and publish_date >= date_sub(now(),interval #{report.queryPublishDate} month)
-		</if>
-
-		<!--自定义查询-->
-		<if test="report.priceStr != null">
-			and price >= #{report.priceStr}
-		</if>
-		<if test="report.priceEnd != null">
-			and price &gt;= #{report.priceEnd}
-		</if>
-		<if test="report.publishDateStr != null">
-			and publish_date >= #{report.publishDateStr}
-		</if>
-		<if test="report.publishDateEnd != null">
-			and publish_date &gt;= #{report.publishDateEnd}
-		</if>
-	</sql>
-
 	<select id="findPrices" parameterType="com.jeesite.modules.report.entity.ResearchReport"
 		resultType="com.jeesite.modules.report.entity.ResearchReport">
 		select count(1) marketCount,if(#{report.lang} = 'zh-CN','¥&lt;8000', 'USD&lt;8000') marketTypeName, 8000 price
-		from research_report
-		where status = '0' <include refid="whereStr"/>
+		from research_report b
+		left join bjfl_config.js_sys_config s1 on b.lang = 'zh-CN' and b.report_region = '0' and s1.config_key = 'cn.china.full.single.price'
+		left join bjfl_config.js_sys_config s2 on b.lang = 'zh-CN' and b.report_region = '1' and s2.config_key = 'cn.global.full.single.price'
+		left join bjfl_config.js_sys_config s3 on b.lang = 'en-US' and b.report_region = '0' and s3.config_key = 'en.china.full.single.price'
+		left join bjfl_config.js_sys_config s4 on b.lang = 'en-US' and b.report_region = '1' and s4.config_key = 'en.global.full.single.price'
+		where status = '0' <include refid="whereStr02"/>
 		union all
 		select count(1) marketCount,if(#{report.lang} = 'zh-CN','¥&lt;12000', 'USD&lt;12000') marketTypeName, 12000 price
-		from research_report
-		where status = '0' <include refid="whereStr"/>
+		from research_report b
+		left join bjfl_config.js_sys_config s1 on b.lang = 'zh-CN' and b.report_region = '0' and s1.config_key = 'cn.china.full.single.price'
+		left join bjfl_config.js_sys_config s2 on b.lang = 'zh-CN' and b.report_region = '1' and s2.config_key = 'cn.global.full.single.price'
+		left join bjfl_config.js_sys_config s3 on b.lang = 'en-US' and b.report_region = '0' and s3.config_key = 'en.china.full.single.price'
+		left join bjfl_config.js_sys_config s4 on b.lang = 'en-US' and b.report_region = '1' and s4.config_key = 'en.global.full.single.price'
+		where status = '0' <include refid="whereStr02"/>
 		union all
 		select count(1) marketCount,if(#{report.lang} = 'zh-CN','¥&lt;15000', 'USD&lt;15000') marketTypeName,15000 price
-		from research_report
-		where status = '0' <include refid="whereStr"/>
+		from research_report b
+		left join bjfl_config.js_sys_config s1 on b.lang = 'zh-CN' and b.report_region = '0' and s1.config_key = 'cn.china.full.single.price'
+		left join bjfl_config.js_sys_config s2 on b.lang = 'zh-CN' and b.report_region = '1' and s2.config_key = 'cn.global.full.single.price'
+		left join bjfl_config.js_sys_config s3 on b.lang = 'en-US' and b.report_region = '0' and s3.config_key = 'en.china.full.single.price'
+		left join bjfl_config.js_sys_config s4 on b.lang = 'en-US' and b.report_region = '1' and s4.config_key = 'en.global.full.single.price'
+		where status = '0' <include refid="whereStr02"/>
 		union all
 		select count(1) marketCount,if(#{report.lang} = 'zh-CN','¥>15000', 'USD>15000') marketTypeName,15001 price
-		from research_report
-		where status = '0' <include refid="whereStr"/>
+		from research_report b
+		left join bjfl_config.js_sys_config s1 on b.lang = 'zh-CN' and b.report_region = '0' and s1.config_key = 'cn.china.full.single.price'
+		left join bjfl_config.js_sys_config s2 on b.lang = 'zh-CN' and b.report_region = '1' and s2.config_key = 'cn.global.full.single.price'
+		left join bjfl_config.js_sys_config s3 on b.lang = 'en-US' and b.report_region = '0' and s3.config_key = 'en.china.full.single.price'
+		left join bjfl_config.js_sys_config s4 on b.lang = 'en-US' and b.report_region = '1' and s4.config_key = 'en.global.full.single.price'
+		where status = '0' <include refid="whereStr02"/>
 	</select>
 
 	<select id="findPublishDates" parameterType="com.jeesite.modules.report.entity.ResearchReport"
 		resultType="com.jeesite.modules.report.entity.ResearchReport">
 		select count(1) marketCount, if(#{report.lang} = 'zh-CN','最近3月','Last 3 months') marketTypeName,3 publishDateValue
-		from research_report
+		from research_report b
+		left join bjfl_config.js_sys_config s1 on b.lang = 'zh-CN' and b.report_region = '0' and s1.config_key = 'cn.china.full.single.price'
+		left join bjfl_config.js_sys_config s2 on b.lang = 'zh-CN' and b.report_region = '1' and s2.config_key = 'cn.global.full.single.price'
+		left join bjfl_config.js_sys_config s3 on b.lang = 'en-US' and b.report_region = '0' and s3.config_key = 'en.china.full.single.price'
+		left join bjfl_config.js_sys_config s4 on b.lang = 'en-US' and b.report_region = '1' and s4.config_key = 'en.global.full.single.price'
 		where status = '0' and publish_date >= date_sub(now(),interval 3 month)
-		<include refid="whereStr"/>
+		<include refid="whereStr02"/>
 		union all
 		select count(1) marketCount, if(#{report.lang} = 'zh-CN','最近1年','Last 1 year') marketTypeName,12 publishDateValue
-		from research_report
+		from research_report b
+		left join bjfl_config.js_sys_config s1 on b.lang = 'zh-CN' and b.report_region = '0' and s1.config_key = 'cn.china.full.single.price'
+		left join bjfl_config.js_sys_config s2 on b.lang = 'zh-CN' and b.report_region = '1' and s2.config_key = 'cn.global.full.single.price'
+		left join bjfl_config.js_sys_config s3 on b.lang = 'en-US' and b.report_region = '0' and s3.config_key = 'en.china.full.single.price'
+		left join bjfl_config.js_sys_config s4 on b.lang = 'en-US' and b.report_region = '1' and s4.config_key = 'en.global.full.single.price'
 		where status = '0' and publish_date >= date_sub(now(),interval 12 month)
-		<include refid="whereStr"/>
+		<include refid="whereStr02"/>
 		union all
 		select count(1) marketCount, if(#{report.lang} = 'zh-CN','最近2年','Last 2 year') marketTypeName,24 publishDateValue
-		from research_report
+		from research_report b
+		left join bjfl_config.js_sys_config s1 on b.lang = 'zh-CN' and b.report_region = '0' and s1.config_key = 'cn.china.full.single.price'
+		left join bjfl_config.js_sys_config s2 on b.lang = 'zh-CN' and b.report_region = '1' and s2.config_key = 'cn.global.full.single.price'
+		left join bjfl_config.js_sys_config s3 on b.lang = 'en-US' and b.report_region = '0' and s3.config_key = 'en.china.full.single.price'
+		left join bjfl_config.js_sys_config s4 on b.lang = 'en-US' and b.report_region = '1' and s4.config_key = 'en.global.full.single.price'
 		where status = '0' and publish_date >= date_sub(now(),interval 24 month)
-		<include refid="whereStr"/>
+		<include refid="whereStr02"/>
 	</select>
 
 	<select id="researchReportForm" resultType="com.jeesite.modules.report.entity.ResearchReport"