|
@@ -10,7 +10,7 @@ import com.slodon.b2b2c.investment.bean.vo.KeyWordPartVO;
|
|
|
import com.slodon.b2b2c.investment.bean.vo.RivalPartVO;
|
|
|
import com.slodon.b2b2c.investment.bean.vo.SuggestionVO;
|
|
|
import com.slodon.b2b2c.investment.config.AnalysisConfig;
|
|
|
-import com.slodon.b2b2c.investment.constant.AnalysisConst;
|
|
|
+import com.slodon.b2b2c.investment.constant.InvestmentConst;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.stereotype.Component;
|
|
@@ -48,10 +48,10 @@ public class AnalysisModel {
|
|
|
*/
|
|
|
public List<String> translateProduct(String originalText) throws Exception {
|
|
|
HashMap<String, String> headers = new HashMap<>();
|
|
|
- headers.put(AnalysisConst.CONTENT_TYPE, AnalysisConst.APPLICATION_JSON);
|
|
|
+ headers.put(InvestmentConst.CONTENT_TYPE, InvestmentConst.APPLICATION_JSON);
|
|
|
JSONObject param = new JSONObject();
|
|
|
- param.set(AnalysisConst.TEXT, originalText);
|
|
|
- param.set(AnalysisConst.MODEL_NAME, analysisConfig.getModelName());
|
|
|
+ param.set(InvestmentConst.TEXT, originalText);
|
|
|
+ param.set(InvestmentConst.MODEL_NAME, analysisConfig.getModelName());
|
|
|
String result;
|
|
|
try {
|
|
|
result = HttpClientUtil.httpPost(analysisConfig.getTranslateAddress() + "/api/translate", param.toString(), headers);
|
|
@@ -65,9 +65,9 @@ public List<String> translateProduct(String originalText) throws Exception {
|
|
|
throw new Exception("翻译结果为空");
|
|
|
}
|
|
|
int start = text.indexOf("[");
|
|
|
- int end = text.lastIndexOf("]") + AnalysisConst.NUM_ONE;
|
|
|
+ int end = text.lastIndexOf("]") + InvestmentConst.NUM_ONE;
|
|
|
String jsonString = "";
|
|
|
- if (start != AnalysisConst.NEGATIVE_ONE && end != AnalysisConst.NEGATIVE_ONE && start < end) {
|
|
|
+ if (start != InvestmentConst.NEGATIVE_ONE && end != InvestmentConst.NEGATIVE_ONE && start < end) {
|
|
|
jsonString = text.substring(start, end);
|
|
|
} else {
|
|
|
throw new Exception("未找到翻译结果");
|
|
@@ -83,21 +83,21 @@ public HashMap<String,String> getCredential(){
|
|
|
.encodeToString(credentials.getBytes(StandardCharsets.UTF_8));
|
|
|
// 创建请求头Map
|
|
|
HashMap<String, String> headers = new HashMap<>();
|
|
|
- headers.put(AnalysisConst.CONTENT_TYPE, AnalysisConst.APPLICATION_JSON);
|
|
|
- headers.put(AnalysisConst.AUTHORIZATION, "Basic " + base64Creds);
|
|
|
+ headers.put(InvestmentConst.CONTENT_TYPE, InvestmentConst.APPLICATION_JSON);
|
|
|
+ headers.put(InvestmentConst.AUTHORIZATION, "Basic " + base64Creds);
|
|
|
return headers;
|
|
|
}
|
|
|
|
|
|
|
|
|
private ThreadPoolExecutor createThreadPool() {
|
|
|
return new ThreadPoolExecutor(
|
|
|
- AnalysisConst.DEFAULT_RUN_THREAD_NUM,
|
|
|
- AnalysisConst.DEFAULT_RUN_THREAD_NUM,
|
|
|
- AnalysisConst.KEEP_ALIVE_TIME,
|
|
|
+ InvestmentConst.DEFAULT_RUN_THREAD_NUM,
|
|
|
+ InvestmentConst.DEFAULT_RUN_THREAD_NUM,
|
|
|
+ InvestmentConst.KEEP_ALIVE_TIME,
|
|
|
TimeUnit.MILLISECONDS,
|
|
|
- new LinkedBlockingQueue<>(AnalysisConst.WORK_QUEUE),
|
|
|
+ new LinkedBlockingQueue<>(InvestmentConst.WORK_QUEUE),
|
|
|
new ThreadFactory() {
|
|
|
- private int count = AnalysisConst.NUM_ZERO;
|
|
|
+ private int count = InvestmentConst.NUM_ZERO;
|
|
|
@Override
|
|
|
public Thread newThread(Runnable r) {
|
|
|
Thread thread = new Thread(r);
|
|
@@ -112,7 +112,7 @@ private ThreadPoolExecutor createThreadPool() {
|
|
|
private void shutdownThreadPool(ThreadPoolExecutor executor) {
|
|
|
executor.shutdown();
|
|
|
try {
|
|
|
- if (!executor.awaitTermination(AnalysisConst.NUM_TEN, TimeUnit.SECONDS)) {
|
|
|
+ if (!executor.awaitTermination(InvestmentConst.NUM_TEN, TimeUnit.SECONDS)) {
|
|
|
executor.shutdownNow();
|
|
|
}
|
|
|
} catch (InterruptedException e) {
|
|
@@ -137,19 +137,19 @@ public KeyWordPartVO searchVolume(HashMap<String,String> header,String keywords,
|
|
|
JSONObject payloadItem = new JSONObject();
|
|
|
JSONArray keywordsArray = new JSONArray();
|
|
|
keywordsArray.add(keywords);
|
|
|
- payloadItem.set(AnalysisConst.KEYWORDS, keywordsArray);
|
|
|
- payloadItem.set(AnalysisConst.LANGUAGE_NAME, AnalysisConst.ENGLISH);
|
|
|
- payloadItem.set(AnalysisConst.LOCATION_NAME, locationName);
|
|
|
+ payloadItem.set(InvestmentConst.KEYWORDS, keywordsArray);
|
|
|
+ payloadItem.set(InvestmentConst.LANGUAGE_NAME, InvestmentConst.ENGLISH);
|
|
|
+ payloadItem.set(InvestmentConst.LOCATION_NAME, locationName);
|
|
|
payload.put(payloadItem);
|
|
|
String post = HttpClientUtil.httpPost(analysisConfig.getSearchVolume(), payload.toString(),header);
|
|
|
JSONObject postObject = JSONUtil.parseObj(post);
|
|
|
Integer tasksError = postObject.getByPath("tasks_error", Integer.class);
|
|
|
- if(tasksError==null||tasksError> AnalysisConst.NUM_ZERO){
|
|
|
+ if(tasksError==null||tasksError> InvestmentConst.NUM_ZERO){
|
|
|
throw new RuntimeException("接口1查询关键词 按月返回搜索量/CPC search_volume 任务失败");
|
|
|
}
|
|
|
MonthlySearchesBO bo = postObject.getByPath("tasks[0].result[0].monthly_searches[0]", MonthlySearchesBO.class);
|
|
|
Double competition = postObject.getByPath("tasks[0].result[0].competition",Double.class);
|
|
|
- Integer cp = competition==null?null:(int)Math.round(competition * AnalysisConst.NUM_ONE_HUNDRED);
|
|
|
+ Integer cp = competition==null?null:(int)Math.round(competition * InvestmentConst.NUM_ONE_HUNDRED);
|
|
|
keyWordPartVO.setMonthlySearchesBO(bo);
|
|
|
keyWordPartVO.setCompetition(cp);
|
|
|
return keyWordPartVO;
|
|
@@ -170,18 +170,18 @@ public SuggestionVO KeywordForSuggestions(HashMap<String,String> header, String
|
|
|
SuggestionVO suggestionVO = new SuggestionVO();
|
|
|
JSONArray payload = new JSONArray();
|
|
|
JSONObject payloadItem = new JSONObject();
|
|
|
- payloadItem.set(AnalysisConst.KEYWORD, keyword);
|
|
|
- payloadItem.set(AnalysisConst.LANGUAGE_NAME, AnalysisConst.ENGLISH);
|
|
|
- payloadItem.set(AnalysisConst.LOCATION_NAME, locationName);
|
|
|
+ payloadItem.set(InvestmentConst.KEYWORD, keyword);
|
|
|
+ payloadItem.set(InvestmentConst.LANGUAGE_NAME, InvestmentConst.ENGLISH);
|
|
|
+ payloadItem.set(InvestmentConst.LOCATION_NAME, locationName);
|
|
|
payloadItem.set("include_serp_info", true);
|
|
|
payloadItem.set("include_seed_keyword", true);
|
|
|
payloadItem.set("include_seed_keyword", true);
|
|
|
- payloadItem.set(AnalysisConst.LIMIT, AnalysisConst.NUM_TEN);
|
|
|
+ payloadItem.set(InvestmentConst.LIMIT, InvestmentConst.NUM_TEN);
|
|
|
payload.put(payloadItem);
|
|
|
String post = HttpClientUtil.httpPost(analysisConfig.getKeywordForSuggestions(), payload.toString(),header);
|
|
|
JSONObject postObject = JSONUtil.parseObj(post);
|
|
|
Integer tasksError = postObject.getByPath("tasks_error", Integer.class);
|
|
|
- if(tasksError==null||tasksError> AnalysisConst.NUM_ZERO){
|
|
|
+ if(tasksError==null||tasksError> InvestmentConst.NUM_ZERO){
|
|
|
throw new RuntimeException("接口5查询推荐数据 任务失败");
|
|
|
}
|
|
|
JSONArray jsonArray = postObject.getByPath("tasks[0].result[0].items", JSONArray.class);
|
|
@@ -192,10 +192,10 @@ public SuggestionVO KeywordForSuggestions(HashMap<String,String> header, String
|
|
|
for (Object o : jsonArray) {
|
|
|
RelatedInfoBO bo = new RelatedInfoBO();
|
|
|
JSONObject obj = (JSONObject) o;
|
|
|
- bo.setKeyword(obj.getByPath(AnalysisConst.KEYWORD, String.class));
|
|
|
+ bo.setKeyword(obj.getByPath(InvestmentConst.KEYWORD, String.class));
|
|
|
bo.setSearchVolume(obj.getByPath("keyword_info.search_volume", Long.class));
|
|
|
Double competition = obj.getByPath("keyword_info.competition", Double.class);
|
|
|
- bo.setCompetition(competition==null?null:(int)Math.round(competition * AnalysisConst.NUM_ONE_HUNDRED));
|
|
|
+ bo.setCompetition(competition==null?null:(int)Math.round(competition * InvestmentConst.NUM_ONE_HUNDRED));
|
|
|
relatedInfoBOList.add(bo);
|
|
|
}
|
|
|
suggestionVO.setRelatedInfoBOList(relatedInfoBOList);
|
|
@@ -209,7 +209,7 @@ public SuggestionVO KeywordForSuggestions(HashMap<String,String> header, String
|
|
|
String websites = dto.getCompetitorWebsite();
|
|
|
String[] competitorWebsites = websites.split(",");
|
|
|
RivalPartVO vo = new RivalPartVO();
|
|
|
- if(competitorWebsites.length== AnalysisConst.NUM_ZERO){
|
|
|
+ if(competitorWebsites.length== InvestmentConst.NUM_ZERO){
|
|
|
throw new Exception("竞品网站地址不正确");
|
|
|
}
|
|
|
List<CompetitorBO> competitorBOS = new ArrayList<>();
|
|
@@ -269,14 +269,14 @@ public SuggestionVO KeywordForSuggestions(HashMap<String,String> header, String
|
|
|
public List<RankBO> rankedKeywords(HashMap<String,String> header,String website,String locationName) throws Exception {
|
|
|
JSONArray payload = new JSONArray();
|
|
|
JSONObject payloadItem = new JSONObject();
|
|
|
- payloadItem.set(AnalysisConst.TARGET, website);
|
|
|
- payloadItem.set(AnalysisConst.LANGUAGE_NAME, AnalysisConst.ENGLISH);
|
|
|
- payloadItem.set(AnalysisConst.LOCATION_NAME, locationName);
|
|
|
+ payloadItem.set(InvestmentConst.TARGET, website);
|
|
|
+ payloadItem.set(InvestmentConst.LANGUAGE_NAME, InvestmentConst.ENGLISH);
|
|
|
+ payloadItem.set(InvestmentConst.LOCATION_NAME, locationName);
|
|
|
payload.put(payloadItem);
|
|
|
String post = HttpClientUtil.httpPost(analysisConfig.getRankedKeywords(), payload.toString(),header);
|
|
|
JSONObject postObject = JSONUtil.parseObj(post);
|
|
|
Integer tasksError = postObject.getByPath("tasks_error", Integer.class);
|
|
|
- if(tasksError==null||tasksError> AnalysisConst.NUM_ZERO){
|
|
|
+ if(tasksError==null||tasksError> InvestmentConst.NUM_ZERO){
|
|
|
throw new RuntimeException("接口7查询 关键词排名 任务失败");
|
|
|
}
|
|
|
JSONArray items = postObject.getByPath("tasks[0].result[0].items", JSONArray.class);
|
|
@@ -289,9 +289,9 @@ public SuggestionVO KeywordForSuggestions(HashMap<String,String> header, String
|
|
|
String keyword = obj.getByPath("keyword_data.keyword", String.class);
|
|
|
Long searchVolume = obj.getByPath("keyword_data.keyword_info.search_volume", Long.class);
|
|
|
Double competition = obj.getByPath("keyword_data.keyword_info.competition", Double.class);
|
|
|
- Integer dp = competition==null?null:(int)Math.round(competition * AnalysisConst.NUM_ONE_HUNDRED);
|
|
|
+ Integer dp = competition==null?null:(int)Math.round(competition * InvestmentConst.NUM_ONE_HUNDRED);
|
|
|
Double cpc = obj.getByPath("keyword_data.keyword_info.cpc", Double.class);
|
|
|
- Double cpcFormat=cpc==null?null:Math.round(cpc * AnalysisConst.NUM_ONE_HUNDRED) / AnalysisConst.ONE_HUNDRED_DOUBLE;
|
|
|
+ Double cpcFormat=cpc==null?null:Math.round(cpc * InvestmentConst.NUM_ONE_HUNDRED) / InvestmentConst.ONE_HUNDRED_DOUBLE;
|
|
|
Long monthly = obj.getByPath("keyword_data.keyword_info.search_volume_trend.monthly", Long.class);
|
|
|
Long quarterly = obj.getByPath("keyword_data.keyword_info.search_volume_trend.quarterly", Long.class);
|
|
|
Long yearly = obj.getByPath("keyword_data.keyword_info.search_volume_trend.yearly", Long.class);
|
|
@@ -316,21 +316,21 @@ public SuggestionVO KeywordForSuggestions(HashMap<String,String> header, String
|
|
|
JSONArray targets = new JSONArray();
|
|
|
String keyword = StringUtils.removeStart(
|
|
|
StringUtils.removeStart(
|
|
|
- StringUtils.removeStart(website, AnalysisConst.HTTPS),
|
|
|
- AnalysisConst.HTTP),
|
|
|
- AnalysisConst.WWW);
|
|
|
- int comIndex = keyword.indexOf(AnalysisConst.COM);
|
|
|
- if (comIndex != -AnalysisConst.NEGATIVE_ONE) {
|
|
|
- keyword = keyword.substring(AnalysisConst.NUM_ZERO, comIndex+ AnalysisConst.NUM_FOUR);
|
|
|
+ StringUtils.removeStart(website, InvestmentConst.HTTPS),
|
|
|
+ InvestmentConst.HTTP),
|
|
|
+ InvestmentConst.WWW);
|
|
|
+ int comIndex = keyword.indexOf(InvestmentConst.COM);
|
|
|
+ if (comIndex != -InvestmentConst.NEGATIVE_ONE) {
|
|
|
+ keyword = keyword.substring(InvestmentConst.NUM_ZERO, comIndex+ InvestmentConst.NUM_FOUR);
|
|
|
}
|
|
|
targets.add(keyword);
|
|
|
- payloadItem.set(AnalysisConst.TARGETS,targets);
|
|
|
- payloadItem.set(AnalysisConst.LANGUAGE_NAME, AnalysisConst.ENGLISH);
|
|
|
- payloadItem.set(AnalysisConst.LOCATION_NAME, locationName);
|
|
|
+ payloadItem.set(InvestmentConst.TARGETS,targets);
|
|
|
+ payloadItem.set(InvestmentConst.LANGUAGE_NAME, InvestmentConst.ENGLISH);
|
|
|
+ payloadItem.set(InvestmentConst.LOCATION_NAME, locationName);
|
|
|
payload.put(payloadItem);
|
|
|
LocalDate currentDate = LocalDate.now();
|
|
|
- LocalDate currentMonthFirstDay = currentDate.withDayOfMonth(AnalysisConst.NUM_ONE);
|
|
|
- LocalDate lastYearSameMonthFirstDay = currentDate.minusYears(AnalysisConst.NUM_ONE).plusMonths(AnalysisConst.NUM_ONE).withDayOfMonth(AnalysisConst.NUM_ONE);
|
|
|
+ LocalDate currentMonthFirstDay = currentDate.withDayOfMonth(InvestmentConst.NUM_ONE);
|
|
|
+ LocalDate lastYearSameMonthFirstDay = currentDate.minusYears(InvestmentConst.NUM_ONE).plusMonths(InvestmentConst.NUM_ONE).withDayOfMonth(InvestmentConst.NUM_ONE);
|
|
|
DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE;
|
|
|
payloadItem.set("date_from", lastYearSameMonthFirstDay.format(formatter));
|
|
|
payloadItem.set("date_to", currentMonthFirstDay.format(formatter));
|
|
@@ -344,7 +344,7 @@ public SuggestionVO KeywordForSuggestions(HashMap<String,String> header, String
|
|
|
String post = HttpClientUtil.httpPost(analysisConfig.getHistoricalTraffic(), postData.toString(),header);
|
|
|
JSONObject postObject = JSONUtil.parseObj(post);
|
|
|
Integer tasksError = postObject.getByPath("tasks_error", Integer.class);
|
|
|
- if(tasksError==null||tasksError> AnalysisConst.NUM_ZERO){
|
|
|
+ if(tasksError==null||tasksError> InvestmentConst.NUM_ZERO){
|
|
|
throw new RuntimeException("接口8查询 历史流量 任务失败");
|
|
|
}
|
|
|
List<TrafficBO> list = new ArrayList<>();
|
|
@@ -380,15 +380,15 @@ public SuggestionVO KeywordForSuggestions(HashMap<String,String> header, String
|
|
|
public List<RecommendationBO> keywordsForSite(HashMap<String, String> header, String website, String locationName) throws Exception {
|
|
|
JSONArray payload = new JSONArray();
|
|
|
JSONObject payloadItem = new JSONObject();
|
|
|
- payloadItem.set(AnalysisConst.TARGET, website);
|
|
|
- payloadItem.set(AnalysisConst.LANGUAGE_NAME, AnalysisConst.ENGLISH);
|
|
|
- payloadItem.set(AnalysisConst.LOCATION_NAME, locationName);
|
|
|
- payloadItem.set(AnalysisConst.LIMIT, AnalysisConst.NUM_FIFTY);
|
|
|
+ payloadItem.set(InvestmentConst.TARGET, website);
|
|
|
+ payloadItem.set(InvestmentConst.LANGUAGE_NAME, InvestmentConst.ENGLISH);
|
|
|
+ payloadItem.set(InvestmentConst.LOCATION_NAME, locationName);
|
|
|
+ payloadItem.set(InvestmentConst.LIMIT, InvestmentConst.NUM_FIFTY);
|
|
|
payload.put(payloadItem);
|
|
|
String post = HttpClientUtil.httpPost(analysisConfig.getKeywordsForSite(), payload.toString(),header);
|
|
|
JSONObject postObject = JSONUtil.parseObj(post);
|
|
|
Integer tasksError = postObject.getByPath("tasks_error", Integer.class);
|
|
|
- if(tasksError==null||tasksError> AnalysisConst.NUM_ZERO){
|
|
|
+ if(tasksError==null||tasksError> InvestmentConst.NUM_ZERO){
|
|
|
throw new RuntimeException("接口3查询 keywordsForSite 任务失败");
|
|
|
}
|
|
|
List<RecommendationBO> list = new ArrayList<>();
|
|
@@ -396,14 +396,14 @@ public SuggestionVO KeywordForSuggestions(HashMap<String,String> header, String
|
|
|
if(results==null){
|
|
|
return list;
|
|
|
}
|
|
|
- int total = Math.min(results.size(), AnalysisConst.NUM_FIFTY);
|
|
|
- for(int i = AnalysisConst.NUM_ZERO; i<total; i++){
|
|
|
+ int total = Math.min(results.size(), InvestmentConst.NUM_FIFTY);
|
|
|
+ for(int i = InvestmentConst.NUM_ZERO; i<total; i++){
|
|
|
JSONObject result = (JSONObject) results.get(i);
|
|
|
RecommendationBO bo = new RecommendationBO();
|
|
|
- bo.setKeywords(result.getByPath(AnalysisConst.KEYWORD,String.class));
|
|
|
+ bo.setKeywords(result.getByPath(InvestmentConst.KEYWORD,String.class));
|
|
|
bo.setSearchVolume(result.getByPath("search_volume",Long.class));
|
|
|
Double cpc = result.getByPath("cpc",Double.class);
|
|
|
- Double cpcFormat=cpc==null?null:Math.round(cpc * AnalysisConst.NUM_ONE_HUNDRED) / AnalysisConst.ONE_HUNDRED_DOUBLE;
|
|
|
+ Double cpcFormat=cpc==null?null:Math.round(cpc * InvestmentConst.NUM_ONE_HUNDRED) / InvestmentConst.ONE_HUNDRED_DOUBLE;
|
|
|
bo.setPrice(cpcFormat);
|
|
|
list.add(bo);
|
|
|
}
|
|
@@ -412,11 +412,11 @@ public SuggestionVO KeywordForSuggestions(HashMap<String,String> header, String
|
|
|
|
|
|
public String qualitative(String keyword) throws Exception {
|
|
|
HashMap<String, String> headers = new HashMap<>();
|
|
|
- headers.put(AnalysisConst.CONTENT_TYPE, AnalysisConst.APPLICATION_JSON);
|
|
|
+ headers.put(InvestmentConst.CONTENT_TYPE, InvestmentConst.APPLICATION_JSON);
|
|
|
JSONObject param = new JSONObject();
|
|
|
param.set("question", keyword);
|
|
|
- param.set("initial_search_query_count", AnalysisConst.NUM_THREE);
|
|
|
- param.set("max_research_loops", AnalysisConst.NUM_THREE);
|
|
|
+ param.set("initial_search_query_count", InvestmentConst.NUM_THREE);
|
|
|
+ param.set("max_research_loops", InvestmentConst.NUM_THREE);
|
|
|
param.set("reasoning_model", analysisConfig.getModelName());
|
|
|
String result;
|
|
|
try {
|
|
@@ -434,15 +434,15 @@ public SuggestionVO KeywordForSuggestions(HashMap<String,String> header, String
|
|
|
}
|
|
|
|
|
|
private String dealAnswer(String answer) {
|
|
|
- answer = answer.replace(AnalysisConst.CHINESE, "");
|
|
|
+ answer = answer.replace(InvestmentConst.CHINESE, "");
|
|
|
String lastPart = getLastPart(answer);
|
|
|
String firstPart = getFirstPart(answer);
|
|
|
return firstPart + lastPart;
|
|
|
}
|
|
|
|
|
|
private String getLastPart(String answer) {
|
|
|
- int startIndex = answer.indexOf (AnalysisConst.LAST_PART_MARKER);
|
|
|
- if (startIndex != AnalysisConst.NEGATIVE_ONE) {
|
|
|
+ int startIndex = answer.indexOf (InvestmentConst.LAST_PART_MARKER);
|
|
|
+ if (startIndex != InvestmentConst.NEGATIVE_ONE) {
|
|
|
return answer.substring (startIndex);
|
|
|
} else {
|
|
|
return "";
|
|
@@ -450,9 +450,9 @@ public SuggestionVO KeywordForSuggestions(HashMap<String,String> header, String
|
|
|
}
|
|
|
|
|
|
public String getFirstPart (String input) {
|
|
|
- int markerIndex = input.indexOf (AnalysisConst.FIRST_MARKER);
|
|
|
- if (markerIndex != AnalysisConst.NEGATIVE_ONE) {
|
|
|
- return input.substring (AnalysisConst.NUM_ZERO, markerIndex);
|
|
|
+ int markerIndex = input.indexOf (InvestmentConst.FIRST_MARKER);
|
|
|
+ if (markerIndex != InvestmentConst.NEGATIVE_ONE) {
|
|
|
+ return input.substring (InvestmentConst.NUM_ZERO, markerIndex);
|
|
|
} else {
|
|
|
return input;
|
|
|
}
|