From 23855599412c4d61b38d78f0f3abd3430a48b5b1 Mon Sep 17 00:00:00 2001
From: zhangherong <571457620@qq.com>
Date: 星期三, 25 六月 2025 11:51:38 +0800
Subject: [PATCH] Merge branch 'mdc_hyjs_master'

---
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/cas/controller/CasClientController.java |  111 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 111 insertions(+), 0 deletions(-)

diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/cas/controller/CasClientController.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/cas/controller/CasClientController.java
new file mode 100644
index 0000000..c1e760d
--- /dev/null
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/cas/controller/CasClientController.java
@@ -0,0 +1,111 @@
+package org.jeecg.modules.cas.controller;
+
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang.StringUtils;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.system.util.JwtUtil;
+import org.jeecg.common.util.RedisUtil;
+import org.jeecg.modules.cas.util.CasServiceUtil;
+import org.jeecg.modules.cas.util.XmlUtils;
+import org.jeecg.modules.system.entity.SysDepart;
+import org.jeecg.modules.system.entity.SysUser;
+import org.jeecg.modules.system.service.ISysDepartService;
+import org.jeecg.modules.system.service.ISysUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpEntity;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.alibaba.fastjson.JSONObject;
+
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * <p>
+ * CAS鍗曠偣鐧诲綍瀹㈡埛绔櫥褰曡璇�
+ * </p>
+ *
+ * @Author zhoujf
+ * @since 2018-12-20
+ */
+@Slf4j
+@RestController
+@RequestMapping("/sys/cas/client")
+public class CasClientController {
+
+	@Autowired
+	private ISysUserService sysUserService;
+	@Autowired
+    private ISysDepartService sysDepartService;
+	@Autowired
+    private RedisUtil redisUtil;
+	
+	@Value("${cas.prefixUrl}")
+    private String prefixUrl;
+	
+	
+	@GetMapping("/validateLogin")
+	public Object validateLogin(@RequestParam(name="ticket") String ticket,
+								@RequestParam(name="service") String service,
+								HttpServletRequest request,
+								HttpServletResponse response) throws Exception {
+		Result<JSONObject> result = new Result<JSONObject>();
+		log.info("Rest api login.");
+		try {
+			String validateUrl = prefixUrl+"/p3/serviceValidate";
+			String res = CasServiceUtil.getStValidate(validateUrl, ticket, service);
+			log.info("res."+res);
+			final String error = XmlUtils.getTextForElement(res, "authenticationFailure");
+			if(StringUtils.isNotEmpty(error)) {
+				throw new Exception(error);
+			}
+			final String principal = XmlUtils.getTextForElement(res, "user");
+			if (StringUtils.isEmpty(principal)) {
+	            throw new Exception("No principal was found in the response from the CAS server.");
+	        }
+			log.info("-------token----username---"+principal);
+		    //1. 鏍¢獙鐢ㄦ埛鏄惁鏈夋晥
+	  		SysUser sysUser = sysUserService.getUserByName(principal);
+	  		result = sysUserService.checkUserIsEffective(sysUser, null);
+	  		if(!result.isSuccess()) {
+	  			return result;
+	  		}
+	 		String token = JwtUtil.sign(sysUser.getUsername(), sysUser.getPassword());
+	 		// 璁剧疆瓒呮椂鏃堕棿
+	 		redisUtil.set(CommonConstant.PREFIX_USER_TOKEN + token, token);
+	 		redisUtil.expire(CommonConstant.PREFIX_USER_TOKEN + token, JwtUtil.EXPIRE_TIME*2 / 1000);
+
+	 		//鑾峰彇鐢ㄦ埛閮ㄩ棬淇℃伅
+			JSONObject obj = new JSONObject();
+			List<SysDepart> departs = sysDepartService.queryUserDeparts(sysUser.getId());
+			obj.put("departs", departs);
+			if (departs == null || departs.size() == 0) {
+				obj.put("multi_depart", 0);
+			} else if (departs.size() == 1) {
+				sysUserService.updateUserDepart(principal, departs.get(0).getOrgCode());
+				obj.put("multi_depart", 1);
+			} else {
+				obj.put("multi_depart", 2);
+			}
+			obj.put("token", token);
+			obj.put("userInfo", sysUser);
+			result.setResult(obj);
+			result.success("鐧诲綍鎴愬姛");
+	  		
+		} catch (Exception e) {
+			//e.printStackTrace();
+			result.error500(e.getMessage());
+		}
+		return new HttpEntity<>(result);
+	}
+
+	
+}

--
Gitblit v1.9.3