OpenApiController.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. package com.qmth.distributed.print.api;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.qmth.boot.api.annotation.Aac;
  4. import com.qmth.boot.api.annotation.BOOL;
  5. import com.qmth.boot.api.constant.ApiConstant;
  6. import com.qmth.distributed.print.business.bean.params.open.GradeOpenPageParams;
  7. import com.qmth.distributed.print.business.bean.params.open.GradeOpenParams;
  8. import com.qmth.distributed.print.business.service.OpenApiService;
  9. import com.qmth.teachcloud.common.bean.params.OpenParams;
  10. import com.qmth.teachcloud.common.bean.result.LoginResult;
  11. import com.qmth.teachcloud.common.contant.SystemConstant;
  12. import com.qmth.teachcloud.common.entity.BasicSchool;
  13. import com.qmth.teachcloud.common.entity.SysUser;
  14. import com.qmth.teachcloud.common.enums.AppSourceEnum;
  15. import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
  16. import com.qmth.teachcloud.common.service.SysUserService;
  17. import com.qmth.teachcloud.common.service.TeachcloudCommonService;
  18. import com.qmth.teachcloud.common.util.*;
  19. import io.swagger.annotations.*;
  20. import org.slf4j.Logger;
  21. import org.slf4j.LoggerFactory;
  22. import org.springframework.validation.annotation.Validated;
  23. import org.springframework.web.bind.annotation.*;
  24. import javax.annotation.Resource;
  25. import java.io.UnsupportedEncodingException;
  26. import java.net.URLDecoder;
  27. import java.security.NoSuchAlgorithmException;
  28. import java.util.Objects;
  29. import java.util.Optional;
  30. /**
  31. * <p>
  32. * 知学知考开放接口前端控制器
  33. * </p>
  34. *
  35. * @author wangliang
  36. * @since 2022-04-26
  37. */
  38. @Api(tags = "知学知考开放接口Controller")
  39. @RestController
  40. @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/${prefix.url.open}")
  41. @Validated
  42. public class OpenApiController {
  43. private static final Logger log = LoggerFactory.getLogger(OpenApiController.class);
  44. @Resource
  45. private OpenApiService openApiService;
  46. @Resource
  47. SysUserService sysUserService;
  48. @Resource
  49. TeachcloudCommonService teachcloudCommonService;
  50. @ApiOperation(value = "试卷基础配置查询")
  51. @ApiResponses({@ApiResponse(code = 200, message = "试卷基础配置查询", response = Object.class)})
  52. @PostMapping("/paper_config")
  53. @Aac(auth = BOOL.FALSE)
  54. public Result paperConfig(@ApiParam(value = "接收试卷配置数据信息", required = true) @RequestBody String result) throws UnsupportedEncodingException {
  55. Optional.ofNullable(result).orElseThrow(() -> ExceptionResultEnum.PARAMS_ERROR.exception("数据为空"));
  56. String decodeJson = URLDecoder.decode(result, SystemConstant.CHARSET_NAME);
  57. log.info("paperConfigSelect进来了,result:{}", decodeJson);
  58. GradeOpenParams gradeOpenParams = JacksonUtil.readJson(decodeJson, GradeOpenParams.class);
  59. Optional.ofNullable(gradeOpenParams).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("转换后的数据为空"));
  60. gradeOpenParams.validParams();
  61. BasicSchool basicSchool = AuthThirdUtil.hasPermission();
  62. return ResultUtil.ok(openApiService.getPaperConfig(basicSchool, gradeOpenParams.getThirdExamId(), gradeOpenParams.getGradeCourseCode()));
  63. }
  64. @ApiOperation(value = "试卷考察点查询")
  65. @ApiResponses({@ApiResponse(code = 200, message = "试卷考察点查询", response = Object.class)})
  66. @PostMapping("/paper_dimension")
  67. @Aac(auth = BOOL.FALSE)
  68. public Result paperDimension(@ApiParam(value = "试卷考察点查询", required = true) @RequestBody String result) throws UnsupportedEncodingException {
  69. Optional.ofNullable(result).orElseThrow(() -> ExceptionResultEnum.PARAMS_ERROR.exception("数据为空"));
  70. String decodeJson = URLDecoder.decode(result, SystemConstant.CHARSET_NAME);
  71. log.info("paperDimensionSelect进来了,result:{}", decodeJson);
  72. GradeOpenParams gradeOpenParams = JacksonUtil.readJson(decodeJson, GradeOpenParams.class);
  73. Optional.ofNullable(gradeOpenParams).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("转换后的数据为空"));
  74. gradeOpenParams.validParams();
  75. BasicSchool basicSchool = AuthThirdUtil.hasPermission();
  76. return ResultUtil.ok(openApiService.getPaperDimension(basicSchool, gradeOpenParams.getThirdExamId(), gradeOpenParams.getGradeCourseCode()));
  77. }
  78. @ApiOperation(value = "试卷蓝图查询")
  79. @ApiResponses({@ApiResponse(code = 200, message = "试卷蓝图查询", response = Object.class)})
  80. @PostMapping("/paper_structure")
  81. @Aac(auth = BOOL.FALSE)
  82. public Result paperStructure(@ApiParam(value = "试卷考察点查询", required = true) @RequestBody String result) throws UnsupportedEncodingException {
  83. Optional.ofNullable(result).orElseThrow(() -> ExceptionResultEnum.PARAMS_ERROR.exception("数据为空"));
  84. String decodeJson = URLDecoder.decode(result, SystemConstant.CHARSET_NAME);
  85. log.info("paperStructureSelect进来了,result:{}", decodeJson);
  86. GradeOpenParams gradeOpenParams = JacksonUtil.readJson(decodeJson, GradeOpenParams.class);
  87. Optional.ofNullable(gradeOpenParams).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("转换后的数据为空"));
  88. gradeOpenParams.validParams();
  89. BasicSchool basicSchool = AuthThirdUtil.hasPermission();
  90. return ResultUtil.ok(openApiService.getPaperStructure(basicSchool, gradeOpenParams.getThirdExamId(), gradeOpenParams.getGradeCourseCode()));
  91. }
  92. @ApiOperation(value = "试卷评价模型查询")
  93. @ApiResponses({@ApiResponse(code = 200, message = "试卷评价模型查询", response = Object.class)})
  94. @PostMapping("/paper_evaluation")
  95. @Aac(auth = BOOL.FALSE)
  96. public Result paperEvaluation(@ApiParam(value = "试卷评价模型查询", required = true) @RequestBody String result) throws UnsupportedEncodingException {
  97. Optional.ofNullable(result).orElseThrow(() -> ExceptionResultEnum.PARAMS_ERROR.exception("数据为空"));
  98. String decodeJson = URLDecoder.decode(result, SystemConstant.CHARSET_NAME);
  99. log.info("paperEvaluation进来了,result:{}", decodeJson);
  100. GradeOpenParams gradeOpenParams = JacksonUtil.readJson(decodeJson, GradeOpenParams.class);
  101. Optional.ofNullable(gradeOpenParams).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("转换后的数据为空"));
  102. gradeOpenParams.validParams();
  103. BasicSchool basicSchool = AuthThirdUtil.hasPermission();
  104. return ResultUtil.ok(openApiService.getPaperEvaluation(basicSchool, gradeOpenParams.getThirdExamId(), gradeOpenParams.getGradeCourseCode()));
  105. }
  106. @ApiOperation(value = "考生成绩查询")
  107. @ApiResponses({@ApiResponse(code = 200, message = "考生成绩查询", response = Object.class)})
  108. @PostMapping("/exam_student_score")
  109. @Aac(auth = BOOL.FALSE)
  110. public Result examStudentScore(@ApiParam(value = "考生成绩查询", required = true) @RequestBody String result) throws UnsupportedEncodingException {
  111. Optional.ofNullable(result).orElseThrow(() -> ExceptionResultEnum.PARAMS_ERROR.exception("数据为空"));
  112. String decodeJson = URLDecoder.decode(result, SystemConstant.CHARSET_NAME);
  113. log.info("examStudentScore进来了,result:{}", decodeJson);
  114. GradeOpenPageParams gradeOpenPageParams = JacksonUtil.readJson(decodeJson, GradeOpenPageParams.class);
  115. Optional.ofNullable(gradeOpenPageParams).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("转换后的数据为空"));
  116. gradeOpenPageParams.validParams();
  117. BasicSchool basicSchool = AuthThirdUtil.hasPermission();
  118. return ResultUtil.ok(openApiService.listExamStudentScore(basicSchool, gradeOpenPageParams.getThirdExamId(), gradeOpenPageParams.getGradeCourseCode(), gradeOpenPageParams.getPageNumber(), gradeOpenPageParams.getPageSize()));
  119. }
  120. @ApiOperation(value = "单点登录")
  121. @ApiResponses({@ApiResponse(code = 200, message = "返回消息", response = Result.class)})
  122. @RequestMapping(value = "/F/login", method = RequestMethod.POST)
  123. @Aac(auth = BOOL.FALSE)
  124. public Result accountLogin(@ApiParam(value = "时间", required = true) @RequestParam String time,
  125. @ApiParam(value = "地址", required = true) @RequestParam String path,
  126. @ApiParam(value = "鉴权信息", required = true) @RequestParam String signature,
  127. @ApiParam(value = "工号", required = true) @RequestParam String account,
  128. @ApiParam(value = "返回url") @RequestParam(required = false) String returnUrl,
  129. @ApiParam(value = "其它参数") @RequestParam(required = false) String params) throws UnsupportedEncodingException, NoSuchAlgorithmException {
  130. if (Objects.isNull(time) || Objects.equals(time, "")) {
  131. throw ExceptionResultEnum.PARAMS_ERROR.exception("时间不能为空");
  132. }
  133. if (Objects.isNull(path) || Objects.equals(path, "")) {
  134. throw ExceptionResultEnum.PARAMS_ERROR.exception("路径不能为空");
  135. }
  136. if (Objects.isNull(signature) || Objects.equals(signature, "")) {
  137. throw ExceptionResultEnum.PARAMS_ERROR.exception("鉴权信息不能为空");
  138. }
  139. log.info("signature before:{}", signature);
  140. signature = new String(Base64Util.decode(signature), SystemConstant.CHARSET_NAME);
  141. log.info("signature after:{}", signature);
  142. if (Objects.isNull(account) || Objects.equals(account, "")) {
  143. throw ExceptionResultEnum.PARAMS_ERROR.exception("工号不能为空");
  144. }
  145. account = URLDecoder.decode(account, SystemConstant.CHARSET_NAME);
  146. BasicSchool basicSchool = AuthThirdUtil.hasPermissionCas(time, path, signature);
  147. OpenParams openParams = null;
  148. if (Objects.nonNull(params) && !Objects.equals(params, "")) {
  149. String decodeJson = URLDecoder.decode(params, SystemConstant.CHARSET_NAME);
  150. openParams = JacksonUtil.readJson(decodeJson, OpenParams.class);
  151. }
  152. //查询用户是否存在
  153. QueryWrapper<SysUser> sysUserQueryWrapper = new QueryWrapper<>();
  154. sysUserQueryWrapper.lambda().eq(SysUser::getSchoolId, basicSchool.getId())
  155. .eq(SysUser::getLoginName, account)
  156. .eq(SysUser::getEnable, true);
  157. SysUser sysUser = sysUserService.getOne(sysUserQueryWrapper);
  158. Optional.ofNullable(sysUser).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("用户不存在"));
  159. LoginResult loginResult = teachcloudCommonService.login(sysUser.getPassword(), sysUser, AppSourceEnum.CAS_THIRD);
  160. if (Objects.nonNull(returnUrl) && !Objects.equals(returnUrl, "")) {
  161. returnUrl = URLDecoder.decode(returnUrl, SystemConstant.CHARSET_NAME);
  162. }
  163. loginResult.setReturnUrl(returnUrl);
  164. return ResultUtil.ok(loginResult);
  165. }
  166. }