diff --git a/o2server/x_base_core_project/src/main/java/com/x/base/core/project/tools/MD5Tool.java b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/tools/MD5Tool.java index a2ebe9c83df957863f03f4453a55f75842aa3ea6..60db4fd6df9ce1526e5f430c89a7b34ea5519461 100644 --- a/o2server/x_base_core_project/src/main/java/com/x/base/core/project/tools/MD5Tool.java +++ b/o2server/x_base_core_project/src/main/java/com/x/base/core/project/tools/MD5Tool.java @@ -2,6 +2,8 @@ package com.x.base.core.project.tools; import org.apache.commons.lang3.StringUtils; import java.security.NoSuchAlgorithmException; +import java.util.regex.Matcher; +import java.util.regex.Pattern; /** @@ -53,6 +55,41 @@ public class MD5Tool { // TODO Auto-generated method stub String test = MD5Tool.getMD5("1qaz2wsx".getBytes()); System.out.println(test); + + + + + + + /*String str="this is (Tom) and \"Eric\", this is \"Bruce lee\", he is a chinese, name is \"李小龙\"。"; + Pattern p= Pattern.compile("\"(.*?)\""); + Matcher m=p.matcher(str); + while(m.find()){ + System.out.println(m.group()); + }*/ + + + String str="this is [Tom] and , he is a [李小花], name [is]。"; + Matcher mat = Pattern.compile("(?<=\\[)(\\S+)(?=\\])").matcher(str); + while(mat.find()){ + System.out.println(mat.group()); + } + + + String filetext = "//[张小名] 25分//[李小花] 43分//[王力] 100分"; + Pattern p = Pattern.compile("\\[(.*?)\\]");//正则表达式,取=和|之间的字符串,不包括=和| + Matcher m = p.matcher(filetext); + while(m.find()) { + System.out.println(m.group(1));//m.group(1)不包括这两个字符 + } + + String url = "http://ip:20020/x_meeting_assemble_control/jaxrs/meeting/adf3c245-dbef-41ef-b323-dfb5fae4afb7/checkin"; + Pattern purl = Pattern.compile("x_meeting_assemble_control\\/jaxrs\\/meeting\\/(.*?)\\/checkin");//正则表达式 + Matcher murl = purl.matcher(url); + if(murl.find()) { + System.out.println(murl.group(1));//m.group(1)不包括这两个字符 + } + } } diff --git a/o2server/x_message_assemble_communicate/src/main/java/com/x/message/assemble/communicate/DingdingConsumeQueue.java b/o2server/x_message_assemble_communicate/src/main/java/com/x/message/assemble/communicate/DingdingConsumeQueue.java index 5519add42ff8a0aabe6736e437b90bfc2adacd13..64506d15c29dd94cf006e15753b9f7f8fb2f8d93 100644 --- a/o2server/x_message_assemble_communicate/src/main/java/com/x/message/assemble/communicate/DingdingConsumeQueue.java +++ b/o2server/x_message_assemble_communicate/src/main/java/com/x/message/assemble/communicate/DingdingConsumeQueue.java @@ -81,10 +81,12 @@ public class DingdingConsumeQueue extends AbstractQueue { String messageRedirectPortal = Config.dingding().getMessageRedirectPortal(); if (messageRedirectPortal != null && !"".equals(messageRedirectPortal)) { String portal = "portalmobile.html?id="+messageRedirectPortal; - portal = URLEncoder.encode(portal, DefaultCharset.name); + // 2021-11-1 钉钉那边无法使用了 不能进行encode 否则签名不通过 +// portal = URLEncoder.encode(portal, DefaultCharset.name); workUrl += "&redirectlink=" + portal; } - workUrl = URLEncoder.encode(workUrl, DefaultCharset.name); + // 2021-11-1 钉钉那边无法使用了 不能进行encode 否则签名不通过 +// workUrl = URLEncoder.encode(workUrl, DefaultCharset.name); logger.info("o2oa workUrl:"+workUrl); o2oaUrl = o2oaUrl + "ddsso.html?redirect=" + workUrl; logger.info("o2oa 地址:"+o2oaUrl); diff --git a/o2server/x_organization_assemble_authentication/src/main/java/com/x/organization/assemble/authentication/factory/PersonFactory.java b/o2server/x_organization_assemble_authentication/src/main/java/com/x/organization/assemble/authentication/factory/PersonFactory.java index 2d0ebf0696d0d41684e758293face38ce0ad18cb..175e7fa43179ca314cba2fb565fd0636d87d80ad 100644 --- a/o2server/x_organization_assemble_authentication/src/main/java/com/x/organization/assemble/authentication/factory/PersonFactory.java +++ b/o2server/x_organization_assemble_authentication/src/main/java/com/x/organization/assemble/authentication/factory/PersonFactory.java @@ -135,4 +135,30 @@ public class PersonFactory extends AbstractFactory { return null; } } + + + public String getPersonIdWithQywxid(String credential) throws Exception { + EntityManager em = this.entityManagerContainer().get(Person.class); + CriteriaBuilder cb = em.getCriteriaBuilder(); + CriteriaQuery cq = cb.createQuery(String.class); + Root root = cq.from(Person.class); + Predicate p = cb.equal(root.get(Person_.qiyeweixinId), credential); + cq.select(root.get(Person_.id)).where(p); + List list = em.createQuery(cq).getResultList().stream().distinct().collect(Collectors.toList()); + if (list.size() == 1) { + return list.get(0); + }else if(list.size() > 1){ + String temp = ""; + for (int i = 0; i < list.size(); i++) { + if(temp.equalsIgnoreCase("")) { + temp = list.get(i); + }else{ + temp = temp + "," + list.get(i); + } + } + return temp; + }else { + return null; + } + } } \ No newline at end of file diff --git a/o2server/x_organization_assemble_authentication/src/main/java/com/x/organization/assemble/authentication/jaxrs/qiyeweixin/ActionGetLogin.java b/o2server/x_organization_assemble_authentication/src/main/java/com/x/organization/assemble/authentication/jaxrs/qiyeweixin/ActionGetLogin.java index 06c3491da624e85db2483ce799ac3abacaf57f9a..fcf96743fc683d8316405bf8b4371c83d95d8664 100644 --- a/o2server/x_organization_assemble_authentication/src/main/java/com/x/organization/assemble/authentication/jaxrs/qiyeweixin/ActionGetLogin.java +++ b/o2server/x_organization_assemble_authentication/src/main/java/com/x/organization/assemble/authentication/jaxrs/qiyeweixin/ActionGetLogin.java @@ -52,10 +52,13 @@ class ActionGetLogin extends BaseAction { String userId = jsonElement.getAsJsonObject().get("UserId").getAsString(); Business business = new Business(emc); - String personId = business.person().getWithCredential(userId); + String personId = business.person().getPersonIdWithQywxid(userId); if (StringUtils.isEmpty(personId)) { throw new ExceptionPersonNotExist(userId); } + if (personId.indexOf(",") > 0) { + throw new ExceptionQywexinRepeated(userId); + } Person person = emc.find(personId, Person.class); Wo wo = Wo.copier.copy(person); List roles = business.organization().role().listWithPerson(person.getDistinguishedName()); diff --git a/o2server/x_organization_assemble_authentication/src/main/java/com/x/organization/assemble/authentication/jaxrs/qiyeweixin/ExceptionQywexinRepeated.java b/o2server/x_organization_assemble_authentication/src/main/java/com/x/organization/assemble/authentication/jaxrs/qiyeweixin/ExceptionQywexinRepeated.java new file mode 100644 index 0000000000000000000000000000000000000000..523efdd56d2ea354ed4c6504ea19a4af82cf1591 --- /dev/null +++ b/o2server/x_organization_assemble_authentication/src/main/java/com/x/organization/assemble/authentication/jaxrs/qiyeweixin/ExceptionQywexinRepeated.java @@ -0,0 +1,12 @@ +package com.x.organization.assemble.authentication.jaxrs.qiyeweixin; + +import com.x.base.core.project.exception.PromptException; + +class ExceptionQywexinRepeated extends PromptException { + + private static final long serialVersionUID = 4132300948670472899L; + + ExceptionQywexinRepeated(String userId) { + super("查询到重复的企业微信userid. {} " ,userId); + } +}