123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- package com.qmth.distributed.print.api;
- import cn.hutool.http.HttpStatus;
- import com.alibaba.fastjson.JSONObject;
- import com.qmth.boot.api.constant.ApiConstant;
- import com.qmth.boot.api.exception.ApiException;
- import com.qmth.boot.core.solar.crypto.AppLicenseUtil;
- import com.qmth.boot.tools.signature.SignatureEntity;
- import com.qmth.boot.tools.signature.SignatureType;
- import com.qmth.distributed.print.business.service.AuthInfoService;
- import com.qmth.teachcloud.common.config.DictionaryConfig;
- import com.qmth.teachcloud.common.contant.SystemConstant;
- import com.qmth.teachcloud.common.entity.BasicSchool;
- import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
- import com.qmth.teachcloud.common.service.CommonCacheService;
- import com.qmth.teachcloud.common.util.*;
- import io.swagger.annotations.*;
- import org.apache.commons.io.IOUtils;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.validation.annotation.Validated;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.bind.annotation.RestController;
- import org.springframework.web.multipart.MultipartFile;
- import javax.annotation.Resource;
- import javax.servlet.http.HttpServletResponse;
- import java.io.ByteArrayInputStream;
- import java.io.IOException;
- import java.util.Arrays;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.Objects;
- /**
- * <p>
- * 激活授权配置表 前端控制器
- * </p>
- *
- * @author wangliang
- * @since 2022-04-26
- */
- @Api(tags = "授权配置Controller")
- @RestController
- @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + "/${prefix.url.auth}")
- @Validated
- public class TSAuthController {
- private final static Logger log = LoggerFactory.getLogger(TSAuthController.class);
- @Resource
- AuthInfoService authInfoService;
- @Resource
- CommonCacheService commonCacheService;
- @Resource
- DictionaryConfig dictionaryConfig;
- @ApiOperation(value = "导出硬件信息")
- @ApiResponses({@ApiResponse(code = 200, message = "导出硬件信息", response = Object.class)})
- @RequestMapping(value = "/export/device/info", method = RequestMethod.POST)
- public void info() {
- try {
- HttpServletResponse response = ServletUtil.getResponse();
- response.setHeader("Content-Disposition", "attachment; filename=" + SystemConstant.urlEncode("device.info"));
- IOUtils.copy(new ByteArrayInputStream(AppLicenseUtil.buildDeviceInfo().value()), response.getOutputStream());
- } catch (Exception e) {
- log.error(SystemConstant.LOG_ERROR, e);
- }
- }
- @ApiOperation(value = "离线激活")
- @ApiResponses({@ApiResponse(code = 200, message = "授权配置信息", response = Boolean.class)})
- @RequestMapping(value = "/offline/activation", method = RequestMethod.POST)
- public Result offlineActivation(@ApiParam(value = "上传文件", required = true) @RequestParam(required = true) MultipartFile file) throws Exception {
- try {
- authInfoService.updateLicense(file.getBytes());
- } catch (IOException e) {
- e.printStackTrace();
- }
- return ResultUtil.ok(true);
- }
- @ApiOperation(value = "查询激活信息")
- @ApiResponses({@ApiResponse(code = 200, message = "授权配置信息", response = Long.class)})
- @RequestMapping(value = "/select", method = RequestMethod.POST)
- public Result select() {
- return ResultUtil.ok(authInfoService.selectAuthInfo());
- }
- @ApiOperation(value = "测试推送信息给教研分析")
- @ApiResponses({@ApiResponse(code = 200, message = "测试推送信息给教研分析", response = Objects.class)})
- @RequestMapping(value = "/test/push", method = RequestMethod.POST)
- public void testPush() throws IOException {
- Long schoolId = SystemConstant.getHeadOrUserSchoolId();
- BasicSchool basicSchool = commonCacheService.schoolCache(schoolId);
- Long timestamp = System.currentTimeMillis();
- // /**
- // * 测试推送学期
- // */
- // BasicSemesterParams basicSemesterParams = new BasicSemesterParams("测试学期1", System.currentTimeMillis(), System.currentTimeMillis() + 1L);
- // String accessToken = SignatureEntity.build(SignatureType.SECRET, SystemConstant.METHOD, dictionaryConfig.reportOpenDomain().getSemesterApi(), timestamp, basicSchool.getAccessKey(), basicSchool.getAccessSecret());
- // String result = HttpUtil.postJson(dictionaryConfig.reportOpenDomain().getHostUrl() + dictionaryConfig.reportOpenDomain().getSemesterApi(), JacksonUtil.parseJson(basicSemesterParams), accessToken, timestamp);
- // if (Objects.nonNull(result)) {
- // log.info("result:{}", JacksonUtil.parseJson(result));
- // }
- // /**
- // * 测试推送考试
- // */
- // Map<String, Object> map = new HashMap<>();
- // map.computeIfAbsent("examName", v -> "测试考试1");
- // map.computeIfAbsent("examTime", v -> timestamp);
- // map.computeIfAbsent("semesterId", v -> 262908000564412416L);
- // String accessToken = SignatureEntity.build(SignatureType.SECRET, SystemConstant.METHOD, dictionaryConfig.reportOpenDomain().getExamApi(), timestamp, basicSchool.getAccessKey(), basicSchool.getAccessSecret());
- // String result = HttpUtil.postJson(dictionaryConfig.reportOpenDomain().getHostUrl() + dictionaryConfig.reportOpenDomain().getExamApi(), JacksonUtil.parseJson(map), accessToken, timestamp);
- // if (Objects.nonNull(result)) {
- // log.info("result:{}", JacksonUtil.parseJson(result));
- // }
- // /**
- // * 测试推送分析课程(试卷)
- // */
- // Map<String, Object> map = new HashMap<>();
- // map.computeIfAbsent("examId", v -> 262946761763454976L);
- // map.computeIfAbsent("courseCode", v -> 2022052700001L + "A");//试卷编号+卷型
- // map.computeIfAbsent("courseName", v -> "测试课程1");
- // map.computeIfAbsent("paperType", v -> "A");
- // map.computeIfAbsent("teachCollegeName", v -> "测试机构1");//机构名称
- // String accessToken = SignatureEntity.build(SignatureType.SECRET, SystemConstant.METHOD, dictionaryConfig.reportOpenDomain().getCourseEditApi(), timestamp, basicSchool.getAccessKey(), basicSchool.getAccessSecret());
- // String result = HttpUtil.postJson(dictionaryConfig.reportOpenDomain().getHostUrl() + dictionaryConfig.reportOpenDomain().getCourseEditApi(), JacksonUtil.parseJson(map), accessToken, timestamp);
- // if (Objects.nonNull(result)) {
- // log.info("result:{}", JacksonUtil.parseJson(result));
- // }
- // /**
- // * 测试单点登录
- // */
- // Map<String, Object> map = new HashMap<>();
- // map.computeIfAbsent("loginName", v -> "admin");
- // map.computeIfAbsent("role", v -> RoleTypeEnum.OFFICE_TEACHER);
- // map.computeIfAbsent("orgName", v -> "本科生院");
- // map.computeIfAbsent("realName", v -> "admin");
- // map.computeIfAbsent("mobileNumber", v -> "18008659001");
- // map.computeIfAbsent("returnUrl", v -> "https://www.baidu.com");
- // String accessToken = SignatureEntity.build(SignatureType.SECRET, SystemConstant.METHOD, dictionaryConfig.reportOpenDomain().getSsoLoginApi(), timestamp, basicSchool.getAccessKey(), basicSchool.getAccessSecret());
- // String result = HttpUtil.postJson(dictionaryConfig.reportOpenDomain().getHostUrl() + dictionaryConfig.reportOpenDomain().getSsoLoginApi(), JacksonUtil.parseJson(map), accessToken, timestamp);
- // if (Objects.nonNull(result)) {
- // log.info("result:{}", JacksonUtil.parseJson(result));
- // }
- /**
- * 测试生成课程(试卷)分析报告接口
- */
- try {
- Map<String, Object> map = new HashMap<>();
- map.computeIfAbsent("examId", v -> 262946761763454976L);
- map.computeIfAbsent("courseCode", v -> Arrays.asList(2022052700001L + "A",
- 2022052700001L + "B",
- 2022052700001L + "C",
- 2022052700001L + "D",
- 2022052700001L + "E",
- 2022052700001L + "F",
- 2022052700001L + "G"));//试卷编号+卷型
- String source = Base64Util.encode(ShaUtils.sha1(map.get("examId") + map.get("courseCode").toString()));
- log.info("source:{}", source);
- String accessToken = SignatureEntity.build(SignatureType.SECRET, SystemConstant.METHOD, dictionaryConfig.reportOpenDomain().getCalculateApi(), timestamp, basicSchool.getAccessKey(), basicSchool.getAccessSecret());
- String result = HttpUtil.postJson(dictionaryConfig.reportOpenDomain().getHostUrl() + dictionaryConfig.reportOpenDomain().getCalculateApi(), JacksonUtil.parseJson(map), accessToken, timestamp);
- if (Objects.nonNull(result)) {
- log.info("result:{}", JacksonUtil.parseJson(result));
- JSONObject jsonObject = JSONObject.parseObject(result);
- if (Objects.nonNull(jsonObject.get("code")) && jsonObject.getIntValue("code") != HttpStatus.HTTP_OK) {
- throw ExceptionResultEnum.ERROR.exception(jsonObject.getString("error"));
- }
- }
- } catch (Exception e) {
- log.error(SystemConstant.LOG_ERROR, e);
- //TODO 生成txt文件
- if (e instanceof ApiException) {
- ResultUtil.error((ApiException) e, e.getMessage());
- } else {
- ResultUtil.error(e.getMessage());
- }
- }
- }
- }
|