作者 钟来

修改 接口返回格式

@@ -21,7 +21,24 @@ public class ApplicationLkFortuneTelling { @@ -21,7 +21,24 @@ public class ApplicationLkFortuneTelling {
21 { 21 {
22 System.setProperty("xml-dbPath",args[0]); 22 System.setProperty("xml-dbPath",args[0]);
23 } 23 }
  24 + if(checkRunInIDEA())
  25 + {
  26 + System.setProperty("xml-dbPath","E:\\work\\idea\\Luhui\\zl-modules\\lk-fortune-telling\\target\\classes\\Yiching-database-CN-1.3.xlsx");
  27 + }
24 SpringApplication.run(ApplicationLkFortuneTelling.class,args); 28 SpringApplication.run(ApplicationLkFortuneTelling.class,args);
25 System.out.println("启动成功"); 29 System.out.println("启动成功");
26 } 30 }
  31 +
  32 + /**
  33 + * 判断是否是idea里面启动
  34 + * @return true:是 false:否
  35 + */
  36 + private static boolean checkRunInIDEA() {
  37 + try {
  38 + Class.forName("com.intellij.rt.execution.application.AppMainV2");
  39 + return true;
  40 + } catch (ClassNotFoundException ignored) {
  41 + return false;
  42 + }
  43 + }
27 } 44 }
@@ -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 }