package com.qmth.distributed.print.api;
import com.alibaba.fastjson.JSON;
import com.qmth.boot.api.constant.ApiConstant;
import com.qmth.distributed.print.business.service.SsoService;
import com.qmth.teachcloud.common.bean.params.OpenParams;
import com.qmth.teachcloud.common.contant.SystemConstant;
import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
import com.qmth.teachcloud.common.enums.RoleTypeEnum;
import com.qmth.teachcloud.common.util.Result;
import com.qmth.teachcloud.common.util.ResultUtil;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
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 java.io.IOException;
import java.util.Map;
import java.util.Objects;
/**
*
* 单点登录 前端控制器
*
*
* @author xf
*/
@Api(tags = "单点登录Controller")
@RestController
@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_EXAM + "/sso")
public class SsoController {
@Autowired
SsoService ssoService;
/**
* 评卷员单点登录
*
* @return
*/
@ApiOperation(value = "评卷员单点登录")
@RequestMapping(value = "/marker_login", method = RequestMethod.POST)
public Result markerLogin() {
Map map = ssoService.markerLoginInfo();
return ResultUtil.ok(map);
}
/**
* 评卷员单点登录
*
* @return
*/
@ApiOperation(value = "评卷员单点登录")
@RequestMapping(value = "/marker_leader_login", method = RequestMethod.POST)
public Result markerLeaderLogin() {
Map map = ssoService.markerLeaderLoginInfo();
return ResultUtil.ok(map);
}
@ApiOperation(value = "题库单点登录")
@ApiResponses({@ApiResponse(code = 200, message = "题库单点登录", response = Result.class)})
@RequestMapping(value = "/question_library_login", method = RequestMethod.POST)
public Result questionLibraryLogin(@ApiParam(value = "登录名", required = true) @RequestParam String loginName,
@ApiParam(value = "真实姓名", required = true) @RequestParam String realName,
@ApiParam(value = "角色", required = true) @RequestParam RoleTypeEnum role,
@ApiParam(value = "返回url") @RequestParam(required = false) String returnUrl,
@ApiParam(value = "其它参数") @RequestParam(required = false) String params) throws IOException {
if (Objects.isNull(loginName) || Objects.equals(loginName, "")) {
throw ExceptionResultEnum.PARAMS_ERROR.exception("登录名不能为空");
}
if (Objects.isNull(role)) {
throw ExceptionResultEnum.PARAMS_ERROR.exception("角色不能为空");
}
if (role != RoleTypeEnum.SUBJECT_TEACHER && role != RoleTypeEnum.ASSIGN_TEACHER) {
throw ExceptionResultEnum.ERROR.exception("角色类型超出限制");
}
OpenParams openParams = new OpenParams();
openParams.setName(realName);
openParams.setRoleName(role.name());
return ResultUtil.ok(ssoService.questionLibraryLogin(loginName,realName, role, returnUrl, JSON.toJSONString(openParams)));
}
@ApiOperation(value = "教研分析单点登录")
@ApiResponses({@ApiResponse(code = 200, message = "教研分析单点登录", response = Result.class)})
@RequestMapping(value = "/analysis_login", method = RequestMethod.POST)
public Result analysisLogin(@ApiParam(value = "登录名", required = true) @RequestParam String loginName,
@ApiParam(value = "角色", required = true) @RequestParam RoleTypeEnum role,
@ApiParam(value = "学院名称", required = true) @RequestParam String orgName,
@ApiParam(value = "真实名") @RequestParam(required = false) String realName,
@ApiParam(value = "手机号码") @RequestParam(required = false) String mobileNumber,
@ApiParam(value = "是否启用") @RequestParam(required = false) Boolean enable,
@ApiParam(value = "返回url") @RequestParam(required = false) String returnUrl) throws IOException {
if (Objects.isNull(loginName) || Objects.equals(loginName, "")) {
throw ExceptionResultEnum.PARAMS_ERROR.exception("登录名不能为空");
}
if (Objects.isNull(role)) {
throw ExceptionResultEnum.PARAMS_ERROR.exception("角色不能为空");
}
if (Objects.isNull(orgName) || Objects.equals(orgName, "")) {
throw ExceptionResultEnum.PARAMS_ERROR.exception("学院名称不能为空");
}
if (role != RoleTypeEnum.OFFICE_TEACHER && role != RoleTypeEnum.PRESIDENT && role != RoleTypeEnum.TEACHER) {
throw ExceptionResultEnum.ERROR.exception("角色类型超出限制");
}
return ResultUtil.ok(ssoService.analysisLogin(loginName, role, orgName, realName, mobileNumber, enable, returnUrl));
}
}