去掉默认渲染发布标题信息\增加oauth认证跳转页面

This commit is contained in:
zhaol 2024-12-23 10:11:59 +08:00
parent 3a0f29f9f2
commit 12f1d4fd7c
4 changed files with 260 additions and 1 deletions

View File

@ -72,7 +72,7 @@ public class GetSomeIndexController {
}
bo.set("WSID", "7d3ca852-a0bd-42e6-80b1-3dcea6f55083");
bo.set("RELEASE_INSTRUCTIONS",
"<div id=\"RELEASE_INSTRUCTIONS_htmlRead\" class=\"readonly-html-div\" style=\"width: 100%;\"><style style=\"display: none;\">#RELEASE_INSTRUCTIONS_htmlRead img{vertical-align:bottom}li{list-style: inherit;}</style><p style=\"margin: 0px; text-align: center; line-height: 1.5em; display: block;\"><strong><span style=\";font-family:宋体;font-size:24px\"><br></span></strong></p><p style=\"margin: 0px; text-align: center; line-height: 1.5em; display: block;\"><strong><span style=\";font-family:宋体;font-size:24px\">关于发布《XXXXXXXXXXXX》的通知</span></strong><br></p><p style=\"margin: 0px; text-align: center; line-height: 1.5em; display: block;\"><strong><span style=\";font-family:宋体;font-size:14px\">&nbsp;</span></strong></p><p style=\"margin: 0px; text-align: justify; line-height: 1.5em; display: block;\"><span style=\";font-family:仿宋_GB2312;font-size:21px\">各事业部、分(子)公司、总部各部(室):</span></p><p style=\"margin: 0px; text-indent: 43px; text-align: justify; line-height: 1.5em; display: block;\"><span style=\";font-family:仿宋_GB2312;font-size:21px\">为</span><span style=\";font-family:宋体;font-size:21px\">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</span><span style=\";font-family:仿宋_GB2312;font-size:21px\">,现下发《</span><span style=\";font-family:宋体;font-size:21px\">xxxxxxxxxxxxxxx</span><span style=\";font-family:仿宋_GB2312;font-size:21px\">》,请各单位遵照执行。</span></p><p style=\"margin: 5px 0px; text-indent: 43px; text-align: justify; line-height: 1.5em; display: block;\"><span style=\";font-family:仿宋_GB2312;font-size:21px\">特此通知。</span></p><p style=\"margin: 5px 0px; text-indent: 43px; text-align: right; line-height: 1.5em; display: block;\"><span style=\"text-indent: 299px; font-family: 仿宋_GB2312; font-size: 21px;\">xxxxxxxxx单位名称</span></p><p style=\"margin: 5px 0px; text-indent: 43px; text-align: right; line-height: 1.5em; display: block;\"><span style=\"font-family: 仿宋_GB2312; font-size: 21px;\">2022年7月27日</span></p></div>");// 流程实例状态
"<div id=\"RELEASE_INSTRUCTIONS_htmlRead\" class=\"readonly-html-div\" style=\"width: 100%;\"><style style=\"display: none;\">#RELEASE_INSTRUCTIONS_htmlRead img{vertical-align:bottom}li{list-style: inherit;}</style><p style=\"margin: 0px; text-align: center; line-height: 1.5em; display: block;\"><strong><span style=\";font-family:宋体;font-size:24px\"><br></span></strong></p><p style=\"margin: 0px; text-align: center; line-height: 1.5em; display: block;\"><br></p><p style=\"margin: 0px; text-align: center; line-height: 1.5em; display: block;\"><strong><span style=\";font-family:宋体;font-size:14px\">&nbsp;</span></strong></p><p style=\"margin: 0px; text-align: justify; line-height: 1.5em; display: block;\"><span style=\";font-family:仿宋_GB2312;font-size:21px\">各事业部、分(子)公司、总部各部(室):</span></p><p style=\"margin: 0px; text-indent: 43px; text-align: justify; line-height: 1.5em; display: block;\"><span style=\";font-family:仿宋_GB2312;font-size:21px\">为</span><span style=\";font-family:宋体;font-size:21px\">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</span><span style=\";font-family:仿宋_GB2312;font-size:21px\">,现下发《</span><span style=\";font-family:宋体;font-size:21px\">xxxxxxxxxxxxxxx</span><span style=\";font-family:仿宋_GB2312;font-size:21px\">》,请各单位遵照执行。</span></p><p style=\"margin: 5px 0px; text-indent: 43px; text-align: justify; line-height: 1.5em; display: block;\"><span style=\";font-family:仿宋_GB2312;font-size:21px\">特此通知。</span></p><p style=\"margin: 5px 0px; text-indent: 43px; text-align: right; line-height: 1.5em; display: block;\"><span style=\"text-indent: 299px; font-family: 仿宋_GB2312; font-size: 21px;\">xxxxxxxxx单位名称</span></p><p style=\"margin: 5px 0px; text-indent: 43px; text-align: right; line-height: 1.5em; display: block;\"><span style=\"font-family: 仿宋_GB2312; font-size: 21px;\">2022年7月27日</span></p></div>");// 流程实例状态
SDK.getBOAPI().create("BO_ACT_COE_PUBLISH", bo, processInstance, userContext);
}

View File

@ -0,0 +1,257 @@
package com.awspaas.user.apps.integration.oauth;
import com.actionsoft.bpms.bo.engine.BO;
import com.actionsoft.bpms.commons.oauth.AbstractOauth;
import com.actionsoft.bpms.org.model.DepartmentModel;
import com.actionsoft.bpms.server.RequestParams;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.bpms.util.UtilString;
import com.actionsoft.sdk.local.SDK;
import com.actionsoft.sdk.local.api.LogAPI;
import com.actionsoft.sdk.local.api.Logger;
import com.actionsoft.sdk.local.api.ORGAPI;
import com.actionsoft.sdk.service.model.UserModel;
import com.alibaba.fastjson.JSONObject;
import com.yili.wsclient.ClientService;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang.StringUtils;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* OA系统 跳转登陆PAl
*
* @author lihy
*/
public class OauthLoginView extends AbstractOauth {
private Logger logger = LogAPI.getLogger(OauthLoginView.class);
static String clientId = "oaprocess";
static String clientSecret = "qwer1234";
/**
* 这个方法代表是否有登录授权页返回的值取决于三方系统提供的 SSO 认证方式一类认 证方式如 Oauth2.0
* 认证需要先跳转到三方系统的登录授权页面授权成功后再跳转到调 用方指定的页面这类认证方式下hasOauthPage()方法需要返回 true
* 另外一类认证时不 需要跳转到登录授权页 会直接传过来 ticket 或者 token 参数 hasOauthPage()方法需要返 false
*
* @return
*/
@Override
public boolean hasOauthPage() {
return false;
}
/**
* 如果 hasOauthPage()方法返回的值是 false 返回 null 即可 如果 hasOauthPage()方法返回 的值是
* true则此处返回三方系统的登录授权页地址
* @param requestParams
* @return
*/
@Override
public String getOauthPage(RequestParams requestParams) {
return null;
}
@Override
public String validate(RequestParams params) throws IOException {
BO bo = new BO();
String id = params.get("id");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
long begintime = System.currentTimeMillis();
bo.set("BEGIN_TIME",sdf.format(new Date()));
String userid = "";
long login_end_time = 0L;
if (StringUtils.isNotEmpty(params.get("casaccount"))){
BO detail = SDK.getBOAPI().query("BO_EU_OA_RESON", true).addQuery("LOGINID=", params.get("casaccount")).detail();
String workcode = "";
if (detail!=null){
workcode= detail.getString("WORKCODE");
}else {
workcode= params.get("casaccount");
}
login_end_time = System.currentTimeMillis();
bo.set("END_TIME",login_end_time);
bo.set("USER_ID",params.get("casaccount"));
UserContext userContext = UserContext.fromUID("admin");
SDK.getBOAPI().createDataBO("BO_EU_OA_LOGIN",bo,userContext);
if (("5af46cd5-a1bc-4125-a144-86d1a199eec1").equals(id)){
try {
setUserLog(params.get("casaccount"),"1");
}catch (Exception e){
}
}
return workcode;
}
if (StringUtils.isNotEmpty(params.get("usercode"))){
BO detail = SDK.getBOAPI().query("BO_EU_OA_RESON", true).addQuery("LOGINID=", params.get("usercode")).detail();
String workcode = "";
if (detail!=null){
workcode = detail.getString("WORKCODE");
}else {
workcode = params.get("usercode");
}
login_end_time = System.currentTimeMillis();
bo.set("END_TIME",sdf.format(new Date()));
bo.set("USER_ID",params.get("usercode"));
UserContext userContext = UserContext.fromUID("admin");
SDK.getBOAPI().createDataBO("BO_EU_OA_LOGIN",bo,userContext);
if (("5af46cd5-a1bc-4125-a144-86d1a199eec1").equals(id)){
try {
setUserLog(params.get("usercode"),"1");
}catch (Exception e){
}
}
return workcode;
}
logger.info("单点登录验证---------"+params);
try {
long loginbegintime = System.currentTimeMillis();
bo.set("LOGIN_BEGIN_TIME",sdf.format(new Date()));
String redirect_uri = params.get("code");
if(StringUtils.isEmpty(redirect_uri)){
logger.error("跳转地址为空,请重新输入");
return null;
}
App app = new App();
String tokens = app.getTokens("http://10.114.11.135:8088/portal/yiliView.html", redirect_uri);
if(StringUtils.isEmpty(tokens)){
logger.error("获取token为空请重新输入登录信息获取code");
return null;
}else {
JSONObject jsonObjects = JSONObject.parseObject(tokens);
String access_token = jsonObjects.getString("access_token");
String userInfo = app.getUserInfo(access_token);
if (StringUtils.isNotEmpty(userInfo)){
JSONObject json = JSONObject.parseObject(userInfo);
//System.out.println("json-=====>>>>"+json);
if (StringUtils.isNotEmpty(json.getString("employeenumber"))){
//System.out.println("userid》》》》》》》》》》"+json.getString("employeenumber"));
if (("5af46cd5-a1bc-4125-a144-86d1a199eec1").equals(id)){
try {
setUserLog(json.getString("employeenumber"),"1");
}catch (Exception e){
}
}
userid = json.getString("employeenumber");
login_end_time = System.currentTimeMillis();
bo.set("END_TIME",sdf.format(new Date()));
bo.set("SCENDTIME",(login_end_time-loginbegintime));
bo.set("LOGIN_END_TIME",sdf.format(new Date()));
bo.set("USER_ID",userid);
UserContext userContext = UserContext.fromUID("admin");
SDK.getBOAPI().createDataBO("BO_EU_OA_LOGIN",bo,userContext);
BO detail = SDK.getBOAPI().query("BO_EU_OA_RESON", true).addQuery("LOGINID=", json.getString("employeenumber")).detail();
String workcode = "";
if(detail!=null){
workcode = detail.getString("WORKCODE");
}else {
workcode = json.getString("employeenumber");
}
return workcode;
}
}
}
} catch (Exception e) {
logger.error("统一身份认证失败!", e);
}
return null;
}
public long getCookieTime(UserModel user) {
//System.out.println("session时间>>>>>>>>>>"+user.getSessionTime());
//下面的值代表与 AWS PaaS 会话过期时间一致
//因平台会话过期时间以分钟计所以需要乘以 60
return 0;
}
/**
* 统一身份认证接口
* @param1 webserviceUrl 身份认证接口地址
* @param2 casaccount 登录账号 OA账号
* @param3 appaccount 应用系统登录账号
* @param4 appid 应用系统id
* @param5 validcode 验证码
* @return true/false
*/
public static String getToken(String casaccount,String appaccount,String appid,String validcode) {
//身份认证接口地址
String webserviceUrl = SDK.getAppAPI().getProperty("com.awspaas.user.apps.yili.integration", "webserviceUrl");
String checkLogin = ClientService.checkLogin(webserviceUrl,casaccount,appaccount,appid,validcode);
return checkLogin ;
}
public static String geAuthorization(String clientId, String clientSecret) {
try {
byte[] key = (clientId + ":" + clientSecret).getBytes("utf-8");
String cc = new String(Base64.encodeBase64(key), "utf-8");
// String cc = new String(java.util.Base64.getEncoder().encode(key), "utf-8");
return "Basic " + cc;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return "";
}
}
/**
* 用户登录日志
* @param userid
* @param logType
*/
public void setUserLog(String userid,String logType) {
System.err.println("用户登录记录存入日志========>"+userid+"_类型:"+logType);
if (UtilString.isNotEmpty(userid)) {
String logTime = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
BO bo = new BO();
/*String slq = "SELECT ID,LOGINCOUNTS FROM BO_EU_USER_LOGIN_LOG WHERE LOGINUSERNAME = '"+userid+"' AND LOGINTIME = '"+logTime+"'";
List<RowMap> maps = DBSql.getMaps(slq);
if(maps.size()!=0) {
bo = SDK.getBOAPI().get("BO_EU_USER_LOGIN_LOG", maps.get(0).getString("ID"));
bo.set("LOGINCOUNTS", maps.get(0).getInt("LOGINCOUNTS")+1);
SDK.getBOAPI().update("BO_EU_USER_LOGIN_LOG", bo);
}else {*/
ORGAPI orgapi = SDK.getORGAPI();
com.actionsoft.bpms.org.model.UserModel user = orgapi.getUser(userid);
DepartmentModel departmentByUser = orgapi.getDepartmentByUser(userid);
bo.set("LOGINUSERNAME", userid);
bo.set("USERBUNAME",user.getExt4());
bo.set("USERPOST",user.getPositionName());
bo.set("USERDEPTNAME", departmentByUser.getPathNameOfCache());
bo.set("LOGINTIME", logTime);
bo.set("LOGINCOUNTS", 1);
bo.set("LOGTYPE", Integer.valueOf(logType));
SDK.getBOAPI().createDataBO("BO_EU_USER_LOGIN_LOG", bo, UserContext.fromUID("admin"));
//}
}
}
}

View File

@ -10,6 +10,7 @@ import com.actionsoft.apps.resource.plugin.profile.OauthPluginProfile;
import com.actionsoft.apps.resource.plugin.profile.ProcessPublicEventPluginProfile;
import com.awspaas.user.apps.integration.oa.TaskListener;
import com.awspaas.user.apps.integration.oauth.OauthLogin;
import com.awspaas.user.apps.integration.oauth.OauthLoginView;
import com.awspaas.user.apps.integration.oauth.ProcessOathLogin;
/**
@ -25,6 +26,7 @@ public class Plugins implements PluginListener {
list.add(new ProcessPublicEventPluginProfile(TaskListener.class.getName(), "待办推送监听器"));
list.add(new OauthPluginProfile("oauthLogin", OauthLogin.class.getName(), "OA系统 跳转登陆PAl"));
list.add(new OauthPluginProfile("processOathLogin", ProcessOathLogin.class.getName(), "流程中心发布"));
list.add(new OauthPluginProfile("oauthLoginView", OauthLoginView.class.getName(), "OA系统跳转文件查询页面"));
return list;
}