CommonService.java 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. package cn.com.qmth.examcloud.tool.service;
  2. import cn.com.qmth.examcloud.tool.cache.LoginSessionManager;
  3. import cn.com.qmth.examcloud.tool.config.SysProperty;
  4. import cn.com.qmth.examcloud.tool.service.batch_create_user.vo.RoleInfo;
  5. import cn.com.qmth.examcloud.tool.service.batch_create_user.vo.UserInfo;
  6. import cn.com.qmth.examcloud.tool.service.export_student_answer_and_score_detail.vo.CourseVO;
  7. import cn.com.qmth.examcloud.tool.utils.HttpHelper;
  8. import cn.com.qmth.examcloud.tool.utils.JsonMapper;
  9. import cn.com.qmth.examcloud.tool.vo.Pager;
  10. import cn.com.qmth.examcloud.tool.vo.user.User;
  11. import com.fasterxml.jackson.core.type.TypeReference;
  12. import com.fasterxml.jackson.databind.JsonNode;
  13. import org.apache.commons.collections4.CollectionUtils;
  14. import org.apache.commons.lang3.StringUtils;
  15. import org.slf4j.Logger;
  16. import org.slf4j.LoggerFactory;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.stereotype.Component;
  19. import java.util.ArrayList;
  20. import java.util.HashMap;
  21. import java.util.List;
  22. import java.util.Map;
  23. @Component
  24. public class CommonService {
  25. private final static Logger log = LoggerFactory.getLogger(CommonService.class);
  26. @Autowired
  27. private SysProperty sysProperty;
  28. public User login(String serverUrl, String loginName, String password, String smsCode) {
  29. // serverUrl 示例:abc.exam-cloud.cn
  30. String[] values = serverUrl.split("\\.");
  31. String domain = values[0] + ".ecs.qmth.com.cn";
  32. String httpUrl = "https://" + serverUrl;
  33. log.info("serverUrl:{} domain:{}", httpUrl, domain);
  34. Map<String, Object> params = new HashMap<>();
  35. params.put("domain", domain);
  36. params.put("accountType", "COMMON_LOGIN_NAME");
  37. params.put("accountValue", loginName);
  38. params.put("password", password);
  39. if (StringUtils.isNotBlank(smsCode)) {
  40. params.put("smsCode", smsCode);
  41. }
  42. return this.doLogin(httpUrl, params);
  43. }
  44. private User doLogin(String serverUrl, Map<String, Object> params) {
  45. String url = serverUrl + "/api/ecs_core/auth/login";
  46. String result = HttpHelper.post(url, null, params);
  47. log.info("LOGIN_IN {}", result);
  48. User user = new JsonMapper().parseJson(result, User.class);
  49. user.setServerUrl(serverUrl);
  50. LoginSessionManager.addLoginSession(user);
  51. return user;
  52. }
  53. /**
  54. * 获取考试相关的课程列表
  55. */
  56. public List<CourseVO> getExamCourseList(User loginUser, Long examId) {
  57. Map<String, String> headers = new HashMap<>();
  58. headers.put("key", loginUser.getKey());
  59. headers.put("token", loginUser.getToken());
  60. Map<String, Object> params = new HashMap<>();
  61. params.put("examId", examId);
  62. params.put("pageNo", 1);
  63. params.put("pageSize", 1000);
  64. String url = loginUser.getServerUrl() + "/api/ecs_exam_work/exam/course/list";
  65. String json = HttpHelper.post(url, headers, params);
  66. Pager<CourseVO> page = new JsonMapper().parseJson(json, new TypeReference<Pager<CourseVO>>() {
  67. });
  68. if (page != null && page.getContent() != null) {
  69. return page.getContent();
  70. }
  71. return new ArrayList<>();
  72. }
  73. public Long queryCourseIdByCode(User loginUser, String courseCode) {
  74. if (StringUtils.isBlank(courseCode)) {
  75. return null;
  76. }
  77. Map<String, String> headers = new HashMap<>();
  78. headers.put("key", loginUser.getKey());
  79. headers.put("token", loginUser.getToken());
  80. Map<String, String> params = new HashMap<>();
  81. params.put("rootOrgId", String.valueOf(loginUser.getRootOrgId()));
  82. params.put("code", courseCode);
  83. String result;
  84. try {
  85. String url = loginUser.getServerUrl() + "/api/ecs_core/course/byCode";
  86. result = HttpHelper.get(url, headers, params);
  87. } catch (Exception e) {
  88. log.error("courseCode:{} {}", courseCode, e.getMessage());
  89. return null;
  90. }
  91. JsonNode value = new JsonMapper().getNode(result);
  92. if (value == null) {
  93. return null;
  94. }
  95. String id = value.get("id").asText();
  96. if (StringUtils.isNotEmpty(id)) {
  97. return Long.parseLong(id);
  98. }
  99. return null;
  100. }
  101. public Long queryOrgIdByCode(User loginUser, String orgCode) {
  102. if (StringUtils.isBlank(orgCode)) {
  103. return null;
  104. }
  105. Map<String, String> headers = new HashMap<>();
  106. headers.put("key", loginUser.getKey());
  107. headers.put("token", loginUser.getToken());
  108. Map<String, String> params = new HashMap<>();
  109. params.put("rootOrgId", String.valueOf(loginUser.getRootOrgId()));
  110. params.put("code", orgCode);
  111. String result;
  112. try {
  113. String url = loginUser.getServerUrl() + "/api/ecs_core/org/byCode";
  114. result = HttpHelper.get(url, headers, params);
  115. } catch (Exception e) {
  116. log.error("orgCode:{} {}", orgCode, e.getMessage());
  117. return null;
  118. }
  119. JsonNode value = new JsonMapper().getNode(result);
  120. if (value == null) {
  121. return null;
  122. }
  123. String id = value.get("id").asText();
  124. if (StringUtils.isNotEmpty(id)) {
  125. return Long.parseLong(id);
  126. }
  127. /*Map<String, String> params = new HashMap<>();
  128. params.put("parentId", String.valueOf(loginUser.getRootOrgId()));
  129. params.put("code", orgCode);
  130. String result;
  131. try {
  132. String url = loginUser.getServerUrl() + "/api/ecs_core/org/subOrgPage/0/5";
  133. result = HttpHelper.get(url, headers, params);
  134. } catch (Exception e) {
  135. log.error("orgCode:{} {}", orgCode, e.getMessage());
  136. return null;
  137. }
  138. JsonNode value = new JsonMapper().getNode(result);
  139. if (value == null) {
  140. return null;
  141. }
  142. int total = value.get("total").asInt();
  143. if (total > 0) {
  144. Iterator<JsonNode> list = value.get("list").iterator();
  145. while (list.hasNext()) {
  146. JsonNode node = list.next();
  147. if (orgCode.equals(node.get("code").asText())) {
  148. return node.get("id").asLong();
  149. }
  150. }
  151. }*/
  152. return null;
  153. }
  154. public Map<String, Long> queryRoles(User loginUser) {
  155. Map<String, String> headers = new HashMap<>();
  156. headers.put("key", loginUser.getKey());
  157. headers.put("token", loginUser.getToken());
  158. String url = loginUser.getServerUrl() + "/api/ecs_core/rolePrivilege/getRoles?includeSuperAdmin=true";
  159. String result = HttpHelper.post(url, headers, null);
  160. log.info(result);
  161. List<RoleInfo> roles = new JsonMapper().toList(result, RoleInfo.class);
  162. Map<String, Long> maps = new HashMap<>();
  163. if (CollectionUtils.isNotEmpty(roles)) {
  164. for (RoleInfo role : roles) {
  165. maps.put(role.getRoleName(), role.getRoleId());
  166. }
  167. }
  168. return maps;
  169. }
  170. public UserInfo queryUserByLoginName(User loginUser, String loginName) {
  171. Map<String, String> headers = new HashMap<>();
  172. headers.put("key", loginUser.getKey());
  173. headers.put("token", loginUser.getToken());
  174. Map<String, String> params = new HashMap<>();
  175. params.put("rootOrgId", String.valueOf(loginUser.getRootOrgId()));
  176. params.put("loginName", loginName);
  177. String url = loginUser.getServerUrl() + "/api/ecs_core/user/query";
  178. String result = HttpHelper.get(url, headers, params);
  179. // log.info(result);
  180. List<UserInfo> users = new JsonMapper().toList(result, UserInfo.class);
  181. if (CollectionUtils.isNotEmpty(users)) {
  182. for (UserInfo user : users) {
  183. if (user.getLoginName().equals(loginName)) {
  184. return user;
  185. }
  186. }
  187. }
  188. return null;
  189. }
  190. }