From e405b861b9521f5ea38c5402203a5b05988f9de2 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期三, 04 十二月 2024 10:47:05 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsLoginController.java |  186 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 186 insertions(+), 0 deletions(-)

diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsLoginController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsLoginController.java
new file mode 100644
index 0000000..097a66e
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsLoginController.java
@@ -0,0 +1,186 @@
+package com.vci.web.controller;
+
+import com.vci.bo.LoginResultBO;
+import com.vci.dto.LoginUserDTO;
+import com.vci.starter.web.annotation.controller.VciUnCheckRight;
+import com.vci.starter.web.annotation.log.VciBusinessLog;
+import com.vci.starter.web.constant.TokenKeyConstant;
+import com.vci.starter.web.pagemodel.BaseResult;
+import com.vci.starter.web.pagemodel.RequestClientInfo;
+import com.vci.starter.web.pagemodel.SessionInfo;
+import com.vci.starter.web.util.MessageUtils;
+import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.util.WebThreadLocalUtil;
+import com.vci.web.service.OsLoginServiceI;
+import eu.bitwalker.useragentutils.*;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * 鐧诲綍鎺у埗鍣�
+ * @author weidy
+ * @date 2021-1-28
+ */
+@Controller
+@RequestMapping("/framework/loginController")
+@VciBusinessLog(modelName="鐧诲綍鏈嶅姟")
+public class OsLoginController {
+
+	/**
+	 * 鐧诲綍鏈嶅姟
+	 */
+	@Autowired
+	private OsLoginServiceI loginService;
+
+	/**
+	 * 鏃ュ織
+	 */
+	private Logger logger = LoggerFactory.getLogger(getClass());
+
+	/**
+	 * 鐧诲綍锛岃繖涓湴鏂逛富瑕佹槸涓轰簡鐧诲綍鍚庡崟鐙殑涓氬姟
+	 * @param userDTO 鐢ㄦ埛鐨勫璞�
+	 * @param request 璇锋眰瀵硅薄
+	 * @param clientInfo 瀹㈡埛绔殑淇℃伅
+	 * @return 鎵ц缁撴灉
+	 */
+	@VciBusinessLog(operateName="鐧诲綍")
+	@PostMapping(value = "/login")
+	@ResponseBody
+	@VciUnCheckRight()
+	public BaseResult login(LoginUserDTO userDTO, HttpServletRequest request, RequestClientInfo clientInfo){
+		VciBaseUtil.alertNotNull(userDTO,"鐢ㄦ埛瀵硅薄",clientInfo,"璇锋眰瀹㈡埛绔俊鎭�");
+		try {
+			wrapperBrowserInfo(clientInfo,request);
+			LoginResultBO loginResultBO = loginService.login(userDTO,clientInfo);
+			if(loginResultBO.isSuccess()){
+				return BaseResult.success(loginResultBO);
+			}else{
+				BaseResult result = BaseResult.fail(loginResultBO.getFailMsg());
+				result.setCode(200);//鐘舵�佺爜涓嶆槸200鍓嶇鏃犳硶鑾峰彇鍒皁bj涓殑淇℃伅
+				if(StringUtils.isBlank(loginResultBO.getFailMsg())){
+					result.setMsg(MessageUtils.get(loginResultBO.getFailCode(),loginResultBO.getFailMsgArray()));
+				}
+				result.setObj(loginResultBO);
+				return result;
+			}
+		}catch (Exception e){
+			e.printStackTrace();
+			String msg = "璋冪敤鐧诲綍鏂规硶鏃跺嚭鐜伴敊璇紝鍘熷洜锛�"+VciBaseUtil.getExceptionMessage(e);
+			logger.error(msg);
+			return BaseResult.fail(msg);
+		}
+	}
+
+	/**
+	 * 鑾峰彇瀹㈡埛绔姹備俊鎭�,涓轰簡闅旂粷鍦╯erver灞備娇鐢╮equest
+	 * @param request 璇锋眰瀵硅薄
+	 * @param clientInfo 瀹㈡埛绔俊鎭�
+	 */
+	private void wrapperBrowserInfo(RequestClientInfo clientInfo,HttpServletRequest request) {
+		UserAgent userAgent = UserAgent.parseUserAgentString(request.getHeader("User-Agent"));
+		if(StringUtils.isBlank(clientInfo.getIpaddress())){
+			//鎵綢P鍦板潃
+			clientInfo.setIpaddress(getIpAddressFromRequest(request));
+		}
+		if(userAgent !=null) {
+			Browser browser = userAgent.getBrowser();
+			OperatingSystem os = userAgent.getOperatingSystem();
+
+			clientInfo.setOsversion(os != null ? os.getName() : "");
+			clientInfo.setBrowser(browser != null ? browser.getName() : "IE");
+			String version = "";
+			if (browser != null) {
+				Version version1 = browser.getVersion(request.getHeader("User-Agent"));
+				if (version1 != null) {
+					version = version1.getVersion();
+				}
+			}
+			clientInfo.setBrowserversion(version);
+			if (os != null) {
+				clientInfo.setRequestType(os.getDeviceType().getName());
+				if (DeviceType.COMPUTER.getName().equals(clientInfo.getRequestType())) {
+					clientInfo.setRequestType("browser");
+				}
+			}
+
+			Locale loc = Locale.getDefault();
+			clientInfo.setCountry(loc.getCountry());
+			clientInfo.setLanguage(loc.toLanguageTag());
+
+			Map<String,String> map = System.getenv();
+			clientInfo.setMachine(map.get("COMPUTERNAME"));
+			clientInfo.setOsUser(map.get("USERNAME"));
+		}
+	}
+
+	/**
+	 * 浠庤姹備腑鑾峰彇ip鍦板潃锛屼负浜嗛殧缁濆湪server灞備娇鐢╮equest
+	 * @param request 璇锋眰瀵硅薄
+	 * @return ip鍦板潃锛屾病鏈夋壘鍒伴粯璁や负127.0.0.1
+	 */
+	private String getIpAddressFromRequest(HttpServletRequest request){
+		String ip = request.getHeader("X-Forwarded-For");
+		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+			ip = request.getHeader("Proxy-Client-IP");
+		}
+		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+			ip = request.getHeader("WL-Proxy-Client-IP");
+		}
+		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+			ip = request.getHeader("HTTP_CLIENT_IP");
+		}
+		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+			ip = request.getHeader("HTTP_X_FORWARDED_FOR");
+		}
+		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+			ip = request.getRemoteAddr();
+		}
+		if (ip == null || ip.length() == 0 || ip.indexOf("0:0:0:0:0:0:0:1") >-1) {
+			//0:0:0:0:0:0:0:1鏄湰鏈哄湪璁块棶
+			ip = "127.0.0.1";
+		}
+		return ip;
+	}
+
+	/**
+	 * 鑾峰彇鐢ㄦ埛鐨勪細璇濅俊鎭�
+	 * @return success涓簍rue琛ㄧず鑾峰彇鎴愬姛锛屽惁鍒檓sg鏄敊璇俊鎭紝obj灞炴�ф槸鑾峰彇鐨勪細璇濆璞′俊鎭�
+	 */
+	@VciUnCheckRight
+	@PostMapping("/getSessionInfo")
+	@ResponseBody
+	public BaseResult getSessionInfo(){
+		BaseResult<SessionInfo> json = new BaseResult<>();
+		SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();
+		if(sessionInfo != null){
+			json = json.success(sessionInfo);
+		}
+		return json;
+	}
+
+	/**
+	 * 鎵ц閫�鍑�
+	 * @param request 璇锋眰瀵硅薄
+	 * @return success涓簍rue琛ㄧず閫�鍑烘垚鍔燂紝鍓嶇涓嶉渶瑕佸垽鏂粨鏋�
+	 */
+	@VciUnCheckRight
+	@PostMapping("/logout")
+	@ResponseBody
+	public BaseResult logout(HttpServletRequest request){
+		String userToken = request.getHeader(TokenKeyConstant.USER_TOKEN_KEY);
+		loginService.logout(userToken);
+		return BaseResult.success();
+	}
+
+}

--
Gitblit v1.9.3