Ver Fonte

Merge branch 'master' of http://49.234.186.218:9000/root/ieplus

abpcoder há 3 semanas atrás
pai
commit
2aee39ba93
28 ficheiros alterados com 1761 adições e 30 exclusões
  1. 174 0
      back-ui/public/FAQ/FAQ.html
  2. 151 0
      back-ui/public/FAQ/FAQ_IE.html
  3. BIN
      back-ui/public/FAQ/单招一卡通常见问题.docx
  4. BIN
      back-ui/public/FAQ/金鲤志愿常见问题.docx
  5. BIN
      back-ui/public/download/app_welcome.png
  6. 176 0
      back-ui/public/download/index.html
  7. 21 0
      back-ui/public/html/ie.html
  8. 238 0
      back-ui/public/index.html
  9. 12 0
      back-ui/public/login-guide.html
  10. 0 0
      back-ui/public/protocol/mxjb_privacy_IE.html
  11. 297 0
      back-ui/public/protocol/mxjb_user_IE.html
  12. 2 0
      back-ui/public/robots.txt
  13. 36 0
      ie-admin/src/main/java/com/ruoyi/web/controller/front/FrontAdjustWrongController.java
  14. 2 6
      ie-admin/src/main/java/com/ruoyi/web/controller/front/FrontExamController.java
  15. 4 1
      ie-admin/src/main/java/com/ruoyi/web/controller/front/FrontSyMajorRelationController.java
  16. 8 4
      ie-admin/src/main/java/com/ruoyi/web/service/ExamService.java
  17. 220 7
      ie-admin/src/main/java/com/ruoyi/web/service/PaperService.java
  18. 91 0
      ie-system/src/main/java/com/ruoyi/back/domain/BCustomerQuestionError.java
  19. 62 0
      ie-system/src/main/java/com/ruoyi/back/mapper/BCustomerQuestionErrorMapper.java
  20. 62 0
      ie-system/src/main/java/com/ruoyi/back/service/IBCustomerQuestionErrorService.java
  21. 94 0
      ie-system/src/main/java/com/ruoyi/back/service/impl/BCustomerQuestionErrorServiceImpl.java
  22. 2 0
      ie-system/src/main/java/com/ruoyi/learn/domain/PaperVO.java
  23. 2 0
      ie-system/src/main/java/com/ruoyi/learn/service/impl/LearnWrongBookServiceImpl.java
  24. 11 9
      ie-system/src/main/java/com/ruoyi/sy/service/impl/SyVocationalServiceImpl.java
  25. 86 0
      ie-system/src/main/resources/mapper/back/BCustomerQuestionErrorMapper.xml
  26. 1 1
      ie-system/src/main/resources/mapper/learn/LearnPaperMapper.xml
  27. 1 1
      ie-system/src/main/resources/mapper/learn/LearnWrongBookMapper.xml
  28. 8 1
      ie-system/src/main/resources/mapper/syzy/BBusiWishUniversitiesMapper.xml

+ 174 - 0
back-ui/public/FAQ/FAQ.html

@@ -0,0 +1,174 @@
+<html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+  <meta http-equiv="Content-Style-Type" content="text/css"/>
+  <meta name="generator" content="Aspose.Words for .NET 17.1.0.0"/>
+  <title></title></head>
+<body>
+<div><p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:16pt"><span
+  style="font-family:阿里巴巴普惠体; font-weight:bold">常见问题</span></p>
+  <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:12pt"><span
+    style="font-family:阿里巴巴普惠体">1.如何开通金鲤志愿VIP?</span></p>
+  <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:12pt"><span
+    style="font-family:阿里巴巴普惠体">同学,VIP有两种开通方式:① 如果您是在金鲤志愿电脑网页上购卡,点击右上角开通VIP,购买成功后,当前账号由普通用户升级为会员用户,自动开通会员功能,若未显示VIP权限,需退出当前账号重新登录生效。②线下购买会员实体卡:下载金鲤志愿APP或访问金鲤志愿官网,直接输入会员卡卡号和密码登录。</span>
+  </p>
+  <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:12pt"><span
+    style="font-family:阿里巴巴普惠体">&#xa0;</span></p>
+  <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:12pt"><span
+    style="font-family:阿里巴巴普惠体">2.金鲤志愿VIP会员权益介绍</span></p>
+  <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:12pt"><span
+    style="font-family:阿里巴巴普惠体">同学你好!VIP</span><span style="font-family:阿里巴巴普惠体">会员权益</span><span
+    style="font-family:阿里巴巴普惠体">包括:</span><span style="font-family:阿里巴巴普惠体">,生涯规划,</span><span
+    style="font-family:阿里巴巴普惠体">院校、专业、职业查询,高考历年数据查询,高考政策解读,志愿课堂,智能填报</span><span
+    style="font-family:阿里巴巴普惠体">多维度推荐院校专业,</span><span
+    style="font-family:阿里巴巴普惠体">助你快速精准填报。</span></p>
+  <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:12pt"><span
+    style="font-family:阿里巴巴普惠体">&#xa0;</span></p>
+  <ol start="3" type="1" style="margin:0pt; padding-left:0pt">
+    <li
+      style="text-align:justify; widows:0; orphans:0; font-family:阿里巴巴普惠体; font-size:12pt; list-style-position:inside; -aw-list-padding-sml:3.16pt">
+      <span
+        style="font:7pt 'Times New Roman'; -aw-list-padding-sml:3.16pt">&#xa0; </span><span>金鲤志愿卡如何使用(绑定)</span>
+    </li>
+  </ol>
+  <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:12pt"><span
+    style="font-family:阿里巴巴普惠体">电脑</span><span style="font-family:阿里巴巴普惠体">:打开浏览器,</span><span
+    style="font-family:阿里巴巴普惠体">输入网址</span><span style="font-family:阿里巴巴普惠体">www.jinlizhiyuan.com</span><span
+    style="font-family:阿里巴巴普惠体">进入金鲤志愿官网</span><span style="font-family:阿里巴巴普惠体">,输入卡号</span><span
+    style="font-family:阿里巴巴普惠体">和</span><span style="font-family:阿里巴巴普惠体">密码</span><span
+    style="font-family:阿里巴巴普惠体">点击</span><span
+    style="font-family:阿里巴巴普惠体">登录,根据系统提示进行手机号绑定。</span></p>
+  <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:12pt"><span
+    style="font-family:阿里巴巴普惠体">手机:打开金鲤志愿APP,输入卡号和密码进行登录,根据系统提示进行绑定。</span></p>
+  <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:12pt"><span
+    style="font-family:阿里巴巴普惠体">&#xa0;</span></p>
+  <ol start="4" type="1" style="margin:0pt; padding-left:0pt">
+    <li
+      style="text-align:justify; widows:0; orphans:0; font-family:阿里巴巴普惠体; font-size:12pt; list-style-position:inside; -aw-list-padding-sml:3.16pt">
+      <span
+        style="font:7pt 'Times New Roman'; -aw-list-padding-sml:3.16pt">&#xa0; </span><span>开通VIP后我能使用多久?</span>
+    </li>
+  </ol>
+  <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:12pt"><span
+    style="font-family:阿里巴巴普惠体">志愿卡</span><span style="font-family:阿里巴巴普惠体">的使用期限</span><span
+    style="font-family:阿里巴巴普惠体">是</span><span style="font-family:阿里巴巴普惠体">由</span><span
+    style="font-family:阿里巴巴普惠体">您自行选择</span><span style="font-family:阿里巴巴普惠体">的</span><span
+    style="font-family:阿里巴巴普惠体">高考年</span><span style="font-family:阿里巴巴普惠体">份至当年8</span><span
+    style="font-family:阿里巴巴普惠体">月</span><span style="font-family:阿里巴巴普惠体">3</span><span
+    style="font-family:阿里巴巴普惠体">1号为止。</span></p>
+  <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:12pt"><span
+    style="font-family:阿里巴巴普惠体">注意:</span><span
+    style="font-family:阿里巴巴普惠体">高考出分后,模拟志愿高考成绩和选科科目一旦确认不可修改。</span></p>
+  <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:12pt"><span
+    style="font-family:阿里巴巴普惠体">&#xa0;</span></p>
+  <ol start="5" type="1" style="margin:0pt; padding-left:0pt">
+    <li
+      style="text-align:justify; widows:0; orphans:0; font-family:阿里巴巴普惠体; font-size:12pt; list-style-position:inside; -aw-list-padding-sml:3.16pt">
+      <span
+        style="font:7pt 'Times New Roman'; -aw-list-padding-sml:3.16pt">&#xa0; </span><span>开通会员卡或购买会员卡,可以退换吗?</span>
+    </li>
+  </ol>
+  <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:12pt"><span
+    style="font-family:阿里巴巴普惠体">不记名、不挂失,一经出售,不退换。</span></p>
+  <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:12pt"><span
+    style="font-family:阿里巴巴普惠体">&#xa0;</span></p>
+  <ol start="6" type="1" style="margin:0pt; padding-left:0pt">
+    <li
+      style="text-align:justify; widows:0; orphans:0; font-family:阿里巴巴普惠体; font-size:12pt; list-style-position:inside; -aw-list-padding-sml:3.16pt">
+      <span
+        style="font:7pt 'Times New Roman'; -aw-list-padding-sml:3.16pt">&#xa0; </span><span>会员卡实物卡遗失可补吗?</span>
+    </li>
+  </ol>
+  <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:12pt"><span
+    style="font-family:阿里巴巴普惠体">不可以,收到卡后请妥善保管好。</span></p>
+  <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:12pt"><span
+    style="font-family:阿里巴巴普惠体">&#xa0;</span></p>
+  <ol start="7" type="1" style="margin:0pt; padding-left:0pt">
+    <li
+      style="text-align:justify; widows:0; orphans:0; font-family:阿里巴巴普惠体; font-size:12pt; list-style-position:inside; -aw-list-padding-sml:3.16pt">
+      <span
+        style="font:7pt 'Times New Roman'; -aw-list-padding-sml:3.16pt">&#xa0; </span><span>如何修改密码?密码忘记了怎么办?</span>
+    </li>
+  </ol>
+  <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:12pt"><span
+    style="font-family:阿里巴巴普惠体">进入个人中心,点击修改密码。如果忘记密码,在登录框点击忘记密码,</span><span
+    style="font-family:阿里巴巴普惠体">根据提示填写即可修改密码。</span></p>
+  <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:12pt"><span
+    style="font-family:阿里巴巴普惠体">&#xa0;</span></p>
+  <ol start="8" type="1" style="margin:0pt; padding-left:0pt">
+    <li
+      style="text-align:justify; widows:0; orphans:0; font-family:阿里巴巴普惠体; font-size:12pt; list-style-position:inside; -aw-list-padding-sml:3.16pt">
+      <span
+        style="font:7pt 'Times New Roman'; -aw-list-padding-sml:3.16pt">&#xa0; </span><span>怎么更换绑定的手机号?</span>
+    </li>
+  </ol>
+  <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:12pt"><span
+    style="font-family:阿里巴巴普惠体">您可以进入个人中心,点击基本信息,然后点击变更手机号进行更换绑定。</span></p>
+  <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:12pt"><span
+    style="font-family:阿里巴巴普惠体">&#xa0;</span></p>
+  <ol start="9" type="1" style="margin:0pt; padding-left:0pt">
+    <li
+      style="text-align:justify; widows:0; orphans:0; font-family:阿里巴巴普惠体; font-size:12pt; list-style-position:inside; -aw-list-padding-sml:3.16pt">
+      <span
+        style="font:7pt 'Times New Roman'; -aw-list-padding-sml:3.16pt">&#xa0; </span><span>功能为什么无法正常使用?</span>
+    </li>
+  </ol>
+  <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:12pt"><span
+    style="font-family:阿里巴巴普惠体">同学,建议您</span><span style="font-family:阿里巴巴普惠体">检查网络设置、</span><span
+    style="font-family:阿里巴巴普惠体">退出登录或重新安装</span><span style="font-family:阿里巴巴普惠体">金鲤</span><span
+    style="font-family:阿里巴巴普惠体">志愿APP试一下,若仍无法解决,请</span><span
+    style="font-family:阿里巴巴普惠体">联系客服</span><span style="font-family:阿里巴巴普惠体">提交意见并配图说明</span><span
+    style="font-family:阿里巴巴普惠体">,</span><span style="font-family:阿里巴巴普惠体">我们会尽快为您解决!</span></p>
+  <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:12pt"><span
+    style="font-family:阿里巴巴普惠体">&#xa0;</span></p>
+  <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:12pt"><span
+    style="font-family:阿里巴巴普惠体">&#xa0;</span></p>
+  <ol start="10" type="1" style="margin:0pt; padding-left:0pt">
+    <li
+      style="text-align:justify; widows:0; orphans:0; font-family:阿里巴巴普惠体; font-size:12pt; list-style-position:inside">
+      <span>为什么我根据条件筛选出来的结果没有一所院校?</span></li>
+  </ol>
+  <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:12pt"><span
+    style="font-family:阿里巴巴普惠体">金鲤</span><span style="font-family:阿里巴巴普惠体">志愿会依照用户的条件,智能推荐与用户所选项目相匹配的院校与专业。如果出现无院校推荐的情况,即说明没有院校符合您的筛选条件,建议清空筛选条件。</span>
+  </p>
+  <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:12pt"><span
+    style="font-family:阿里巴巴普惠体">&#xa0;</span></p>
+  <ol start="11" type="1" style="margin:0pt; padding-left:0pt">
+    <li
+      style="text-align:justify; widows:0; orphans:0; font-family:阿里巴巴普惠体; font-size:12pt; list-style-position:inside">
+      <span>免费注册后如何绑定志愿卡?</span></li>
+  </ol>
+  <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:12pt"><span
+    style="font-family:阿里巴巴普惠体">APP:右下角点击我的--绑定金鲤志愿卡,按系统提示填写即可。网页:进入个人中心--绑定志愿卡,按提示填写即可。</span>
+  </p>
+  <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:12pt"><span
+    style="font-family:阿里巴巴普惠体">&#xa0;</span></p>
+  <ol start="12" type="1" style="margin:0pt; padding-left:0pt">
+    <li
+      style="text-align:justify; widows:0; orphans:0; font-family:阿里巴巴普惠体; font-size:12pt; list-style-position:inside">
+      <span>省份和学校填写错误怎么办?</span></li>
+  </ol>
+  <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:12pt"><span
+    style="font-family:阿里巴巴普惠体">金鲤志</span><span style="font-family:阿里巴巴普惠体">愿</span><span
+    style="font-family:阿里巴巴普惠体">卡</span><span style="font-family:阿里巴巴普惠体">省份</span><span
+    style="font-family:阿里巴巴普惠体">、学校</span><span
+    style="font-family:阿里巴巴普惠体">确定之后是无法进行修改的,如您在使用途中遇到问题可以拨打</span><span
+    style="font-family:阿里巴巴普惠体">金鲤</span><span style="font-family:阿里巴巴普惠体">志愿客服热线400</span><span
+    style="font-family:阿里巴巴普惠体">1797985</span><span style="font-family:阿里巴巴普惠体">。</span></p>
+  <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:12pt"><span
+    style="font-family:阿里巴巴普惠体">&#xa0;</span></p>
+  <ol start="13" type="1" style="margin:0pt; padding-left:0pt">
+    <li
+      style="text-align:justify; widows:0; orphans:0; font-family:阿里巴巴普惠体; font-size:12pt; list-style-position:inside">
+      <span>线上购卡高考年份选错了怎么办?</span></li>
+  </ol>
+  <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:12pt"><span
+    style="font-family:阿里巴巴普惠体">金鲤志</span><span style="font-family:阿里巴巴普惠体">愿</span><span
+    style="font-family:阿里巴巴普惠体">卡高考年份</span><span
+    style="font-family:阿里巴巴普惠体">确定之后是无法进行修改的,如您在使用途中遇到问题可以拨打</span><span
+    style="font-family:阿里巴巴普惠体">金鲤</span><span style="font-family:阿里巴巴普惠体">志愿客服热线400</span><span
+    style="font-family:阿里巴巴普惠体">1797985</span><span style="font-family:阿里巴巴普惠体">。</span></p>
+  <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:12pt"><span
+    style="font-family:阿里巴巴普惠体">&#xa0;</span></p></div>
+</body>
+</html>

+ 151 - 0
back-ui/public/FAQ/FAQ_IE.html

@@ -0,0 +1,151 @@
+<html>
+
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=utf-8">
+<meta name=Generator content="Microsoft Word 15 (filtered)">
+<style>
+<!--
+ /* Font Definitions */
+ @font-face
+	{font-family:宋体;
+	panose-1:2 1 6 0 3 1 1 1 1 1;}
+@font-face
+	{font-family:"Cambria Math";
+	panose-1:2 4 5 3 5 4 6 3 2 4;}
+@font-face
+	{font-family:Calibri;
+	panose-1:2 15 5 2 2 2 4 3 2 4;}
+@font-face
+	{font-family:"\@宋体";
+	panose-1:2 1 6 0 3 1 1 1 1 1;}
+ /* Style Definitions */
+ p.MsoNormal, li.MsoNormal, div.MsoNormal
+	{margin:0cm;
+	text-align:justify;
+	text-justify:inter-ideograph;
+	font-size:10.5pt;
+	font-family:"Calibri",sans-serif;}
+.MsoChpDefault
+	{font-size:10.0pt;
+	font-family:"Calibri",sans-serif;}
+ /* Page Definitions */
+ @page WordSection1
+	{size:595.3pt 841.9pt;
+	margin:72.0pt 90.0pt 72.0pt 90.0pt;
+	layout-grid:15.6pt;}
+div.WordSection1
+	{page:WordSection1;}
+-->
+</style>
+
+</head>
+
+<body lang=ZH-CN style='word-wrap:break-word;text-justify-trim:punctuation'>
+
+<div class=WordSection1 style='layout-grid:15.6pt'>
+
+<p class=MsoNormal><b><span style='font-family:宋体'>常见问题</span></b></p>
+
+<p class=MsoNormal><span lang=EN-US>&nbsp;</span></p>
+
+<p class=MsoNormal><span lang=EN-US>1.</span><span style='font-family:宋体'>如何开通单招一卡通</span><span
+lang=EN-US>VIP</span><span style='font-family:宋体'>?</span></p>
+
+<p class=MsoNormal><span lang=EN-US>VIP</span><span style='font-family:宋体'>有两种开通方式:①</span>
+<span style='font-family:宋体'>线上开通会员:下载单招一卡通</span><span lang=EN-US>APP</span><span
+style='font-family:宋体'>,注册账号成为新用户,点击右下角进入“我的”,点击开通</span><span lang=EN-US>VIP</span><span
+style='font-family:宋体'>,购买成功后,当前账号由普通用户升级为会员用户,自动开通会员功能,若未显示</span><span
+lang=EN-US>VIP</span><span style='font-family:宋体'>权限,需退出当前账号重新登录生效。②线下购买会员实体卡</span><span
+lang=EN-US>:</span><span style='font-family:宋体'>下载单招一卡通</span><span lang=EN-US>APP</span><span
+style='font-family:宋体'>,直接输入会员卡卡号和密码登录,完善信息后,会员即生效。</span></p>
+
+<p class=MsoNormal><span lang=EN-US>&nbsp;</span></p>
+
+<p class=MsoNormal><span lang=EN-US>2.</span><span style='font-family:宋体'>单招一卡通</span><span
+lang=EN-US>VIP</span><span style='font-family:宋体'>会员权益介绍</span></p>
+
+<p class=MsoNormal><span style='font-family:宋体'>同学你好!</span><span lang=EN-US>VIP</span><span
+style='font-family:宋体'>会员权益包括:智能填报,院校、专业、职业查询,权威测评,精品课程,分类题库和资讯,八大会员特权,助你轻松备考升学!</span></p>
+
+<p class=MsoNormal><span lang=EN-US>&nbsp;</span></p>
+
+<p class=MsoNormal><span lang=EN-US>3.</span><span style='font-family:宋体'>单招卡如何使用(绑定)</span></p>
+
+<p class=MsoNormal><span style='font-family:宋体'>打开单招一卡通</span><span lang=EN-US>APP</span><span
+style='font-family:宋体'>,输入卡号和密码进行登录,根据系统提示进行绑定。</span></p>
+
+<p class=MsoNormal><span lang=EN-US>&nbsp;</span></p>
+
+<p class=MsoNormal><span lang=EN-US>4.</span><span style='font-family:宋体'>开通</span><span
+lang=EN-US>VIP</span><span style='font-family:宋体'>后我能使用多久?</span></p>
+
+<p class=MsoNormal><span style='font-family:宋体'>本卡使用有效期至学生毕业年份单招录取结束止。</span></p>
+
+<p class=MsoNormal><span lang=EN-US>&nbsp;</span></p>
+
+<p class=MsoNormal><span lang=EN-US>5.</span><span style='font-family:宋体'>开通会员卡或购买会员卡,可以退换吗?</span></p>
+
+<p class=MsoNormal><span style='font-family:宋体'>不记名、不挂失,一经出售,不退换。</span></p>
+
+<p class=MsoNormal><span lang=EN-US>&nbsp;</span></p>
+
+<p class=MsoNormal><span lang=EN-US>6.</span><span style='font-family:宋体'>会员卡实物卡遗失可补吗?</span></p>
+
+<p class=MsoNormal><span style='font-family:宋体'>不可以,收到卡后请妥善保管好。</span></p>
+
+<p class=MsoNormal><span lang=EN-US>&nbsp;</span></p>
+
+<p class=MsoNormal><span lang=EN-US>7.</span><span style='font-family:宋体'>如何修改密码?密码忘记了怎么办?</span></p>
+
+<p class=MsoNormal><span style='font-family:宋体'>打开</span><span lang=EN-US>APP</span><span
+style='font-family:宋体'>,右下角点击我的,点击修改密码。如果忘记密码,在登录框点击忘记密码,根据提示填写即可修改密码。</span></p>
+
+<p class=MsoNormal><span lang=EN-US>&nbsp;</span></p>
+
+<p class=MsoNormal><span lang=EN-US>8.</span><span style='font-family:宋体'>怎么更换绑定的手机号?</span></p>
+
+<p class=MsoNormal><span style='font-family:宋体'>您可以打开</span><span lang=EN-US>APP</span><span
+style='font-family:宋体'>,右下角点击我的,点击基本信息,然后点击变更手机号进行更换绑定。</span></p>
+
+<p class=MsoNormal><span lang=EN-US>&nbsp;</span></p>
+
+<p class=MsoNormal><span lang=EN-US>9.</span><span style='font-family:宋体'>功能为什么无法正常使用</span><span
+lang=EN-US>?</span></p>
+
+<p class=MsoNormal><span style='font-family:宋体'>同学,建议您检查网络设置、退出登录或重新安装单招一卡通</span><span
+lang=EN-US>APP</span><span style='font-family:宋体'>试一下,若仍无法解决,请联系客服提交意见并配图说明,我们会尽快为您解决</span><span
+lang=EN-US>!</span></p>
+
+<p class=MsoNormal><span lang=EN-US>&nbsp;</span></p>
+
+<p class=MsoNormal><span lang=EN-US>10.</span><span style='font-family:宋体'>为什么我根据条件筛选出来的结果没有一所院校?</span></p>
+
+<p class=MsoNormal><span style='font-family:宋体'>单招一卡通会依照用户的条件,智能推荐与用户所选项目相匹配的院校与专业。如果出现无院校推荐的情况,即说明没有院校符合您的筛选条件,建议清空筛选条件。</span></p>
+
+<p class=MsoNormal><span lang=EN-US>&nbsp;</span></p>
+
+<p class=MsoNormal><span lang=EN-US>11.</span><span style='font-family:宋体'>免费注册后如何绑定志愿卡?</span></p>
+
+<p class=MsoNormal><span style='font-family:宋体'>打开</span><span lang=EN-US>APP</span><span
+style='font-family:宋体'>,右下角点击我的</span><span lang=EN-US>--</span><span
+style='font-family:宋体'>绑定会员卡,按系统提示填写即可。</span></p>
+
+<p class=MsoNormal><span lang=EN-US> </span></p>
+
+<p class=MsoNormal><span lang=EN-US>12.</span><span style='font-family:宋体'>省份和学校填写错误怎么办?</span></p>
+
+<p class=MsoNormal><span style='font-family:宋体'>单招卡省份、学校确定之后是无法进行修改的,如您在使用途中遇到问题可以拨打单招一卡通客服热线</span><span
+lang=EN-US>4001797985</span><span style='font-family:宋体'>。</span></p>
+
+<p class=MsoNormal><span lang=EN-US>&nbsp;</span></p>
+
+<p class=MsoNormal><span lang=EN-US>13.</span><span style='font-family:宋体'>线上购卡高考年份选错了怎么办?</span></p>
+
+<p class=MsoNormal><span style='font-family:宋体'>单招年份确定之后是无法进行修改的,如您在使用途中遇到问题可以拨打单招一卡通客服热线</span><span
+lang=EN-US>4001797985</span><span style='font-family:宋体'>。</span></p>
+
+</div>
+
+</body>
+
+</html>

BIN
back-ui/public/FAQ/单招一卡通常见问题.docx


BIN
back-ui/public/FAQ/金鲤志愿常见问题.docx


BIN
back-ui/public/download/app_welcome.png


+ 176 - 0
back-ui/public/download/index.html

@@ -0,0 +1,176 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
+    <title>点击下载应用</title>
+    <style>
+      html,
+      body {
+        margin: 0;
+        padding: 0;
+        width: 100%;
+        height: 100%;
+      }
+
+      .layui-btn {
+        outline: 0;
+        -webkit-appearance: none;
+        transition: all .3s;
+        -webkit-transition: all .3s;
+        box-sizing: border-box;
+      }
+
+      .layui-btn {
+        display: inline-block;
+        height: 38px;
+        line-height: 38px;
+        padding: 0 18px;
+        background-color: #009688;
+        color: #fff;
+        white-space: nowrap;
+        text-align: center;
+        font-size: 14px;
+        border: none;
+        border-radius: 2px;
+        cursor: pointer;
+      }
+
+      .layui-btn-warm {
+        background-color: #FFB800;
+      }
+    </style>
+  </head>
+  <body style="overflow: hidden;background-position:center;background-size:100%;">
+    <div id="d1" style="display:none;text-align:center;">
+      <div>
+        <img src="./app_welcome.png" style="width: 100%; margin-top: -260px;" />
+      </div>
+      <button type="button" class="layui-btn layui-btn-warm" onclick="download();">点击下载</button>
+    </div>
+
+    <div id="d2" style="display:none;">
+      <!-- <img src="images/readme/download/路径 39@2x.png" style="width:30%;position:absolute;right:10%;top:3%;" /> -->
+      <div>
+        <img src="./app_welcome.png" style="width: 100%; margin-top: -40px;" />
+      </div>
+      <!-- <img src="images/readme/download/编组@2x.png" style="width:100%;" /> -->
+    </div>
+  </body>
+</html>
+
+<script type="text/javascript">
+  const iOSUrl = 'https://apps.apple.com/us/app/%E5%8D%95%E6%8B%9B%E4%B8%80%E5%8D%A1%E9%80%9A/id6474480677'
+  const androidUrl = 'https://mingxuejingbang.oss-cn-beijing.aliyuncs.com/app/apk/%E5%8D%95%E6%8B%9B%E4%B8%80%E5%8D%A1%E9%80%9A_prod_V3.0.1.apk'
+
+  function getEnv() {
+    var hasOwnProp = Object.prototype.hasOwnProperty;
+    var brands = {
+      "IPHONE": "IPHONE|IPAD|IPOD|IOS",
+      "OPPO": "OPPO",
+      "VIVO": "VIVO",
+      "HONOR": "HONOR",
+      "HUAWEI": "HUAWEI",
+      "XIAOMI": "XIAOMI|REDMI",
+      "360": "1801-A01|1707-A01|1509-A00",
+      "SAMSUNG": "SAMSUNG",
+      "NUBIA": "NX"
+    };
+    var userAgent = window.navigator.userAgent.toUpperCase();
+    var is_weixin = (function() {
+      if (userAgent.match(/MicroMessenger/i) == "MICROMESSENGER") {
+        return true;
+      } else {
+        return false;
+      }
+    })();
+    var is_dingtalk = (function() {
+      if (userAgent.match(/DingTalk/i) == "DINGTALK") {
+        return true;
+      } else {
+        return false;
+      }
+    })();
+    for (var key in brands) {
+      if (hasOwnProp.call(brands, key)) {
+        brands[key] = new RegExp(brands[key], 'i');
+      }
+    }
+    /**
+     * 获取系统名称,安卓或者ios
+     */
+    function getOS() {
+      if (userAgent.indexOf("ANDROID") > -1) {
+        return "ANDROID";
+      } else if (userAgent.indexOf("IPHONE") > -1) {
+        return "IOS";
+      }
+    }
+    /**
+     * 获取设备品牌
+     */
+    function getBrand() {
+      var result = [];
+      for (var key in brands) {
+        if (hasOwnProp.call(brands, key)) {
+          if (brands[key].test(userAgent)) {
+            result.push(key);
+          }
+        }
+      }
+      return result[0];
+    }
+    return {
+      os: getOS(),
+      brand: getBrand(),
+      is_weixin: is_weixin,
+      is_dingtalk: is_dingtalk
+    };
+  }
+  var env = getEnv();
+  if (env.os === "IOS") {
+    //window.location.href = "ltapp233307://app"; // IOS打开APP协议如:taobao://
+    window.setTimeout(function() {
+      window.location.href = iOSUrl
+    }, 2000);
+  } else {
+    if (env.is_weixin || env.is_dingtalk) {
+      document.getElementById('d2').style.display = 'block';
+    } else {
+      document.getElementById('d1').style.display = 'block';
+
+      //window.location.href = "ltapp233307://app"; //安卓协议
+      window.setTimeout(function() {
+        download(env);
+      }, 2000)
+    }
+  }
+
+  function download(env) {
+    env = env ? env : getEnv();
+    switch (env.brand) {
+      //case "HONOR":
+      //	window.location.href = 'intent://details?id=apk的包名#Intent;package=com.huawei.appmarket;scheme=market;end;';
+      //	break;
+      //case "HUAWEI":
+      //case "OPPO":
+      //	window.location.href = "market://details?id=apk的包名";
+      //	break;
+      //case "XIAOMI":
+      //	window.location = 'intent://details?id=apk的包名#Intent;package=com.xiaomi.market;scheme=market;end;';
+      //	break;
+      //case "VIVO":
+      //    window.location.href = 'intent://details?id=apk的包名#Intent;package=com.bbk.appstore;scheme=market;end;';
+      //    break;
+      //case "SAMSUNG":
+      //    window.location.href = "http://www.samsungapps.com/appquery/appDetail.as?appId=apk的包名";
+      //    break;
+      //case "360":
+      //    window.location.href = 'intent://details?id=apk的包名#Intent;package=com.qihoo.appstore;scheme=market;end;';
+      //    break;
+      default:
+        window.location.href = androidUrl;
+        break;
+    }
+  }
+</script>

Diff do ficheiro suprimidas por serem muito extensas
+ 21 - 0
back-ui/public/html/ie.html


+ 238 - 0
back-ui/public/index.html

@@ -0,0 +1,238 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="renderer" content="webkit">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
+    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
+    <title><%= webpackConfig.name %></title>
+    <!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]-->
+    <script>
+      window.MathJax = {
+        tex: {
+          inlineMath: [
+            ["$", "$"],
+            ["\\(", "\\)"]
+          ],   //行内公式选择符
+          displayMath: [
+            ["$$", "$$"],
+            ["\\[", "\\]"]
+          ],   //段内公式选择符
+          autoload: {
+            color: [],
+            colorv2: ['color']
+          },
+          packages: { '[+]': ['noerrors', 'mathtools', 'ams'] }
+        },
+        options: {
+          skipHtmlTags: ["script", "noscript", "style", "textarea", "pre", "code", "a"],   //避开某些标签
+          ignoreHtmlClass: 'tex2jax_ignore',
+          processHtmlClass: 'tex2jax_process'
+        },
+        loader: {
+          load: ['input/asciimath', '[tex]/noerrors', '[tex]/mathtools', '[tex]/ams']
+        }
+      };
+    </script>
+    <!-- 用非tex-svg渲染时根号会显示异常 -->
+    <script async src="https://mingxuejingbang.oss-cn-beijing.aliyuncs.com/MathJaxFiles/3.2.0/es5/tex-svg-full.js"
+            id="MathJax-script"></script>
+	  <style>
+    html,
+    body,
+    #app {
+      height: 100%;
+      margin: 0px;
+      padding: 0px;
+    }
+    .chromeframe {
+      margin: 0.2em 0;
+      background: #ccc;
+      color: #000;
+      padding: 0.2em 0;
+    }
+
+    #loader-wrapper {
+      position: fixed;
+      top: 0;
+      left: 0;
+      width: 100%;
+      height: 100%;
+      z-index: 999999;
+    }
+
+    #loader {
+      display: block;
+      position: relative;
+      left: 50%;
+      top: 50%;
+      width: 150px;
+      height: 150px;
+      margin: -75px 0 0 -75px;
+      border-radius: 50%;
+      border: 3px solid transparent;
+      border-top-color: #FFF;
+      -webkit-animation: spin 2s linear infinite;
+      -ms-animation: spin 2s linear infinite;
+      -moz-animation: spin 2s linear infinite;
+      -o-animation: spin 2s linear infinite;
+      animation: spin 2s linear infinite;
+      z-index: 1001;
+    }
+
+    #loader:before {
+      content: "";
+      position: absolute;
+      top: 5px;
+      left: 5px;
+      right: 5px;
+      bottom: 5px;
+      border-radius: 50%;
+      border: 3px solid transparent;
+      border-top-color: #FFF;
+      -webkit-animation: spin 3s linear infinite;
+      -moz-animation: spin 3s linear infinite;
+      -o-animation: spin 3s linear infinite;
+      -ms-animation: spin 3s linear infinite;
+      animation: spin 3s linear infinite;
+    }
+
+    #loader:after {
+      content: "";
+      position: absolute;
+      top: 15px;
+      left: 15px;
+      right: 15px;
+      bottom: 15px;
+      border-radius: 50%;
+      border: 3px solid transparent;
+      border-top-color: #FFF;
+      -moz-animation: spin 1.5s linear infinite;
+      -o-animation: spin 1.5s linear infinite;
+      -ms-animation: spin 1.5s linear infinite;
+      -webkit-animation: spin 1.5s linear infinite;
+      animation: spin 1.5s linear infinite;
+    }
+
+
+    @-webkit-keyframes spin {
+      0% {
+        -webkit-transform: rotate(0deg);
+        -ms-transform: rotate(0deg);
+        transform: rotate(0deg);
+      }
+      100% {
+        -webkit-transform: rotate(360deg);
+        -ms-transform: rotate(360deg);
+        transform: rotate(360deg);
+      }
+    }
+
+    @keyframes spin {
+      0% {
+        -webkit-transform: rotate(0deg);
+        -ms-transform: rotate(0deg);
+        transform: rotate(0deg);
+      }
+      100% {
+        -webkit-transform: rotate(360deg);
+        -ms-transform: rotate(360deg);
+        transform: rotate(360deg);
+      }
+    }
+
+
+    #loader-wrapper .loader-section {
+      position: fixed;
+      top: 0;
+      width: 51%;
+      height: 100%;
+      background: #7171C6;
+      z-index: 1000;
+      -webkit-transform: translateX(0);
+      -ms-transform: translateX(0);
+      transform: translateX(0);
+    }
+
+    #loader-wrapper .loader-section.section-left {
+      left: 0;
+    }
+
+    #loader-wrapper .loader-section.section-right {
+      right: 0;
+    }
+
+
+    .loaded #loader-wrapper .loader-section.section-left {
+      -webkit-transform: translateX(-100%);
+      -ms-transform: translateX(-100%);
+      transform: translateX(-100%);
+      -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
+      transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
+    }
+
+    .loaded #loader-wrapper .loader-section.section-right {
+      -webkit-transform: translateX(100%);
+      -ms-transform: translateX(100%);
+      transform: translateX(100%);
+      -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
+      transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
+    }
+
+    .loaded #loader {
+      opacity: 0;
+      -webkit-transition: all 0.3s ease-out;
+      transition: all 0.3s ease-out;
+    }
+
+    .loaded #loader-wrapper {
+      visibility: hidden;
+      -webkit-transform: translateY(-100%);
+      -ms-transform: translateY(-100%);
+      transform: translateY(-100%);
+      -webkit-transition: all 0.3s 1s ease-out;
+      transition: all 0.3s 1s ease-out;
+    }
+
+    .no-js #loader-wrapper {
+      display: none;
+    }
+
+    .no-js h1 {
+      color: #222222;
+    }
+
+    #loader-wrapper .load_title {
+      font-family: 'Open Sans';
+      color: #FFF;
+      font-size: 19px;
+      width: 100%;
+      text-align: center;
+      z-index: 9999999999999;
+      position: absolute;
+      top: 60%;
+      opacity: 1;
+      line-height: 30px;
+    }
+
+    #loader-wrapper .load_title span {
+      font-weight: normal;
+      font-style: italic;
+      font-size: 13px;
+      color: #FFF;
+      opacity: 0.5;
+    }
+  </style>
+  </head>
+  <body>
+    <div id="app">
+	    <div id="loader-wrapper">
+		    <div id="loader"></div>
+		    <div class="loader-section section-left"></div>
+		    <div class="loader-section section-right"></div>
+		    <div class="load_title">正在加载系统资源,请耐心等待</div>
+        </div>
+	</div>
+  </body>
+</html>

+ 12 - 0
back-ui/public/login-guide.html

@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+	<meta charset="UTF-8">
+	<title>单招一卡通</title>
+</head>
+<body>
+<div style="max-width: 1024px; margin: 0 auto;">
+  <img style="width: 100%;" src="https://video-byxt-01.oss-cn-hangzhou.aliyuncs.com/%E6%B3%A8%E5%86%8C%E5%BC%95%E5%AF%BC/danzhao.jpg" alt="">
+</div>
+</body>
+</html>

Diff do ficheiro suprimidas por serem muito extensas
+ 0 - 0
back-ui/public/protocol/mxjb_privacy_IE.html


+ 297 - 0
back-ui/public/protocol/mxjb_user_IE.html

@@ -0,0 +1,297 @@
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <meta http-equiv="Content-Style-Type" content="text/css" />
+    <meta name="generator" content="Aspose.Words for .NET 15.1.0.0" />
+    <title>单招一卡通-服务协议</title>
+  </head>
+  <body>
+    <div style="padding: 60px 30px;">
+      <h1 style="margin:0pt; text-align:center"><span
+          style="color:#111111; font-family:阿里巴巴普惠体; font-size:24pt; font-style:normal; font-weight:bold; text-transform:none">单招一卡通</span><span
+          style="color:#111111; font-family:阿里巴巴普惠体; font-size:24pt; font-style:normal; font-weight:bold; text-transform:none">服务协议</span>
+      </h1>
+      <p style="margin:0pt"><span
+          style="color:#111111; font-family:阿里巴巴普惠体; font-size:14.5pt; font-style:normal; text-transform:none">更新日期:2022年12月24日</span>
+      </p>
+      <p style="margin:0pt"><span
+          style="color:#111111; font-family:阿里巴巴普惠体; font-size:14.5pt; font-style:normal; text-transform:none">生效日期:2022年12月24日</span>
+      </p>
+      <p style="background-color:#f8f8f8; margin:0pt"><span
+          style="background-color:#f8f8f8; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; font-weight:bold; text-transform:none">法律声明</span>
+      </p>
+      <p style="margin:0pt; text-align:justify"><span
+          style="background-color:#f8f8f8; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">凡访问、浏览或使用</span><span
+          style="background-color:#f8f8f8; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">湖南智隆叁加叁教育科技有限公司</span><span
+          style="background-color:#f8f8f8; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">(以下简称“</span><span
+          style="background-color:#f8f8f8; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">公司</span><span
+          style="background-color:#f8f8f8; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">”)出品的“</span><span
+          style="background-color:#f8f8f8; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">单招一卡通</span><span
+          style="background-color:#f8f8f8; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">”产品(包括</span><span
+          style="background-color:#f8f8f8; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">单招一卡通</span><span
+          style="background-color:#f8f8f8; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">平台网页端、H5、手机APP、微信公众号等,以下统称“</span><span
+          style="background-color:#f8f8f8; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">单招一卡通</span><span
+          style="background-color:#f8f8f8; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">”),表明您已阅读、理解并同意接受以下条款的约束,并遵守所有适用的法律和法规。您一旦使用则须秉持诚信的原则遵守以下条款。</span><span
+          style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">&#xa0;</span><span
+          style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">&#xa0;</span>
+      </p>
+      <p style="margin:0pt; text-align:justify"><span
+          style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; font-weight:bold; text-transform:none">1、适用范围</span>
+      </p>
+      <ul type="disc" style="margin:0pt; padding-left:0pt">
+        <li
+          style="color:#4a4a4a; font-family:serif; font-size:10pt; margin:0pt 0pt 0pt 27.6pt; padding-left:8.4pt; text-align:justify; text-indent:0pt">
+          <span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">1.1</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">&#xa0;</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">本协议是您与</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">“</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">单招一卡通</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">”</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">之间就您登录、使用</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">“</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">单招一卡通</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">”</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">软件,并获得</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">“</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">单招一卡通</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">”</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">软件提供的相关服务所订立的协议。</span>
+        </li>
+      </ul>
+      <ul type="disc" style="margin:0pt; padding-left:0pt">
+        <li
+          style="color:#4a4a4a; font-family:serif; font-size:10pt; margin:0pt 0pt 0pt 27.6pt; padding-left:8.4pt; text-align:justify; text-indent:0pt">
+          <span style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">1.2
+            “</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">用户</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">”</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">指所有直接或间接获取和使用</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">“</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">单招一卡通</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">”</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">软件及相关服务的使用者,在本协议中称为</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">“</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">用户</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">”</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">或称</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">“</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">您</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">”</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">。</span>
+        </li>
+      </ul>
+      <ul type="disc" style="margin:0pt; padding-left:0pt">
+        <li
+          style="color:#4a4a4a; font-family:serif; font-size:10pt; margin:0pt 0pt 0pt 27.6pt; padding-left:8.4pt; text-align:justify; text-indent:0pt">
+          <span style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">1.3
+            “</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">单招一卡通</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">”</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">指由公司合法拥有并运营的、标注名称为</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">“</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">单招一卡通</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">”</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">的客户端应用程序以及相关网站。</span>
+        </li>
+      </ul>
+      <ul type="disc" style="margin:0pt; padding-left:0pt">
+        <li
+          style="color:#4a4a4a; font-family:serif; font-size:10pt; margin:0pt 0pt 0pt 27.6pt; padding-left:8.4pt; text-align:justify; text-indent:0pt">
+          <span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">1.4</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">&#xa0;</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">本协议内容同时包括公司已经发布及后续可能不断发布的关于</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">“</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">单招一卡通</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">”</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">软件及相关服务的相关协议、规则等内容。前述内容一经正式发布,并以适当的方式送达用户(网站公布、系统通知等),即为本协议不可分割的组成部分,您应同样遵守。</span>
+        </li>
+      </ul>
+      <p style="margin:0pt; text-align:justify"><span
+          style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; font-weight:bold; text-transform:none">2、使用“单招一卡通”软件及相关服务</span>
+      </p>
+      <ul type="disc" style="margin:0pt; padding-left:0pt">
+        <li
+          style="color:#4a4a4a; font-family:serif; font-size:10pt; margin:0pt 0pt 0pt 27.6pt; padding-left:8.4pt; text-align:justify; text-indent:0pt">
+          <span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">2.1</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">&#xa0;</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">您使用</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">“</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">单招一卡通</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">”</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">软件及相关服务,可以通过</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">公司官网</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">、公司已授权的第三方下载等方式获取</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">“</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">单招一卡通</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">”</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">客户端应用程序或访问</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">“</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">单招一卡通</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">”</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">相关网站。若您并非从公司或经公司授权的第三方获取本软件的,公司无法保证非官方版本的</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">“</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">单招一卡通</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">”</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">软件能够正常使用,您因此遭受的损失与公司无关。</span>
+        </li>
+      </ul>
+      <ul type="disc" style="margin:0pt; padding-left:0pt">
+        <li
+          style="color:#4a4a4a; font-family:serif; font-size:10pt; margin:0pt 0pt 0pt 27.6pt; padding-left:8.4pt; text-align:justify; text-indent:0pt">
+          <span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">2.2</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">&#xa0;</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">您可根据自行需要使用</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">“</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">单招一卡通</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">”</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">软件及相关服务或更新</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">“</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">单招一卡通</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">”</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">版本,如您不再需要使用</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">“</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">单招一卡通</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">”</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">软件及相关服务可自行卸载。</span>
+        </li>
+      </ul>
+      <ul type="disc" style="margin:0pt; padding-left:0pt">
+        <li
+          style="color:#4a4a4a; font-family:serif; font-size:10pt; margin:0pt 0pt 0pt 27.6pt; padding-left:8.4pt; text-align:justify; text-indent:0pt">
+          <span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">2.3</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">&#xa0;</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">为更好的提升用户体验及服务,公司将不定期提供软件更新或改变(包括但不限于软件修改、升级、功能强化、开发新服务、软件替换等)。为保证</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">“</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">单招一卡通</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">”</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">软件及相关服务安全、提升用户服务,本软件及相关服务更新或部分服务内容更新后,在可能的情况下,公司将以包括但不限于系统提示、公告、站内信等方式提示用户,用户有权选择接受更新版本或服务,如用户不接受,部分功能将受到限制。</span>
+        </li>
+      </ul>
+      <ul type="disc" style="margin:0pt; padding-left:0pt">
+        <li
+          style="font-family:serif; font-size:10pt; margin:0pt 0pt 0pt 27.6pt; padding-left:8.4pt; text-align:justify; text-indent:0pt">
+          <span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">2.4</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">&#xa0;</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">您理解,您使用</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">“</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">单招一卡通</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">”</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">软件及相关服务需自行准备与软件及相关服务有关的终端设备(如电脑、手机等),一旦您在其终端设备中打开</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">“</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">单招一卡通</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">”</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">软件或访问</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">“</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">单招一卡通</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">”</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">相关网站,即视为您使用</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">“</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">单招一卡通</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">”</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">软件及相关服务。为充分实现</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">“</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">单招一卡通</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">”</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">的全部功能,您需要将其终端设备联网,您理解由您承担所需要的费用(如流量费、上网费等)。</span>
+        </li>
+      </ul>
+      <p style="margin:0pt; text-align:justify"><span
+          style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; font-weight:bold; text-transform:none">3、关于“账号”</span>
+      </p>
+      <ul type="disc" style="margin:0pt; padding-left:0pt">
+        <li
+          style="color:#4a4a4a; font-family:serif; font-size:10pt; margin:0pt 0pt 0pt 27.6pt; padding-left:8.4pt; text-align:justify; text-indent:0pt">
+          <span style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">3.1
+          </span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; font-weight:bold; text-transform:none">您理解并承诺,您所设置的账号不得违反国家法律法规及公司的相关规则,您的账号名称、头像和简介等注册信息及其他个人信息中不得出现违法和不良信息,未经他人许可不得用他人名义(包括但不限于冒用他人姓名、名称、字号、头像等足以让人引起混淆的方式)</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; font-weight:bold; text-transform:none">设置</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; font-weight:bold; text-transform:none">账号,不得恶意注册</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; font-weight:bold; text-transform:none">“</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; font-weight:bold; text-transform:none">单招一卡通</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; font-weight:bold; text-transform:none">”</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; font-weight:bold; text-transform:none">账号(包括但不限于频繁注册、批量注册账号等行为)。您在账号使用过程中需遵守相关法律法规,不得实施任何侵害国家利益、损害其他公民合法权益,有害社会道德风尚的行为。公司有权对您提交进行审核。</span>
+        </li>
+      </ul>
+      <ul type="disc" style="margin:0pt; padding-left:0pt">
+        <li
+          style="color:#4a4a4a; font-family:serif; font-size:10pt; margin:0pt 0pt 0pt 27.6pt; padding-left:8.4pt; text-align:justify; text-indent:0pt">
+          <span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; font-weight:bold; text-transform:none">3.</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; font-weight:bold; text-transform:none">2</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; font-weight:bold; text-transform:none">&#xa0;</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; font-weight:bold; text-transform:none">您在</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; font-weight:bold; text-transform:none">“</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; font-weight:bold; text-transform:none">单招一卡通</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; font-weight:bold; text-transform:none">”</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; font-weight:bold; text-transform:none">中的账号所有权及有关权益均归公司所有,您完成注册手续后仅享有该账号的使用权。您的账号仅限于您本人使用,未经公司书面同意,禁止以任何形式赠与、借用、出租、转让、售卖或以其他方式许可他人使用该账号。如果公司发现或者有合理理由认为使用者并非账号</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; font-weight:bold; text-transform:none">所有</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; font-weight:bold; text-transform:none">人,公司有权在未通知您的情况下,暂停或终止向该注册账号提供服务,并有权注销该账号,而无需向该账号的用户承担法律责任。</span>
+        </li>
+      </ul>
+      <ul type="disc" style="margin:0pt; padding-left:0pt">
+        <li
+          style="color:#4a4a4a; font-family:serif; font-size:10pt; margin:0pt 0pt 0pt 27.6pt; padding-left:8.4pt; text-align:justify; text-indent:0pt">
+          <span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">3.</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">3</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">&#xa0;</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">您有责任维护个人账号、密码的安全性与保密性,并对您以账号名义所从事的活动承担全部法律责任,包括但不限于您在</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">“</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">单招一卡通</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">”</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">上进行的任何数据修改、言论发表等操作行为。您应高度重视对账号与密码的保密,在任何情况下不向他人透露账号及密码。若发现他人未经许可使用您的账号或发生其他任何安全漏洞问题时,您应当立即通知公司。</span>
+        </li>
+      </ul>
+      <ul type="disc" style="margin:0pt; padding-left:0pt">
+        <li
+          style="color:#4a4a4a; font-family:serif; font-size:10pt; margin:0pt 0pt 0pt 27.6pt; padding-left:8.4pt; text-align:justify; text-indent:0pt">
+          <span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">3.</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">4</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">&#xa0;</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">公司特别提醒您应妥善保管您的账号和密码。当您使用完毕后,应安全退出。因您保管不当可能导致遭受盗号或密码丢失,责任由您自行承担。</span>
+        </li>
+      </ul>
+      <ul type="disc" style="margin:0pt; padding-left:0pt">
+        <li
+          style="color:#4a4a4a; font-family:serif; font-size:10pt; margin:0pt 0pt 0pt 27.6pt; padding-left:8.4pt; text-align:justify; text-indent:0pt">
+          <span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">3.</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">5</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">&#xa0;</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">您理解并同意,除您登录、使用</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">“</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">单招一卡通</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">”</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">软件及相关服务外,您还可以用</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">“</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">单招一卡通</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">”</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">账号登录使用公司及其关联公司、控制公司提供的其他软件、服务。您以</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">“</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">单招一卡通</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">”</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">账号登陆并使用前述服务的,同样应受实际服务提供方的《用户协议》及其他协议条款约束。</span>
+        </li>
+      </ul>
+      <ul type="disc" style="margin:0pt; padding-left:0pt">
+        <li
+          style="color:#4a4a4a; font-family:serif; font-size:10pt; margin:0pt 0pt 0pt 27.6pt; padding-left:8.4pt; text-align:justify; text-indent:0pt">
+          <span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">3.</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">6</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">&#xa0;</span><span
+            style="color:#4a4a4a; font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">因您自身原因或其他不可抗因素而导致账号被盗、丢失,均由您本人承担责任,公司不承担任何责任。</span>
+        </li>
+      </ul>
+      <p style="margin:0pt 0pt 10.5pt; text-align:justify"><span
+          style="font-family:阿里巴巴普惠体; font-size:10.5pt; font-style:normal; text-transform:none">&#xa0;</span></p>
+    </div>
+  </body>
+</html>

+ 2 - 0
back-ui/public/robots.txt

@@ -0,0 +1,2 @@
+User-agent: *
+Disallow: /

+ 36 - 0
ie-admin/src/main/java/com/ruoyi/web/controller/front/FrontAdjustWrongController.java

@@ -0,0 +1,36 @@
+package com.ruoyi.web.controller.front;
+
+import com.ruoyi.back.domain.BCustomerQuestionError;
+import com.ruoyi.back.service.IBCustomerQuestionErrorService;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Date;
+
+@Api(tags = "04 题目纠错")
+@RestController
+@RequestMapping("front/adjustWrong/")
+public class FrontAdjustWrongController extends BaseController {
+    @Autowired
+    private IBCustomerQuestionErrorService bCustomerQuestionErrorService;
+
+    @ApiOperation("02 题目纠错")
+    @PostMapping(value = "/correctQuestion")
+    @ResponseBody
+    public AjaxResult correctQuestion(@RequestBody BCustomerQuestionError wrongQuestion) {
+        if(StringUtils.isNull(wrongQuestion.getQuestionid())){
+            return AjaxResult.error("题目id不能为空");
+        }
+        wrongQuestion.setCustomercode(String.valueOf(SecurityUtils.getLoginUser().getUserId()));
+        wrongQuestion.setCreateTime(new Date());
+        bCustomerQuestionErrorService.insertBCustomerQuestionError(wrongQuestion);
+        return AjaxResult.success("纠错成功");
+    }
+
+}

+ 2 - 6
ie-admin/src/main/java/com/ruoyi/web/controller/front/FrontExamController.java

@@ -49,7 +49,7 @@ public class FrontExamController {
     public AjaxResult subjects()
     {
         SysUser sysUser = SecurityUtils.getLoginUser().getUser();
-        List<DzSubject> list = dzSubjectService.selectDzSubjectBySubjectIds(ExamType.OHS.equals(sysUser.getExamType()) ? new Long[] {1L, 2L, 3L, 11L} : new Long[] {11L});
+        List<DzSubject> list = dzSubjectService.selectDzSubjectBySubjectIds(ExamType.OHS.equals(sysUser.getExamType()) ? new Long[] {11L} : new Long[] {11L}); // 中职暂停 1L, 2L, 3L,
         JSONObject evalCounts = JSONObject.parseObject(sysUserService.selectUserById(sysUser.getUserId()).getEvalCounts());
         return AjaxResult.success(list.stream().map(t -> {
             JSONObject o = new JSONObject();
@@ -95,11 +95,7 @@ public class FrontExamController {
 
     @ApiOperation("04 取答卷")
     @GetMapping(value = "loadExaminee")
-    public AjaxResult loadExaminee(@ApiParam("答卷ID") @RequestParam(required = false) Long examineeId, @RequestBody JSONObject body) {
-        // 检查状态,以决定是否返回答案
-        if(null == examineeId) {
-            examineeId = body.getLongValue("examineeId");
-        }
+    public AjaxResult loadExaminee(@ApiParam("答卷ID") @RequestParam(required = false) Long examineeId) {
         return AjaxResult.success(examService.loadExaminee(examineeId, false));
     }
 

+ 4 - 1
ie-admin/src/main/java/com/ruoyi/web/controller/front/FrontSyMajorRelationController.java

@@ -7,6 +7,7 @@ import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.core.text.Convert;
+import com.ruoyi.common.enums.ExamType;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.core.content.VistorContextHolder;
@@ -216,7 +217,9 @@ public class FrontSyMajorRelationController extends BaseController {
         } else if(null != batch) {
             query.setType(batch >= 4 ? "专科" : "本科");
         }
-        query.setExamType(ConstantUtil.getExamTypeData(user.getExamType().title()));
+        String examType = null==user?(null==VistorContextHolder.getExamType()?"单招(应届普高)":VistorContextHolder.getExamType().name()):(null==user.getExamType()?"单招(应届普高)":user.getExamType().title());
+//        query.setExamType(ConstantUtil.getExamTypeData(user.getExamType().title()));
+        query.setExamType(ConstantUtil.getExamTypeData(examType));
         List<SyMajor> majorList = syMajorService.selectSyMajorList(query);
         List<SyVocational> toList = new ArrayList<>();
         majorList.forEach(major->{

+ 8 - 4
ie-admin/src/main/java/com/ruoyi/web/service/ExamService.java

@@ -182,9 +182,10 @@ public class ExamService {
         for(PaperVO.QuestionAnswer question : answerSheet.getQuestions()) {
             if(CollectionUtils.isNotEmpty(question.getSubQuestions())) {
                 for(PaperVO.QuestionAnswer sq : question.getSubQuestions()) {
+                    PaperVO.QuestionAnswer stdAnswer = questionMap.get(sq.getId());
                     LearnAnswer answer = buildAnswer(answerSheet, questionMap, sq, answersList);
                     if(answerSheet.getIsDone()) {
-                        totalScore += sq.getScore();
+                        totalScore += stdAnswer.getTotalScore();
                         score += answer.getScore();
                         if(!answer.getState().equals(1)) {
                             wrongCount++;
@@ -192,9 +193,10 @@ public class ExamService {
                     }
                 }
             } else {
+                PaperVO.QuestionAnswer stdAnswer = questionMap.get(question.getId());
                 LearnAnswer answer = buildAnswer(answerSheet, questionMap, question, answersList);
                 if(answerSheet.getIsDone()) {
-                    totalScore += question.getScore();
+                    totalScore += stdAnswer.getTotalScore();
                     score += answer.getScore();
                     if(!answer.getState().equals(1)) {
                         wrongCount++;
@@ -251,6 +253,8 @@ public class ExamService {
             if(PaperType.Practice.getVal().equals(exitExaminee.getPaperType())) {
                 learnPlanService.updateLearnPlan(exitExaminee.getStudentId());
                 calculateWrongAnswers(exitExaminee, questionMap, answersList, PaperType.Practice.name());
+            } else if(PaperType.Simulated.getVal().equals(exitExaminee.getPaperType())) {
+                calculateWrongAnswers(exitExaminee, questionMap, answersList, PaperType.Simulated.name());
             }
         }
     }
@@ -334,8 +338,8 @@ public class ExamService {
         answer.setNotKnow(null != question.getIsNotKnow() && question.getIsNotKnow());
         answer.setState(question.calcState(stdAnswer, answerSheet.getIsDone()));
         if (answerSheet.getIsDone()) {
-            answer.setScore(answer.getState() == 1 ? stdAnswer.getScore() : 0);
-            answer.setScoreRate(answer.getScore() * 100 / stdAnswer.getScore());
+            answer.setScore(answer.getState() == 1 ? stdAnswer.getTotalScore() : 0);
+            answer.setScoreRate(answer.getScore() * 100 / stdAnswer.getTotalScore());
         }
         return answer;
     }

+ 220 - 7
ie-admin/src/main/java/com/ruoyi/web/service/PaperService.java

@@ -44,8 +44,23 @@ public class PaperService {
         this.questionsMapper = questionsMapper;
         this.learnQuestionsService = learnQuestionsService;
         this.learnDirectedKnowledgeMapper = learnDirectedKnowledgeMapper;
-        // buildSimulatedPaper(20154L, 11L);
         this.wishUniversitiesService = wishUniversitiesService;
+        // buildSimulatedPaper(20154L, 11L);
+        // test2();
+    }
+
+    public void test2() {
+        TestPaperVO.PaperDef paperDef = new TestPaperVO.PaperDef();
+        paperDef.setFillExclude(true);
+        paperDef.setKnowIds(Lists.newArrayList(1016L,1101L,1091L, 1103L));
+        List<TestPaperVO.TypeDef> typeDefList= Lists.newArrayList();
+        typeDefList.add(new TestPaperVO.TypeDef("判断题", "判断题", 20, 2));
+        typeDefList.add(new TestPaperVO.TypeDef("单选题", "单选题", 10, 1));
+        typeDefList.add(new TestPaperVO.TypeDef("多选题", "多选题", 10, 2));
+        paperDef.setTypes(typeDefList);
+        paperDef.setTotal(40L);
+        List<LearnPaperQuestion> questionList = getQuestionsByType(null, paperDef);
+        return;
     }
 
     public void test() {
@@ -114,6 +129,8 @@ public class PaperService {
             } else {
                 BeanUtils.copyProperties(lqs, qs, "title", "options", "parse", "answer1", "answer2");
             }
+            qs.setTotalScore(lqs.getScore());
+            qs.setScore(null);
             QuestionType qt = QuestionType.of(lqs.getQtpye());
             qs.setTypeId(qt.getVal());
             qs.setIsFavorite(lqs.isCollect());
@@ -123,6 +140,7 @@ public class PaperService {
                 qs.setState(answer.getState());
                 qs.setIsMark(answer.getMark());
                 qs.setIsNotKnow(answer.getNotKnow());
+                qs.setScore(answer.getScore());
             }
             if(StringUtils.isNotBlank(lqs.getTitle0())) { // 大题
                 PaperVO.QuestionAnswer qg = gropuMap.get(lqs.getTitle0());
@@ -154,13 +172,13 @@ public class PaperService {
         BBusiWishUniversities universities = wishUniversitiesService.selectBBusiWishUniversitiesById(universityId);
         for(LearnDirectedKnowledge dk : directedKnowledgeList) {
             TestPaperVO.PaperDef paperDef = new TestPaperVO.PaperDef();
-            paperDef.setTotal(120L);  // 120题
+            paperDef.setTotal(100L);  // 120题
             paperDef.setFillExclude(false);
             paperDef.setKnowIds(Stream.of(dk.getKnowledges().split(",")).map(Long::parseLong).collect(Collectors.toList()));
             List<TestPaperVO.TypeDef> typeDefList= Lists.newArrayList();
             typeDefList.add(new TestPaperVO.TypeDef("单选题", "单选题", 40, 3));
             typeDefList.add(new TestPaperVO.TypeDef("多选题", "多选题", 40, 3));
-            typeDefList.add(new TestPaperVO.TypeDef("判断题", "判断题", 40, 3));
+            typeDefList.add(new TestPaperVO.TypeDef("判断题", "判断题", 20, 3));
             paperDef.setTypes(typeDefList);
 
             LearnPaper paper = new LearnPaper();
@@ -171,10 +189,10 @@ public class PaperService {
             paper.setYear(dk.getYear());
             paper.setStatus(PaperStatus.Valid.getVal());
             paper.setDirectKey(universityId + "_" + dk.getExamineeTypes() + "_" + dk.getDirectKey());
-            paper.setNumber(120);
-            paper.setFenshu(360);
+            paper.setNumber(100);
+            paper.setFenshu(300);
             AnswerSheet.PaperCond info = new AnswerSheet.PaperCond();
-            info.setScore(360);
+            info.setScore(300);
             info.setTime(90 * 60);
             info.setTypes(typeDefList.stream().map(t -> new AnswerSheet.PaperCondType(t.getType(), t.getCount(), t.getScore())).collect(Collectors.toList()));
             paper.setPaperInfo(JSONObject.toJSONString(info));
@@ -229,6 +247,19 @@ public class PaperService {
         return paper;
     }
 
+    /**
+     * 按类型,知识点平均分配组卷
+     * @param studentId
+     * @param paperDef
+     * @return
+     */
+    public List<LearnPaperQuestion> getQuestionsByType(Long studentId, TestPaperVO.PaperDef paperDef) {
+        // 统计知识点+类型的有效数量 TODO 总量可以缓存
+        Map<String, KnowTypeAssign> knowTypeAssignMap = buildKnowTypeAssignMap(studentId, paperDef);
+        assignTypeFirstWithCount(paperDef, knowTypeAssignMap); // 知识优先,类型可变
+        return getQuestions(studentId, paperDef, knowTypeAssignMap);
+    }
+
     /**
      * 按知识点,题型平均分配组卷
      * @param studentId
@@ -243,6 +274,188 @@ public class PaperService {
         return getQuestions(studentId, paperDef, knowTypeAssignMap);
     }
 
+    private void assignTypeFirstWithCount(TestPaperVO.PaperDef paperDef, Map<String, KnowTypeAssign> knowTypeAssignMap) {
+        AtomicLong assignCount = new AtomicLong(0);
+        Map<Long, Long> knownAdjMap = Maps.newHashMap();
+        Map<String, Set<Long>> typeKnowIdMap = Maps.newHashMap();
+        Map<String, Long> typeFillCntMap = Maps.newHashMap();
+        Map<String, Long> typeMinCntMap = Maps.newHashMap();
+        // 所有知识点,正常补全一次,哪个知识点差多少先记录下
+        for(TestPaperVO.TypeDef typeDef : paperDef.getTypes()) {
+            Long avgKnowTypeCount = typeDef.getCount().longValue() / paperDef.getKnowIds().size();
+            if(avgKnowTypeCount.equals(0L)) {
+                avgKnowTypeCount = 1L;
+            }
+            assignCount.set(0);
+            for(Long knowId : paperDef.getKnowIds()) {
+                Long tmpMinKnowTypeCount = assignKnownCount(knowId, typeDef.getType(), knowTypeAssignMap, avgKnowTypeCount, paperDef.getFillExclude(), assignCount);
+                if (tmpMinKnowTypeCount > 0) {
+                    // 记录最小数
+                    Long minKnowTypeCount = typeMinCntMap.get(typeDef.getType());
+                    typeMinCntMap.put(typeDef.getType(), null == minKnowTypeCount ? tmpMinKnowTypeCount : Math.min(minKnowTypeCount, tmpMinKnowTypeCount));
+                    // 记录有效知识点
+                    Set<Long> knownIdSet = typeKnowIdMap.get(typeDef.getType());
+                    if(null == knownIdSet) {
+                        typeKnowIdMap.put(typeDef.getType(), Sets.newHashSet(knowId));
+                    } else {
+                        knownIdSet.add(knowId);
+                    }
+                } else if(tmpMinKnowTypeCount < 0) { // 差的个数移到下一类型,补充的类型也移到下一类型
+                    // 记录知识点差额
+                    Long lackCount = knownAdjMap.get(knowId);
+                    knownAdjMap.put(knowId, (null != lackCount ? lackCount : 0L) - tmpMinKnowTypeCount);
+                }
+            }
+            typeFillCntMap.put(typeDef.getType(), assignCount.get());
+        }
+        knownAdjMap.clear();
+        // 优先补充差的知识点
+        for(TestPaperVO.TypeDef typeDef : paperDef.getTypes()) {
+            assignCount.set(typeFillCntMap.get(typeDef.getType()));
+            Long lackTotal = typeDef.getCount().longValue();
+            Long minCount = typeMinCntMap.get(typeDef.getType());
+            Set<Long> knownIdSet = typeKnowIdMap.get(typeDef.getType());
+            do {
+                if(lackTotal <= assignCount.get()) {
+                    break;
+                }
+                Long needCount = lackTotal - assignCount.get();
+                Long avgKnowTypeCount = knownIdSet.size() > 0 ? Math.min(minCount, needCount / knownIdSet.size()) : 1;
+                if (avgKnowTypeCount <= 0L) {
+                    avgKnowTypeCount = 1L;
+                }
+                minCount = Long.MAX_VALUE;
+                Set<Long> validIdSet = Sets.newHashSet(knownIdSet);
+                knownIdSet.clear();
+                for(Long knowId : paperDef.getKnowIds()) {
+                    if(knownIdSet.size() > 0 && !validIdSet.contains(knowId)) {
+                        continue;
+                    }
+                    // Long lastLack = null; knownAdjMap.remove(knowId); null != lastLack ? lastLack + avgKnowTypeCount :
+                    Long knowTypeCount = avgKnowTypeCount;
+                    if (knowTypeCount > 0) {
+//                        Long oldCnt = assignCount.get();
+                        Long tmpMinKnowTypeCount = assignKnownCount(knowId, typeDef.getType(), knowTypeAssignMap, knowTypeCount, paperDef.getFillExclude(), assignCount);
+//                        Long fillCnt = oldCnt - assignCount.get();
+//                        if(fillCnt < 0) {
+//                            Long oldFill = knownAdjMap.get(knowId);
+//                            knownAdjMap.put(knowId, null == oldFill ? fillCnt : oldFill - fillCnt);
+//                        }
+                        if (tmpMinKnowTypeCount > 0) {
+                            minCount = Math.min(minCount, tmpMinKnowTypeCount);
+                            knownIdSet.add(knowId);
+                        } else if(tmpMinKnowTypeCount < 0) { // 差的个数移到下一类型,补充的类型也移到下一类型
+                            // knownAdjMap.put(knowId, -tmpMinKnowTypeCount);
+                        }
+                    } else if(knowTypeCount < 0) {
+                        // knownAdjMap.put(knowId, knowTypeCount);
+                    }
+                    if(lackTotal <= assignCount.get()) {
+                        break;
+                    }
+                }
+            } while(true);
+        }
+    }
+
+    private void assignTypeFirstWithCount2(TestPaperVO.PaperDef paperDef, Map<String, KnowTypeAssign> knowTypeAssignMap) {
+        Map<String, Set<Long>> typeKnownIdsMap = knowTypeAssignMap.values().stream().collect(Collectors.groupingBy(KnowTypeAssign::getType, Collectors.mapping(KnowTypeAssign::getKnowId, Collectors.toSet())));
+        Map<Long, Long> knownAdjMap = Maps.newHashMap();
+        AtomicLong assignCount = new AtomicLong(0);
+        Integer needCount = paperDef.getTypes().size();
+        Set<String> doneSet = Sets.newHashSet();
+        do {
+            for(TestPaperVO.TypeDef typeDef : paperDef.getTypes()) { // 每个类型,让所有知识先平均补充,补充的由后面填充
+                Long minKnowTypeCount = Long.MAX_VALUE;
+                // 首先按平均数量填充
+                assignCount.set(0L);
+                Long lackTotal = typeDef.getCount().longValue();
+                Set<Long> knownIdSet;
+                if(knownAdjMap.size() > 0) { // 先补充之前的同类型
+                    knownIdSet = Sets.newHashSet();
+                    for(Long knowId : paperDef.getKnowIds()) {
+                        Long lastLack = knownAdjMap.remove(knowId);
+                        Long knowTypeCount = null != lastLack ? lastLack : 0;
+                        if(knowTypeCount >= 0) {
+                            Long tmpMinKnowTypeCount = assignKnownCount(knowId, typeDef.getType(), knowTypeAssignMap, knowTypeCount, paperDef.getFillExclude(), assignCount);
+                            if (tmpMinKnowTypeCount > 0) {
+                                minKnowTypeCount = Math.min(minKnowTypeCount, tmpMinKnowTypeCount);
+                                knownIdSet.add(knowId);
+                            } else if(tmpMinKnowTypeCount < 0) { // 差的个数移到下一类型,补充的类型也移到下一类型
+                                knownAdjMap.put(knowId, -tmpMinKnowTypeCount);
+                            }
+                        } else if(knowTypeCount < 0) {
+                            knownAdjMap.put(knowId, knowTypeCount);
+                        }
+                    }
+                } else {
+                    knownIdSet = typeKnownIdsMap.get(typeDef.getType());
+                }
+                if(lackTotal <= assignCount.get()) {
+                    doneSet.add(typeDef.getType());
+                    continue;
+                }
+                Long avgKnowTypeCount = (lackTotal - assignCount.get()) / paperDef.getKnowIds().size();
+                if (avgKnowTypeCount <= 0L) {
+                    avgKnowTypeCount = 1L;
+                }
+                for(Long knowId : paperDef.getKnowIds()) {
+                    Long lastLack = knownAdjMap.remove(knowId);
+                    Long knowTypeCount = null != lastLack ? lastLack + avgKnowTypeCount : avgKnowTypeCount;
+                    if(knowTypeCount > 0) {
+                        Long tmpMinKnowTypeCount = assignKnownCount(knowId, typeDef.getType(), knowTypeAssignMap, knowTypeCount, paperDef.getFillExclude(), assignCount);
+                        if (tmpMinKnowTypeCount > 0) {
+                            minKnowTypeCount = Math.min(minKnowTypeCount, tmpMinKnowTypeCount);
+                            knownIdSet.add(knowId);
+                        } else if(tmpMinKnowTypeCount < 0) { // 差的个数移到下一类型,补充的类型也移到下一类型
+                            knownAdjMap.put(knowId, -tmpMinKnowTypeCount);
+                        }
+                    } else if(knowTypeCount < 0) {
+                        knownAdjMap.put(knowId, knowTypeCount);
+                    }
+                }
+                // 然后进行多级补充,多退少补
+                do {
+                    if(lackTotal <= assignCount.get()) {
+                        doneSet.add(typeDef.getType());
+                        break;
+                    }
+                    avgKnowTypeCount = Math.min(minKnowTypeCount, (lackTotal - assignCount.get()) / knownIdSet.size());
+                    if (avgKnowTypeCount <= 0L) {
+                        avgKnowTypeCount = 1L;
+                    }
+                    minKnowTypeCount = Long.MAX_VALUE;
+                    Set<Long> validIdSet = Sets.newHashSet(knownIdSet);
+                    knownIdSet.clear();
+                    for(Long knowId : paperDef.getKnowIds()) {
+                        if(!validIdSet.contains(knowId)) {
+                            continue;
+                        }
+                        Long lastLack = knownAdjMap.remove(knowId);
+                        Long knowTypeCount = null != lastLack ? lastLack + avgKnowTypeCount : avgKnowTypeCount;
+                        if (knowTypeCount > 0) {
+                            Long oldCnt = assignCount.get();
+                            Long tmpMinKnowTypeCount = assignKnownCount(knowId, typeDef.getType(), knowTypeAssignMap, knowTypeCount, paperDef.getFillExclude(), assignCount);
+                            Long fillCnt = oldCnt - assignCount.get();
+                            if(fillCnt < 0) {
+                                Long oldFill = knownAdjMap.get(knowId);
+                                knownAdjMap.put(knowId, null == oldFill ? fillCnt : oldFill - fillCnt);
+                            }
+                            if (tmpMinKnowTypeCount > 0) {
+                                minKnowTypeCount = Math.min(minKnowTypeCount, tmpMinKnowTypeCount);
+                                knownIdSet.add(knowId);
+                            } else if(tmpMinKnowTypeCount < 0) { // 差的个数移到下一类型,补充的类型也移到下一类型
+                                knownAdjMap.put(knowId, -tmpMinKnowTypeCount);
+                            }
+                        } else if(knowTypeCount < 0) {
+                            knownAdjMap.put(knowId, knowTypeCount);
+                        }
+                    }
+                } while(true);
+            }
+        } while(doneSet.size() < needCount);
+    }
+
     private void assignKnowFirst(TestPaperVO.PaperDef paperDef, Map<String, KnowTypeAssign> knowTypeAssignMap) {
         // 循环补充未做+已做,如果知识点总数不够时才填充其他知识点的
         Long lackTotal = paperDef.getTotal();
@@ -440,7 +653,7 @@ public class PaperService {
         } else if(lack < 0) {
             return -lack;
         }
-        return 0L;
+        return -lack;
     }
 
     /**

+ 91 - 0
ie-system/src/main/java/com/ruoyi/back/domain/BCustomerQuestionError.java

@@ -0,0 +1,91 @@
+package com.ruoyi.back.domain;
+
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+/**
+ * 题目纠错对象 b_customer_question_error
+ *
+ * @author mingxue
+ * @date 2021-11-29
+ */
+public class BCustomerQuestionError extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** ID */
+    private Long id;
+
+    /** 客户 */
+    @Excel(name = "客户")
+    private String customercode;
+
+    /** 题目ID */
+    @Excel(name = "题目ID")
+    private String questionid;
+
+    /** 是否解决 */
+    @Excel(name = "是否解决")
+    private Integer status;
+    private SysUser user;
+
+    public SysUser getUser() {
+        return user;
+    }
+
+    public void setUser(SysUser user) {
+        this.user = user;
+    }
+
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+    public Long getId()
+    {
+        return id;
+    }
+    public void setCustomercode(String customercode)
+    {
+        this.customercode = customercode;
+    }
+
+    public String getCustomercode()
+    {
+        return customercode;
+    }
+    public void setQuestionid(String questionid)
+    {
+        this.questionid = questionid;
+    }
+
+    public String getQuestionid()
+    {
+        return questionid;
+    }
+    public void setStatus(Integer status)
+    {
+        this.status = status;
+    }
+
+    public Integer getStatus()
+    {
+        return status;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("customercode", getCustomercode())
+            .append("questionid", getQuestionid())
+            .append("remark", getRemark())
+            .append("createTime", getCreateTime())
+            .append("status", getStatus())
+            .toString();
+    }
+}

+ 62 - 0
ie-system/src/main/java/com/ruoyi/back/mapper/BCustomerQuestionErrorMapper.java

@@ -0,0 +1,62 @@
+package com.ruoyi.back.mapper;
+
+import com.ruoyi.back.domain.BCustomerQuestionError;
+
+import java.util.List;
+
+/**
+ * 题目纠错Mapper接口
+ * 
+ * @author mingxue
+ * @date 2021-11-29
+ */
+public interface BCustomerQuestionErrorMapper 
+{
+    /**
+     * 查询题目纠错
+     * 
+     * @param id 题目纠错ID
+     * @return 题目纠错
+     */
+    public BCustomerQuestionError selectBCustomerQuestionErrorById(Long id);
+
+    /**
+     * 查询题目纠错列表
+     * 
+     * @param bCustomerQuestionError 题目纠错
+     * @return 题目纠错集合
+     */
+    public List<BCustomerQuestionError> selectBCustomerQuestionErrorList(BCustomerQuestionError bCustomerQuestionError);
+
+    /**
+     * 新增题目纠错
+     * 
+     * @param bCustomerQuestionError 题目纠错
+     * @return 结果
+     */
+    public int insertBCustomerQuestionError(BCustomerQuestionError bCustomerQuestionError);
+
+    /**
+     * 修改题目纠错
+     * 
+     * @param bCustomerQuestionError 题目纠错
+     * @return 结果
+     */
+    public int updateBCustomerQuestionError(BCustomerQuestionError bCustomerQuestionError);
+
+    /**
+     * 删除题目纠错
+     * 
+     * @param id 题目纠错ID
+     * @return 结果
+     */
+    public int deleteBCustomerQuestionErrorById(Long id);
+
+    /**
+     * 批量删除题目纠错
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteBCustomerQuestionErrorByIds(Long[] ids);
+}

+ 62 - 0
ie-system/src/main/java/com/ruoyi/back/service/IBCustomerQuestionErrorService.java

@@ -0,0 +1,62 @@
+package com.ruoyi.back.service;
+
+import com.ruoyi.back.domain.BCustomerQuestionError;
+
+import java.util.List;
+
+/**
+ * 题目纠错Service接口
+ * 
+ * @author mingxue
+ * @date 2021-11-29
+ */
+public interface IBCustomerQuestionErrorService 
+{
+    /**
+     * 查询题目纠错
+     * 
+     * @param id 题目纠错ID
+     * @return 题目纠错
+     */
+    public BCustomerQuestionError selectBCustomerQuestionErrorById(Long id);
+
+    /**
+     * 查询题目纠错列表
+     * 
+     * @param bCustomerQuestionError 题目纠错
+     * @return 题目纠错集合
+     */
+    public List<BCustomerQuestionError> selectBCustomerQuestionErrorList(BCustomerQuestionError bCustomerQuestionError);
+
+    /**
+     * 新增题目纠错
+     * 
+     * @param bCustomerQuestionError 题目纠错
+     * @return 结果
+     */
+    public int insertBCustomerQuestionError(BCustomerQuestionError bCustomerQuestionError);
+
+    /**
+     * 修改题目纠错
+     * 
+     * @param bCustomerQuestionError 题目纠错
+     * @return 结果
+     */
+    public int updateBCustomerQuestionError(BCustomerQuestionError bCustomerQuestionError);
+
+    /**
+     * 批量删除题目纠错
+     * 
+     * @param ids 需要删除的题目纠错ID
+     * @return 结果
+     */
+    public int deleteBCustomerQuestionErrorByIds(Long[] ids);
+
+    /**
+     * 删除题目纠错信息
+     * 
+     * @param id 题目纠错ID
+     * @return 结果
+     */
+    public int deleteBCustomerQuestionErrorById(Long id);
+}

+ 94 - 0
ie-system/src/main/java/com/ruoyi/back/service/impl/BCustomerQuestionErrorServiceImpl.java

@@ -0,0 +1,94 @@
+package com.ruoyi.back.service.impl;
+
+import com.ruoyi.back.domain.BCustomerQuestionError;
+import com.ruoyi.back.mapper.BCustomerQuestionErrorMapper;
+import com.ruoyi.back.service.IBCustomerQuestionErrorService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 题目纠错Service业务层处理
+ * 
+ * @author mingxue
+ * @date 2021-11-29
+ */
+@Service
+public class BCustomerQuestionErrorServiceImpl implements IBCustomerQuestionErrorService 
+{
+    @Autowired
+    private BCustomerQuestionErrorMapper bCustomerQuestionErrorMapper;
+
+    /**
+     * 查询题目纠错
+     * 
+     * @param id 题目纠错ID
+     * @return 题目纠错
+     */
+    @Override
+    public BCustomerQuestionError selectBCustomerQuestionErrorById(Long id)
+    {
+        return bCustomerQuestionErrorMapper.selectBCustomerQuestionErrorById(id);
+    }
+
+    /**
+     * 查询题目纠错列表
+     * 
+     * @param bCustomerQuestionError 题目纠错
+     * @return 题目纠错
+     */
+    @Override
+    public List<BCustomerQuestionError> selectBCustomerQuestionErrorList(BCustomerQuestionError bCustomerQuestionError)
+    {
+        return bCustomerQuestionErrorMapper.selectBCustomerQuestionErrorList(bCustomerQuestionError);
+    }
+
+    /**
+     * 新增题目纠错
+     * 
+     * @param bCustomerQuestionError 题目纠错
+     * @return 结果
+     */
+    @Override
+    public int insertBCustomerQuestionError(BCustomerQuestionError bCustomerQuestionError)
+    {
+        return bCustomerQuestionErrorMapper.insertBCustomerQuestionError(bCustomerQuestionError);
+    }
+
+    /**
+     * 修改题目纠错
+     * 
+     * @param bCustomerQuestionError 题目纠错
+     * @return 结果
+     */
+    @Override
+    public int updateBCustomerQuestionError(BCustomerQuestionError bCustomerQuestionError)
+    {
+        return bCustomerQuestionErrorMapper.updateBCustomerQuestionError(bCustomerQuestionError);
+    }
+
+    /**
+     * 批量删除题目纠错
+     * 
+     * @param ids 需要删除的题目纠错ID
+     * @return 结果
+     */
+    @Override
+    public int deleteBCustomerQuestionErrorByIds(Long[] ids)
+    {
+        return bCustomerQuestionErrorMapper.deleteBCustomerQuestionErrorByIds(ids);
+    }
+
+    /**
+     * 删除题目纠错信息
+     * 
+     * @param id 题目纠错ID
+     * @return 结果
+     */
+    @Override
+    public int deleteBCustomerQuestionErrorById(Long id)
+    {
+        return bCustomerQuestionErrorMapper.deleteBCustomerQuestionErrorById(id);
+    }
+}

+ 2 - 0
ie-system/src/main/java/com/ruoyi/learn/domain/PaperVO.java

@@ -76,6 +76,8 @@ public class PaperVO {
         @ApiModelProperty("答题正确状态 0 默认 1正确 2错误 3不会 4 未答")
         Integer state;
         @ApiModelProperty("试题标准分")
+        Integer totalScore;
+        @ApiModelProperty("学生得分")
         Integer score;
 
         List<QuestionAnswer> subQuestions;

+ 2 - 0
ie-system/src/main/java/com/ruoyi/learn/service/impl/LearnWrongBookServiceImpl.java

@@ -129,6 +129,8 @@ public class LearnWrongBookServiceImpl implements ILearnWrongBookService
                 t.setParse(q.getParse());
                 t.setType(q.getQtpye());
                 t.setTypeId(QuestionType.of(q.getQtpye()).getVal());
+                t.setAnswer1(q.getAnswer1());
+                t.setAnswer2(q.getAnswer2());
                 t.setAnswers(StringUtils.isNotBlank(t.getAnswer()) ? Arrays.asList(t.getAnswer().split(",")) : Lists.newArrayList());
                 t.setOptions(StringUtils.getOptions(q.getOptionA(), q.getOptionB(), q.getOptionC(), q.getOptionD(), q.getOptionE(), q.getOptionF(), q.getOptionG()));
             });

+ 11 - 9
ie-system/src/main/java/com/ruoyi/sy/service/impl/SyVocationalServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ruoyi.sy.service.impl;
 
 import java.util.ArrayList;
+import java.util.Comparator;
 import java.util.Iterator;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -16,19 +17,19 @@ import com.ruoyi.sy.service.ISyVocationalService;
 
 /**
  * 职业Service业务层处理
- * 
+ *
  * @author mingxue
  * @date 2022-03-30
  */
 @Service
-public class SyVocationalServiceImpl implements ISyVocationalService 
+public class SyVocationalServiceImpl implements ISyVocationalService
 {
     @Autowired
     private SyVocationalMapper syVocationalMapper;
 
     /**
      * 查询职业
-     * 
+     *
      * @param id 职业ID
      * @return 职业
      */
@@ -40,7 +41,7 @@ public class SyVocationalServiceImpl implements ISyVocationalService
 
     /**
      * 查询职业列表
-     * 
+     *
      * @param syVocational 职业
      * @return 职业
      */
@@ -57,7 +58,8 @@ public class SyVocationalServiceImpl implements ISyVocationalService
     public List<TreeSelectVocational> buildVocationalTreeSelect(List<SyVocational> vocationalList)
     {
         List<SyVocational> vocationalTrees = buildVocationalTree(vocationalList);
-        List<TreeSelectVocational> treeSelects =vocationalTrees.stream().map(TreeSelectVocational::new).collect(Collectors.toList());
+        List<TreeSelectVocational> treeSelects =vocationalTrees.stream().map(TreeSelectVocational::new).sorted(Comparator.comparing(TreeSelectVocational::getId))
+                .collect(Collectors.toList());
         return treeSelects;
     }
 
@@ -144,7 +146,7 @@ public class SyVocationalServiceImpl implements ISyVocationalService
 
     /**
      * 新增职业
-     * 
+     *
      * @param syVocational 职业
      * @return 结果
      */
@@ -157,7 +159,7 @@ public class SyVocationalServiceImpl implements ISyVocationalService
 
     /**
      * 修改职业
-     * 
+     *
      * @param syVocational 职业
      * @return 结果
      */
@@ -169,7 +171,7 @@ public class SyVocationalServiceImpl implements ISyVocationalService
 
     /**
      * 批量删除职业
-     * 
+     *
      * @param ids 需要删除的职业ID
      * @return 结果
      */
@@ -181,7 +183,7 @@ public class SyVocationalServiceImpl implements ISyVocationalService
 
     /**
      * 删除职业信息
-     * 
+     *
      * @param id 职业ID
      * @return 结果
      */

+ 86 - 0
ie-system/src/main/resources/mapper/back/BCustomerQuestionErrorMapper.xml

@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.back.mapper.BCustomerQuestionErrorMapper">
+
+    <resultMap type="BCustomerQuestionError" id="BCustomerQuestionErrorResult">
+        <result property="id"    column="id"    />
+        <result property="customercode"    column="customerCode"    />
+        <result property="questionid"    column="questionId"    />
+        <result property="remark"    column="remark"    />
+        <result property="createTime"    column="createTime"    />
+        <result property="status"    column="status"    />
+        <association property="user"    column="customerCode" javaType="SysUser" resultMap="SysUserResult" />
+    </resultMap>
+
+    <resultMap type="SysUser" id="SysUserResult">
+        <id     property="userId"       column="user_id"      />
+        <result property="userName"     column="user_name"    />
+        <result property="nickName"     column="nick_name"    />
+        <result property="phonenumber"  column="phonenumber"  />
+    </resultMap>
+
+    <sql id="selectBCustomerQuestionErrorVo">
+        select bcqe.id, bcqe.customerCode, bcqe.questionId, bcqe.remark, bcqe.createTime, bcqe.status
+             ,u.user_id,u.user_name,u.nick_name,u.phonenumber
+        from b_customer_question_error bcqe
+        LEFT JOIN sys_user u on bcqe.customerCode=u.user_id
+    </sql>
+
+    <select id="selectBCustomerQuestionErrorList" parameterType="BCustomerQuestionError" resultMap="BCustomerQuestionErrorResult">
+        <include refid="selectBCustomerQuestionErrorVo"/>
+        where 1=1
+            <if test="customercode != null  and customercode != ''"> and bcqe.customerCode = #{customercode}</if>
+            <if test="questionid != null  and questionid != ''"> and bcqe.questionId = #{questionid}</if>
+            <if test="createTime != null "> and bcqe.createTime = #{createTime}</if>
+            <if test="status != null "> and bcqe.status = #{status}</if>
+        order by id desc
+    </select>
+
+    <select id="selectBCustomerQuestionErrorById" parameterType="Long" resultMap="BCustomerQuestionErrorResult">
+        <include refid="selectBCustomerQuestionErrorVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertBCustomerQuestionError" parameterType="BCustomerQuestionError" useGeneratedKeys="true" keyProperty="id">
+        insert into b_customer_question_error
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="customercode != null">customerCode,</if>
+            <if test="questionid != null">questionId,</if>
+            <if test="remark != null and remark != ''">remark,</if>
+            <if test="createTime != null">createTime,</if>
+            <if test="status != null">status,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="customercode != null">#{customercode},</if>
+            <if test="questionid != null">#{questionid},</if>
+            <if test="remark != null and remark != ''">#{remark},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="status != null">#{status},</if>
+         </trim>
+    </insert>
+
+    <update id="updateBCustomerQuestionError" parameterType="BCustomerQuestionError">
+        update b_customer_question_error
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="customercode != null">customerCode = #{customercode},</if>
+            <if test="questionid != null">questionId = #{questionid},</if>
+            <if test="remark != null and remark != ''">remark = #{remark},</if>
+            <if test="createTime != null">createTime = #{createTime},</if>
+            <if test="status != null">status = #{status},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteBCustomerQuestionErrorById" parameterType="Long">
+        delete from b_customer_question_error where id = #{id}
+    </delete>
+
+    <delete id="deleteBCustomerQuestionErrorByIds" parameterType="String">
+        delete from b_customer_question_error where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 1 - 1
ie-system/src/main/resources/mapper/learn/LearnPaperMapper.xml

@@ -78,7 +78,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="fenshu != null">fenshu,</if>
             <if test="paperSource != null">paperSource,</if>
             <if test="directKey != null and directKey != ''">direct_key,</if>
-            <if test="paperInfo != null and paperInfo != ''">direct_key,</if>
+            <if test="paperInfo != null and paperInfo != ''">paper_info,</if>
             <if test="tiid != null">tiid,</if>
             <if test="osspath != null">osspath,</if>
             <if test="filename != null">filename,</if>

+ 1 - 1
ie-system/src/main/resources/mapper/learn/LearnWrongBookMapper.xml

@@ -163,7 +163,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
 
     <select id="findWrongQuestions" parameterType="map" resultMap="LearnWrongBookResult">
-        SELECT wb.`wrong_id`, wb.`question_id`, wb.`knownledge_id`, k.`name` knowledge, wb.`wrong_count`, wb.`answer`, qc.question_id>0 collect
+        SELECT wb.`wrong_id`, wb.`question_id`, wb.`knownledge_id`, k.`name` knowledge, wb.`wrong_count`, wb.`answer`, wb.`state`, qc.question_id>0 collect
         FROM `learn_wrong_book` wb
         JOIN `learn_questions` q ON wb.`question_id` = q.`id`
         LEFT JOIN `learn_knowledge_tree` k ON wb.`knownledge_id` = k.`id`

+ 8 - 1
ie-system/src/main/resources/mapper/syzy/BBusiWishUniversitiesMapper.xml

@@ -165,6 +165,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
           #{code}
         </foreach>
       </if>
+      <if test="majorCodes!= null">
+<!--        and u.code in (select distinct t2.collegeCode from b_busi_wish_universities_profession t2 where t2.code in <foreach item="majorCode" collection="majorCodes" open="(" separator="," close=")">#{majorCode}</foreach>-->
+        and u.id in (SELECT distinct t2.universityId from a_marjor_plan t2 where t2.majorCode in <foreach item="majorCode" collection="majorCodes" open="(" separator="," close=")">#{majorCode}</foreach>
+        <if test="examMajor != null "> and t2.examMajor = #{examMajor}</if>
+        )
+      </if>
     </where>
     <choose>
       <when test="filterRank!= null and filterRank"> order by u.star desc, u.code </when>
@@ -202,7 +208,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
       <if test="enrollLocations!= null"> and <foreach item="o" collection="enrollLocations" open="(" separator=" OR " close=")">u.enrollLocation like concat('%', #{o}, '%')</foreach></if>
       <if test="stars!= null"> and <foreach item="o" collection="stars" open="(" separator=" OR " close=")">u.star like concat('%', #{o}, '%')</foreach></if>
       <if test="majorCodes!= null">
-        and u.code in (select distinct t2.collegeCode from b_busi_wish_universities_profession t2 where t2.code in <foreach item="majorCode" collection="majorCodes" open="(" separator="," close=")">#{majorCode}</foreach>
+        <!--        and u.code in (select distinct t2.collegeCode from b_busi_wish_universities_profession t2 where t2.code in <foreach item="majorCode" collection="majorCodes" open="(" separator="," close=")">#{majorCode}</foreach>-->
+        and u.id in (SELECT distinct t2.universityId from a_marjor_plan t2 where t2.majorCode in <foreach item="majorCode" collection="majorCodes" open="(" separator="," close=")">#{majorCode}</foreach>
         <if test="examMajor != null "> and t2.examMajor = #{examMajor}</if>
         )
       </if>

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff