datas = JSONUtil.parseObj(data);
+
+ //ECOLOGY返回的token
+ // TODO 为Token缓存设置过期时间
+ SYSTEM_CACHE.put("SERVER_TOKEN", StrUtil.nullToEmpty((String)datas.get("token")));
+
+ return datas;
+ }
+
+ /**
+ * 第三步:新增
+ *
+ * 调用ecology系统的rest接口,请求头部带上token和用户标识认证信息
+ *
+ * @param params 请求参数map,创建流程之类的post接口是以模拟form表单提交的方式,其他get接口以json字符串方式提交
+ *
+ * 注意:ECOLOGY系统所有POST接口调用请求头请设置 "Content-Type","application/x-www-form-urlencoded; charset=utf-8"
+ */
+ public static String NewPostRestful(Map params, String userid, ConfigVo configVo) throws IOException {
+
+ //ECOLOGY返回的token
+// String token = (String) Getoken(PropKit.getProp(PropKit.NEWADDRESS)).get("token");
+ String token = (String) NewGetoken(configVo.getParamVal(FVConstants.newAddRess.name()),configVo).get("token");
+
+
+ //封装请求头参数
+ RSA rsa = new RSA(null, configVo.getParamVal(FVConstants.newspk.name()));
+ //对用户信息进行加密传输,暂仅支持传输OA用户ID
+ String encryptUserid = rsa.encryptBase64(userid, CharsetUtil.CHARSET_UTF_8, KeyType.PublicKey);
+
+ //调用ECOLOGY系统接口
+ String data = HttpRequest.post(configVo.getParamVal(FVConstants.newAddRess.name()) + configVo.getParamVal(FVConstants.tongyongApi.name()))
+ .header("appid",configVo.getParamVal(FVConstants.appId.name()))
+ .header("token",token)
+ .header("userid",encryptUserid)
+ .form(params)
+ .execute().body();
+ log.info("PostRestfulby():"+data);
+ return data;
+ }
+
+ /**
+ * 第三步:提交
+ *
+ * 调用ecology系统的rest接口,请求头部带上token和用户标识认证信息
+ *
+ * @param params 请求参数map,创建流程之类的post接口是以模拟form表单提交的方式,其他get接口以json字符串方式提交
+ *
+ * 注意:ECOLOGY系统所有POST接口调用请求头请设置 "Content-Type","application/x-www-form-urlencoded; charset=utf-8"
+ */
+ public static String NewPostSubmitRestful(Map params, ConfigVo configVo) throws IOException {
+
+ //ECOLOGY返回的token
+ String token = (String) NewGetoken(configVo.getParamVal(FVConstants.newAddRess.name()),configVo).get("token");
+ log.info(token);
+
+ //封装请求头参数
+ RSA rsa = new RSA(null, configVo.getParamVal(FVConstants.newspk.name()));
+ //对用户信息进行加密传输,暂仅支持传输OA用户ID
+ String encryptUserid = rsa.encryptBase64("1", CharsetUtil.CHARSET_UTF_8, KeyType.PublicKey);
+
+ //调用ECOLOGY系统接口
+ log.info(configVo.getParamVal(FVConstants.newAddRess.name()));
+ log.info(configVo.getParamVal(FVConstants.tongyonSubmitgApi.name()));
+ log.info(configVo.getParamVal(FVConstants.appId.name()));
+ log.info(encryptUserid);
+ String data = HttpRequest.post(configVo.getParamVal(FVConstants.newAddRess.name()) + configVo.getParamVal(FVConstants.tongyonSubmitgApi.name()))
+ .header("appid",configVo.getParamVal(FVConstants.appId.name()))
+ .header("token",token)
+ .header("userid",encryptUserid)
+ .form(params)
+ .execute().body();
+ log.info("PostRestfulby():"+data);
+ return data;
+ }
+}
diff --git a/v5/apps-customize/src/main/java/com/seeyon/apps/src_qyba/util/InterfaceListUtil.java b/v5/apps-customize/src/main/java/com/seeyon/apps/src_qyba/util/InterfaceListUtil.java
new file mode 100644
index 0000000..0058478
--- /dev/null
+++ b/v5/apps-customize/src/main/java/com/seeyon/apps/src_qyba/util/InterfaceListUtil.java
@@ -0,0 +1,344 @@
+package com.seeyon.apps.src_qyba.util;
+
+import com.alibaba.fastjson.JSONObject;
+import com.seeyon.apps.common.plugin.vo.ConfigVo;
+import com.seeyon.apps.src_qyba.constants.FVConstants;
+import org.apache.commons.httpclient.Header;
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpException;
+import org.apache.commons.httpclient.HttpStatus;
+import org.apache.commons.httpclient.methods.PostMethod;
+import org.apache.commons.httpclient.methods.RequestEntity;
+import org.apache.commons.httpclient.methods.StringRequestEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.util.EntityUtils;
+import org.springframework.core.io.support.PropertiesLoaderUtils;
+
+import java.io.*;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.text.MessageFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Properties;
+
+/**
+ * 接口调用工具类
+ * 2021-06-08
+ * @author huangzhengguo
+ *
+ */
+public class InterfaceListUtil {
+
+ /**
+ * 获取一个token
+ *
+
+ * @return
+ * @throws IOException
+ * @throws FileNotFoundException
+ */
+ public String getToken(String loginName,ConfigVo configVo) throws FileNotFoundException, IOException {
+ String address = "";
+ String token = "";
+ if("".equals(loginName)) {
+// address = PropKit.getProp(PropKit.OATOKENURL)+"/"+PropKit.getProp(PropKit.RESTNAME)+"/"+PropKit.getProp(PropKit.RESTPASSWORD);
+ address = configVo.getParamVal(FVConstants.oaTokenUrl.name())+"/"
+ +configVo.getParamVal(FVConstants.restName.name())+"/"
+ +configVo.getParamVal(FVConstants.restPassword.name());
+ }else {
+// address = PropKit.getProp(PropKit.OATOKENURL)+"/"+PropKit.getProp(PropKit.RESTNAME)+"/"+PropKit.getProp(PropKit.RESTPASSWORD)+"?loginName="+loginName;
+ address = configVo.getParamVal(FVConstants.oaTokenUrl.name())+"/"+
+ configVo.getParamVal(FVConstants.restName.name())+"/"+
+ configVo.getParamVal(FVConstants.restPassword.name())+"?loginName="+loginName;
+ }
+ HttpURLConnection connection = (HttpURLConnection) new URL(address).openConnection();
+ connection.setRequestMethod("GET");
+ int responseCode = connection.getResponseCode();
+ if (responseCode == HttpURLConnection.HTTP_OK) {
+ BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
+ String inputLine;
+ StringBuffer response = new StringBuffer();
+ while ((inputLine = in.readLine()) != null) {
+ response.append(inputLine);
+ }
+ in.close();
+ String result = response.toString();
+ if(result.contains("{")) {
+ JSONObject jsObj = JSONObject.parseObject(result);
+ System.out.println(jsObj);
+ token = jsObj.get("id").toString();
+ }else {
+ token = result;
+ }
+ System.out.println(token);
+ } else {
+ System.out.println("GET request not worked");
+ }
+ return token;
+ }
+
+ /**
+ * 调用get接口
+ *
+ * @param par 拼接在url中的参数
+ * @param strUrl 需要调用的url对应的配置文件的key
+ * @return
+ */
+ public String doGet(String par, String strUrl, String token) {
+ String address = MessageFormat.format(getProperties(strUrl), par + "?token=") + token;
+
+ DefaultHttpClient client = new DefaultHttpClient();
+ String result = "";
+ HttpGet get = new HttpGet(address);
+ try {
+ HttpResponse res = client.execute(get);
+ if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
+ result = EntityUtils.toString(res.getEntity());
+ }
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+// JSONObject jsObj = JSONObject.parseObject(result);
+ return result;
+
+ }
+
+ /**
+ * 调用post接口
+ *
+ * @param str 调用接口传递的参数json
+ * @param urlStr 需要调用的url对应的参数文件中的编码
+ * @return
+ */
+ public JSONObject doPost(String str, String urlStr, String token) {
+ HttpURLConnection connection = null;
+ InputStream is = null;
+ OutputStream os = null;
+ BufferedReader br = null;
+ String result = null;
+ try {
+// String token = getToken(getProperties("restUserName"), getProperties("restPassword"));
+ URL url = new URL(getProperties(urlStr) + "?token=" + token);
+ // 通过远程url连接对象打开连接
+ connection = (HttpURLConnection) url.openConnection();
+ // 设置连接请求方式
+ connection.setRequestMethod("POST");
+ // 设置连接主机服务器超时时间:15000毫秒
+ connection.setConnectTimeout(15000);
+ // 设置读取主机服务器返回数据超时时间:60000毫秒
+ connection.setReadTimeout(60000);
+
+ // 默认值为:false,当向远程服务器传送数据/写数据时,需要设置为true
+ connection.setDoOutput(true);
+ // 默认值为:true,当前向远程服务读取数据时,设置为true,该参数可有可无
+ connection.setDoInput(true);
+ // 设置传入参数的格式:请求参数应该是 name1=value1&name2=value2 的形式。
+ connection.setRequestProperty("Content-Type", "application/json");
+ // 通过连接对象获取一个输出流
+ os = connection.getOutputStream();
+ // 通过输出流对象将参数写出去/传输出去,它是通过字节数组写出的
+ if (!("".equals(str) || str == null)) {
+ os.write(str.getBytes("UTF-8"));
+ }
+ // 连接对象获取一个输入流,向远程读取
+ if (connection.getResponseCode() == 200) {
+
+ is = connection.getInputStream();
+ // 对输入流对象进行包装:charset根据工作项目组的要求来设置
+ br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
+
+ StringBuffer sbf = new StringBuffer();
+ String temp = null;
+ // 循环遍历一行一行读取数据
+ while ((temp = br.readLine()) != null) {
+ sbf.append(temp);
+ sbf.append("\r\n");
+ }
+ result = sbf.toString();
+ }
+ } catch (MalformedURLException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ } finally {
+ // 关闭资源
+ if (null != br) {
+ try {
+ br.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ if (null != os) {
+ try {
+ os.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ if (null != is) {
+ try {
+ is.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ // 断开与远程地址url的连接
+ connection.disconnect();
+ }
+ JSONObject json = JSONObject.parseObject(result);
+ return json;
+
+ }
+
+ /**
+ * 获取指定参数文件的值(pa.properties)
+ *
+ * @param str 参数文件中的key
+ * @return
+ */
+ public String getProperties(String str) {
+ Properties properties = null;
+ try {
+ properties = PropertiesLoaderUtils.loadAllProperties("pa.properties");
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ return (String) properties.get(str);
+ }
+
+ /**
+ * 调用Soap接口 对接平台使用
+ * @param action 平台接口中的方法参数名称
+ * @param xml 传递平台的XML数据参数
+ * @return 返回调取soap接口后接口的返回值(未处理)
+ * @throws HttpException
+ * @throws IOException
+ */
+ public String doSoap(String action, String xml,String id) throws HttpException, IOException {
+ String wsdl = "";
+ if("createDepartment".equals(action)||"updateDepartment".equals(action)) {
+ wsdl = getProperties("DeptWsdl");
+ }else if("createPractitioner".equals(action)||"updatePractitioner".equals(action)) {
+ wsdl = getProperties("MemberWsdl");
+ }
+ System.out.println("wsdl:"+wsdl);
+ int timeout = 10000;
+
+ // 构造soap请求信息
+ StringBuffer sb = new StringBuffer("");
+ sb.append(
+ "");
+ sb.append("");
+ sb.append("");
+ sb.append(" ");
+ sb.append("" + action + "" + xml + "");
+ sb.append("");
+ sb.append("");
+ sb.append("");
+
+ // HttpClient发送SOAP请求
+// System.out.println("HttpClient 发送SOAP请求");
+ HttpClient client = new HttpClient();
+ PostMethod postMethod = new PostMethod(wsdl);
+ Header header = new Header();
+ // 设置连接超时
+ client.getHttpConnectionManager().getParams().setConnectionTimeout(timeout);
+ // 设置读取时间超时
+ client.getHttpConnectionManager().getParams().setSoTimeout(timeout);
+ // 然后把Soap请求数据添加到PostMethod中
+ RequestEntity requestEntity = null;
+ try {
+ requestEntity = new StringRequestEntity(sb.toString(), "text/xml", "UTF-8");
+ } catch (UnsupportedEncodingException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ // 设置请求头部,否则可能会报 “no SOAPAction header” 的错误
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ Date businessTime = new Date();
+ Date operationTime = new Date();
+ SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMddHHmmss");
+ Date root = new Date();
+ String rootId = sdf1.format(root);
+ postMethod.setRequestHeader("SOAPAction", "");
+ postMethod.setRequestHeader("Content-Type", "application/fhir+json");
+ postMethod.setRequestHeader("rootId", rootId);
+ postMethod.setRequestHeader("token", id);
+ postMethod.setRequestHeader("domain", "OA");
+ postMethod.setRequestHeader("businessTime", sdf.format(businessTime));
+ postMethod.setRequestHeader("key", "806c1571-35de-41a2-b3c9-06ae5474d43a");
+ postMethod.setRequestHeader("operationTime", sdf.format(operationTime));
+ // 设置请求体
+ postMethod.setRequestEntity(requestEntity);
+ int status = client.executeMethod(postMethod);
+ // 打印请求状态码
+// System.out.println("status:" + status);
+ // 获取响应体输入流
+ InputStream is = postMethod.getResponseBodyAsStream();
+ // 获取请求结果字符串
+ byte[] bytes = new byte[is.available()];
+ is.read(bytes);
+ String result = new String(bytes);
+
+ return result;
+ }
+
+ /**
+ * 下载文件到指定目录
+ * @param dowUrl:http地址
+ * @param dowPath:指定目录
+ * */
+ public String download(String dowUrl, String dowPath){
+ try {
+// log.info("下载地址是:"+dowUrl+",存储地址是:"+dowPath);
+ URL url = new URL(dowUrl);
+
+ URLConnection urlConnection = url.openConnection();
+
+ HttpURLConnection httpURLConnection = (HttpURLConnection) urlConnection;// http的连接类
+
+ //String contentType = httpURLConnection.getContentType();//请求类型,可用来过滤请求,
+
+ httpURLConnection.setConnectTimeout(1000*5);//设置超时
+
+ httpURLConnection.setRequestMethod("GET");//设置请求方式,默认是GET
+
+ httpURLConnection.setRequestProperty("Charset", "UTF-8");// 设置字符编码
+
+ httpURLConnection.connect();// 打开连接
+
+ BufferedInputStream bin = new BufferedInputStream(httpURLConnection.getInputStream());
+
+ String path = dowPath;// 指定存放位置
+ File filed = new File(path);
+
+ OutputStream out = new FileOutputStream(filed);
+ int size = 0;
+
+ byte[] b = new byte[2048];
+ //把输入流的文件读取到字节数据b中,然后输出到指定目录的文件
+ while ((size = bin.read(b)) != -1) {
+ out.write(b, 0, size);
+ }
+ // 关闭资源
+ bin.close();
+ out.close();
+ return "200";
+ } catch (MalformedURLException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ return "500";
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ return "400";
+ }
+ }
+}
diff --git a/v5/apps-customize/src/main/java/com/seeyon/apps/src_qyba/vo/FVResponse.java b/v5/apps-customize/src/main/java/com/seeyon/apps/src_qyba/vo/FVResponse.java
new file mode 100644
index 0000000..6a5ed97
--- /dev/null
+++ b/v5/apps-customize/src/main/java/com/seeyon/apps/src_qyba/vo/FVResponse.java
@@ -0,0 +1,72 @@
+package com.seeyon.apps.src_qyba.vo;
+
+import com.alibaba.fastjson.JSONObject;
+
+/**
+ * 功能描述:
+ *
+ *
+ *
+ *
+ * @Author: huangzhengguo
+ * @Date: 2024/03/04
+ */
+public class FVResponse {
+
+ private boolean success;
+ private int status;
+ private String msg;
+ private String data;
+
+
+ public FVResponse(JSONObject object) {
+ if(object.containsKey("Status")) {
+ this.status = object.getInteger("Status");
+ } else {
+ this.status = object.getInteger("status");
+ }
+ this.success = (1 == status);
+ if(object.containsKey("Msg")) {
+ this.msg = object.getString("Msg");
+ } else {
+ this.msg = object.getString("msg");
+ }
+ this.data = object.getString("Data");
+ }
+
+ public boolean isSuccess() {
+ return success;
+ }
+
+ public FVResponse setSuccess(boolean success) {
+ this.success = success;
+ return this;
+ }
+
+ public int getStatus() {
+ return status;
+ }
+
+ public FVResponse setStatus(int status) {
+ this.status = status;
+ return this;
+ }
+
+ public String getMsg() {
+ return msg;
+ }
+
+ public FVResponse setMsg(String msg) {
+ this.msg = msg;
+ return this;
+ }
+
+ public String getData() {
+ return data;
+ }
+
+ public FVResponse setData(String data) {
+ this.data = data;
+ return this;
+ }
+}
diff --git a/v5/apps-customize/src/main/resources/needless_check_login.xml b/v5/apps-customize/src/main/resources/needless_check_login.xml
new file mode 100644
index 0000000..97114bc
--- /dev/null
+++ b/v5/apps-customize/src/main/resources/needless_check_login.xml
@@ -0,0 +1,322 @@
+
+
+
+ /qrCodeForm.do
+
+ index
+ newMain
+
+
+
+ /sc.do
+
+ qr
+
+
+
+ /elearning.do
+
+ error
+ m3Redirect
+ message
+ pcRedirect
+
+
+
+ /phoneLogin/phoneLogin.do
+
+ getMessageCode
+ validateMessageCode
+
+
+
+ /wechat/miniprogram.do
+
+ a8home
+ bind
+ bindMemberPhone
+ login
+ unbind
+
+
+
+ /portal/spaceController.do
+
+ showThemSpace
+
+
+
+ /identification.do
+
+ getSessionId
+
+
+
+ /fileUpload.do
+
+ showRTE
+
+
+
+ /fileDownload.do
+
+ showRTE
+
+
+
+ /form/formUpgrade.do
+
+ toUpgrade
+ upgrade
+ viewUpgrade
+
+
+
+ formtalkFormMapperController.do
+
+ importFormtalkData
+
+
+
+ /thirdpartyController.do
+
+ access
+ index
+ logoutNotify
+ show
+ mailAuth
+
+
+
+ /main.do
+
+ changeLocale
+ hangup
+ headerjs
+ index
+ login
+ login4Ucpc
+ login4Ucpc3
+ login4Vjoin
+ logout
+ logout4Session
+ logout4Vjoin
+ logout4ZX
+ main
+ login4QrCode
+ qrCodeHelp
+ updateLoginSeed
+
+
+
+ /trustdo/A8/XRD.do
+
+ getLoginAccount
+ getLoginAcctoken
+ webLogin
+
+
+
+ /share.do
+
+ index
+
+
+
+ /genericController.do
+
+ index
+
+
+
+ /edoc/edocUpgradeControllor.do
+
+ upgrade
+ download
+
+
+
+ /uploadService.do
+
+ processUploadService
+
+
+
+ /autoinstall.do
+
+ ieSetDown
+ regInstallDown
+ regInstallDown64
+ downloadAssistant
+
+
+
+ /personalBind.do
+
+ getBindTypeByLoginName
+ isCanUse
+ retrievePassword
+ sendVerificationCodeToBindEmail
+ sendVerificationCodeToBindNum
+ validateVerificationCode
+
+
+
+
+
+
+
+
+
+
+ /commonimage.do
+
+ showImage
+
+
+
+ /individualManager.do
+
+ resetPassword
+
+
+
+ /wechat/dingding.do
+
+ binding
+ index
+ main
+ newIndex
+ newMain
+ viewh5Message
+
+
+
+ /uc/rest.do
+
+ commonPierce
+ downloadImage
+ getBgTimeStamp
+ getLoginsecurityMsg
+ sendsms
+ smsrequired
+ testIp
+ isQrLogin
+ getDigitalCodeInfo
+
+
+
+ portalManager
+
+ sendSMSLoginCode
+ smsLoginEnabled
+
+
+
+ loginUserManager
+
+ getLockTime
+
+
+
+ qrCodeLoginManager
+
+ isLogin
+
+
+
+ meetingAjaxManager
+
+ meetingPanelData
+ meetingPanelDisplay
+
+
+
+ /m3/loginController.do
+
+ transLogin
+ transLogout
+ getProfile
+
+
+
+ /m3/mClientBindController.do
+
+ bindApply
+
+
+
+ m3ProductManager
+
+ productInfo
+ productStatus
+
+
+
+ /m3/homeSkinController.do
+
+ downloadImage
+ getSkinImageUrl
+
+
+
+ /m3/transModeController.do
+
+ getTransModeForMobile
+
+
+
+ /media/media.do
+
+ mediaShow
+
+
+
+ /ocipEdoc.do
+
+ index
+
+
+
+ /colView.do
+
+ index
+
+
+
+ /caAccountManagerController.do
+
+ findKeyNumByLoginName
+
+
+
+ /fddCallbackController.do
+
+ asynch
+ synch
+
+
+
+ /seeyonReport/seeyonReportController.do
+
+ redirectSeeyonReport
+
+
+
+ /imc.do
+
+ index
+ logout
+
+
+
+
+ /cloudbuild.do
+
+ download
+ getDownloadPageInfo
+ getLatestVersionInfo
+ getDownloadQrUrl
+
+
+
\ No newline at end of file
diff --git a/v5/apps-customize/src/main/resources/needless_check_login_recheck.xml b/v5/apps-customize/src/main/resources/needless_check_login_recheck.xml
new file mode 100644
index 0000000..0e84aeb
--- /dev/null
+++ b/v5/apps-customize/src/main/resources/needless_check_login_recheck.xml
@@ -0,0 +1,426 @@
+
+
+
+
+
+ /qrCodeForm.do
+ com.seeyon.apps.qrCodeForm.controller.QrCodeFormController
+
+ index
+ newMain
+
+
+
+
+ /sc.do
+ com.seeyon.cap4.form.modules.smartCode.controller.SmartCodeController
+
+ qr
+
+
+
+ /media/media.do
+ com.seeyon.ctp.common.media.controller.MediaController
+
+ mediaShow
+
+
+
+ /phoneLogin/phoneLogin.do
+ com.seeyon.ctp.login.controller.PhoneLoginController
+
+ getMessageCode
+ validateMessageCode
+
+
+
+ portalManager
+ com.seeyon.ctp.portal.manager.PortalManagerImpl
+
+ sendSMSLoginCode
+ smsLoginEnabled
+
+
+
+ /fileDownload.do
+ com.seeyon.ctp.common.fileupload.FileUploadController
+
+ showRTE
+
+
+
+ loginUserManager
+ com.seeyon.ctp.login.LoginUserManagerImpl
+
+ getLockTime
+
+
+
+ /main.do
+ com.seeyon.ctp.login.controller.MainController
+
+ changeLocale
+ hangup
+ headerjs
+ index
+ login
+ login4Ucpc
+ login4Ucpc3
+ login4Vjoin
+ logout
+ logout4Session
+ logout4Vjoin
+ logout4ZX
+ main
+ login4QrCode
+ qrCodeHelp
+ updateLoginSeed
+
+
+
+ /trustdo/A8/XRD.do
+ com.seeyon.apps.trustdo.controller.XRDController
+
+ getLoginAccount
+ getLoginAcctoken
+ webLogin
+
+
+
+ /share.do
+ com.seeyon.v3x.system.share.controller.ShareController
+
+ index
+
+
+
+ /edoc/edocUpgradeControllor.do
+ com.seeyon.v3x.edoc.controller.EdocUpgradeControllor
+
+ upgrade
+ download
+
+
+
+ /m3/mClientBindController.do
+ com.seeyon.apps.m3.bind.controller.M3ClientBindController
+
+ bindApply
+
+
+
+ /uploadService.do
+ com.seeyon.ctp.services.FileUploadService
+
+ processUploadService
+
+
+
+ /uc/rest.do
+ com.seeyon.apps.zx.controller.ZxRestController
+
+ commonPierce
+ downloadImage
+ getBgTimeStamp
+ getLoginsecurityMsg
+ sendsms
+ smsrequired
+ testIp
+ isQrLogin
+ getDigitalCodeInfo
+
+
+
+ /m3/homeSkinController.do
+ com.seeyon.apps.m3.skin.controller.M3HomeSkinController
+
+ downloadImage
+ getSkinImageUrl
+
+
+
+ /colView.do
+ com.seeyon.apps.ocip.exchange.collaboration.controller.CollViewController
+
+ index
+
+
+
+ /autoinstall.do
+ com.seeyon.apps.autoinstall.controller.AutoInstallController
+
+ ieSetDown
+ regInstallDown
+ regInstallDown64
+ downloadAssistant
+
+
+
+
+
+
+
+
+
+
+
+ /caAccountManagerController.do
+ com.seeyon.v3x.ca.caaccount.controller.CAAccountManagerController
+
+ findKeyNumByLoginName
+
+
+
+ /elearning.do
+ com.seeyon.apps.elearning.controller.ElearningController
+
+ error
+ m3Redirect
+ message
+ pcRedirect
+
+
+
+ /wechat/miniprogram.do
+ com.seeyon.apps.weixin.controller.MiniProgramController
+
+ a8home
+ bind
+ bindMemberPhone
+ login
+ unbind
+
+
+
+ /portal/spaceController.do
+ com.seeyon.ctp.portal.space.controller.SpaceController
+
+ showThemSpace
+
+
+
+ /identification.do
+ com.seeyon.v3x.identification.controller.IdentificationController
+
+ getSessionId
+
+
+
+ /fddCallbackController.do
+ com.seeyon.apps.econtract.fdd.controller.FddCallbackController
+
+ asynch
+ synch
+
+
+
+ m3ProductManager
+ com.seeyon.apps.m3.product.manager.impl.M3ProductManagerImpl
+
+ productInfo
+ productStatus
+
+
+
+ /ocipEdoc.do
+ com.seeyon.apps.ocip.exchange.edoc.OCIPEdocController
+
+ index
+
+
+
+ /m3/loginController.do
+
+ transLogin
+ transLogout
+ getProfile
+
+
+
+ /fileUpload.do
+ com.seeyon.ctp.common.fileupload.FileUploadController
+
+ showRTE
+ processUpload
+
+
+
+ qrCodeLoginManager
+ com.seeyon.ctp.login.manager.QrCodeLoginManagerImpl
+
+ isLogin
+
+
+
+ /form/formUpgrade.do
+ com.seeyon.ctp.form.service.FormUpgradeController
+
+ toUpgrade
+ upgrade
+ viewUpgrade
+
+
+
+ /seeyonReport/seeyonReportController.do
+ com.seeyon.apps.seeyonreport.controller.SeeyonReportController
+
+ redirectSeeyonReport
+
+
+
+ formtalkFormMapperController.do
+ com.seeyon.apps.formtalk.controller.FormtalkImportController
+
+ importFormtalkData
+
+
+
+ /thirdpartyController.do
+ com.seeyon.ctp.portal.sso.thirdpartyintegration.controller.ThirdpartyController
+
+ access
+ index
+ logoutNotify
+ show
+ mailAuth
+
+
+
+ /m3/transModeController.do
+ com.seeyon.apps.m3.transmissionmode.controller.M3TransModeController
+
+ getTransModeForMobile
+
+
+
+ /genericController.do
+ com.seeyon.v3x.common.controller.GenericController
+
+ index
+
+
+
+ /personalBind.do
+ com.seeyon.v3x.personalaffair.controller.PersonalBindController
+
+ getBindTypeByLoginName
+ isCanUse
+ retrievePassword
+ sendVerificationCodeToBindEmail
+ sendVerificationCodeToBindNum
+ validateVerificationCode
+
+
+
+ /commonimage.do
+ com.seeyon.apps.common.image.controller.ImageController
+
+ showImage
+
+
+
+ /individualManager.do
+ com.seeyon.v3x.personalaffair.controller.IndividualManagerController
+
+ resetPassword
+
+
+
+ meetingAjaxManager
+ com.seeyon.apps.meeting.manager.MeetingAjaxManagerImpl
+
+ meetingPanelData
+ meetingPanelDisplay
+
+
+
+ /wechat/dingding.do
+ com.seeyon.apps.weixin.controller.DingDingController
+
+ binding
+ index
+ main
+ newIndex
+ newMain
+ viewh5Message
+
+
+
+ /imc.do
+ com.seeyon.apps.imc.controller.ImcLoginController
+
+ index
+ logout
+
+
+
+ /wechat/feishu.do
+ com.seeyon.apps.weixin.controller.FeishuController
+
+ newMain
+ viewh5Message
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /wechat/pcapp.do
+ com.seeyon.apps.weixin.controller.PcAppController
+
+ transferPageFromWxCoreServer
+ gotoPcApp
+ checkCodeTurnToRightPage
+ transfer
+ transferMsg
+
+
+
+ /wechat/feishu/approvalData.do
+ com.seeyon.apps.zhifei.feishu.approval.controller.ApprovalDataController
+
+ index
+
+
+
+ /zhifei/feishu.do
+ com.seeyon.apps.zhifei.controller.FeishuController
+
+ newMain
+ viewh5Message
+
+
+
+ /zhifei/pcapp.do
+ com.seeyon.apps.zhifei.controller.ZhifeiPcAppController
+
+ transferPageFromWxCoreServer
+ gotoPcApp
+
+
+
+ /zhifei/feishu/approvalData.do
+ com.seeyon.apps.zhifei.feishu.approval.controller.ApprovalDataController
+
+ index
+
+
+
+ /cloudbuild.do
+ com.seeyon.apps.cloudbuild.controller.CloudBuildController
+
+ download
+ getDownloadPageInfo
+ getLatestVersionInfo
+ getDownloadQrUrl
+
+
+
diff --git a/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_flowbacklog/pluginCfg.xml b/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_flowbacklog/pluginCfg.xml
new file mode 100644
index 0000000..4ca3d50
--- /dev/null
+++ b/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_flowbacklog/pluginCfg.xml
@@ -0,0 +1,6 @@
+
+
+ src_flowbacklog
+ 稻花香流程平台待办集成
+ 20241226
+
diff --git a/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_flowbacklog/spring/spring-listener.xml b/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_flowbacklog/spring/spring-listener.xml
new file mode 100644
index 0000000..4ed0f27
--- /dev/null
+++ b/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_flowbacklog/spring/spring-listener.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_flowbacklog/spring/spring-sso.xml b/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_flowbacklog/spring/spring-sso.xml
new file mode 100644
index 0000000..43fee1c
--- /dev/null
+++ b/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_flowbacklog/spring/spring-sso.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_flowbacklog/spring/spring.xml b/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_flowbacklog/spring/spring.xml
new file mode 100644
index 0000000..78accc9
--- /dev/null
+++ b/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_flowbacklog/spring/spring.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_personnelflow/pluginCfg.xml b/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_personnelflow/pluginCfg.xml
new file mode 100644
index 0000000..f8540c4
--- /dev/null
+++ b/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_personnelflow/pluginCfg.xml
@@ -0,0 +1,6 @@
+
+
+ src_personnelflow
+ 稻花香流程平台人事流程处理反馈
+ 20250206
+
diff --git a/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_personnelflow/spring/spring.xml b/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_personnelflow/spring/spring.xml
new file mode 100644
index 0000000..c41c8d3
--- /dev/null
+++ b/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_personnelflow/spring/spring.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_qyba/pluginCfg.xml b/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_qyba/pluginCfg.xml
new file mode 100644
index 0000000..2d33e76
--- /dev/null
+++ b/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_qyba/pluginCfg.xml
@@ -0,0 +1,6 @@
+
+
+ src_qyba
+ 区域备案
+ 20240304
+
\ No newline at end of file
diff --git a/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_qyba/spring/spring-node.xml b/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_qyba/spring/spring-node.xml
new file mode 100644
index 0000000..7923e9d
--- /dev/null
+++ b/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_qyba/spring/spring-node.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_qyba/spring/spring-service.xml b/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_qyba/spring/spring-service.xml
new file mode 100644
index 0000000..7aee5ee
--- /dev/null
+++ b/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_qyba/spring/spring-service.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_qyba/spring/spring.xml b/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_qyba/spring/spring.xml
new file mode 100644
index 0000000..e991fb0
--- /dev/null
+++ b/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_qyba/spring/spring.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/v5/apps-customize/src/main/webapp/WEB-INF/jsp/plugin/qrCodeForm/qrCodeFormIndex.jsp b/v5/apps-customize/src/main/webapp/WEB-INF/jsp/plugin/qrCodeForm/qrCodeFormIndex.jsp
new file mode 100644
index 0000000..0f620b0
--- /dev/null
+++ b/v5/apps-customize/src/main/webapp/WEB-INF/jsp/plugin/qrCodeForm/qrCodeFormIndex.jsp
@@ -0,0 +1,249 @@
+<%@ page contentType="text/html; charset=UTF-8" isELIgnored="false" %>
+<%@ page language="java" import=" com.seeyon.apps.m3.skin.enums.M3StartPageCustomEnum" %>
+
+
+
+
+ <%@ include file="/WEB-INF/jsp/common/common.jsp" %>
+ 模板二维码生成
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/v5/apps-customize/src/main/webapp/common/capextend/cap4/form/utils/qrcodeform/index.js b/v5/apps-customize/src/main/webapp/common/capextend/cap4/form/utils/qrcodeform/index.js
new file mode 100644
index 0000000..ec27f89
--- /dev/null
+++ b/v5/apps-customize/src/main/webapp/common/capextend/cap4/form/utils/qrcodeform/index.js
@@ -0,0 +1,13 @@
+
+csdk.event.on('formRendered', function(){
+
+ try {
+ if(cmp.href.getParam().qc = "ext") {
+ document.getElementById("relationBtns").style.display="none";
+ document.getElementById("attachment_wrap").style.display="none";
+ }
+ } catch(e) {
+
+ }
+
+});
diff --git a/v5/apps-customize/src/main/webapp/m3/apps/v5/capextend/cap4/form/utils/qrcodeform/index.js b/v5/apps-customize/src/main/webapp/m3/apps/v5/capextend/cap4/form/utils/qrcodeform/index.js
new file mode 100644
index 0000000..bc09362
--- /dev/null
+++ b/v5/apps-customize/src/main/webapp/m3/apps/v5/capextend/cap4/form/utils/qrcodeform/index.js
@@ -0,0 +1,11 @@
+document.addEventListener('cap_form_afterFormRender', function(evt) {
+ try {
+ if(cmp.href.getParam().qc == "ext") {
+ document.getElementById("relationBtns").style.display="none";
+ document.getElementById("attachment_wrap").style.display="none";
+ document.getElementsByClassName("cmp-button-left-iconContent btn-box2")[0].style.display="none";
+ }
+ } catch(e) {
+
+ }
+});
\ No newline at end of file