From 71e3c61f3df3a4448c83a37ec58a684fd3608e09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=A0=8B?= Date: Tue, 15 Aug 2023 20:13:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=95=E7=82=B9=E7=99=BB=E5=BD=95=E6=97=A5?= =?UTF-8?q?=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cloudstore/dev/api/service/ServiceEC.java | 158 ++++++++++-------- src/com/cloudstore/dev/api/util/LogUtil.java | 46 +++++ .../cloudstore/dev/bean/LoginLogEntity.java | 26 +++ .../impl/MobileSsoLoginServiceImpl.java | 7 +- 4 files changed, 163 insertions(+), 74 deletions(-) create mode 100644 src/com/cloudstore/dev/api/util/LogUtil.java create mode 100644 src/com/cloudstore/dev/bean/LoginLogEntity.java diff --git a/src/com/cloudstore/dev/api/service/ServiceEC.java b/src/com/cloudstore/dev/api/service/ServiceEC.java index c82d8866..b785744b 100644 --- a/src/com/cloudstore/dev/api/service/ServiceEC.java +++ b/src/com/cloudstore/dev/api/service/ServiceEC.java @@ -5,8 +5,10 @@ import com.alibaba.fastjson.JSONObject; import com.api.system.language.util.ParseLangDataUtil; import com.cloudstore.dev.api.bean.CodeTimeBean; import com.cloudstore.dev.api.util.EMManager; +import com.cloudstore.dev.api.util.LogUtil; import com.cloudstore.dev.api.util.Util_DataMap; import com.cloudstore.dev.api.util.Util_public; +import com.cloudstore.dev.bean.LoginLogEntity; import com.cloudstore.eccom.common.WeaIndexManager; import com.cloudstore.eccom.constant.WeaMessageCode; import com.cloudstore.eccom.core.WeaDataChange; @@ -24,20 +26,6 @@ import com.engine.msgcenter.util.ValveConfigManager; import com.engine.systeminfo.util.AppSyncUtil; import com.engine.systeminfo.util.IpTablesUtil; import com.google.common.collect.Maps; - -import java.io.*; -import java.net.URL; -import java.net.URLConnection; -import java.net.URLDecoder; -import java.util.*; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.core.Context; - import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -45,6 +33,7 @@ import weaver.common.util.string.StringUtil; import weaver.conn.RecordSet; import weaver.general.PasswordUtil; import weaver.general.ThreadVarLanguage; +import weaver.general.TimeUtil; import weaver.general.Util; import weaver.hrm.HrmUserVarify; import weaver.hrm.OnLineMonitor; @@ -54,6 +43,22 @@ import weaver.mobile.plugin.ecology.service.HrmResourceService; import weaver.rsa.security.RSA; import weaver.systeminfo.SystemEnv; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.net.URLConnection; +import java.net.URLDecoder; +import java.util.*; + @Path("/ec/dev/app") public class ServiceEC { private static volatile boolean inited; @@ -242,66 +247,73 @@ public class ServiceEC { */ private User ssoLoginByAuthCode(HttpServletRequest request) { String authCode = request.getParameter("authCode"); - HashMap paramMap = new HashMap<>(); - paramMap.put("auth_code", authCode); - logger.info("ssoLogin_auth_code:" + authCode); - MobileSsoLoginService mobileSsoLoginService = getMobileSsoLoginService(); - Map userInfo = mobileSsoLoginService.getUserInfo(paramMap, null); - Map userInfoData = (HashMap) userInfo.get("data"); - String userCode = (String) userInfoData.get("userCode"); - logger.info("userCode:" + userCode); - if (StringUtils.isNotEmpty(userCode)) { - RecordSet rs = new RecordSet(); - String sql = " select * from hrmresource where workcode=?"; - rs.executeQuery(sql, userCode); - if (rs.next()) { - User user = new User(); - String languageidweaver = "8"; - user.setUid(rs.getInt("id")); - user.setLoginid(rs.getString("loginid")); - user.setFirstname(rs.getString("firstname")); - user.setLastname(rs.getString("lastname")); - user.setAliasname(rs.getString("aliasname")); - user.setTitle(rs.getString("title")); - user.setTitlelocation(rs.getString("titlelocation")); - user.setSex(rs.getString("sex")); - user.setPwd(rs.getString("password")); - languageidweaver = rs.getString("systemlanguage"); - user.setLanguage(Util.getIntValue(languageidweaver, 0)); - user.setTelephone(rs.getString("telephone")); - user.setMobile(rs.getString("mobile")); - user.setMobilecall(rs.getString("mobilecall")); - user.setEmail(rs.getString("email")); - user.setCountryid(rs.getString("countryid")); - user.setLocationid(rs.getString("locationid")); - user.setResourcetype(rs.getString("resourcetype")); - user.setStartdate(rs.getString("startdate")); - user.setEnddate(rs.getString("enddate")); - user.setContractdate(rs.getString("contractdate")); - user.setJobtitle(rs.getString("jobtitle")); - user.setJobgroup(rs.getString("jobgroup")); - user.setJobactivity(rs.getString("jobactivity")); - user.setJoblevel(rs.getString("joblevel")); - user.setSeclevel(rs.getString("seclevel")); - user.setUserDepartment(Util.getIntValue(rs.getString("departmentid"), 0)); - user.setUserSubCompany1(Util.getIntValue(rs.getString("subcompanyid1"), 0)); - user.setUserSubCompany2(Util.getIntValue(rs.getString("subcompanyid2"), 0)); - user.setUserSubCompany3(Util.getIntValue(rs.getString("subcompanyid3"), 0)); - user.setUserSubCompany4(Util.getIntValue(rs.getString("subcompanyid4"), 0)); - user.setManagerid(rs.getString("managerid")); - user.setAssistantid(rs.getString("assistantid")); - user.setPurchaselimit(rs.getString("purchaselimit")); - user.setCurrencyid(rs.getString("currencyid")); - user.setLastlogindate(rs.getString("currentdate")); - user.setLogintype("1"); - user.setAccount(rs.getString("account")); - user.setLoginip(request.getRemoteAddr()); - - request.getSession(true).setMaxInactiveInterval(60 * 60 * 24); - request.getSession(true).setAttribute("weaver_user@bean", user); - request.getSession(true).setAttribute("moniter", new OnLineMonitor("" + user.getUID(), user.getLoginip())); - return user; + try { + HashMap paramMap = new HashMap<>(); + paramMap.put("auth_code", authCode); + logger.info("ssoLogin_auth_code:" + authCode); + MobileSsoLoginService mobileSsoLoginService = getMobileSsoLoginService(); + Map userInfo = mobileSsoLoginService.getUserInfo(paramMap, null); + Map userInfoData = (HashMap) userInfo.get("data"); + String userCode = (String) userInfoData.get("userCode"); + logger.info("userCode:" + userCode); + if (StringUtils.isNotEmpty(userCode)) { + RecordSet rs = new RecordSet(); + String sql = " select * from hrmresource where workcode=?"; + rs.executeQuery(sql, userCode); + if (rs.next()) { + User user = new User(); + String languageidweaver = "8"; + user.setUid(rs.getInt("id")); + user.setLoginid(rs.getString("loginid")); + user.setFirstname(rs.getString("firstname")); + user.setLastname(rs.getString("lastname")); + user.setAliasname(rs.getString("aliasname")); + user.setTitle(rs.getString("title")); + user.setTitlelocation(rs.getString("titlelocation")); + user.setSex(rs.getString("sex")); + user.setPwd(rs.getString("password")); + languageidweaver = rs.getString("systemlanguage"); + user.setLanguage(Util.getIntValue(languageidweaver, 0)); + user.setTelephone(rs.getString("telephone")); + user.setMobile(rs.getString("mobile")); + user.setMobilecall(rs.getString("mobilecall")); + user.setEmail(rs.getString("email")); + user.setCountryid(rs.getString("countryid")); + user.setLocationid(rs.getString("locationid")); + user.setResourcetype(rs.getString("resourcetype")); + user.setStartdate(rs.getString("startdate")); + user.setEnddate(rs.getString("enddate")); + user.setContractdate(rs.getString("contractdate")); + user.setJobtitle(rs.getString("jobtitle")); + user.setJobgroup(rs.getString("jobgroup")); + user.setJobactivity(rs.getString("jobactivity")); + user.setJoblevel(rs.getString("joblevel")); + user.setSeclevel(rs.getString("seclevel")); + user.setUserDepartment(Util.getIntValue(rs.getString("departmentid"), 0)); + user.setUserSubCompany1(Util.getIntValue(rs.getString("subcompanyid1"), 0)); + user.setUserSubCompany2(Util.getIntValue(rs.getString("subcompanyid2"), 0)); + user.setUserSubCompany3(Util.getIntValue(rs.getString("subcompanyid3"), 0)); + user.setUserSubCompany4(Util.getIntValue(rs.getString("subcompanyid4"), 0)); + user.setManagerid(rs.getString("managerid")); + user.setAssistantid(rs.getString("assistantid")); + user.setPurchaselimit(rs.getString("purchaselimit")); + user.setCurrencyid(rs.getString("currencyid")); + user.setLastlogindate(rs.getString("currentdate")); + user.setLogintype("1"); + user.setAccount(rs.getString("account")); + user.setLoginip(request.getRemoteAddr()); + + request.getSession(true).setMaxInactiveInterval(60 * 60 * 24); + request.getSession(true).setAttribute("weaver_user@bean", user); + request.getSession(true).setAttribute("moniter", new OnLineMonitor("" + user.getUID(), user.getLoginip())); + LogUtil.log(LoginLogEntity.builder().param("workcode-" + userCode).result("成功").msg(authCode).modedate(TimeUtil.getCurrentTimeString()).build()); + return user; + } else { + LogUtil.log(LoginLogEntity.builder().param("workcode-" + userCode).result("失败").msg("人员在oa不存在").modedate(TimeUtil.getCurrentTimeString()).build()); + } } + } catch (Exception e) { + LogUtil.log(LoginLogEntity.builder().param("authcode-" + authCode).result("失败").msg(e.getMessage()).modedate(TimeUtil.getCurrentTimeString()).build()); } return null; } diff --git a/src/com/cloudstore/dev/api/util/LogUtil.java b/src/com/cloudstore/dev/api/util/LogUtil.java new file mode 100644 index 00000000..831d937d --- /dev/null +++ b/src/com/cloudstore/dev/api/util/LogUtil.java @@ -0,0 +1,46 @@ +package com.cloudstore.dev.api.util; + + +import com.cloudstore.dev.bean.LoginLogEntity; +import weaver.conn.RecordSet; +import weaver.formmode.setup.ModeRightInfo; +import weaver.general.BaseBean; +import weaver.general.ThreadPoolUtil; +import weaver.interfaces.dito.comInfo.PropBean; + +import java.util.concurrent.ExecutorService; + +/** + * @version 1.0 + * @Title ecology-9 + * @Company 泛微软件 + * @CreateDate 2023/8/9 + * @Description app单点登录日志记录 + * @Author Lee + */ +public class LogUtil { + public static void log(LoginLogEntity logEntity) { + try { + Runnable runnable = new Runnable() { + @Override + public void run() { + String formModeId = PropBean.getUfPropValue("logEntityFormModeId"); + String logEntityCustomId = PropBean.getUfPropValue("logEntityCustomId"); + String logEntityTable = PropBean.getUfPropValue("logEntityTable"); + RecordSet recordSet = new RecordSet(); + String sql = "insert into " + logEntityTable + " (param,msg,result,formmodeid,modedate) values(?,?,?,?,?)"; + recordSet.executeUpdate(sql, logEntity.getParam(), logEntity.getMsg(), logEntity.getResult(), formModeId, logEntity.getModedate()); + //权限重构 + ModeRightInfo ModeRightInfo = new ModeRightInfo(); + ModeRightInfo.setNewRight(true); + ModeRightInfo.editModeDataShare(1, Integer.parseInt(formModeId), Integer.parseInt(logEntityCustomId)); + + } + }; + ExecutorService threadPool = ThreadPoolUtil.getThreadPool(null, null); + threadPool.execute(runnable); + } catch (Exception e) { + new BaseBean().writeLog("LogUtil" + e.getMessage()); + } + } +} diff --git a/src/com/cloudstore/dev/bean/LoginLogEntity.java b/src/com/cloudstore/dev/bean/LoginLogEntity.java new file mode 100644 index 00000000..eb56d88c --- /dev/null +++ b/src/com/cloudstore/dev/bean/LoginLogEntity.java @@ -0,0 +1,26 @@ +package com.cloudstore.dev.bean; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @version 1.0 + * @Title ecology-9 + * @Company 泛微软件 + * @CreateDate 2023/8/10 + * @Description ${description} + * @Author Lee + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class LoginLogEntity { + private String param; + private String msg; + private String result; + private String formmodeid; + private String modedate; +} diff --git a/src/com/engine/dito/ssologin/service/impl/MobileSsoLoginServiceImpl.java b/src/com/engine/dito/ssologin/service/impl/MobileSsoLoginServiceImpl.java index cf001cdd..3e7a5115 100644 --- a/src/com/engine/dito/ssologin/service/impl/MobileSsoLoginServiceImpl.java +++ b/src/com/engine/dito/ssologin/service/impl/MobileSsoLoginServiceImpl.java @@ -1,11 +1,14 @@ package com.engine.dito.ssologin.service.impl; import com.alibaba.fastjson.JSONObject; +import com.cloudstore.dev.api.util.LogUtil; import com.cloudstore.dev.api.util.Util_DataCache; +import com.cloudstore.dev.bean.LoginLogEntity; import com.engine.core.impl.Service; import com.engine.dito.ssologin.service.MobileSsoLoginService; import org.apache.commons.lang3.StringUtils; import weaver.general.BaseBean; +import weaver.general.TimeUtil; import weaver.hrm.User; import weaver.interfaces.dito.comInfo.PropBean; import weaver.interfaces.dito.util.HttpUtils; @@ -80,8 +83,9 @@ public class MobileSsoLoginServiceImpl extends Service implements MobileSsoLogin Map dataMap = new HashMap<>(); BaseBean baseBean = new BaseBean(); baseBean.writeLog("getUserInfoStart"); + String authCode = ""; try { - String authCode = (String) paramMap.get("auth_code"); + authCode = (String) paramMap.get("auth_code"); String accessToken = (String) Util_DataCache.getObjVal(SSO_LOGIN_ACCESS_TOKEN); if (StringUtils.isEmpty(accessToken)) { accessToken = getAccessToken(); @@ -110,6 +114,7 @@ public class MobileSsoLoginServiceImpl extends Service implements MobileSsoLogin baseBean.writeLog("获取用户信息失败", dataJson.toString()); return dataMap; } catch (Exception e) { + LogUtil.log(LoginLogEntity.builder().param("authCode-" + authCode).result("失败").msg("获取用户信息接口异常").modedate(TimeUtil.getCurrentTimeString()).build()); baseBean.writeLog("获取用户信息异常", e.getMessage()); dataMap.put("api_status", false); dataMap.put("errorMsg", e.getMessage());