|
@@ -18,8 +18,11 @@ import org.springframework.web.bind.annotation.RequestMapping; |
|
@@ -18,8 +18,11 @@ import org.springframework.web.bind.annotation.RequestMapping; |
|
18
|
import org.springframework.web.bind.annotation.RequestMethod;
|
18
|
import org.springframework.web.bind.annotation.RequestMethod;
|
|
19
|
import org.springframework.web.bind.annotation.RestController;
|
19
|
import org.springframework.web.bind.annotation.RestController;
|
|
20
|
|
20
|
|
|
|
|
21
|
+import java.util.HashMap;
|
|
21
|
import java.util.List;
|
22
|
import java.util.List;
|
|
22
|
import java.util.Map;
|
23
|
import java.util.Map;
|
|
|
|
24
|
+import java.util.regex.Matcher;
|
|
|
|
25
|
+import java.util.regex.Pattern;
|
|
23
|
|
26
|
|
|
24
|
@Api(tags = "算命")
|
27
|
@Api(tags = "算命")
|
|
25
|
@RestController
|
28
|
@RestController
|
|
@@ -71,7 +74,7 @@ public class FortuneTellingController extends BaseController { |
|
@@ -71,7 +74,7 @@ public class FortuneTellingController extends BaseController { |
|
71
|
"\n" +
|
74
|
"\n" +
|
|
72
|
"当问题里没有多个选择项时:,输出格式如下:\n" +
|
75
|
"当问题里没有多个选择项时:,输出格式如下:\n" +
|
|
73
|
"1.标题为“爻辞: ”,输出爻辞,然后换行。\n" +
|
76
|
"1.标题为“爻辞: ”,输出爻辞,然后换行。\n" +
|
|
74
|
- "2.标题为“结论: ”, 然后换行。\n" +
|
77
|
+ "2.标题为“结论: ”,输出结论, 然后换行。\n" +
|
|
75
|
"3.输出用户提问的占卜结果(例如:凶; 中; 吉; 大吉)\n" +
|
78
|
"3.输出用户提问的占卜结果(例如:凶; 中; 吉; 大吉)\n" +
|
|
76
|
"4.根据变爻的文本和占卜结果,提炼出对用户问题的关键占卜结论,并进行详细解释。\n" +
|
79
|
"4.根据变爻的文本和占卜结果,提炼出对用户问题的关键占卜结论,并进行详细解释。\n" +
|
|
77
|
"5.提供变爻内容的深入、全面的专家级解释,分析并回答用户的问题。\n" +
|
80
|
"5.提供变爻内容的深入、全面的专家级解释,分析并回答用户的问题。\n" +
|
|
@@ -91,7 +94,9 @@ public class FortuneTellingController extends BaseController { |
|
@@ -91,7 +94,9 @@ public class FortuneTellingController extends BaseController { |
|
91
|
fortuneTellingLog.setAnswer(str);
|
94
|
fortuneTellingLog.setAnswer(str);
|
|
92
|
fortuneTellingLog.setCreate_time(DateUtils.getTime());
|
95
|
fortuneTellingLog.setCreate_time(DateUtils.getTime());
|
|
93
|
fortuneTellingLog.setUser_id(Integer.parseInt(getLoginToken().getId()));
|
96
|
fortuneTellingLog.setUser_id(Integer.parseInt(getLoginToken().getId()));
|
|
94
|
- return AjaxResult.success("成功",str);
|
97
|
+
|
|
|
|
98
|
+ //加工返回值
|
|
|
|
99
|
+ return toReturn(str);
|
|
95
|
}
|
100
|
}
|
|
96
|
|
101
|
|
|
97
|
@ApiOperation("随机三个数")
|
102
|
@ApiOperation("随机三个数")
|
|
@@ -131,4 +136,44 @@ public class FortuneTellingController extends BaseController { |
|
@@ -131,4 +136,44 @@ public class FortuneTellingController extends BaseController { |
|
131
|
Integer[] nums = YiJiFortuneTellingService.randomNums();
|
136
|
Integer[] nums = YiJiFortuneTellingService.randomNums();
|
|
132
|
return meiHuaYiShu(question,nums);
|
137
|
return meiHuaYiShu(question,nums);
|
|
133
|
}
|
138
|
}
|
|
|
|
139
|
+
|
|
|
|
140
|
+ private AjaxResult toReturn(String str)
|
|
|
|
141
|
+ {
|
|
|
|
142
|
+ String[] ss = str.split("\\n\\n");
|
|
|
|
143
|
+ Map<String,String> map = new HashMap<>();
|
|
|
|
144
|
+ map.put("divination",str.substring(str.indexOf("爻辞: ")+4,findNthOccurrence(str,"\n\n",1)));
|
|
|
|
145
|
+ map.put("conclusion",str.substring(str.indexOf("结论: ")+4,findNthOccurrence(str,"\n\n",2)));
|
|
|
|
146
|
+ map.put("analysis",str.substring(findNthOccurrence(str,"\n\n",2)+2));
|
|
|
|
147
|
+ return AjaxResult.success("成功",map);
|
|
|
|
148
|
+ }
|
|
|
|
149
|
+
|
|
|
|
150
|
+
|
|
|
|
151
|
+ private static int findNthOccurrence(String str, String patt, int number) {
|
|
|
|
152
|
+ if (str == null || patt == null || number < 1) {
|
|
|
|
153
|
+ throw new IllegalArgumentException("Invalid input");
|
|
|
|
154
|
+ }
|
|
|
|
155
|
+
|
|
|
|
156
|
+ Pattern pattern = Pattern.compile(Pattern.quote(patt));
|
|
|
|
157
|
+ Matcher matcher = pattern.matcher(str);
|
|
|
|
158
|
+ int count = 0;
|
|
|
|
159
|
+ int start = -1;
|
|
|
|
160
|
+
|
|
|
|
161
|
+ while (matcher.find()) {
|
|
|
|
162
|
+ count++;
|
|
|
|
163
|
+ if (count == number) {
|
|
|
|
164
|
+ start = matcher.start();
|
|
|
|
165
|
+ break;
|
|
|
|
166
|
+ }
|
|
|
|
167
|
+ }
|
|
|
|
168
|
+
|
|
|
|
169
|
+ return start;
|
|
|
|
170
|
+ }
|
|
|
|
171
|
+
|
|
|
|
172
|
+ public static void main(String[] args) {
|
|
|
|
173
|
+ String str = "爻辞: 见舆曳,其牛掣,其人天且劓,无初有终。\n\n结论: 中\n\n根据变爻的文本和占卜结果,对您今天的运势进行占卜可以划分为中等级别。这表示您在今天可能会遇到一些困难或挑战,但通过坚定的信念和努力,最终可以克服难关。\n\n深入解释: 这个爻辞描绘了一种困难对抗的场景,但也强调了坚持到底的重要性。牛掣车辐,虽然曳力增大,但只要坚持不懈,最终会有所收获。劓本义是割耳,表示可能会有一些牺牲或损失,但这也是通向成功的必经之路。\n\n其他方面分析:\n财务: 今天可能会有一些额外支出或投资,需要谨慎对待财务安排,以避免不必要的损失。\n生活: 坚持自己的原则和信念,相信自己的选择,即使面临逆境也要勇往直前,生活会逐渐好转。\n工作: 遇到挑战时不要放弃,坚持努力并寻求他人帮助,解决问题的方式会逐渐清晰。";
|
|
|
|
174
|
+
|
|
|
|
175
|
+ System.out.println(">>>>>"+str.substring(str.indexOf("爻辞: ")+4,findNthOccurrence(str,"\n\n",1)));
|
|
|
|
176
|
+ System.out.println(">>>>>"+str.substring(str.indexOf("结论: ")+4,findNthOccurrence(str,"\n\n",2)));
|
|
|
|
177
|
+ System.out.println(">>>>>"+str.substring(findNthOccurrence(str,"\n\n",2)+2));
|
|
|
|
178
|
+ }
|
|
134
|
} |
179
|
} |