64968ea6c10e0ec0f6e1686b1f78763da75c9dc9.svn-base 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. package cn.com.goldenwater.dcproj.controller.sso;
  2. import cn.com.goldenwater.core.web.BaseController;
  3. import cn.com.goldenwater.core.web.BaseResponse;
  4. import cn.com.goldenwater.dcproj.model.BisInspAllRlationPers;
  5. import cn.com.goldenwater.dcproj.service.FjCasService;
  6. import cn.com.goldenwater.dcproj.utils.HttpClientUtils;
  7. import cn.com.goldenwater.dcproj.utils.StringUtils;
  8. import cn.com.goldenwater.dcproj.utils.UserMsgSectrityUtils;
  9. import cn.com.goldenwater.id.util.UuidUtil;
  10. import com.alibaba.fastjson.JSON;
  11. import io.swagger.annotations.Api;
  12. import net.sf.json.JSONObject;
  13. import org.slf4j.Logger;
  14. import org.slf4j.LoggerFactory;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.beans.factory.annotation.Value;
  17. import org.springframework.web.bind.annotation.RequestMapping;
  18. import org.springframework.web.bind.annotation.RequestMethod;
  19. import org.springframework.web.bind.annotation.RequestParam;
  20. import org.springframework.web.bind.annotation.RestController;
  21. import javax.servlet.http.HttpServletRequest;
  22. import java.util.HashMap;
  23. import java.util.Map;
  24. import static cn.com.goldenwater.dcproj.utils.HttpClientUtils.CONTENT_CHARSET;
  25. @Api(value = "福建单点登录", tags = "福建单点登录")
  26. @RestController
  27. @RequestMapping("/cas/fj")
  28. public class FjCasController extends BaseController {
  29. private Logger logger = LoggerFactory.getLogger(getClass());
  30. @Value("${fj.auth.baseurl}")
  31. private String fjAuthBaseUrl;
  32. @Value("${fj.auth.client_id}")
  33. private String fjAuthClientId;
  34. @Value("${fj.auth.client_screct}")
  35. private String fjAuthClientScrect;
  36. @Autowired
  37. FjCasService fjCasService;
  38. @RequestMapping(value = "/", method = RequestMethod.GET)
  39. public BaseResponse<Object> code(@RequestParam(value = "ticket", required = false) String ticket, HttpServletRequest request) throws Exception {
  40. //根据code 获取对应的 token
  41. Map<String, String> headerParams = new HashMap<>();
  42. headerParams.put("", "");
  43. Map<String, String> params = new HashMap<>();
  44. params.put("grant_type", "authorization_code");
  45. params.put("client_id", fjAuthClientId);
  46. params.put("client_secret", fjAuthClientScrect);
  47. params.put("code", ticket);
  48. params.put("redirect_uri", "https://27.156.118.74:19901/");
  49. logger.info("---------------send fj sso ---------------");
  50. logger.info("-----------------------------get fj dz " + fjAuthBaseUrl + "/oauth2.0/token-----------------------------" + params.toString());
  51. String ret = HttpClientUtils.simpleGetInvoke(fjAuthBaseUrl + "/oauth2.0/token", params, headerParams,CONTENT_CHARSET);
  52. //根据token获取用户信息
  53. logger.info("-----------------------------get fj token " + ret + "-----------------------------");
  54. //字符串转json 获取token
  55. String accessToken = JSONObject.fromObject(ret).get("access_token").toString();
  56. String refreshToken = JSONObject.fromObject(ret).get("refresh_token").toString();
  57. logger.info("-----------------------------get fj accessToken " + ret + "-----------------------------");
  58. //根据token获取用户信息
  59. Map<String, String> tokenParam = new HashMap<>();
  60. tokenParam.put("access_token", accessToken);
  61. String user = HttpClientUtils.simpleGetInvoke(fjAuthBaseUrl + "/api-gateway/upms-center/userinfo", tokenParam);
  62. logger.info("-----------------------------get fj user " + user + "-----------------------------");
  63. String mobile = JSONObject.fromObject(JSONObject.fromObject(user).get("user").toString()).get("mobile").toString();
  64. logger.info("-----------------------------get fj mobile " + mobile + "-----------------------------");
  65. //手机号默认登录,如果没有则增加用户设置督查权限。参数,有用户名,密码,手机号,默认角色
  66. Map<String, Object> ssoUserMap = jsonToMap(JSONObject.fromObject(user).get("user").toString());
  67. logger.info("---------------sso login-------------------------------");
  68. if (ssoUserMap != null) {
  69. logger.info("---------------sso user not null -------------------------------");
  70. BisInspAllRlationPers bisInspAllRlationPers = fjCasService.validateUser(ssoUserMap);
  71. if (bisInspAllRlationPers == null) {
  72. return buildFailResponse(1001, "登陆名或密码错误", "", "");
  73. } else {
  74. logger.info("---------------sso user null -------------------------------");
  75. String uuid = UuidUtil.uuid();
  76. bisInspAllRlationPers = fjCasService.validateTicket(bisInspAllRlationPers, uuid, request);
  77. logger.info("---------------sso add -------------------------------");
  78. return buildSuccessResponse(bisInspAllRlationPers, uuid);
  79. }
  80. } else {
  81. logger.info("---------------sso no user -------------------------------");
  82. return buildFailResponse("无法获取用户信息");
  83. }
  84. }
  85. @RequestMapping(value = "/loginByToken", method = RequestMethod.GET)
  86. public BaseResponse<Object> loginByToken(@RequestParam(value = "accessToken", required = false) String accessToken, HttpServletRequest request) throws Exception {
  87. Map<String, String> tokenParam = new HashMap<>();
  88. tokenParam.put("access_token", accessToken);
  89. logger.info("----------" + fjAuthBaseUrl + "/api-gateway/upms-center/userinfo:" + tokenParam.get("access_token").toString() + "----------");
  90. String user = HttpClientUtils.simpleGetInvoke(fjAuthBaseUrl + "/api-gateway/upms-center/userinfo", tokenParam);
  91. String mobile = JSONObject.fromObject(JSONObject.fromObject(user).get("user").toString()).get("mobile").toString();
  92. logger.info("-----------------------" + mobile + "----------------------------");
  93. if (StringUtils.isEmpty(mobile)) {
  94. return buildFailResponse(5001, "账号未绑定!", "", "");
  95. }
  96. if (!UserMsgSectrityUtils.checkPhone(mobile)) {
  97. return buildFailResponse(5001, "账号未绑定!", "", "");
  98. }
  99. //手机号默认登录,如果没有则增加用户设置督查权限。参数,有用户名,密码,手机号,默认角色
  100. Map<String, Object> ssoUserMap = jsonToMap(JSONObject.fromObject(user).get("user").toString());
  101. logger.info("---------------sso login-------------------------------");
  102. if (ssoUserMap != null) {
  103. logger.info("---------------sso user not null -------------------------------");
  104. BisInspAllRlationPers bisInspAllRlationPers = fjCasService.validateUser(ssoUserMap);
  105. if (bisInspAllRlationPers == null) {
  106. return buildFailResponse(1001, "登陆名或密码错误", "", "");
  107. } else {
  108. logger.info("---------------sso user null -------------------------------");
  109. String uuid = UuidUtil.uuid();
  110. bisInspAllRlationPers = fjCasService.validateTicket(bisInspAllRlationPers, uuid, request);
  111. logger.info("---------------sso add -------------------------------");
  112. return buildSuccessResponse(bisInspAllRlationPers, uuid);
  113. }
  114. } else {
  115. logger.info("---------------sso no user -------------------------------");
  116. return buildFailResponse("无法获取用户信息");
  117. }
  118. }
  119. public Map<String, Object> jsonToMap(String json) {
  120. Map<String, Object> map = new HashMap<>();
  121. map = JSON.parseObject(JSON.parse(json).toString(), HashMap.class);
  122. return map;
  123. }
  124. }