diff --git a/README.md b/README.md index cd35bb8e..9dcc7782 100644 --- a/README.md +++ b/README.md @@ -59,50 +59,61 @@ 序号 内容 - 视频地址 + 腾讯视频 + 百度网盘 No. 1 产品概述 - 链接 + 观看 + 下载 No. 2 安装部署 - 链接 + 观看 + 下载 No. 3 功能演示 - 链接 + 观看 + 下载 No. 4 账号体系 - 链接 + 观看 + 下载 No. 5 客户关系管理 - 链接 + 观看 + 下载 No. 6 即时通信 - 链接 + 观看 + 下载 No. 7 呼叫中心 - 链接 + 观看 + 下载 No. 8 数据报表 - 链接 + 观看 + 下载 +[*下载视频合集*](https://pan.baidu.com/s/1YH7d7nMm5wZQp7P8kID3KA) + ## 开发文档

@@ -144,11 +155,14 @@

- ## 产品体系 - - +

+ 观看视频介绍
+ + + +

## 鸣谢 diff --git a/cc-chatbot/app/.classpath b/cc-chatbot/app/.classpath new file mode 100644 index 00000000..f0257c5a --- /dev/null +++ b/cc-chatbot/app/.classpath @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cc-chatbot/app/.project b/cc-chatbot/app/.project new file mode 100644 index 00000000..5c1f81b8 --- /dev/null +++ b/cc-chatbot/app/.project @@ -0,0 +1,23 @@ + + + sdk + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/cc-chatbot/app/.settings/org.eclipse.core.resources.prefs b/cc-chatbot/app/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 00000000..f9fe3459 --- /dev/null +++ b/cc-chatbot/app/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/test/java=UTF-8 +encoding/=UTF-8 diff --git a/cc-chatbot/app/.settings/org.eclipse.jdt.apt.core.prefs b/cc-chatbot/app/.settings/org.eclipse.jdt.apt.core.prefs new file mode 100644 index 00000000..d4313d4b --- /dev/null +++ b/cc-chatbot/app/.settings/org.eclipse.jdt.apt.core.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.apt.aptEnabled=false diff --git a/cc-chatbot/app/.settings/org.eclipse.jdt.core.prefs b/cc-chatbot/app/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000..5592a0a1 --- /dev/null +++ b/cc-chatbot/app/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.processAnnotations=disabled +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/cc-chatbot/app/.settings/org.eclipse.m2e.core.prefs b/cc-chatbot/app/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 00000000..f897a7f1 --- /dev/null +++ b/cc-chatbot/app/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/cc-chatbot/app/pom.xml b/cc-chatbot/app/pom.xml index 64cc275d..09879747 100644 --- a/cc-chatbot/app/pom.xml +++ b/cc-chatbot/app/pom.xml @@ -6,7 +6,7 @@ com.chatopera.chatbot sdk - 1.0.3 + 1.1.0 jar sdk @@ -20,16 +20,6 @@ - - org.slf4j - slf4j-api - 1.7.25 - - - org.slf4j - slf4j-simple - 1.7.25 - org.apache.commons commons-lang3 diff --git a/cc-chatbot/app/src/main/java/com/chatopera/chatbot/ChatbotAPI.java b/cc-chatbot/app/src/main/java/com/chatopera/chatbot/ChatbotAPI.java index 2c1d5494..1a65bea7 100644 --- a/cc-chatbot/app/src/main/java/com/chatopera/chatbot/ChatbotAPI.java +++ b/cc-chatbot/app/src/main/java/com/chatopera/chatbot/ChatbotAPI.java @@ -18,15 +18,12 @@ package com.chatopera.chatbot; import com.mashape.unirest.http.exceptions.UnirestException; import org.apache.commons.lang3.StringUtils; import org.json.JSONObject; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.net.MalformedURLException; import java.net.URL; import java.util.HashMap; public class ChatbotAPI { - private static final Logger logger = LoggerFactory.getLogger(ChatbotAPI.class); private String schema; private String hostname; private int port; @@ -179,6 +176,7 @@ public class ChatbotAPI { * @throws ChatbotAPIRuntimeException */ public boolean updateByChatbotID(final String chatbotID, + final String name, final String description, final String fallback, final String welcome) throws ChatbotAPIRuntimeException { @@ -192,6 +190,8 @@ public class ChatbotAPI { body.put("fallback", fallback); if (StringUtils.isNotBlank(welcome)) body.put("welcome", welcome); + if (StringUtils.isNotBlank(name)) + body.put("name", name); try { JSONObject result = RestAPI.put(this.baseUrl + "/chatbot/" + chatbotID, body, null); @@ -275,8 +275,6 @@ public class ChatbotAPI { body.put("textMessage", textMessage); body.put("isDebug", debug); - logger.info("conversation body {}", body); - try { JSONObject resp = RestAPI.post(this.getBaseUrl() + "/chatbot/" + chatbotID + "/conversation/query", body); return resp; diff --git a/cc-chatbot/app/src/main/java/com/chatopera/chatbot/RestAPI.java b/cc-chatbot/app/src/main/java/com/chatopera/chatbot/RestAPI.java index d85a693c..ee5f7e57 100644 --- a/cc-chatbot/app/src/main/java/com/chatopera/chatbot/RestAPI.java +++ b/cc-chatbot/app/src/main/java/com/chatopera/chatbot/RestAPI.java @@ -22,8 +22,6 @@ import com.mashape.unirest.http.exceptions.UnirestException; import com.mashape.unirest.request.GetRequest; import com.mashape.unirest.request.HttpRequestWithBody; import org.json.JSONObject; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.util.HashMap; @@ -31,7 +29,6 @@ import java.util.HashMap; * RestAPI接口 */ public class RestAPI { - private static final Logger logger = LoggerFactory.getLogger(RestAPI.class); /** * patch headers @@ -66,7 +63,6 @@ public class RestAPI { */ public static JSONObject post(final String url, final HashMap body, final HashMap query, HashMap headers) throws UnirestException { HttpRequestWithBody request = Unirest.post(url); - logger.info("post body {}", body.toString()); x(headers); HttpResponse resp = request .headers(headers) diff --git a/cc-chatbot/app/src/test/java/com/chatopera/chatbot/ChatbotAPITest.java b/cc-chatbot/app/src/test/java/com/chatopera/chatbot/ChatbotAPITest.java index 7dfb4ec6..303ed688 100644 --- a/cc-chatbot/app/src/test/java/com/chatopera/chatbot/ChatbotAPITest.java +++ b/cc-chatbot/app/src/test/java/com/chatopera/chatbot/ChatbotAPITest.java @@ -19,8 +19,6 @@ import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; import org.json.JSONObject; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.net.MalformedURLException; @@ -29,7 +27,6 @@ import java.net.MalformedURLException; */ public class ChatbotAPITest extends TestCase { - private static final Logger logger = LoggerFactory.getLogger(ChatbotAPITest.class); private ChatbotAPI cb; /** @@ -62,7 +59,7 @@ public class ChatbotAPITest public void testGetChatbot() { try { JSONObject resp = this.cb.getChatbot("co_bot_1"); - logger.info("[testGetChatbot] {}", resp.toString()); + System.out.println("[testGetChatbot] " + resp.toString()); } catch (ChatbotAPIRuntimeException e) { e.printStackTrace(); } @@ -71,7 +68,7 @@ public class ChatbotAPITest public void testGetChatbots() { try { JSONObject resp = this.cb.getChatbots("name chatbotID", null, 0, 10); - logger.info("[testGetChatbots] resp {}", resp.toString()); + System.out.println("[testGetChatbots] resp " + resp.toString()); } catch (ChatbotAPIRuntimeException e) { e.printStackTrace(); } @@ -80,7 +77,7 @@ public class ChatbotAPITest public void testConversation() { try { JSONObject resp = this.cb.conversation("co_bot_1", "sdktest", "华夏春松在哪里", false); - logger.info("[testConversation] resp {}", resp.toString()); + System.out.println("[testConversation] resp " + resp.toString()); } catch (ChatbotAPIRuntimeException e) { e.printStackTrace(); } @@ -89,7 +86,7 @@ public class ChatbotAPITest public void testFaq() { try { JSONObject resp = this.cb.faq("co_bot_1", "sdktest", "华夏春松在哪里", false); - logger.info("[testFaq] resp {}", resp.toString()); + System.out.print("[testFaq] resp " + resp.toString()); } catch (ChatbotAPIRuntimeException e) { e.printStackTrace(); } @@ -98,7 +95,7 @@ public class ChatbotAPITest public void testParseUrl() { try { ChatbotAPI c = new ChatbotAPI("https://local:8000/"); - logger.info("chatbot baseUrl {}", c.getBaseUrl()); + System.out.println("chatbot baseUrl " + c.getBaseUrl()); assertEquals("https://local:8000/api/v1", c.getBaseUrl()); } catch (ChatbotAPIRuntimeException e) { e.printStackTrace(); @@ -124,7 +121,6 @@ public class ChatbotAPITest "我不了解。", "小云机器人", "你好,我是小云。"); - logger.info("[testCreateBot] {}", j); } catch (ChatbotAPIRuntimeException e) { e.printStackTrace(); } diff --git a/contact-center/app/pom.xml b/contact-center/app/pom.xml index 8c5efd09..e21195a8 100644 --- a/contact-center/app/pom.xml +++ b/contact-center/app/pom.xml @@ -312,7 +312,7 @@ com.chatopera.chatbot sdk - 1.0.3 + 1.1.0 diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/aggregation/CallOutHangupAggsResult.java b/contact-center/app/src/main/java/com/chatopera/cc/aggregation/CallOutHangupAggsResult.java similarity index 96% rename from contact-center/app/src/main/java/com/chatopera/cc/util/aggregation/CallOutHangupAggsResult.java rename to contact-center/app/src/main/java/com/chatopera/cc/aggregation/CallOutHangupAggsResult.java index ee502a56..34f336f0 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/aggregation/CallOutHangupAggsResult.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/aggregation/CallOutHangupAggsResult.java @@ -13,9 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.util.aggregation; +package com.chatopera.cc.aggregation; -import com.chatopera.cc.util.exception.CallOutRecordException; +import com.chatopera.cc.exception.CallOutRecordException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/aggregation/CallOutHangupAuditResult.java b/contact-center/app/src/main/java/com/chatopera/cc/aggregation/CallOutHangupAuditResult.java similarity index 98% rename from contact-center/app/src/main/java/com/chatopera/cc/util/aggregation/CallOutHangupAuditResult.java rename to contact-center/app/src/main/java/com/chatopera/cc/aggregation/CallOutHangupAuditResult.java index 60a25f28..2be6c094 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/aggregation/CallOutHangupAuditResult.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/aggregation/CallOutHangupAuditResult.java @@ -13,9 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.util.aggregation; +package com.chatopera.cc.aggregation; -import com.chatopera.cc.util.exception.CallOutRecordException; +import com.chatopera.cc.exception.CallOutRecordException; import com.google.gson.JsonObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/aggregation/MathHelper.java b/contact-center/app/src/main/java/com/chatopera/cc/aggregation/MathHelper.java similarity index 98% rename from contact-center/app/src/main/java/com/chatopera/cc/util/aggregation/MathHelper.java rename to contact-center/app/src/main/java/com/chatopera/cc/aggregation/MathHelper.java index 060ea338..e43b23ba 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/aggregation/MathHelper.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/aggregation/MathHelper.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.util.aggregation; +package com.chatopera.cc.aggregation; import java.util.Date; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/quene/AgentCallOutFilter.java b/contact-center/app/src/main/java/com/chatopera/cc/aggregation/filter/AgentCallOutFilter.java similarity index 77% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/service/quene/AgentCallOutFilter.java rename to contact-center/app/src/main/java/com/chatopera/cc/aggregation/filter/AgentCallOutFilter.java index bc125f51..1ca4dc45 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/quene/AgentCallOutFilter.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/aggregation/filter/AgentCallOutFilter.java @@ -14,14 +14,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.service.quene; +package com.chatopera.cc.aggregation.filter; -import com.chatopera.cc.webim.service.cache.CacheHelper; +import com.chatopera.cc.app.cache.CacheHelper; import org.apache.commons.lang.StringUtils; import com.hazelcast.mapreduce.KeyPredicate; -import com.chatopera.cc.core.UKDataContext; -import com.chatopera.cc.webim.web.model.UKefuCallOutNames; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.model.UKefuCallOutNames; @SuppressWarnings("deprecation") public class AgentCallOutFilter implements KeyPredicate{ @@ -38,6 +38,6 @@ public class AgentCallOutFilter implements KeyPredicate{ } public boolean evaluate(String key) { UKefuCallOutNames ukefuCallOutNames = (UKefuCallOutNames) CacheHelper.getCallOutCacheBean().getCacheObject(key, orgi); - return ukefuCallOutNames !=null && !StringUtils.isBlank(orgi) && orgi.equals(ukefuCallOutNames.getOrgi()) && UKDataContext.CallOutType.AGENT.toString().equals(ukefuCallOutNames.getCalltype()); + return ukefuCallOutNames !=null && !StringUtils.isBlank(orgi) && orgi.equals(ukefuCallOutNames.getOrgi()) && MainContext.CallOutType.AGENT.toString().equals(ukefuCallOutNames.getCalltype()); } } \ No newline at end of file diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/quene/AgentStatusBusyOrgiFilter.java b/contact-center/app/src/main/java/com/chatopera/cc/aggregation/filter/AgentStatusBusyOrgiFilter.java similarity index 87% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/service/quene/AgentStatusBusyOrgiFilter.java rename to contact-center/app/src/main/java/com/chatopera/cc/aggregation/filter/AgentStatusBusyOrgiFilter.java index 133145c2..367c28b3 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/quene/AgentStatusBusyOrgiFilter.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/aggregation/filter/AgentStatusBusyOrgiFilter.java @@ -14,10 +14,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.service.quene; +package com.chatopera.cc.aggregation.filter; -import com.chatopera.cc.webim.service.cache.CacheHelper; -import com.chatopera.cc.webim.web.model.AgentStatus; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.model.AgentStatus; import org.apache.commons.lang.StringUtils; import com.hazelcast.mapreduce.KeyPredicate; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/quene/AgentStatusOrgiFilter.java b/contact-center/app/src/main/java/com/chatopera/cc/aggregation/filter/AgentStatusOrgiFilter.java similarity index 86% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/service/quene/AgentStatusOrgiFilter.java rename to contact-center/app/src/main/java/com/chatopera/cc/aggregation/filter/AgentStatusOrgiFilter.java index 8e5aa7c2..8e638cf9 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/quene/AgentStatusOrgiFilter.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/aggregation/filter/AgentStatusOrgiFilter.java @@ -14,10 +14,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.service.quene; +package com.chatopera.cc.aggregation.filter; -import com.chatopera.cc.webim.service.cache.CacheHelper; -import com.chatopera.cc.webim.web.model.AgentStatus; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.model.AgentStatus; import org.apache.commons.lang.StringUtils; import com.hazelcast.mapreduce.KeyPredicate; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/quene/AgentUserOrgiFilter.java b/contact-center/app/src/main/java/com/chatopera/cc/aggregation/filter/AgentUserOrgiFilter.java similarity index 87% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/service/quene/AgentUserOrgiFilter.java rename to contact-center/app/src/main/java/com/chatopera/cc/aggregation/filter/AgentUserOrgiFilter.java index 9a57e1d6..e225acea 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/quene/AgentUserOrgiFilter.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/aggregation/filter/AgentUserOrgiFilter.java @@ -14,10 +14,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.service.quene; +package com.chatopera.cc.aggregation.filter; -import com.chatopera.cc.webim.service.cache.CacheHelper; -import com.chatopera.cc.webim.web.model.AgentUser; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.model.AgentUser; import org.apache.commons.lang.StringUtils; import com.hazelcast.mapreduce.KeyPredicate; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/quene/AiCallOutFilter.java b/contact-center/app/src/main/java/com/chatopera/cc/aggregation/filter/AiCallOutFilter.java similarity index 77% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/service/quene/AiCallOutFilter.java rename to contact-center/app/src/main/java/com/chatopera/cc/aggregation/filter/AiCallOutFilter.java index ab98453d..f743d3c8 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/quene/AiCallOutFilter.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/aggregation/filter/AiCallOutFilter.java @@ -14,14 +14,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.service.quene; +package com.chatopera.cc.aggregation.filter; -import com.chatopera.cc.webim.service.cache.CacheHelper; -import com.chatopera.cc.webim.web.model.UKefuCallOutNames; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.model.UKefuCallOutNames; import org.apache.commons.lang.StringUtils; import com.hazelcast.mapreduce.KeyPredicate; -import com.chatopera.cc.core.UKDataContext; @SuppressWarnings("deprecation") public class AiCallOutFilter implements KeyPredicate{ @@ -38,6 +38,6 @@ public class AiCallOutFilter implements KeyPredicate{ } public boolean evaluate(String key) { UKefuCallOutNames ukefuCallOutNames = (UKefuCallOutNames) CacheHelper.getCallOutCacheBean().getCacheObject(key, orgi); - return ukefuCallOutNames !=null && !StringUtils.isBlank(orgi) && orgi.equals(ukefuCallOutNames.getOrgi()) && UKDataContext.CallOutType.AI.toString().equals(ukefuCallOutNames.getCalltype()); + return ukefuCallOutNames !=null && !StringUtils.isBlank(orgi) && orgi.equals(ukefuCallOutNames.getOrgi()) && MainContext.CallOutType.AI.toString().equals(ukefuCallOutNames.getCalltype()); } } \ No newline at end of file diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/Application.java b/contact-center/app/src/main/java/com/chatopera/cc/app/Application.java similarity index 88% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/Application.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/Application.java index f7a1c9ed..7e55984d 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/Application.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/Application.java @@ -14,11 +14,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim; +package com.chatopera.cc.app; -import com.chatopera.cc.core.UKDataContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.mobile.MobileNumberUtils; -import com.chatopera.cc.webim.config.web.StartedEventListener; +import com.chatopera.cc.app.config.StartedEventListener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; @@ -38,8 +38,8 @@ import javax.servlet.MultipartConfigElement; import java.io.IOException; @SpringBootApplication -@EnableJpaRepositories("com.chatopera.cc.webim.service.repository") -@EnableElasticsearchRepositories("com.chatopera.cc.webim.service.es") +@EnableJpaRepositories("com.chatopera.cc.app.persistence.repository") +@EnableElasticsearchRepositories("com.chatopera.cc.app.persistence.es") @EnableAsync public class Application { private static final Logger logger = LoggerFactory.getLogger(Application.class); @@ -56,8 +56,9 @@ public class Application { private String multipartMaxRequest; static{ - UKDataContext.model.put("contacts", true) ; - UKDataContext.model.put("sales", true); + MainContext.model.put("contacts", true) ; + MainContext.model.put("sales", true); + MainContext.model.put("chatbot", true); } /** @@ -100,7 +101,7 @@ public class Application { app.setBannerMode(Banner.Mode.OFF); app.setAddCommandLineProperties(false); app.addListeners(new StartedEventListener()); - UKDataContext.setApplicationContext(app.run(args)); + MainContext.setApplicationContext(app.run(args)); } } diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/ServletInitializer.java b/contact-center/app/src/main/java/com/chatopera/cc/app/ServletInitializer.java similarity index 94% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/ServletInitializer.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/ServletInitializer.java index f38169af..8f5c787d 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/ServletInitializer.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/ServletInitializer.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim; +package com.chatopera.cc.app; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.support.SpringBootServletInitializer; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/acd/ServiceQuene.java b/contact-center/app/src/main/java/com/chatopera/cc/app/algorithm/AutomaticServiceDist.java similarity index 73% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/service/acd/ServiceQuene.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/algorithm/AutomaticServiceDist.java index 8503c961..d2349223 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/acd/ServiceQuene.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/algorithm/AutomaticServiceDist.java @@ -14,19 +14,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.service.acd; +package com.chatopera.cc.app.algorithm; -import com.chatopera.cc.core.UKDataContext; -import com.chatopera.cc.util.UKTools; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.basic.MainUtils; +import com.chatopera.cc.app.im.client.NettyClients; +import com.chatopera.cc.app.im.router.OutMessageRouter; +import com.chatopera.cc.app.model.*; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.aggregation.filter.AgentStatusBusyOrgiFilter; +import com.chatopera.cc.aggregation.filter.AgentStatusOrgiFilter; +import com.chatopera.cc.aggregation.filter.AgentUserOrgiFilter; +import com.chatopera.cc.app.persistence.repository.*; import com.chatopera.cc.util.WebIMReport; -import com.chatopera.cc.util.client.NettyClients; -import com.chatopera.cc.webim.service.cache.CacheHelper; -import com.chatopera.cc.webim.service.quene.AgentStatusBusyOrgiFilter; -import com.chatopera.cc.webim.service.quene.AgentStatusOrgiFilter; -import com.chatopera.cc.webim.service.quene.AgentUserOrgiFilter; -import com.chatopera.cc.webim.service.repository.*; -import com.chatopera.cc.webim.util.router.OutMessageRouter; -import com.chatopera.cc.webim.web.model.*; import com.corundumstudio.socketio.SocketIONamespace; import com.hazelcast.core.IMap; import com.hazelcast.mapreduce.aggregation.Aggregations; @@ -46,8 +46,8 @@ import java.util.concurrent.locks.Lock; * Automatic Call Distribution */ @SuppressWarnings("deprecation") -public class ServiceQuene { - private final static Logger logger = LoggerFactory.getLogger(ServiceQuene.class); +public class AutomaticServiceDist { + private final static Logger logger = LoggerFactory.getLogger(AutomaticServiceDist.class); /** * 载入坐席 ACD策略配置 @@ -57,13 +57,13 @@ public class ServiceQuene { */ public static SessionConfig initSessionConfig(String orgi) { SessionConfig sessionConfig = null; - if (UKDataContext.getContext() != null && (sessionConfig = (SessionConfig) CacheHelper.getSystemCacheBean().getCacheObject(UKDataContext.SYSTEM_CACHE_SESSION_CONFIG + "_" + orgi, orgi)) == null) { - SessionConfigRepository sessionConfigRes = UKDataContext.getContext().getBean(SessionConfigRepository.class); + if (MainContext.getContext() != null && (sessionConfig = (SessionConfig) CacheHelper.getSystemCacheBean().getCacheObject(MainContext.SYSTEM_CACHE_SESSION_CONFIG + "_" + orgi, orgi)) == null) { + SessionConfigRepository sessionConfigRes = MainContext.getContext().getBean(SessionConfigRepository.class); sessionConfig = sessionConfigRes.findByOrgi(orgi); if (sessionConfig == null) { sessionConfig = new SessionConfig(); } else { - CacheHelper.getSystemCacheBean().put(UKDataContext.SYSTEM_CACHE_SESSION_CONFIG + "_" + orgi, sessionConfig, orgi); + CacheHelper.getSystemCacheBean().put(MainContext.SYSTEM_CACHE_SESSION_CONFIG + "_" + orgi, sessionConfig, orgi); } } return sessionConfig; @@ -78,11 +78,11 @@ public class ServiceQuene { @SuppressWarnings("unchecked") public static List initSessionConfigList() { List sessionConfigList = null; - if (UKDataContext.getContext() != null && (sessionConfigList = (List) CacheHelper.getSystemCacheBean().getCacheObject(UKDataContext.SYSTEM_CACHE_SESSION_CONFIG_LIST, UKDataContext.SYSTEM_ORGI)) == null) { - SessionConfigRepository sessionConfigRes = UKDataContext.getContext().getBean(SessionConfigRepository.class); + if (MainContext.getContext() != null && (sessionConfigList = (List) CacheHelper.getSystemCacheBean().getCacheObject(MainContext.SYSTEM_CACHE_SESSION_CONFIG_LIST, MainContext.SYSTEM_ORGI)) == null) { + SessionConfigRepository sessionConfigRes = MainContext.getContext().getBean(SessionConfigRepository.class); sessionConfigList = sessionConfigRes.findAll(); if (sessionConfigList != null && sessionConfigList.size() > 0) { - CacheHelper.getSystemCacheBean().put(UKDataContext.SYSTEM_CACHE_SESSION_CONFIG_LIST, sessionConfigList, UKDataContext.SYSTEM_ORGI); + CacheHelper.getSystemCacheBean().put(MainContext.SYSTEM_CACHE_SESSION_CONFIG_LIST, sessionConfigList, MainContext.SYSTEM_ORGI); } } return sessionConfigList; @@ -113,10 +113,10 @@ public class ServiceQuene { * 统计当前服务中的用户数量 */ IMap agentUserMap = (IMap) CacheHelper.getAgentUserCacheBean().getCache(); - Long users = (Long) agentUserMap.aggregate(Supplier.fromKeyPredicate(new AgentUserOrgiFilter(orgi, UKDataContext.AgentUserStatusEnum.INSERVICE.toString())), Aggregations.count()); + Long users = (Long) agentUserMap.aggregate(Supplier.fromKeyPredicate(new AgentUserOrgiFilter(orgi, MainContext.AgentUserStatusEnum.INSERVICE.toString())), Aggregations.count()); report.setUsers(users.intValue()); - Long queneUsers = (Long) agentUserMap.aggregate(Supplier.fromKeyPredicate(new AgentUserOrgiFilter(orgi, UKDataContext.AgentUserStatusEnum.INQUENE.toString())), Aggregations.count()); + Long queneUsers = (Long) agentUserMap.aggregate(Supplier.fromKeyPredicate(new AgentUserOrgiFilter(orgi, MainContext.AgentUserStatusEnum.INQUENE.toString())), Aggregations.count()); report.setInquene(queneUsers.intValue()); return report; @@ -193,29 +193,29 @@ public class ServiceQuene { } agentStatusList.addAll(((IMap) CacheHelper.getAgentUserCacheBean().getCache()).values(pagingPredicate)); for (AgentUser agentUser : agentStatusList) { - SessionConfig sessionConfig = ServiceQuene.initSessionConfig(orgi); - long maxusers = sessionConfig != null ? sessionConfig.getMaxuser() : UKDataContext.AGENT_STATUS_MAX_USER; + SessionConfig sessionConfig = AutomaticServiceDist.initSessionConfig(orgi); + long maxusers = sessionConfig != null ? sessionConfig.getMaxuser() : MainContext.AGENT_STATUS_MAX_USER; if (agentStatus != null && agentStatus.getUsers() < maxusers) { //坐席未达到最大咨询访客数量 CacheHelper.getAgentUserCacheBean().delete(agentUser.getUserid(), orgi); //从队列移除,进入正在处理的队列, 避免使用 分布式锁 try { AgentService agentService = processAgentService(agentStatus, agentUser, orgi); MessageOutContent outMessage = new MessageOutContent(); - outMessage.setMessage(ServiceQuene.getSuccessMessage(agentService, agentUser.getChannel(), orgi)); - outMessage.setMessageType(UKDataContext.MediaTypeEnum.TEXT.toString()); - outMessage.setCalltype(UKDataContext.CallTypeEnum.IN.toString()); + outMessage.setMessage(AutomaticServiceDist.getSuccessMessage(agentService, agentUser.getChannel(), orgi)); + outMessage.setMessageType(MainContext.MediaTypeEnum.TEXT.toString()); + outMessage.setCalltype(MainContext.CallTypeEnum.IN.toString()); outMessage.setNickName(agentStatus.getUsername()); - outMessage.setCreatetime(UKTools.dateFormate.format(new Date())); + outMessage.setCreatetime(MainUtils.dateFormate.format(new Date())); if (!StringUtils.isBlank(agentUser.getUserid())) { OutMessageRouter router = null; - router = (OutMessageRouter) UKDataContext.getContext().getBean(agentUser.getChannel()); + router = (OutMessageRouter) MainContext.getContext().getBean(agentUser.getChannel()); if (router != null) { - router.handler(agentUser.getUserid(), UKDataContext.MessageTypeEnum.MESSAGE.toString(), agentUser.getAppid(), outMessage); + router.handler(agentUser.getUserid(), MainContext.MessageTypeEnum.MESSAGE.toString(), agentUser.getAppid(), outMessage); } } - NettyClients.getInstance().sendAgentEventMessage(agentService.getAgentno(), UKDataContext.MessageTypeEnum.NEW.toString(), agentUser); + NettyClients.getInstance().sendAgentEventMessage(agentService.getAgentno(), MainContext.MessageTypeEnum.NEW.toString(), agentUser); } catch (Exception ex) { ex.printStackTrace(); } @@ -235,17 +235,17 @@ public class ServiceQuene { public static void serviceFinish(AgentUser agentUser, String orgi) throws Exception { if (agentUser != null) { AgentStatus agentStatus = null; - if (UKDataContext.AgentUserStatusEnum.INSERVICE.toString().equals(agentUser.getStatus()) && agentUser.getAgentno() != null) { + if (MainContext.AgentUserStatusEnum.INSERVICE.toString().equals(agentUser.getStatus()) && agentUser.getAgentno() != null) { agentStatus = (AgentStatus) CacheHelper.getAgentStatusCacheBean().getCacheObject(agentUser.getAgentno(), orgi); } CacheHelper.getAgentUserCacheBean().delete(agentUser.getUserid(), orgi); - AgentUserRepository agentUserRepository = UKDataContext.getContext().getBean(AgentUserRepository.class); + AgentUserRepository agentUserRepository = MainContext.getContext().getBean(AgentUserRepository.class); AgentUser agentUseDataBean = agentUserRepository.findByIdAndOrgi(agentUser.getId(), agentUser.getOrgi()); - SessionConfig sessionConfig = ServiceQuene.initSessionConfig(orgi); + SessionConfig sessionConfig = AutomaticServiceDist.initSessionConfig(orgi); if (agentUseDataBean != null) { - agentUseDataBean.setStatus(UKDataContext.AgentUserStatusEnum.END.toString()); + agentUseDataBean.setStatus(MainContext.AgentUserStatusEnum.END.toString()); if (agentUser.getServicetime() != null) { agentUseDataBean.setSessiontimes(System.currentTimeMillis() - agentUser.getServicetime().getTime()); } @@ -255,19 +255,19 @@ public class ServiceQuene { /** * 更新OnlineUser对象,变更为服务中,不可邀请 , WebIM渠道专用 */ - if (UKDataContext.ChannelTypeEnum.WEBIM.toString().equals(agentUser.getChannel())) { - OnlineUserRepository onlineUserRes = UKDataContext.getContext().getBean(OnlineUserRepository.class); + if (MainContext.ChannelTypeEnum.WEBIM.toString().equals(agentUser.getChannel())) { + OnlineUserRepository onlineUserRes = MainContext.getContext().getBean(OnlineUserRepository.class); List onlineUserList = onlineUserRes.findByUseridAndOrgi(agentUser.getUserid(), agentUser.getOrgi()); if (onlineUserList.size() > 0) { OnlineUser onlineUser = onlineUserList.get(0); - onlineUser.setInvitestatus(UKDataContext.OnlineUserInviteStatus.DEFAULT.toString()); + onlineUser.setInvitestatus(MainContext.OnlineUserInviteStatus.DEFAULT.toString()); onlineUserRes.save(onlineUser); } } } - final boolean isPhone = UKDataContext.ChannelTypeEnum.PHONE.toString().equals(agentUser.getChannel()); - AgentServiceRepository agentServiceRes = UKDataContext.getContext().getBean(AgentServiceRepository.class); + final boolean isPhone = MainContext.ChannelTypeEnum.PHONE.toString().equals(agentUser.getChannel()); + AgentServiceRepository agentServiceRes = MainContext.getContext().getBean(AgentServiceRepository.class); AgentService service = null; if (!StringUtils.isBlank(agentUser.getAgentserviceid())) { service = agentServiceRes.findByIdAndOrgi(agentUser.getAgentserviceid(), agentUser.getOrgi()); @@ -276,13 +276,13 @@ public class ServiceQuene { service = processAgentService(agentStatus, agentUser, orgi, true); } if (service != null) { - service.setStatus(UKDataContext.AgentUserStatusEnum.END.toString()); + service.setStatus(MainContext.AgentUserStatusEnum.END.toString()); service.setEndtime(new Date()); if (service.getServicetime() != null) { service.setSessiontimes(System.currentTimeMillis() - service.getServicetime().getTime()); } - AgentUserTaskRepository agentUserTaskRes = UKDataContext.getContext().getBean(AgentUserTaskRepository.class); + AgentUserTaskRepository agentUserTaskRes = MainContext.getContext().getBean(AgentUserTaskRepository.class); List agentUserTaskList = agentUserTaskRes.findByIdAndOrgi(agentUser.getId(), agentUser.getOrgi()); if (agentUserTaskList.size() > 0) { AgentUserTask agentUserTask = agentUserTaskList.get(0); @@ -300,41 +300,41 @@ public class ServiceQuene { * 启用了质检任务,开启质检 */ if (sessionConfig.isQuality() && service.getUserasks() > 0) { //开启了质检,并且是有效对话 - service.setQualitystatus(UKDataContext.QualityStatus.NODIS.toString()); //未分配质检任务 + service.setQualitystatus(MainContext.QualityStatus.NODIS.toString()); //未分配质检任务 } else { - service.setQualitystatus(UKDataContext.QualityStatus.NO.toString()); //未开启质检 或无效对话无需质检 + service.setQualitystatus(MainContext.QualityStatus.NO.toString()); //未开启质检 或无效对话无需质检 } agentServiceRes.save(service); } if (isPhone) { // 语音渠道,强制发送 - NettyClients.getInstance().sendCalloutEventMessage(agentUser.getAgentno(), UKDataContext.MessageTypeEnum.END.toString(), agentUser); + NettyClients.getInstance().sendCalloutEventMessage(agentUser.getAgentno(), MainContext.MessageTypeEnum.END.toString(), agentUser); } else { if (agentStatus != null) // WebIM 查看用户状态 - NettyClients.getInstance().sendAgentEventMessage(agentUser.getAgentno(), UKDataContext.MessageTypeEnum.END.toString(), agentUser); + NettyClients.getInstance().sendAgentEventMessage(agentUser.getAgentno(), MainContext.MessageTypeEnum.END.toString(), agentUser); OutMessageRouter router = null; - router = (OutMessageRouter) UKDataContext.getContext().getBean(agentUser.getChannel()); + router = (OutMessageRouter) MainContext.getContext().getBean(agentUser.getChannel()); if (router != null) { MessageOutContent outMessage = new MessageOutContent(); - outMessage.setMessage(ServiceQuene.getServiceFinishMessage(agentUser.getChannel(), orgi)); - outMessage.setMessageType(UKDataContext.AgentUserStatusEnum.END.toString()); - outMessage.setCalltype(UKDataContext.CallTypeEnum.IN.toString()); + outMessage.setMessage(AutomaticServiceDist.getServiceFinishMessage(agentUser.getChannel(), orgi)); + outMessage.setMessageType(MainContext.AgentUserStatusEnum.END.toString()); + outMessage.setCalltype(MainContext.CallTypeEnum.IN.toString()); if (agentStatus != null) { outMessage.setNickName(agentStatus.getUsername()); } else { outMessage.setNickName(agentUser.getUsername()); } - outMessage.setCreatetime(UKTools.dateFormate.format(new Date())); + outMessage.setCreatetime(MainUtils.dateFormate.format(new Date())); outMessage.setAgentserviceid(agentUser.getAgentserviceid()); - router.handler(agentUser.getUserid(), UKDataContext.MessageTypeEnum.STATUS.toString(), agentUser.getAppid(), outMessage); + router.handler(agentUser.getUserid(), MainContext.MessageTypeEnum.STATUS.toString(), agentUser.getAppid(), outMessage); } } if (agentStatus != null) { updateAgentStatus(agentStatus, agentUser, orgi, false); - long maxusers = sessionConfig != null ? sessionConfig.getMaxuser() : UKDataContext.AGENT_STATUS_MAX_USER; + long maxusers = sessionConfig != null ? sessionConfig.getMaxuser() : MainContext.AGENT_STATUS_MAX_USER; if (agentStatus.getUsers() < maxusers) { allotAgent(agentStatus.getAgentno(), orgi); } @@ -367,8 +367,8 @@ public class ServiceQuene { /** * 坐席状态改变,通知监测服务 */ - AgentReport agentReport = ServiceQuene.getAgentReport(orgi); - AgentReportRepository agentReportRes = UKDataContext.getContext().getBean(AgentReportRepository.class); + AgentReport agentReport = AutomaticServiceDist.getAgentReport(orgi); + AgentReportRepository agentReportRes = MainContext.getContext().getBean(AgentReportRepository.class); if (agentReportRes != null) { agentReport.setOrgi(orgi); agentReport.setWorktype(worktype); @@ -377,7 +377,7 @@ public class ServiceQuene { agentReportRes.save(agentReport); } - UKDataContext.getContext().getBean("agentNamespace", SocketIONamespace.class).getBroadcastOperations().sendEvent("status", agentReport); + MainContext.getContext().getBean("agentNamespace", SocketIONamespace.class).getBroadcastOperations().sendEvent("status", agentReport); } /** @@ -390,7 +390,7 @@ public class ServiceQuene { * @param lasttime */ public static void recordAgentStatus(String agent, String username, String extno, String skill, boolean admin, String userid, String status, String current, String worktype, String orgi, Date lasttime) { - WorkMonitorRepository workMonitorRes = UKDataContext.getContext().getBean(WorkMonitorRepository.class); + WorkMonitorRepository workMonitorRes = MainContext.getContext().getBean(WorkMonitorRepository.class); WorkMonitor workMonitor = new WorkMonitor(); if (!StringUtils.isBlank(agent) && !StringUtils.isBlank(status)) { workMonitor.setAgent(agent); @@ -403,17 +403,17 @@ public class ServiceQuene { if (lasttime != null) { workMonitor.setDuration((int) (System.currentTimeMillis() - lasttime.getTime()) / 1000); } - if (status.equals(UKDataContext.AgentStatusEnum.BUSY.toString())) { + if (status.equals(MainContext.AgentStatusEnum.BUSY.toString())) { workMonitor.setBusy(true); } - if (status.equals(UKDataContext.AgentStatusEnum.READY.toString())) { - int count = workMonitorRes.countByAgentAndDatestrAndStatusAndOrgi(agent, UKTools.simpleDateFormat.format(new Date()), UKDataContext.AgentStatusEnum.READY.toString(), orgi); + if (status.equals(MainContext.AgentStatusEnum.READY.toString())) { + int count = workMonitorRes.countByAgentAndDatestrAndStatusAndOrgi(agent, MainUtils.simpleDateFormat.format(new Date()), MainContext.AgentStatusEnum.READY.toString(), orgi); if (count == 0) { workMonitor.setFirsttime(true); } } - if (current.equals(UKDataContext.AgentStatusEnum.NOTREADY.toString())) { - List workMonitorList = workMonitorRes.findByOrgiAndAgentAndDatestrAndFirsttime(orgi, agent, UKTools.simpleDateFormat.format(new Date()), true); + if (current.equals(MainContext.AgentStatusEnum.NOTREADY.toString())) { + List workMonitorList = workMonitorRes.findByOrgiAndAgentAndDatestrAndFirsttime(orgi, agent, MainUtils.simpleDateFormat.format(new Date()), true); if (workMonitorList.size() > 0) { WorkMonitor firstWorkMonitor = workMonitorList.get(0); if (firstWorkMonitor.getFirsttimes() == 0) { @@ -423,7 +423,7 @@ public class ServiceQuene { } } workMonitor.setCreatetime(new Date()); - workMonitor.setDatestr(UKTools.simpleDateFormat.format(new Date())); + workMonitor.setDatestr(MainUtils.simpleDateFormat.format(new Date())); workMonitor.setName(agent); workMonitor.setOrgi(orgi); @@ -474,14 +474,14 @@ public class ServiceQuene { } try { agentService = processAgentService(agentStatus, agentUser, orgi); - if (agentService.getStatus().equals(UKDataContext.AgentUserStatusEnum.INQUENE.toString())) { + if (agentService.getStatus().equals(MainContext.AgentUserStatusEnum.INQUENE.toString())) { agentService.setQueneindex(getQueneIndex(agentUser.getAgent(), orgi, agentUser.getSkill())); } } catch (Exception ex) { ex.printStackTrace(); } - publishMessage(orgi, "user", agentService != null && agentService.getStatus().equals(UKDataContext.AgentUserStatusEnum.INSERVICE.toString()) ? "inservice" : "inquene", agentUser.getId()); + publishMessage(orgi, "user", agentService != null && agentService.getStatus().equals(MainContext.AgentUserStatusEnum.INSERVICE.toString()) ? "inservice" : "inquene", agentUser.getId()); return agentService; } @@ -500,7 +500,7 @@ public class ServiceQuene { if (agentStatus != null) { agentService = processAgentService(agentStatus, agentUser, orgi); publishMessage(orgi, "invite", "success", agentno); - NettyClients.getInstance().sendAgentEventMessage(agentService.getAgentno(), UKDataContext.MessageTypeEnum.NEW.toString(), agentUser); + NettyClients.getInstance().sendAgentEventMessage(agentService.getAgentno(), MainContext.MessageTypeEnum.NEW.toString(), agentUser); } else { agentService = allotAgent(agentUser, orgi); } @@ -523,47 +523,44 @@ public class ServiceQuene { /** * 为访客 分配坐席, ACD策略,此处 AgentStatus 是建议 的 坐席, 如果启用了 历史服务坐席 优先策略, 则会默认检查历史坐席是否空闲,如果空闲,则分配,如果不空闲,则 分配当前建议的坐席 * - * @param agentStatus * @param agentUser * @param orgi * @return * @throws Exception */ - public static AgentService processAiService(AiUser aiUser, String orgi) throws Exception { + public static AgentService processChatbotService(final AgentUser agentUser, final String orgi) { AgentService agentService = new AgentService(); //放入缓存的对象 - AgentServiceRepository agentServiceRes = UKDataContext.getContext().getBean(AgentServiceRepository.class); - if (!StringUtils.isBlank(aiUser.getAgentserviceid())) { - agentService = agentServiceRes.findByIdAndOrgi(aiUser.getAgentserviceid(), orgi); - agentService.setEndtime(new Date()); + AgentServiceRepository agentServiceRes = MainContext.getContext().getBean(AgentServiceRepository.class); + Date now = new Date(); + if (StringUtils.isNotBlank(agentUser.getAgentserviceid())) { + agentService = agentServiceRes.findByIdAndOrgi(agentUser.getAgentserviceid(), orgi); + agentService.setEndtime(now); if (agentService.getServicetime() != null) { agentService.setSessiontimes(System.currentTimeMillis() - agentService.getServicetime().getTime()); } - agentService.setStatus(UKDataContext.AgentUserStatusEnum.END.toString()); + agentService.setStatus(MainContext.AgentUserStatusEnum.END.toString()); } else { - agentService.setServicetime(new Date()); - agentService.setLogindate(new Date()); + agentService.setServicetime(now); + agentService.setLogindate(now); agentService.setOrgi(orgi); - agentService.setOwner(aiUser.getContextid()); - agentService.setSessionid(aiUser.getSessionid()); - if (aiUser.getIpdata() != null) { - agentService.setRegion(aiUser.getIpdata().getRegion()); - } + agentService.setOwner(agentUser.getContextid()); + agentService.setSessionid(agentUser.getSessionid()); + agentService.setRegion(agentUser.getRegion()); + agentService.setUsername(agentUser.getUsername()); + agentService.setChannel(agentUser.getChannel()); - agentService.setUsername(aiUser.getUsername()); - agentService.setChannel(aiUser.getChannel()); - - if (!StringUtils.isBlank(aiUser.getContextid())) { - agentService.setContextid(aiUser.getContextid()); + if (StringUtils.isNotBlank(agentUser.getContextid())) { + agentService.setContextid(agentUser.getContextid()); } else { - agentService.setContextid(aiUser.getSessionid()); + agentService.setContextid(agentUser.getSessionid()); } - agentService.setUserid(aiUser.getUserid()); - agentService.setAiid(aiUser.getAiid()); + agentService.setUserid(agentUser.getUserid()); + agentService.setAiid(agentUser.getAgentno()); agentService.setAiservice(true); - agentService.setStatus(UKDataContext.AgentUserStatusEnum.INSERVICE.toString()); + agentService.setStatus(MainContext.AgentUserStatusEnum.INSERVICE.toString()); - agentService.setAppid(aiUser.getAppid()); + agentService.setAppid(agentUser.getAppid()); agentService.setLeavemsg(false); } @@ -587,12 +584,12 @@ public class ServiceQuene { } agentService.setOrgi(orgi); - UKTools.copyProperties(agentUser, agentService); //复制属性 + MainUtils.copyProperties(agentUser, agentService); //复制属性 agentService.setChannel(agentUser.getChannel()); agentService.setSessionid(agentUser.getSessionid()); - OnlineUserRepository onlineUserRes = UKDataContext.getContext().getBean(OnlineUserRepository.class); + OnlineUserRepository onlineUserRes = MainContext.getContext().getBean(OnlineUserRepository.class); agentUser.setLogindate(new Date()); List onlineUserList = onlineUserRes.findByUseridAndOrgi(agentUser.getUserid(), agentUser.getOrgi()); OnlineUser onlineUser = null; @@ -607,7 +604,7 @@ public class ServiceQuene { agentService.setSkill(agentUser.getSkill()); if (sessionConfig.isLastagent()) { //启用了历史坐席优先 , 查找 历史服务坐席 - List webIMaggList = UKTools.getWebIMDataAgg(onlineUserRes.findByOrgiForDistinctAgent(orgi, agentUser.getUserid())); + List webIMaggList = MainUtils.getWebIMDataAgg(onlineUserRes.findByOrgiForDistinctAgent(orgi, agentUser.getUserid())); if (webIMaggList.size() > 0) { for (WebIMReport report : webIMaggList) { if (report.getData().equals(agentStatus.getAgentno())) { @@ -624,27 +621,27 @@ public class ServiceQuene { } } - agentUser.setStatus(UKDataContext.AgentUserStatusEnum.INSERVICE.toString()); - agentService.setStatus(UKDataContext.AgentUserStatusEnum.INSERVICE.toString()); + agentUser.setStatus(MainContext.AgentUserStatusEnum.INSERVICE.toString()); + agentService.setStatus(MainContext.AgentUserStatusEnum.INSERVICE.toString()); - agentService.setSessiontype(UKDataContext.AgentUserStatusEnum.INSERVICE.toString()); + agentService.setSessiontype(MainContext.AgentUserStatusEnum.INSERVICE.toString()); agentService.setAgentno(agentStatus.getUserid()); agentService.setAgentusername(agentStatus.getUsername()); //agent } else { if (finished == true) { - agentUser.setStatus(UKDataContext.AgentUserStatusEnum.END.toString()); - agentService.setStatus(UKDataContext.AgentUserStatusEnum.END.toString()); - agentService.setSessiontype(UKDataContext.AgentUserStatusEnum.END.toString()); + agentUser.setStatus(MainContext.AgentUserStatusEnum.END.toString()); + agentService.setStatus(MainContext.AgentUserStatusEnum.END.toString()); + agentService.setSessiontype(MainContext.AgentUserStatusEnum.END.toString()); if (agentStatus == null) { agentService.setLeavemsg(true); //是留言 - agentService.setLeavemsgstatus(UKDataContext.LeaveMsgStatus.NOTPROCESS.toString()); //未处理的留言 + agentService.setLeavemsgstatus(MainContext.LeaveMsgStatus.NOTPROCESS.toString()); //未处理的留言 } } else { - agentUser.setStatus(UKDataContext.AgentUserStatusEnum.INQUENE.toString()); - agentService.setStatus(UKDataContext.AgentUserStatusEnum.INQUENE.toString()); + agentUser.setStatus(MainContext.AgentUserStatusEnum.INQUENE.toString()); + agentService.setStatus(MainContext.AgentUserStatusEnum.INQUENE.toString()); - agentService.setSessiontype(UKDataContext.AgentUserStatusEnum.INQUENE.toString()); + agentService.setSessiontype(MainContext.AgentUserStatusEnum.INQUENE.toString()); } } if (finished || agentStatus != null) { @@ -652,7 +649,7 @@ public class ServiceQuene { agentService.setAgentuserid(agentUser.getId()); - agentService.setInitiator(UKDataContext.ChatInitiatorType.USER.toString()); + agentService.setInitiator(MainContext.ChatInitiatorType.USER.toString()); long waittingtime = 0; if (agentUser.getWaittingtimestart() != null) { @@ -669,7 +666,7 @@ public class ServiceQuene { agentService.setTimes(0); agentUser.setAgentno(agentService.getAgentno()); - AgentServiceRepository agentServiceRes = UKDataContext.getContext().getBean(AgentServiceRepository.class); + AgentServiceRepository agentServiceRes = MainContext.getContext().getBean(AgentServiceRepository.class); if (!StringUtils.isBlank(agentUser.getName())) { agentService.setName(agentUser.getName()); @@ -714,14 +711,14 @@ public class ServiceQuene { /** * 将 AgentUser 放入到 当前坐席的 服务队列 */ - AgentUserRepository agentUserRepository = UKDataContext.getContext().getBean(AgentUserRepository.class); + AgentUserRepository agentUserRepository = MainContext.getContext().getBean(AgentUserRepository.class); /** * 更新OnlineUser对象,变更为服务中,不可邀请 */ if (onlineUser != null) { - onlineUser.setInvitestatus(UKDataContext.OnlineUserInviteStatus.INSERV.toString()); + onlineUser.setInvitestatus(MainContext.OnlineUserInviteStatus.INSERV.toString()); onlineUserRes.save(onlineUser); } @@ -730,7 +727,7 @@ public class ServiceQuene { */ agentUserRepository.save(agentUser); - CacheHelper.getAgentUserCacheBean().put(agentUser.getUserid(), agentUser, UKDataContext.SYSTEM_ORGI); + CacheHelper.getAgentUserCacheBean().put(agentUser.getUserid(), agentUser, MainContext.SYSTEM_ORGI); if (agentStatus != null) { updateAgentStatus(agentStatus, agentUser, orgi, true); @@ -742,12 +739,12 @@ public class ServiceQuene { public static AgentUser deleteAgentUser(AgentUser agentUser, String orgi) throws Exception { if (agentUser != null) { - if (!UKDataContext.AgentUserStatusEnum.END.toString().equals( + if (!MainContext.AgentUserStatusEnum.END.toString().equals( agentUser.getStatus())) { serviceFinish(agentUser, orgi); } if (!StringUtils.isBlank(agentUser.getId())) { - AgentUserRepository agentUserRes = UKDataContext.getContext().getBean(AgentUserRepository.class); + AgentUserRepository agentUserRes = MainContext.getContext().getBean(AgentUserRepository.class); agentUser = agentUserRes.findByIdAndOrgi(agentUser.getId(), orgi); if (agentUser != null) { agentUserRes.delete(agentUser); @@ -764,7 +761,7 @@ public class ServiceQuene { */ public static String getSuccessMessage(AgentService agentService, String channel, String orgi) { String queneTip = "" + agentService.getAgentusername() + ""; - if (!UKDataContext.ChannelTypeEnum.WEBIM.toString().equals(channel)) { + if (!MainContext.ChannelTypeEnum.WEBIM.toString().equals(channel)) { queneTip = agentService.getAgentusername(); } SessionConfig sessionConfig = initSessionConfig(orgi); @@ -793,7 +790,7 @@ public class ServiceQuene { queneIndex = 0; } String queneTip = "" + queneIndex + ""; - if (!UKDataContext.ChannelTypeEnum.WEBIM.toString().equals(channel)) { + if (!MainContext.ChannelTypeEnum.WEBIM.toString().equals(channel)) { queneTip = String.valueOf(queneIndex); } SessionConfig sessionConfig = initSessionConfig(orgi); @@ -807,7 +804,7 @@ public class ServiceQuene { public static String getQueneMessage(int queneIndex, String channel, String orgi) { String queneTip = "" + queneIndex + ""; - if (!UKDataContext.ChannelTypeEnum.WEBIM.toString().equals(channel)) { + if (!MainContext.ChannelTypeEnum.WEBIM.toString().equals(channel)) { queneTip = String.valueOf(queneIndex); } SessionConfig sessionConfig = initSessionConfig(orgi); @@ -825,13 +822,13 @@ public class ServiceQuene { * @param status */ public static void deleteAgentStatus(String userid, String orgi, boolean isAdmin) { - AgentStatusRepository agentStatusRes = UKDataContext.getContext().getBean(AgentStatusRepository.class); + AgentStatusRepository agentStatusRes = MainContext.getContext().getBean(AgentStatusRepository.class); List agentStatusList = agentStatusRes.findByAgentnoAndOrgi(userid, orgi); for (AgentStatus agentStatus : agentStatusList) { - ServiceQuene.recordAgentStatus(agentStatus.getAgentno(), agentStatus.getUsername(), agentStatus.getAgentno(), agentStatus.getSkill(), isAdmin, agentStatus.getAgentno(), agentStatus.isBusy() ? UKDataContext.AgentStatusEnum.BUSY.toString() : UKDataContext.AgentStatusEnum.NOTREADY.toString(), UKDataContext.AgentStatusEnum.NOTREADY.toString(), UKDataContext.AgentWorkType.MEIDIACHAT.toString(), agentStatus.getOrgi(), agentStatus.getUpdatetime()); + AutomaticServiceDist.recordAgentStatus(agentStatus.getAgentno(), agentStatus.getUsername(), agentStatus.getAgentno(), agentStatus.getSkill(), isAdmin, agentStatus.getAgentno(), agentStatus.isBusy() ? MainContext.AgentStatusEnum.BUSY.toString() : MainContext.AgentStatusEnum.NOTREADY.toString(), MainContext.AgentStatusEnum.NOTREADY.toString(), MainContext.AgentWorkType.MEIDIACHAT.toString(), agentStatus.getOrgi(), agentStatus.getUpdatetime()); agentStatusRes.delete(agentStatus); } CacheHelper.getAgentStatusCacheBean().delete(userid, orgi); - ServiceQuene.publishMessage(orgi, "agent", "leave", userid); + AutomaticServiceDist.publishMessage(orgi, "agent", "leave", userid); } } diff --git a/contact-center/app/src/main/java/com/chatopera/cc/core/UKDataContext.java b/contact-center/app/src/main/java/com/chatopera/cc/app/basic/MainContext.java similarity index 91% rename from contact-center/app/src/main/java/com/chatopera/cc/core/UKDataContext.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/basic/MainContext.java index 55ee0066..d55b1023 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/core/UKDataContext.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/basic/MainContext.java @@ -15,12 +15,12 @@ * limitations under the License. */ -package com.chatopera.cc.core; +package com.chatopera.cc.app.basic; import com.chatopera.cc.util.DateConverter; -import com.chatopera.cc.webim.service.resource.ActivityResource; -import com.chatopera.cc.webim.service.resource.BatchResource; -import com.chatopera.cc.webim.web.model.Log; +import com.chatopera.cc.app.basic.resource.ActivityResource; +import com.chatopera.cc.app.basic.resource.BatchResource; +import com.chatopera.cc.app.model.Log; import org.apache.commons.beanutils.ConvertUtils; import org.springframework.context.ApplicationContext; import org.springframework.data.elasticsearch.core.ElasticsearchTemplate; @@ -30,7 +30,7 @@ import java.util.Map; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; -public class UKDataContext { +public class MainContext { public static final String USER_SESSION_NAME = "user"; public static final String GUEST_USER = "guest"; @@ -39,8 +39,8 @@ public class UKDataContext { public static final String UKEFU_SYSTEM_AUTH_DIC = "com.dic.auth.resource"; public static final String UKEFU_SYSTEM_AREA_DIC = "com.dic.address.area"; public static final String UKEFU_SYSTEM_ADPOS_DIC = "com.dic.adv.type"; - public static final String UKEFU_SYSTEM_COMMENT_DIC = "com.dic.webim.comment"; - public static final String UKEFU_SYSTEM_COMMENT_ITEM_DIC = "com.dic.webim.comment.item"; + public static final String UKEFU_SYSTEM_COMMENT_DIC = "com.dic.app.comment"; + public static final String UKEFU_SYSTEM_COMMENT_ITEM_DIC = "com.dic.app.comment.item"; public static final String UKEFU_SYSTEM_DIS_AI = "ownerai"; public static final String UKEFU_SYSTEM_DIS_AGENT = "owneruser"; @@ -335,6 +335,28 @@ public class UKDataContext { } } + // 服务处理类型 + public enum OptTypeEnum { + CHATBOT("机器人客服", 1), + HUMAN("人工客服", 2); + + private final String name; + private final int index; + + private OptTypeEnum(String name, int index) { + this.name = name; + this.index = index; + } + + public String toLetters() { + return super.toString().toLowerCase(); + } + + public String toString() { + return this.name; + } + } + // 外呼计划状态 public enum CallOutDialplanStatusEnum { RUNNING("执行中", 1), @@ -486,9 +508,9 @@ public class UKDataContext { } - public enum AiItemType { + public enum ChatbotItemType { USERINPUT, - AIREPLY; + BOTREPLY; public String toString() { return super.toString().toLowerCase(); @@ -705,9 +727,9 @@ public class UKDataContext { IM("/im/user"), AGENT("/im/agent"), ENTIM("/im/ent"), - AIIM("/im/ai"), - CALLCENTER("/callcenter/event"), - CALLOUT("/callout/event"); + CHATBOT("/im/chatbot"), + CALLCENTER("/callcenter/exchange"), + CALLOUT("/callout/exchange"); private String namespace; @@ -834,7 +856,7 @@ public class UKDataContext { } public static void setTemplet(ElasticsearchTemplate templet) { - UKDataContext.templet = templet; + MainContext.templet = templet; } public static int getWebIMPort() { @@ -928,7 +950,7 @@ public class UKDataContext { } } - public enum AiType { + public enum ChatbotType { SMARTAI, BUSINESSAI; @@ -938,7 +960,7 @@ public class UKDataContext { } - public enum AiBussType { + public enum ChatbotBussType { SALE, QUESURVEY; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/basic/MainUtils.java b/contact-center/app/src/main/java/com/chatopera/cc/app/basic/MainUtils.java new file mode 100644 index 00000000..ce592ddd --- /dev/null +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/basic/MainUtils.java @@ -0,0 +1,1426 @@ +/* + * Copyright (C) 2017 优客服-多渠道客服系统 + * Modifications copyright (C) 2018 Chatopera Inc, + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.chatopera.cc.app.basic; + +import com.aliyuncs.DefaultAcsClient; +import com.aliyuncs.IAcsClient; +import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest; +import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse; +import com.aliyuncs.http.MethodType; +import com.aliyuncs.profile.DefaultProfile; +import com.aliyuncs.profile.IClientProfile; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.model.*; +import com.chatopera.cc.app.persistence.repository.*; +import com.chatopera.cc.concurrent.chatbot.ChatbotEvent; +import com.chatopera.cc.concurrent.multiupdate.MultiUpdateEvent; +import com.chatopera.cc.concurrent.user.UserDataEvent; +import com.chatopera.cc.exchange.UserEvent; +import com.chatopera.cc.util.*; +import com.chatopera.cc.util.WebIMReport; +import com.chatopera.cc.util.asr.AsrResult; +import com.chatopera.cc.util.mail.MailSender; +import com.fasterxml.jackson.annotation.JsonInclude.Include; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.googlecode.aviator.AviatorEvaluator; +import com.lmax.disruptor.dsl.Disruptor; +import freemarker.template.Configuration; +import freemarker.template.TemplateException; +import io.netty.handler.codec.http.HttpHeaders; +import net.coobird.thumbnailator.Thumbnails; +import org.apache.commons.beanutils.BeanUtilsBean; +import org.apache.commons.beanutils.ConversionException; +import org.apache.commons.beanutils.ConvertUtils; +import org.apache.commons.beanutils.Converter; +import org.apache.commons.codec.binary.Base64; +import org.apache.commons.io.FileUtils; +import org.apache.commons.lang.StringUtils; +import org.jasypt.util.text.BasicTextEncryptor; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.BeansException; +import org.springframework.beans.FatalBeanException; +import org.springframework.util.Assert; +import org.springframework.util.ClassUtils; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.beans.BeanInfo; +import java.beans.Introspector; +import java.beans.PropertyDescriptor; +import java.io.*; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.security.NoSuchAlgorithmException; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + + +public class MainUtils { + private static MD5 md5 = new MD5(); + + public static SimpleDateFormat dateFormate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + public static SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + + public static SimpleDateFormat timeRangeDateFormat = new SimpleDateFormat("HH:mm"); + + /** + * 当前时间+已过随机生成的 长整形数字 + * + * @return + */ + public static String genID() { + return Base62.encode(getUUID()).toLowerCase(); + } + + public static String genIDByKey(String key) { + return Base62.encode(key).toLowerCase(); + } + + public static String getUUID() { + return UUID.randomUUID().toString().replace("-", ""); + } + + public static String getContextID(String session) { + return session.replaceAll("-", ""); + } + + public static String md5(String str) { + return md5.getMD5ofStr(md5.getMD5ofStr(str)); + } + + public static String md5(byte[] bytes) { + return md5.getMD5ofByte(bytes); + } + + public static void copyProperties(Object source, Object target, String... ignoreProperties) + throws BeansException { + + Assert.notNull(source, "Source must not be null"); + Assert.notNull(target, "Target must not be null"); + + Class actualEditable = target.getClass(); + PropertyDescriptor[] targetPds = BeanUtils.getPropertyDescriptors(actualEditable); + List ignoreList = (ignoreProperties != null) ? Arrays.asList(ignoreProperties) : null; + + for (PropertyDescriptor targetPd : targetPds) { + Method writeMethod = targetPd.getWriteMethod(); + if (writeMethod != null && (ignoreProperties == null || (!ignoreList.contains(targetPd.getName())))) { + PropertyDescriptor sourcePd = BeanUtils.getPropertyDescriptor(source.getClass(), targetPd.getName()); + if (sourcePd != null && !targetPd.getName().equalsIgnoreCase("id")) { + Method readMethod = sourcePd.getReadMethod(); + if (readMethod != null && + ClassUtils.isAssignable(writeMethod.getParameterTypes()[0], readMethod.getReturnType())) { + try { + if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) { + readMethod.setAccessible(true); + } + Object value = readMethod.invoke(source); + if (value != null) { //只拷贝不为null的属性 by zhao + if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) { + writeMethod.setAccessible(true); + } + writeMethod.invoke(target, value); + } + } catch (Throwable ex) { + throw new FatalBeanException( + "Could not copy property '" + targetPd.getName() + "' from source to target", ex); + } + } + } + } + } + } + + public static long ipToLong(String ipAddress) { + long result = 0; + String[] ipAddressInArray = ipAddress.split("\\."); + if (ipAddressInArray != null && ipAddressInArray.length == 4) { + for (int i = 3; i >= 0; i--) { + long ip = Long.parseLong(ipAddressInArray[3 - i]); + + // left shifting 24,16,8,0 and bitwise OR + + // 1. 192 << 24 + // 1. 168 << 16 + // 1. 1 << 8 + // 1. 2 << 0 + result |= ip << (i * 8); + + } + } + return result; + } + + public static String longToIp2(long ip) { + + return ((ip >> 24) & 0xFF) + "." + ((ip >> 16) & 0xFF) + "." + + ((ip >> 8) & 0xFF) + "." + (ip & 0xFF); + } + + /*** + * ID编码 , 发送对话的时候使用 + * @param id + * @param nid + * @return + */ + public static String genNewID(String id, String nid) { + StringBuffer strb = new StringBuffer(); + if (id != null && nid != null) { + int length = Math.max(id.length(), nid.length()); + for (int i = 0; i < length; i++) { + if (nid.length() > i && id.length() > i) { + int cur = (id.charAt(i) + nid.charAt(i)) / 2; + strb.append((char) cur); + } else if (nid.length() > i) { + strb.append(nid.charAt(i)); + } else { + strb.append(id.charAt(i)); + } + } + } + return strb.toString(); + } + + public static void published(UserEvent event) { + @SuppressWarnings("unchecked") + Disruptor disruptor = (Disruptor) MainContext.getContext().getBean("disruptor"); + long seq = disruptor.getRingBuffer().next(); + disruptor.getRingBuffer().get(seq).setEvent(event); + ; + disruptor.getRingBuffer().publish(seq); + } + + /** + * @param request + * @return + */ + public static Map getRequestParam(HttpServletRequest request) { + Map values = new HashMap(); + Enumeration enums = request.getParameterNames(); + while (enums.hasMoreElements()) { + String param = enums.nextElement(); + values.put(param, request.getParameter(param)); + } + return values; + } + + @SuppressWarnings({"unchecked", "rawtypes"}) + public static void multiupdate(MultiUpdateEvent event) { + Disruptor disruptor = (Disruptor) MainContext.getContext().getBean("multiupdate"); + long seq = disruptor.getRingBuffer().next(); + disruptor.getRingBuffer().get(seq).setEvent(event); + disruptor.getRingBuffer().publish(seq); + } + + @SuppressWarnings({"unchecked"}) + public static void chatbot(ChatbotEvent event) { + Disruptor disruptor = (Disruptor) MainContext.getContext().getBean("chatbot"); + long seq = disruptor.getRingBuffer().next(); + disruptor.getRingBuffer().get(seq).setEvent(event); + disruptor.getRingBuffer().publish(seq); + } + + /** + * @param request + * @return + */ + public static String getParameter(HttpServletRequest request) { + Enumeration names = request.getParameterNames(); + StringBuffer strb = new StringBuffer(); + while (names.hasMoreElements()) { + String name = names.nextElement(); + if (name.indexOf("password") < 0) { //不记录 任何包含 password 的参数内容 + if (strb.length() > 0) { + strb.append(","); + } + strb.append(name).append("=").append(request.getParameter(name)); + } + } + return strb.toString(); + + } + + /** + * 获取一天的开始时间 + * + * @return + */ + public static Date getStartTime() { + Calendar todayStart = Calendar.getInstance(); + todayStart.set(Calendar.HOUR_OF_DAY, 0); + todayStart.set(Calendar.MINUTE, 0); + todayStart.set(Calendar.SECOND, 0); + todayStart.set(Calendar.MILLISECOND, 0); + return todayStart.getTime(); + } + + /** + * 获取一天的开始时间 + * + * @return + */ + public static Date getWeekStartTime() { + Calendar weekStart = Calendar.getInstance(); + weekStart.set(weekStart.get(Calendar.YEAR), weekStart.get(Calendar.MONDAY), weekStart.get(Calendar.DAY_OF_MONTH), 0, 0, 0); + weekStart.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); + return weekStart.getTime(); + } + + /** + * 获取一天的开始时间 + * + * @return + */ + public static Date getLast30Day() { + Calendar todayStart = Calendar.getInstance(); + todayStart.set(Calendar.DAY_OF_MONTH, -30); + todayStart.set(Calendar.HOUR_OF_DAY, 0); + todayStart.set(Calendar.MINUTE, 0); + todayStart.set(Calendar.SECOND, 0); + todayStart.set(Calendar.MILLISECOND, 0); + return todayStart.getTime(); + } + + /** + * 获取一天的开始时间 + * + * @return + */ + public static Date getLastDay(int days) { + Calendar todayStart = Calendar.getInstance(); + todayStart.set(Calendar.DAY_OF_MONTH, -days); + todayStart.set(Calendar.HOUR_OF_DAY, 0); + todayStart.set(Calendar.MINUTE, 0); + todayStart.set(Calendar.SECOND, 0); + todayStart.set(Calendar.MILLISECOND, 0); + return todayStart.getTime(); + } + + /** + * 获取一天的结束时间 + * + * @return + */ + public static Date getEndTime() { + Calendar todayEnd = Calendar.getInstance(); + todayEnd.set(Calendar.HOUR_OF_DAY, 23); + todayEnd.set(Calendar.MINUTE, 59); + todayEnd.set(Calendar.SECOND, 59); + todayEnd.set(Calendar.MILLISECOND, 999); + return todayEnd.getTime(); + } + + /** + * 获取一天的结束时间 + * + * @return + */ + public static Date getLastTime(int secs) { + Calendar todayEnd = Calendar.getInstance(); + todayEnd.add(Calendar.SECOND, secs * -1); + return todayEnd.getTime(); + } + + public static void noCacheResponse(HttpServletResponse response) { + response.setDateHeader("Expires", 0); + response.setHeader("Buffer", "True"); + response.setHeader("Cache-Control", "no-cache"); + response.setHeader("Cache-Control", "no-store"); + response.setHeader("Expires", "0"); + response.setHeader("ETag", String.valueOf(System.currentTimeMillis())); + response.setHeader("Pragma", "no-cache"); + response.setHeader("Date", String.valueOf(new Date())); + response.setHeader("Last-Modified", String.valueOf(new Date())); + } + + public static BrowserClient parseClient(HttpServletRequest request) { + BrowserClient client = new BrowserClient(); + String browserDetails = request.getHeader("User-Agent"); + String userAgent = browserDetails; + String user = userAgent.toLowerCase(); + String os = ""; + String browser = "", version = ""; + + + //=================OS======================= + if (userAgent.toLowerCase().indexOf("windows") >= 0) { + os = "windows"; + } else if (userAgent.toLowerCase().indexOf("mac") >= 0) { + os = "mac"; + } else if (userAgent.toLowerCase().indexOf("x11") >= 0) { + os = "unix"; + } else if (userAgent.toLowerCase().indexOf("android") >= 0) { + os = "android"; + } else if (userAgent.toLowerCase().indexOf("iphone") >= 0) { + os = "iphone"; + } else { + os = "UnKnown"; + } + //===============Browser=========================== + if (user.contains("qqbrowser")) { + browser = "QQBrowser"; + } else if (user.contains("msie") || user.indexOf("rv:11") > -1) { + if (user.indexOf("rv:11") >= 0) { + browser = "IE11"; + } else { + String substring = userAgent.substring(userAgent.indexOf("MSIE")).split(";")[0]; + browser = substring.split(" ")[0].replace("MSIE", "IE") + substring.split(" ")[1]; + } + } else if (user.contains("trident")) { + browser = "IE 11"; + } else if (user.contains("edge")) { + browser = "Edge"; + } else if (user.contains("safari") && user.contains("version")) { + browser = (userAgent.substring(userAgent.indexOf("Safari")).split(" ")[0]).split("/")[0]; + version = (userAgent.substring(userAgent.indexOf("Version")).split(" ")[0]).split("/")[1]; + } else if (user.contains("opr") || user.contains("opera")) { + if (user.contains("opera")) + browser = (userAgent.substring(userAgent.indexOf("Opera")).split(" ")[0]).split("/")[0] + "-" + (userAgent.substring(userAgent.indexOf("Version")).split(" ")[0]).split("/")[1]; + else if (user.contains("opr")) + browser = ((userAgent.substring(userAgent.indexOf("OPR")).split(" ")[0]).replace("/", "-")).replace("OPR", "Opera"); + } else if (user.contains("chrome")) { + browser = "Chrome"; + } else if ((user.indexOf("mozilla/7.0") > -1) || (user.indexOf("netscape6") != -1) || (user.indexOf("mozilla/4.7") != -1) || (user.indexOf("mozilla/4.78") != -1) || (user.indexOf("mozilla/4.08") != -1) || (user.indexOf("mozilla/3") != -1)) { + //browser=(userAgent.substring(userAgent.indexOf("MSIE")).split(" ")[0]).replace("/", "-"); + browser = "Netscape-?"; + + } else if ((user.indexOf("mozilla") > -1)) { + //browser=(userAgent.substring(userAgent.indexOf("MSIE")).split(" ")[0]).replace("/", "-"); + if (browserDetails.indexOf(" ") > 0) { + browser = browserDetails.substring(0, browserDetails.indexOf(" ")); + } else { + browser = "Mozilla"; + } + + } else if (user.contains("firefox")) { + browser = (userAgent.substring(userAgent.indexOf("Firefox")).split(" ")[0]).replace("/", "-"); + } else if (user.contains("rv")) { + browser = "ie"; + } else { + browser = "UnKnown"; + } + client.setUseragent(browserDetails); + client.setOs(os); + client.setBrowser(browser); + client.setVersion(version); + + return client; + } + + /** + * 活动JPA统计结果 + * + * @param values + * @return + */ + public static WebIMReport getWebIMReport(List values) { + WebIMReport report = new WebIMReport(); + if (values != null && values.size() > 0) { + Object[] value = (Object[]) values.get(0); + if (value.length >= 2) { + report.setIpnums((long) value[0]); + report.setPvnums((long) value[1]); + } + } + return report; + } + + /** + * 活动JPA统计结果 + * + * @param values + * @return + */ + public static WebIMReport getWebIMInviteStatus(List values) { + WebIMReport report = new WebIMReport(); + if (values != null && values.size() > 0) { + + for (int i = 0; i < values.size(); i++) { + Object[] value = (Object[]) values.get(i); + if (value.length >= 2) { + String invitestatus = (String) value[0]; + if (MainContext.OnlineUserInviteStatus.DEFAULT.toString().equals(invitestatus) || invitestatus == null) { + report.setUsers((long) value[1]); + } else if (MainContext.OnlineUserInviteStatus.INVITE.toString().equals(invitestatus)) { + report.setInviteusers((long) value[1]); + } else if (MainContext.OnlineUserInviteStatus.REFUSE.toString().equals(invitestatus)) { + report.setRefuseusers((long) value[1]); + } + } + } + } + return report; + } + + /** + * 活动JPA统计结果 + * + * @param values + * @return + */ + public static List getWebIMInviteAgg(List values) { + List webIMReportList = new ArrayList(); + if (values != null && values.size() > 0) { + for (int i = 0; i < values.size(); i++) { + Object[] value = (Object[]) values.get(i); + WebIMReport report = new WebIMReport(); + if (value.length == 3) { + report.setData((String) value[0]); + report.setIpnums((long) value[1]); + report.setPvnums((long) value[2]); + } + webIMReportList.add(report); + } + } + return webIMReportList; + } + + /** + * 活动JPA统计结果 + * + * @param values + * @return + */ + public static List getWebIMDataAgg(List values) { + List webIMReportList = new ArrayList(); + if (values != null && values.size() > 0) { + for (int i = 0; i < values.size(); i++) { + Object[] value = (Object[]) values.get(i); + WebIMReport report = new WebIMReport(); + if (value.length == 2) { + if (value[0] == null || value[0].toString().equalsIgnoreCase("null")) { + report.setData("未知"); + } else { + report.setData((String) value[0]); + } + report.setUsers((long) value[1]); + } + webIMReportList.add(report); + } + } + return webIMReportList; + } + + /** + * 活动JPA统计结果 + * + * @param values + * @return + */ + public static WebIMReport getWebIMInviteResult(List values) { + WebIMReport report = new WebIMReport(); + if (values != null && values.size() > 0) { + + for (int i = 0; i < values.size(); i++) { + Object[] value = (Object[]) values.get(i); + if (value.length >= 2) { + String invitestatus = (String) value[0]; + if (MainContext.OnlineUserInviteStatus.DEFAULT.toString().equals(invitestatus) || invitestatus == null) { + report.setUsers((long) value[1]); + } else if (MainContext.OnlineUserInviteStatus.ACCEPT.toString().equals(invitestatus)) { + report.setInviteusers((long) value[1]); + } else if (MainContext.OnlineUserInviteStatus.REFUSE.toString().equals(invitestatus)) { + report.setRefuseusers((long) value[1]); + } + } + } + } + return report; + } + + /** + * 活动JPA统计结果 + * + * @param values + * @return + */ + public static WeiXinReport getWeiXinReportResult(List values) { + WeiXinReport report = new WeiXinReport(); + if (values != null && values.size() > 0) { + for (int i = 0; i < values.size(); i++) { + Object[] value = (Object[]) values.get(i); + if (value.length >= 2) { + String event = (String) value[0]; + if (MainContext.WeiXinEventTypeEnum.SUB.toString().equals(event)) { + report.setSubs((long) value[1]); + } else if (MainContext.WeiXinEventTypeEnum.UNSUB.toString().equals(event)) { + report.setUnsubs((long) value[1]); + } + } + } + } + return report; + } + + public static Map transBean2Map(Object obj) { + + if (obj == null) { + return null; + } + Map map = new HashMap(); + try { + BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass()); + PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); + for (PropertyDescriptor property : propertyDescriptors) { + String key = property.getName(); + + // 过滤class属性 + if (!key.equals("class")) { + // 得到property对应的getter方法 + + Method readMethod = property.getReadMethod(); + + if (readMethod != null) { + Object value = readMethod.invoke(obj); + if (value instanceof Date) { + value = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format((Date) value); + } + map.put(key, value); + } + } + } + } catch (Exception e) { + System.out.println("transBean2Map Error " + e); + } + + return map; + + } + + public static void populate(Object bean, Map properties) throws IllegalAccessException, InvocationTargetException { + ConvertUtils.register(new Converter() { + @SuppressWarnings("rawtypes") + @Override + public Object convert(Class arg0, Object arg1) { + if (arg1 == null) { + return null; + } + if (arg1 instanceof Date) { + return arg1; + } else if (!(arg1 instanceof String)) { + throw new ConversionException("只支持字符串转换 !"); + } + String str = (String) arg1; + if (str.trim().equals("")) { + return null; + } + + SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + try { + return sd.parse(str); + } catch (Exception e) { + throw new RuntimeException(e); + } + + } + + }, java.util.Date.class); + if (properties == null || bean == null) { + return; + } + try { + BeanUtilsBean.getInstance().populate(bean, properties); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public static byte[] toBytes(Object object) throws Exception { + ByteArrayOutputStream out = new ByteArrayOutputStream(); + ObjectOutputStream objectOutput = new ObjectOutputStream(out); + objectOutput.writeObject(object); + return out.toByteArray(); + } + + public static Object toObject(byte[] data) throws Exception { + ByteArrayInputStream input = new ByteArrayInputStream(data); + ObjectInputStream objectInput = new ObjectInputStream(input); + return objectInput.readObject(); + } + + /** + * @param str + * @return + * @throws NoSuchAlgorithmException + */ + public static String encryption(String str) throws NoSuchAlgorithmException { + BasicTextEncryptor textEncryptor = new BasicTextEncryptor(); + textEncryptor.setPassword(MainContext.getSystemSecrityPassword()); + return textEncryptor.encrypt(str); + } + + /** + * @param str + * @return + * @throws NoSuchAlgorithmException + */ + public static String decryption(String str) throws NoSuchAlgorithmException { + BasicTextEncryptor textEncryptor = new BasicTextEncryptor(); + textEncryptor.setPassword(MainContext.getSystemSecrityPassword()); + return textEncryptor.decrypt(str); + } + + public static String getTopic(String snsid, String msgtype, String eventype, String eventkey, String msg) { + StringBuffer strb = new StringBuffer(); + strb.append(snsid); + strb.append(".").append(msgtype); + if (msgtype.equals("text")) { + strb.append(".").append(msg); + } else if (msgtype.equals("exchange")) { + strb.append(".").append(eventype.toLowerCase()); + if (!StringUtils.isBlank(eventkey)) { + strb.append(".").append(eventkey); + } + } else { + strb.append(".").append(msgtype); + } + return strb.toString(); + } + + public static String getTopic(String snsid, String msgtype, String eventype) { + StringBuffer strb = new StringBuffer(); + strb.append(snsid); + strb.append(".").append(msgtype); + if (msgtype.equals("text")) { + strb.append(".").append(msgtype); + } else if (msgtype.equals("exchange")) { + strb.append(".").append(eventype.toLowerCase()); + } else { + strb.append(".").append(msgtype); + } + return strb.toString(); + } + + /** + * 处理 对话消息中的图片 + * + * @param message + * @return + */ + public static String filterChatMessage(String message) { + Document document = Jsoup.parse(message); + Elements pngs = document.select("img[src]"); + for (Element element : pngs) { + String imgUrl = element.attr("src"); + if (imgUrl.indexOf("/res/image") >= 0) { + element.attr("class", "ukefu-media-image"); + } + } + return document.html(); + } + + /** + * 检查当前时间是否是在 时间范围内 ,时间范围的格式为 : 08:30~11:30,13:30~17:30 + * + * @param timeRanges + * @return + */ + public static boolean isInWorkingHours(String timeRanges) { + boolean workintTime = true; + String timeStr = timeRangeDateFormat.format(new Date()); + if (!StringUtils.isBlank(timeRanges)) { //设置了 工作时间段 + workintTime = false; //将 检查结果设置为 False , 如果当前时间是在 时间范围内,则 置为 True + String[] timeRange = timeRanges.split(","); + for (String tr : timeRange) { + String[] timeGroup = tr.split("~"); + if (timeGroup.length == 2) { + if (timeGroup[0].compareTo(timeGroup[1]) >= 0) { + if (timeStr.compareTo(timeGroup[0]) >= 0 || timeStr.compareTo(timeGroup[1]) <= 0) { + workintTime = true; + } + } else { + if (timeStr.compareTo(timeGroup[0]) >= 0 && timeStr.compareTo(timeGroup[1]) <= 0) { + workintTime = true; + } + } + } + } + } + return workintTime; + } + + public static File processImage(File destFile, File imageFile) throws FileNotFoundException, IOException { + if (imageFile != null && imageFile.exists()) { + Thumbnails.of(imageFile).width(460).keepAspectRatio(true).toFile(destFile); + } + return destFile; + } + + public static File scaleImage(File destFile, File imageFile, float quality) throws FileNotFoundException, IOException { + if (imageFile != null && imageFile.exists()) { + Thumbnails.of(imageFile).scale(1f).outputQuality(quality).toFile(destFile); + } + return destFile; + } + + public static String processEmoti(String message) { + Pattern pattern = Pattern.compile("\\[([\\d]*?)\\]"); + SystemConfig systemConfig = (SystemConfig) CacheHelper.getSystemCacheBean().getCacheObject("systemConfig", MainContext.SYSTEM_ORGI); + Matcher matcher = pattern.matcher(message); + StringBuffer strb = new StringBuffer(); + while (matcher.find()) { + if (systemConfig != null && !StringUtils.isBlank(systemConfig.getIconstr())) { + matcher.appendReplacement(strb, ""); + } else { + matcher.appendReplacement(strb, ""); + } + } + matcher.appendTail(strb); + if (strb.length() == 0) { + strb.append(message); + } + return strb.toString().replaceAll("[\\ud800\\udc00-\\udbff\\udfff\\ud800-\\udfff]", "[表情]"); + } + + public static String getIpAddr(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.getRemoteAddr(); + } + return ip; + } + + public static String getIpAddr(HttpHeaders headers, String remoteAddr) { + String ip = headers.get("x-forwarded-for"); + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = headers.get("Proxy-Client-IP"); + } + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = headers.get("WL-Proxy-Client-IP"); + } + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = remoteAddr; + } + return ip; + } + + public static boolean secConfirm(SecretRepository secRes, String orgi, String confirm) { + /** + * 先调用 IMServer + */ + boolean execute = false; + List secretConfig = secRes.findByOrgi(orgi); + if (!StringUtils.isBlank(confirm)) { + if (secretConfig != null && secretConfig.size() > 0) { + Secret secret = secretConfig.get(0); + if (MainUtils.md5(confirm).equals(secret.getPassword())) { + execute = true; + } + } + } else if (secretConfig.size() == 0) { + execute = true; + } + return execute; + } + + public static void processAttachmentFile(MultipartFile[] files, AttachmentRepository attachementRes, String path, User user, String orgi, WorkOrders workOrders, HttpServletRequest request, String dataid, String modelid) throws IOException { + if (files != null && files.length > 0) { + workOrders.setAnonymous(true);//变更用途为是否有 附件 + //保存附件 + for (MultipartFile file : files) { + if (file.getSize() > 0) { //文件尺寸 限制 ?在 启动 配置中 设置 的最大值,其他地方不做限制 + String fileid = MainUtils.md5(file.getBytes()); //使用 文件的 MD5作为 ID,避免重复上传大文件 + if (!StringUtils.isBlank(fileid)) { + AttachmentFile attachmentFile = new AttachmentFile(); + attachmentFile.setCreater(user.getId()); + attachmentFile.setOrgi(orgi); + attachmentFile.setOrgan(user.getOrgan()); + attachmentFile.setDataid(dataid); + attachmentFile.setModelid(modelid); + attachmentFile.setModel(MainContext.ModelType.WORKORDERS.toString()); + attachmentFile.setFilelength((int) file.getSize()); + if (file.getContentType() != null && file.getContentType().length() > 255) { + attachmentFile.setFiletype(file.getContentType().substring(0, 255)); + } else { + attachmentFile.setFiletype(file.getContentType()); + } + if (file.getOriginalFilename() != null && file.getOriginalFilename().length() > 255) { + attachmentFile.setTitle(file.getOriginalFilename().substring(0, 255)); + } else { + attachmentFile.setTitle(file.getOriginalFilename()); + } + if (!StringUtils.isBlank(attachmentFile.getFiletype()) && attachmentFile.getFiletype().indexOf("image") >= 0) { + attachmentFile.setImage(true); + } + attachmentFile.setFileid(fileid); + attachementRes.save(attachmentFile); + FileUtils.writeByteArrayToFile(new File(path, "app/workorders/" + fileid), file.getBytes()); + } + } + } + + } + } + + /** + * 获取系统配置 + * + * @return + */ + public static SystemConfig getSystemConfig() { + SystemConfig systemConfig = (SystemConfig) CacheHelper.getSystemCacheBean().getCacheObject("systemConfig", MainContext.SYSTEM_ORGI); + if (systemConfig == null) { + SystemConfigRepository systemConfigRes = MainContext.getContext().getBean(SystemConfigRepository.class); + systemConfig = systemConfigRes.findByOrgi(MainContext.SYSTEM_ORGI); + } + return systemConfig; + } + + /** + * 初始化呼叫中心功能里需要隐藏号码的字段 + * + * @param tpRes + */ + public static void initSystemSecField(TablePropertiesRepository tpRes) { + if (tpRes != null) { + List tpList = tpRes.findBySecfield(true); + CacheHelper.getSystemCacheBean().put(MainContext.UKEFU_SYSTEM_SECFIELD, tpList, MainContext.SYSTEM_ORGI); + } + } + + /** + * 获取系统地区配置 + * + * @return + */ + public static void initSystemArea() { + CacheHelper.getSystemCacheBean().delete(MainContext.UKEFU_SYSTEM_AREA, MainContext.SYSTEM_ORGI); + AreaTypeRepository areaTypeRes = MainContext.getContext().getBean(AreaTypeRepository.class); + CacheHelper.getSystemCacheBean().put(MainContext.UKEFU_SYSTEM_AREA, areaTypeRes.findAll(), MainContext.SYSTEM_ORGI); + } + + /** + * 缓存 广告位 + * + * @return + */ + public static void initAdv(String orgi) { + CacheHelper.getSystemCacheBean().delete(MainContext.UKEFU_SYSTEM_ADV + "_" + orgi, orgi); + AdTypeRepository adRes = MainContext.getContext().getBean(AdTypeRepository.class); + CacheHelper.getSystemCacheBean().put(MainContext.UKEFU_SYSTEM_ADV + "_" + orgi, adRes.findByOrgi(orgi), orgi); + } + + public static Template getTemplate(String id) { + Template templet = null; + if ((templet = (Template) CacheHelper.getSystemCacheBean().getCacheObject(id, MainContext.SYSTEM_ORGI)) == null) { + TemplateRepository templateRes = MainContext.getContext().getBean(TemplateRepository.class); + templet = templateRes.findByIdAndOrgi(id, MainContext.SYSTEM_ORGI); + CacheHelper.getSystemCacheBean().put(id, templet, MainContext.SYSTEM_ORGI); + } + return templet; + } + + /** + * 按照权重获取广告 + * + * @param adpos + * @return + */ + @SuppressWarnings("unchecked") + public static AdType getPointAdv(String adpos, String orgi) { + List adTypeList = new ArrayList(); + List cacheAdTypeList = (List) CacheHelper.getSystemCacheBean().getCacheObject(MainContext.UKEFU_SYSTEM_ADV + "_" + orgi, orgi); + if (cacheAdTypeList == null) { + AdTypeRepository adRes = MainContext.getContext().getBean(AdTypeRepository.class); + cacheAdTypeList = adRes.findByOrgi(orgi); + CacheHelper.getSystemCacheBean().put(MainContext.UKEFU_SYSTEM_ADV + "_" + orgi, cacheAdTypeList, orgi); + } + List sysDicList = UKeFuDic.getInstance().getDic(MainContext.UKEFU_SYSTEM_ADPOS_DIC); + SysDic sysDic = null; + if (sysDicList != null) { + for (SysDic dic : sysDicList) { + if (dic.getCode().equals(adpos)) { + sysDic = dic; + break; + } + } + } + if (adTypeList != null && sysDic != null) { + for (AdType adType : cacheAdTypeList) { + if (adType.getAdpos().equals(sysDic.getId())) { + adTypeList.add(adType); + } + } + } + return weitht(adTypeList); + } + + private static Random random = new Random(); + + /** + * 按照权重,获取广告内容 + * + * @param adList + * @return + */ + private static AdType weitht(List adList) { + AdType adType = null; + int weight = 0; + if (adList != null && adList.size() > 0) { + for (AdType ad : adList) { + weight += ad.getWeight(); + } + int n = random.nextInt(weight), m = 0; + for (AdType ad : adList) { + if (m <= n && n < m + ad.getWeight()) { + adType = ad; + break; + } + m += ad.getWeight(); + } + } + return adType; + } + + /** + * 16进制字符串转换为字符串 + * + * @return + */ + public static String string2HexString(String strPart) { + StringBuffer hexString = new StringBuffer(); + for (int i = 0; i < strPart.length(); i++) { + int ch = (int) strPart.charAt(i); + String strHex = Integer.toHexString(ch); + hexString.append(strHex); + } + return hexString.toString(); + } + + /** + * @throws IOException + * @throws TemplateException + */ + @SuppressWarnings("deprecation") + public static String getTemplet(String templet, Map values) throws IOException, TemplateException { + StringWriter writer = new StringWriter(); + Configuration cfg = null; + freemarker.template.Template template = null; + String retValue = templet; + if (templet != null && templet.length() > 0 && templet.indexOf("$") >= 0) { + cfg = new Configuration(); + TempletLoader loader = new TempletLoader(templet); + cfg.setTemplateLoader(loader); + cfg.setDefaultEncoding("UTF-8"); + template = cfg.getTemplate(""); + template.process(values, writer); + retValue = writer.toString(); + } + return retValue; + } + + /** + * 发送邮件 + * + * @param email + * @param cc + * @param subject + * @param content + * @throws Exception + */ + public static void sendMail(String email, String cc, String subject, String content, List filenames) throws Exception { + SystemConfig config = MainUtils.getSystemConfig(); + if (config != null && config.isEnablemail() && config.getEmailid() != null) { + SystemMessage systemMessage = MainContext.getContext().getBean(SystemMessageRepository.class).findByIdAndOrgi(config.getEmailid(), config.getOrgi()); + MailSender sender = new MailSender(systemMessage.getSmtpserver(), systemMessage.getMailfrom(), systemMessage.getSmtpuser(), decryption(systemMessage.getSmtppassword()), systemMessage.getSeclev(), systemMessage.getSslport()); + if (email != null) { + sender.send(email, cc, subject, content, filenames); + } + } + } + + public static String encode(Object obj) { + Base64 base64 = new Base64(); + try { + return base64.encodeToString(MainUtils.toBytes(obj)); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + @SuppressWarnings("unchecked") + public static T decode(String str, Class clazz) { + Base64 base64 = new Base64(); + try { + return (T) MainUtils.toObject(base64.decode(str)); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public static String processContentEncode(String str) throws Exception { + return Base64.encodeBase64String(str.getBytes("UTF-8")).replaceAll("\\+", "-"); + } + + public static String processContentDecode(String str) throws Exception { + return new String(Base64.decodeBase64(str.replaceAll("-", "\\+").getBytes()), "UTF-8"); + } + + /** + * @param defaultFormatValue + * @param text + * @return + */ + public static String processParam(String defaultFormatValue, String text) { + String formatValue = "yyyy-MM-dd"; + if (text.matches("[ ]{0,}([Yy]{1,})[ ]{0,}[+-]{0,1}([\\d]{0,})")) { + formatValue = "yyyy"; + } else if (text.matches("[ ]{0,}([Mm]{1,})[ ]{0,}[+-]{0,1}([\\d]{0,})")) { + formatValue = "yyyy-MM"; + } + + return getDays(text, defaultFormatValue != null && defaultFormatValue.length() > 0 ? defaultFormatValue : formatValue); + } + + /*** + * 计算T+1 + * @param text + * @param format + * @return + */ + public static String getDays(String text, String format) { + String retDateFormat = text; + Pattern pattern = Pattern.compile("[ ]{0,}([TtMmYy]{1,})[ ]{0,}[+-]{0,1}([\\d]{0,})"); + Matcher matcher = pattern.matcher(text); + if (matcher.find() && matcher.groupCount() >= 1) { + try { + if (matcher.group(1).equalsIgnoreCase("T")) { + retDateFormat = formatDateValue(format, getDaysParam(text)); + } else if (matcher.group(1).equalsIgnoreCase("M")) { + retDateFormat = formatMonthValue(format, getDaysParam(text)); + } else if (matcher.group(1).equalsIgnoreCase("Y")) { + retDateFormat = String.valueOf((int) Double.parseDouble(String.valueOf(getDaysParam(text)))); + } + } catch (ParseException e) { + e.printStackTrace(); + } + } + return retDateFormat; + } + + /*** + * 计算T+1 + * @param text + * @return + */ + public static Object getDaysParam(String text) { + Map context = new HashMap(); + context.put("T", processDays()); + context.put("t", processDays()); + context.put("M", processMonth()); + context.put("m", processMonth()); + context.put("Y", processYear()); + context.put("y", processYear()); + + return AviatorEvaluator.execute(text, context); + } + + /** + * @param value + * @return + * @throws ParseException + * @throws Exception + */ + public static String formatDateValue(String format, Object value) throws ParseException { + if (value != null && value.toString().matches("[\\d.]{5,}")) { + value = new SimpleDateFormat(format).format(new Date((long) (Double.parseDouble(value.toString()) * 24 * 60 * 60 * 1000))); + } + return value != null ? value.toString() : "0"; + } + + /** + * @param value + * @return + * @throws ParseException + * @throws Exception + */ + public static String formatMonthValue(String formatValue, Object value) throws ParseException { + if (value != null && value.toString().matches("[\\d.]{3,}")) { + int months = (int) Double.parseDouble(String.valueOf(value)); + int year = 0; + int month = 0; + if (months % 12 == 0) { + year = months / 12 - 1; + month = 12; + } else { + year = months / 12; + month = months % 12; + } + if (month < 10) { + value = String.valueOf(year) + "0" + String.valueOf(month); + } else { + value = String.valueOf(year) + String.valueOf(month); + } + value = new SimpleDateFormat(formatValue).format(new SimpleDateFormat("yyyyMM").parse(String.valueOf(value))); + } + return value != null ? value.toString() : "0"; + } + + /** + * @return + */ + public static double processDays() { + return System.currentTimeMillis() * 1.0f / (1000 * 60 * 60 * 24); + } + + /** + * @return + */ + public static double processMonth() { + Calendar calendar = Calendar.getInstance(); + int month = calendar.get(Calendar.YEAR) * 12 + calendar.get(Calendar.MONTH) + 1; + return month; + } + + /** + * @return + */ + public static double processYear() { + return Calendar.getInstance().get(Calendar.YEAR); + } + + private static final ObjectMapper JSON = new ObjectMapper(); + + static { + JSON.setSerializationInclusion(Include.NON_NULL); + JSON.configure(SerializationFeature.INDENT_OUTPUT, Boolean.TRUE); + } + + public static String toJson(Object obj) { + try { + return JSON.writeValueAsString(obj); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + + return null; + } + + /** + * @param message + */ + public static AsrResult parseAsrResult(String id, String message, int speakms) { + AsrResult asrResult = null; + Pattern pattern = Pattern.compile("([\\d]{1,})[\\.]{1}([\\s\\S]*);"); + Matcher matcher = pattern.matcher(message); + if (matcher.find() && matcher.groupCount() == 2) { + asrResult = new AsrResult(id, matcher.group(2), matcher.group(1)); + if (asrResult.getMessage().endsWith("。")) { + asrResult.setMessage(asrResult.getMessage().substring(0, asrResult.getMessage().length() - 1)); + } + } + if (speakms > 0 && asrResult != null) { + asrResult.setSpeakms(speakms); + } + return asrResult; + } + + /** + * 发送短信 + * + * @param phone + * @param id + * @param tpId + * @param tplValuesMap + * @return + * @throws Exception + */ + public static boolean sendSms(String phone, String id, String tpId, Map tplValuesMap) throws Exception { + SystemConfig config = MainUtils.getSystemConfig(); + if (config != null) { + SystemMessage systemMessage = MainContext.getContext().getBean(SystemMessageRepository.class).findByIdAndOrgi(id, config.getOrgi()); + if (systemMessage == null) { + return false; + } + Template tp = MainUtils.getTemplate(tpId); + if (tp == null) { + return false; + } + String params = MainUtils.getTemplet(tp.getTemplettext(), tplValuesMap); + + SysDic sysDic = UKeFuDic.getInstance().getDicItem(systemMessage.getSmstype()); + //阿里大于 + if (sysDic != null && "dysms".equals(sysDic.getCode())) { + //设置超时时间-可自行调整 + System.setProperty("sun.net.client.defaultConnectTimeout", "10000"); + System.setProperty("sun.net.client.defaultReadTimeout", "10000"); + //初始化ascClient需要的几个参数 + final String product = "Dysmsapi";//短信API产品名称(短信产品名固定,无需修改) + final String domain = "dysmsapi.aliyuncs.com";//短信API产品域名(接口地址固定,无需修改) + //替换成你的AK + final String accessKeyId = systemMessage.getAppkey();//你的accessKeyId,参考本文档步骤2 + final String accessKeySecret = systemMessage.getAppsec();//你的accessKeySecret,参考本文档步骤2 + //初始化ascClient,暂时不支持多region(请勿修改) + IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, + accessKeySecret); + DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain); + IAcsClient acsClient = new DefaultAcsClient(profile); + //组装请求对象 + SendSmsRequest request = new SendSmsRequest(); + //使用post提交 + request.setMethod(MethodType.POST); + //必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式 + request.setPhoneNumbers(phone); + //必填:短信签名-可在短信控制台中找到 + request.setSignName(systemMessage.getSign()); + //必填:短信模板-可在短信控制台中找到 + request.setTemplateCode(systemMessage.getTpcode()); + //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为 + //友情提示:如果JSON中需要带换行符,请参照标准的JSON协议对换行符的要求,比如短信内容中包含\r\n的情况在JSON中需要表示成\\r\\n,否则会导致JSON在服务端解析失败 + request.setTemplateParam(params); + //可选-上行短信扩展码(扩展码字段控制在7位或以下,无特殊需求用户请忽略此字段) + //request.setSmsUpExtendCode("90997"); + //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者 + request.setOutId("yourOutId"); + //请求失败这里会抛ClientException异常 + SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request); + if (sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) { + return true; + } else if (!StringUtils.isBlank(sendSmsResponse.getMessage())) { + try { + throw new Exception("短信发送失败,原因:" + sendSmsResponse.getMessage()); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + } + return false; + } + + /** + * @param userid + * @param client + * @param session + * @param orgi + * @param ipaddr + * @param hostname + * @return + */ + public static WorkSession createWorkSession(String userid, String client, String session, String orgi, String ipaddr, String hostname, String admin, boolean first) { + WorkSession workSession = new WorkSession(); + workSession.setCreatetime(new Date()); + workSession.setBegintime(new Date()); + workSession.setAgent(userid); + workSession.setAgentno(userid); + workSession.setAgentno(userid); + if (!StringUtils.isBlank(admin) && admin.equalsIgnoreCase("true")) { + workSession.setAdmin(true); + } + + workSession.setFirsttime(first); + + workSession.setIpaddr(ipaddr); + workSession.setHostname(hostname); + workSession.setUserid(userid); + workSession.setClientid(client); + workSession.setSessionid(session); + workSession.setOrgi(orgi); + + workSession.setDatestr(MainUtils.simpleDateFormat.format(new Date())); + + return workSession; + } + + /** + * @param plan + * @return + */ + public static String convertCrond(JobTask plan) { + StringBuffer strb = new StringBuffer(); + if ("day".equals(plan.getRunCycle())) { + strb.append(plan.getRunBeginSecond()).append(" ").append(plan.getRunBeginMinute()).append(plan.getIsRepeat() && plan.getRepeatSpace() != null && plan.getRepeatSpace() < 60 ? "/" + plan.getRepeatSpace() : "").append(" ").append(plan.getRunBeginHour()).append(plan.getIsRepeat() && plan.getRepeatSpace() != null && plan.getRepeatSpace() > 60 ? "/" + plan.getRepeatSpace() / 60 : (plan.getRepeatJustTime() != null && plan.getRepeatJustTime() > 0 ? "-" + (plan.getRunBeginHour() + plan.getRepeatJustTime()) : "")).append(" ").append("*").append(plan.getRunSpace() != null && plan.getRunSpace() > 0 ? "/" + plan.getRunSpace() : "").append(" ").append(" * ?"); + } + if ("week".equals(plan.getRunCycle())) { + strb.append(plan.getRunBeginSecond()).append(" ").append(plan.getRunBeginMinute()).append(plan.getIsRepeat() && plan.getRepeatSpace() != null && plan.getRepeatSpace() < 60 ? "/" + plan.getRepeatSpace() : "").append(" ").append(plan.getRunBeginHour()).append(plan.getIsRepeat() && plan.getRepeatSpace() != null && plan.getRepeatSpace() > 60 ? "/" + plan.getRepeatSpace() / 60 : (plan.getRepeatJustTime() != null && plan.getRepeatJustTime() > 0 ? "-" + (plan.getRunBeginHour() + plan.getRepeatJustTime()) : "")).append(" ").append(plan.getRunDates() == null || plan.getRunDates().length == 0 ? "*" : "?").append(" * ").append(plan.getRunDates() == null || plan.getRunDates().length == 0 ? "?" : StringUtils.join(plan.getRunDates(), ",")).append(plan.getRunSpace() != null && plan.getRunSpace() > 0 ? "/" + plan.getRunSpace() : ""); + } + if ("month".equals(plan.getRunCycle())) { + strb.append(plan.getRunBeginSecond()).append(" ").append(plan.getRunBeginMinute()).append(plan.getIsRepeat() && plan.getRepeatSpace() != null && plan.getRepeatSpace() < 60 ? "/" + plan.getRepeatSpace() : "").append(" ").append(plan.getRunBeginHour()).append(plan.getIsRepeat() && plan.getRepeatSpace() != null && plan.getRepeatSpace() > 60 ? "/" + plan.getRepeatSpace() / 60 : (plan.getRepeatJustTime() != null && plan.getRepeatJustTime() > 0 ? "-" + (plan.getRunBeginHour() + plan.getRepeatJustTime()) : "")).append(" ").append(plan.getRunBeginDate()).append(" ").append(plan.getRunDates() == null || plan.getRunDates().length == 0 ? "*" : StringUtils.join(plan.getRunDates(), ",")).append(" ").append(" ?"); + } + return strb.toString(); + } + + public static Date updateTaskNextFireTime(JobDetail jobDetail) throws Exception { + Date nextFireDate = new Date(); + Date date = new Date(); + if (jobDetail != null && jobDetail.getCronexp() != null && jobDetail.getCronexp().length() > 0) { + try { + nextFireDate = (CronTools.getFinalFireTime(jobDetail.getCronexp(), jobDetail.getNextfiretime() != null ? jobDetail.getNextfiretime() : date)); + } catch (ParseException e) { + nextFireDate = new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 24); //一旦任务的 Cron表达式错误,将下次执行时间自动设置为一天后,避免出现任务永远无法终止的情况 + e.printStackTrace(); + } + } + return nextFireDate; + } + + /** + * @param dialNum + * @param distype + * @return + */ + public static String processSecField(String dialNum, String distype) { + StringBuilder strb = new StringBuilder(dialNum); + if (distype.equals("01")) { + if (strb.length() > 4) { + strb.replace(strb.length() / 2 - 2, strb.length() / 2 + 2, "****"); + } else { + strb.replace(0, strb.length(), "****"); + } + } else if (distype.equals("02")) { + if (strb.length() > 4) { + strb.replace(strb.length() - 4, strb.length(), "****"); + } else { + strb.replace(0, strb.length(), "****"); + } + } else if (distype.equals("03")) { + if (strb.length() > 4) { + strb.replace(0, 4, "****"); + } else { + strb.replace(0, strb.length(), "****"); + } + } else if (distype.equals("04")) { + int length = strb.length(); + strb.setLength(0); + for (int i = 0; i < length; i++) { + strb.append("*"); + } + } + return strb.toString(); + } +} diff --git a/contact-center/app/src/main/java/com/chatopera/cc/util/UKView.java b/contact-center/app/src/main/java/com/chatopera/cc/app/basic/Viewport.java similarity index 85% rename from contact-center/app/src/main/java/com/chatopera/cc/util/UKView.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/basic/Viewport.java index 3653a96a..b2ecdae3 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/util/UKView.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/basic/Viewport.java @@ -14,18 +14,18 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.util; +package com.chatopera.cc.app.basic; -public class UKView { +public class Viewport { private String page ; private String templet; - public UKView(String templet , String page){ + public Viewport(String templet , String page){ this.templet = templet ; this.page = page ; } - public UKView(String page){ + public Viewport(String page){ this.page = page ; } diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/util/aop/SyncDatabaseExt.java b/contact-center/app/src/main/java/com/chatopera/cc/app/basic/aop/SyncDatabaseExt.java similarity index 72% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/util/aop/SyncDatabaseExt.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/basic/aop/SyncDatabaseExt.java index b763177c..ac4152f8 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/util/aop/SyncDatabaseExt.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/basic/aop/SyncDatabaseExt.java @@ -14,14 +14,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.util.aop; +package com.chatopera.cc.app.basic.aop; import java.util.List; -import com.chatopera.cc.core.UKDataContext; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.util.UKeFuList; -import com.chatopera.cc.util.event.MultiUpdateEvent; -import com.chatopera.cc.webim.service.hibernate.BaseService; +import com.chatopera.cc.concurrent.multiupdate.MultiUpdateEvent; +import com.chatopera.cc.app.persistence.hibernate.BaseService; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; @@ -29,8 +30,7 @@ import org.aspectj.lang.annotation.Pointcut; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import com.chatopera.cc.util.UKTools; -import com.chatopera.cc.webim.web.model.ESBean; +import com.chatopera.cc.app.model.ESBean; @Aspect @Component @@ -62,10 +62,10 @@ public class SyncDatabaseExt { }else if(data instanceof List){ List dataList = (List)data ; for(Object dbData : dataList){ - UKTools.multiupdate(new MultiUpdateEvent(dbData , dbDataRes, UKDataContext.MultiUpdateType.SAVE.toString())); + MainUtils.multiupdate(new MultiUpdateEvent(dbData , dbDataRes, MainContext.MultiUpdateType.SAVE.toString())); } }else{ - UKTools.multiupdate(new MultiUpdateEvent(data, dbDataRes, UKDataContext.MultiUpdateType.SAVE.toString())); + MainUtils.multiupdate(new MultiUpdateEvent(data, dbDataRes, MainContext.MultiUpdateType.SAVE.toString())); } } } @@ -81,13 +81,13 @@ public class SyncDatabaseExt { if(data instanceof List){ List dataList = (List)data ; for(Object dbData : dataList){ - UKTools.multiupdate(new MultiUpdateEvent(dbData , dbDataRes, UKDataContext.MultiUpdateType.DELETE.toString())); + MainUtils.multiupdate(new MultiUpdateEvent(dbData , dbDataRes, MainContext.MultiUpdateType.DELETE.toString())); } }else{ if(data instanceof ESBean){ - UKTools.multiupdate(new MultiUpdateEvent(data, dbDataRes, UKDataContext.MultiUpdateType.DELETE.toString())); + MainUtils.multiupdate(new MultiUpdateEvent(data, dbDataRes, MainContext.MultiUpdateType.DELETE.toString())); }else{ - UKTools.multiupdate(new MultiUpdateEvent(data, dbDataRes, UKDataContext.MultiUpdateType.DELETE.toString())); + MainUtils.multiupdate(new MultiUpdateEvent(data, dbDataRes, MainContext.MultiUpdateType.DELETE.toString())); } } } diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/resource/ActivityResource.java b/contact-center/app/src/main/java/com/chatopera/cc/app/basic/resource/ActivityResource.java similarity index 71% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/service/resource/ActivityResource.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/basic/resource/ActivityResource.java index 5bdf9a17..780ba6ee 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/resource/ActivityResource.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/basic/resource/ActivityResource.java @@ -14,35 +14,35 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.service.resource; +package com.chatopera.cc.app.basic.resource; import java.util.Date; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; -import com.chatopera.cc.webim.web.model.JobDetail; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.model.JobDetail; +import com.chatopera.cc.app.basic.MainUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.data.domain.PageImpl; -import com.chatopera.cc.core.UKDataContext; -import com.chatopera.cc.util.UKTools; import com.chatopera.cc.util.es.SearchTools; import com.chatopera.cc.util.es.UKDataBean; -import com.chatopera.cc.webim.service.impl.BatchDataProcess; -import com.chatopera.cc.webim.service.impl.ESDataExchangeImpl; -import com.chatopera.cc.webim.service.repository.CallAgentRepository; -import com.chatopera.cc.webim.service.repository.UKefuCallOutFilterRepository; -import com.chatopera.cc.webim.service.repository.UKefuCallOutTaskRepository; -import com.chatopera.cc.webim.service.repository.FormFilterItemRepository; -import com.chatopera.cc.webim.service.repository.FormFilterRepository; -import com.chatopera.cc.webim.service.repository.JobDetailRepository; -import com.chatopera.cc.webim.service.repository.MetadataRepository; -import com.chatopera.cc.webim.web.model.CallAgent; -import com.chatopera.cc.webim.web.model.UKefuCallOutFilter; -import com.chatopera.cc.webim.web.model.UKefuCallOutTask; -import com.chatopera.cc.webim.web.model.FormFilter; -import com.chatopera.cc.webim.web.model.FormFilterItem; -import com.chatopera.cc.webim.web.model.MetadataTable; +import com.chatopera.cc.app.persistence.impl.BatchDataProcess; +import com.chatopera.cc.app.persistence.impl.ESDataExchangeImpl; +import com.chatopera.cc.app.persistence.repository.CallAgentRepository; +import com.chatopera.cc.app.persistence.repository.UKefuCallOutFilterRepository; +import com.chatopera.cc.app.persistence.repository.UKefuCallOutTaskRepository; +import com.chatopera.cc.app.persistence.repository.FormFilterItemRepository; +import com.chatopera.cc.app.persistence.repository.FormFilterRepository; +import com.chatopera.cc.app.persistence.repository.JobDetailRepository; +import com.chatopera.cc.app.persistence.repository.MetadataRepository; +import com.chatopera.cc.app.model.CallAgent; +import com.chatopera.cc.app.model.UKefuCallOutFilter; +import com.chatopera.cc.app.model.UKefuCallOutTask; +import com.chatopera.cc.app.model.FormFilter; +import com.chatopera.cc.app.model.FormFilterItem; +import com.chatopera.cc.app.model.MetadataTable; public class ActivityResource extends Resource{ @@ -76,13 +76,13 @@ public class ActivityResource extends Resource{ public ActivityResource(JobDetail jobDetail) { this.jobDetail = jobDetail ; - this.formFilterRes = UKDataContext.getContext().getBean(FormFilterRepository.class) ; - this.formFilterItemRes = UKDataContext.getContext().getBean(FormFilterItemRepository.class) ; - this.callOutTaskRes = UKDataContext.getContext().getBean(UKefuCallOutTaskRepository.class); - this.callOutFilterRes = UKDataContext.getContext().getBean(UKefuCallOutFilterRepository.class); - this.batchRes = UKDataContext.getContext().getBean(JobDetailRepository.class); - this.metadataRes = UKDataContext.getContext().getBean(MetadataRepository.class); - this.batchDataProcess = new BatchDataProcess(null , UKDataContext.getContext().getBean(ESDataExchangeImpl.class)) ; + this.formFilterRes = MainContext.getContext().getBean(FormFilterRepository.class) ; + this.formFilterItemRes = MainContext.getContext().getBean(FormFilterItemRepository.class) ; + this.callOutTaskRes = MainContext.getContext().getBean(UKefuCallOutTaskRepository.class); + this.callOutFilterRes = MainContext.getContext().getBean(UKefuCallOutFilterRepository.class); + this.batchRes = MainContext.getContext().getBean(JobDetailRepository.class); + this.metadataRes = MainContext.getContext().getBean(MetadataRepository.class); + this.batchDataProcess = new BatchDataProcess(null , MainContext.getContext().getBean(ESDataExchangeImpl.class)) ; } @Override @@ -91,7 +91,7 @@ public class ActivityResource extends Resource{ formFilter = formFilterRes.findByIdAndOrgi(jobDetail.getFilterid(), this.jobDetail.getOrgi()) ; List formFilterList = formFilterItemRes.findByOrgiAndFormfilterid(this.jobDetail.getOrgi(), jobDetail.getFilterid()) ; if(formFilter!=null && !StringUtils.isBlank(formFilter.getFiltertype())) { - if(formFilter.getFiltertype().equals(UKDataContext.FormFilterTypeEnum.BATCH.toString())) { + if(formFilter.getFiltertype().equals(MainContext.FormFilterTypeEnum.BATCH.toString())) { batch = batchRes.findByIdAndOrgi(formFilter.getBatid(), this.jobDetail.getOrgi()) ; if(batch!=null && !StringUtils.isBlank(batch.getActid())) { metadataTable = metadataRes.findByTablename(batch.getActid()) ; @@ -113,7 +113,7 @@ public class ActivityResource extends Resource{ dataList = SearchTools.dissearch(this.jobDetail.getOrgi(), formFilter, formFilterList , metadataTable ,(int) Math.ceil(this.jobDetail.getStartindex()/50000), 50000) ; } } - this.callAgentList = UKDataContext.getContext().getBean(CallAgentRepository.class).findByActidAndOrgi(this.jobDetail.getId() , this.jobDetail.getOrgi()) ; + this.callAgentList = MainContext.getContext().getBean(CallAgentRepository.class).findByActidAndOrgi(this.jobDetail.getId() , this.jobDetail.getOrgi()) ; /** * 生成 活动任务, 然后完成分配 , 同时还需要生成 筛选表单的筛选记录 , 在后台管理界面上可以看到 */ @@ -131,15 +131,15 @@ public class ActivityResource extends Resource{ } }else { task = new UKefuCallOutTask() ; - task.setName(this.jobDetail.getName() + "_" + UKTools.dateFormate.format(new Date())); + task.setName(this.jobDetail.getName() + "_" + MainUtils.dateFormate.format(new Date())); task.setBatid(formFilter.getBatid()); task.setOrgi(this.jobDetail.getOrgi()); if(this.isRecovery()) { - task.setExectype(UKDataContext.ActivityExecType.RECOVERY.toString()); + task.setExectype(MainContext.ActivityExecType.RECOVERY.toString()); }else { - task.setExectype(UKDataContext.ActivityExecType.DEFAULT.toString()); + task.setExectype(MainContext.ActivityExecType.DEFAULT.toString()); } task.setFilterid(formFilter.getId()); @@ -161,8 +161,8 @@ public class ActivityResource extends Resource{ formFilter.setExecnum(formFilter.getExecnum() + 1); - UKTools.copyProperties(task, filter); - filter.setName(this.formFilter.getName() + "_" + UKTools.dateFormate.format(new Date())); + MainUtils.copyProperties(task, filter); + filter.setName(this.formFilter.getName() + "_" + MainUtils.dateFormate.format(new Date())); filter.setExecnum(formFilter.getExecnum()); this.callOutFilterRes.save(filter) ; } @@ -246,17 +246,17 @@ public class ActivityResource extends Resource{ */ if(this.isRecovery()) { if(!StringUtils.isBlank(this.jobDetail.getExecto())) { - meta.getDataBean().getValues().put(UKDataContext.UKEFU_SYSTEM_DIS_AGENT, null) ; - meta.getDataBean().getValues().put(UKDataContext.UKEFU_SYSTEM_DIS_AI, null) ; -// meta.getDataBean().getValues().put(UKDataContext.UKEFU_SYSTEM_DIS_ORGAN, this.jobDetail.getExecto()) ; - meta.getDataBean().getValues().put(UKDataContext.UKEFU_SYSTEM_DIS_TIME, System.currentTimeMillis()) ; - meta.getDataBean().getValues().put("status", UKDataContext.NamesDisStatusType.DISORGAN.toString()) ; + meta.getDataBean().getValues().put(MainContext.UKEFU_SYSTEM_DIS_AGENT, null) ; + meta.getDataBean().getValues().put(MainContext.UKEFU_SYSTEM_DIS_AI, null) ; +// meta.getDataBean().getValues().put(MainContext.UKEFU_SYSTEM_DIS_ORGAN, this.jobDetail.getExecto()) ; + meta.getDataBean().getValues().put(MainContext.UKEFU_SYSTEM_DIS_TIME, System.currentTimeMillis()) ; + meta.getDataBean().getValues().put("status", MainContext.NamesDisStatusType.DISORGAN.toString()) ; }else { - meta.getDataBean().getValues().put(UKDataContext.UKEFU_SYSTEM_DIS_AI, null) ; - meta.getDataBean().getValues().put(UKDataContext.UKEFU_SYSTEM_DIS_AGENT, null) ; - meta.getDataBean().getValues().put(UKDataContext.UKEFU_SYSTEM_DIS_ORGAN, null) ; - meta.getDataBean().getValues().put(UKDataContext.UKEFU_SYSTEM_DIS_TIME, null) ; - meta.getDataBean().getValues().put("status", UKDataContext.NamesDisStatusType.NOT.toString()) ; + meta.getDataBean().getValues().put(MainContext.UKEFU_SYSTEM_DIS_AI, null) ; + meta.getDataBean().getValues().put(MainContext.UKEFU_SYSTEM_DIS_AGENT, null) ; + meta.getDataBean().getValues().put(MainContext.UKEFU_SYSTEM_DIS_ORGAN, null) ; + meta.getDataBean().getValues().put(MainContext.UKEFU_SYSTEM_DIS_TIME, null) ; + meta.getDataBean().getValues().put("status", MainContext.NamesDisStatusType.NOT.toString()) ; } }else { if(this.current!=null && meta!=null && meta.getDataBean()!=null) { @@ -264,7 +264,7 @@ public class ActivityResource extends Resource{ /** * */ - meta.getDataBean().getValues().put(UKDataContext.UKEFU_SYSTEM_DIS_TIME, System.currentTimeMillis()) ; + meta.getDataBean().getValues().put(MainContext.UKEFU_SYSTEM_DIS_TIME, System.currentTimeMillis()) ; meta.getDataBean().getValues().put("actid", this.jobDetail.getId()) ; meta.getDataBean().getValues().put("metaid", this.metadataTable.getTablename()) ; @@ -287,18 +287,18 @@ public class ActivityResource extends Resource{ */ if("agent".equals(this.current.getDistype())) { - meta.getDataBean().getValues().put("status", UKDataContext.NamesDisStatusType.DISAGENT.toString()) ; - meta.getDataBean().getValues().put(UKDataContext.UKEFU_SYSTEM_DIS_AGENT, this.current.getDistarget()) ; - meta.getDataBean().getValues().put(UKDataContext.UKEFU_SYSTEM_DIS_ORGAN, this.current.getOrgan()) ; + meta.getDataBean().getValues().put("status", MainContext.NamesDisStatusType.DISAGENT.toString()) ; + meta.getDataBean().getValues().put(MainContext.UKEFU_SYSTEM_DIS_AGENT, this.current.getDistarget()) ; + meta.getDataBean().getValues().put(MainContext.UKEFU_SYSTEM_DIS_ORGAN, this.current.getOrgan()) ; this.assignInt.incrementAndGet() ; }else if("skill".equals(this.current.getDistype())) { - meta.getDataBean().getValues().put("status", UKDataContext.NamesDisStatusType.DISORGAN.toString()) ; - meta.getDataBean().getValues().put(UKDataContext.UKEFU_SYSTEM_DIS_ORGAN, this.current.getDistarget()) ; + meta.getDataBean().getValues().put("status", MainContext.NamesDisStatusType.DISORGAN.toString()) ; + meta.getDataBean().getValues().put(MainContext.UKEFU_SYSTEM_DIS_ORGAN, this.current.getDistarget()) ; this.assignorganInt.incrementAndGet() ; }else if("ai".equals(this.current.getDistype())) { - meta.getDataBean().getValues().put("status", UKDataContext.NamesDisStatusType.DISAI.toString()) ; - meta.getDataBean().getValues().put(UKDataContext.UKEFU_SYSTEM_DIS_AI, this.current.getDistarget()) ; - meta.getDataBean().getValues().put(UKDataContext.UKEFU_SYSTEM_DIS_ORGAN, this.current.getOrgan()) ; + meta.getDataBean().getValues().put("status", MainContext.NamesDisStatusType.DISAI.toString()) ; + meta.getDataBean().getValues().put(MainContext.UKEFU_SYSTEM_DIS_AI, this.current.getDistarget()) ; + meta.getDataBean().getValues().put(MainContext.UKEFU_SYSTEM_DIS_ORGAN, this.current.getOrgan()) ; this.assignAiInt.incrementAndGet() ; } } diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/resource/BatchResource.java b/contact-center/app/src/main/java/com/chatopera/cc/app/basic/resource/BatchResource.java similarity index 69% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/service/resource/BatchResource.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/basic/resource/BatchResource.java index 5d51cc0f..5106f4ed 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/resource/BatchResource.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/basic/resource/BatchResource.java @@ -14,27 +14,27 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.service.resource; +package com.chatopera.cc.app.basic.resource; import java.io.File; import java.net.URL; import java.util.Date; import java.util.HashMap; -import com.chatopera.cc.webim.service.impl.BatchDataProcess; -import com.chatopera.cc.webim.web.model.JobDetail; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.persistence.impl.BatchDataProcess; +import com.chatopera.cc.app.model.JobDetail; +import com.chatopera.cc.app.basic.MainUtils; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; -import com.chatopera.cc.core.UKDataContext; -import com.chatopera.cc.util.UKTools; -import com.chatopera.cc.util.task.DSData; -import com.chatopera.cc.util.task.DSDataEvent; -import com.chatopera.cc.util.task.ExcelImportProecess; -import com.chatopera.cc.webim.service.impl.ESDataExchangeImpl; -import com.chatopera.cc.webim.service.repository.MetadataRepository; -import com.chatopera.cc.webim.service.repository.ReporterRepository; -import com.chatopera.cc.webim.web.model.MetadataTable; +import com.chatopera.cc.concurrent.dsdata.DSData; +import com.chatopera.cc.concurrent.dsdata.DSDataEvent; +import com.chatopera.cc.concurrent.dsdata.ExcelImportProecess; +import com.chatopera.cc.app.persistence.impl.ESDataExchangeImpl; +import com.chatopera.cc.app.persistence.repository.MetadataRepository; +import com.chatopera.cc.app.persistence.repository.ReporterRepository; +import com.chatopera.cc.app.model.MetadataTable; public class BatchResource extends Resource{ @@ -48,9 +48,9 @@ public class BatchResource extends Resource{ public BatchResource(JobDetail jobDetail) { this.jobDetail = jobDetail ; - this.metadataRes = UKDataContext.getContext().getBean(MetadataRepository.class); - this.reporterRes = UKDataContext.getContext().getBean(ReporterRepository.class); - this.esDataExchange = UKDataContext.getContext().getBean(ESDataExchangeImpl.class); + this.metadataRes = MainContext.getContext().getBean(MetadataRepository.class); + this.reporterRes = MainContext.getContext().getBean(ReporterRepository.class); + this.esDataExchange = MainContext.getContext().getBean(ESDataExchangeImpl.class); } @Override @@ -59,18 +59,18 @@ public class BatchResource extends Resource{ metadataTable = metadataRes.findByTablename(jobDetail.getActid()) ; } DSDataEvent event = new DSDataEvent(); - String path = UKDataContext.getContext().getEnvironment().getProperty("web.upload-path") ; + String path = MainContext.getContext().getEnvironment().getProperty("web.upload-path") ; File tempFile = null ; if(metadataTable!=null && !StringUtils.isBlank(this.jobDetail.getBatchtype()) && this.jobDetail.getBatchtype().equals("plan")) { if(!StringUtils.isBlank(this.jobDetail.getImptype())) { if(this.jobDetail.getImptype().equals("local")) { - tempFile = new File(UKTools.getTemplet(this.jobDetail.getImpurl(), new HashMap())); + tempFile = new File(MainUtils.getTemplet(this.jobDetail.getImpurl(), new HashMap())); }else if(this.jobDetail.getImptype().equals("remote")){ - FileUtils.copyURLToFile(new URL(UKTools.getTemplet(this.jobDetail.getImpurl(), new HashMap())), tempFile = File.createTempFile("UKeFu-CallOut-Temp", ".xls")); + FileUtils.copyURLToFile(new URL(MainUtils.getTemplet(this.jobDetail.getImpurl(), new HashMap())), tempFile = File.createTempFile("UKeFu-CallOut-Temp", ".xls")); } } if(tempFile.exists()) { - String fileName = "callout/batch/"+UKTools.getUUID() + tempFile.getName().substring(tempFile.getName().lastIndexOf(".")) ; + String fileName = "callout/batch/"+ MainUtils.getUUID() + tempFile.getName().substring(tempFile.getName().lastIndexOf(".")) ; File excelFile = new File(path , fileName) ; if(!excelFile.getParentFile().exists()){ excelFile.getParentFile().mkdirs() ; @@ -91,7 +91,7 @@ public class BatchResource extends Resource{ event.getDSData().getReport().setOrgi(this.jobDetail.getOrgi()); event.getDSData().getReport().setDataid(this.jobDetail.getId()); - event.getDSData().getReport().setTitle(this.jobDetail.getName() + "_" + UKTools.dateFormate.format(new Date())); + event.getDSData().getReport().setTitle(this.jobDetail.getName() + "_" + MainUtils.dateFormate.format(new Date())); }else { event.getDSData().getReport().setError(true); if(tempFile!=null) { diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/resource/OutputTextFormat.java b/contact-center/app/src/main/java/com/chatopera/cc/app/basic/resource/OutputTextFormat.java similarity index 91% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/service/resource/OutputTextFormat.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/basic/resource/OutputTextFormat.java index b25ccacc..dbe62de5 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/resource/OutputTextFormat.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/basic/resource/OutputTextFormat.java @@ -14,13 +14,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.service.resource; +package com.chatopera.cc.app.basic.resource; import java.util.HashMap; import java.util.Map; import com.chatopera.cc.util.es.UKDataBean; -import com.chatopera.cc.webim.web.model.JobDetail; +import com.chatopera.cc.app.model.JobDetail; public class OutputTextFormat { private String id ; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/resource/Resource.java b/contact-center/app/src/main/java/com/chatopera/cc/app/basic/resource/Resource.java similarity index 88% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/service/resource/Resource.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/basic/resource/Resource.java index bf357826..6ad549a7 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/resource/Resource.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/basic/resource/Resource.java @@ -14,13 +14,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.service.resource; +package com.chatopera.cc.app.basic.resource; import java.lang.reflect.InvocationTargetException; import java.util.logging.Logger; -import com.chatopera.cc.webim.web.model.JobDetail; -import com.chatopera.cc.core.UKDataContext; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.model.JobDetail; /** * @author jaddy0302 Rivulet Resource.java 2010-3-6 @@ -90,7 +90,7 @@ public abstract class Resource { public static Resource getResource(JobDetail job) throws Exception{ return job != null - && UKDataContext.getResource(job.getTasktype()) != null ? (Resource) UKDataContext + && MainContext.getResource(job.getTasktype()) != null ? (Resource) MainContext .getResource(job.getTasktype()).getConstructor( new Class[] { JobDetail.class }).newInstance( new Object[] { job }) diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/cache/CacheBean.java b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/CacheBean.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/service/cache/CacheBean.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/cache/CacheBean.java index dd8a1b76..ba998af9 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/cache/CacheBean.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/CacheBean.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.service.cache; +package com.chatopera.cc.app.cache; import java.util.Collection; import java.util.concurrent.locks.Lock; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/cache/CacheHelper.java b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/CacheHelper.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/service/cache/CacheHelper.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/cache/CacheHelper.java index df1a2869..b3337091 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/cache/CacheHelper.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/CacheHelper.java @@ -14,9 +14,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.service.cache; +package com.chatopera.cc.app.cache; -import com.chatopera.cc.webim.service.cache.hazelcast.HazlcastCacheHelper; +import com.chatopera.cc.app.cache.hazelcast.HazlcastCacheHelper; public class CacheHelper { private static CacheHelper instance = new CacheHelper(); diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/cache/CacheInstance.java b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/CacheInstance.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/service/cache/CacheInstance.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/cache/CacheInstance.java index 7de1bbc2..161295ee 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/cache/CacheInstance.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/CacheInstance.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.service.cache; +package com.chatopera.cc.app.cache; public interface CacheInstance { diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/HazlcastCacheHelper.java b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/HazlcastCacheHelper.java new file mode 100644 index 00000000..691660e4 --- /dev/null +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/HazlcastCacheHelper.java @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2017 优客服-多渠道客服系统 + * Modifications copyright (C) 2018 Chatopera Inc, + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.chatopera.cc.app.cache.hazelcast; + +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.cache.CacheBean; +import com.chatopera.cc.app.cache.CacheInstance; +import com.chatopera.cc.app.cache.hazelcast.impl.AgentStatusCache; +import com.chatopera.cc.app.cache.hazelcast.impl.AgentUserCache; +import com.chatopera.cc.app.cache.hazelcast.impl.ApiUserCache; +import com.chatopera.cc.app.cache.hazelcast.impl.CallCenterCache; +import com.chatopera.cc.app.cache.hazelcast.impl.JobCache; +import com.chatopera.cc.app.cache.hazelcast.impl.MultiCache; +import com.chatopera.cc.app.cache.hazelcast.impl.OnlineCache; +import com.chatopera.cc.app.cache.hazelcast.impl.SystemCache; +/** + * Hazlcast缓存处理实例类 + * @author admin + * + */ +public class HazlcastCacheHelper implements CacheInstance { + /** + * 服务类型枚举 + * @author admin + * + */ + public enum CacheServiceEnum{ + HAZLCAST_CLUSTER_AGENT_USER_CACHE, HAZLCAST_CLUSTER_AGENT_STATUS_CACHE, HAZLCAST_CLUSTER_QUENE_USER_CACHE,HAZLCAST_ONLINE_CACHE , HAZLCAST_CULUSTER_SYSTEM , HAZLCAST_IMR_CACHE , API_USER_CACHE , CALLCENTER_CURRENT_CALL ,CALLCENTER_AGENT,JOB_CACHE,HAZLCAST_CALLOUT_CACHE; + public String toString(){ + return super.toString().toLowerCase(); + } + } + + @Override + public CacheBean getAgentStatusCacheBean() { + // TODO Auto-generated method stub + return MainContext.getContext().getBean(AgentStatusCache.class).getCacheInstance(CacheServiceEnum.HAZLCAST_CLUSTER_AGENT_STATUS_CACHE.toString()) ; + } + @Override + public CacheBean getAgentUserCacheBean() { + // TODO Auto-generated method stub + return MainContext.getContext().getBean(AgentUserCache.class).getCacheInstance(CacheServiceEnum.HAZLCAST_CLUSTER_QUENE_USER_CACHE.toString()) ; + } + @Override + public CacheBean getOnlineCacheBean() { + return MainContext.getContext().getBean(OnlineCache.class).getCacheInstance(CacheServiceEnum.HAZLCAST_ONLINE_CACHE.toString()) ; + } + @Override + public CacheBean getSystemCacheBean() { + return MainContext.getContext().getBean(SystemCache.class).getCacheInstance(CacheServiceEnum.HAZLCAST_CULUSTER_SYSTEM.toString()) ; + } + @Override + public CacheBean getIMRCacheBean() { + return MainContext.getContext().getBean(MultiCache.class).getCacheInstance(CacheServiceEnum.HAZLCAST_IMR_CACHE.toString()) ; + } + @Override + public CacheBean getCallCenterCacheBean() { + return MainContext.getContext().getBean(CallCenterCache.class).getCacheInstance(CacheServiceEnum.CALLCENTER_CURRENT_CALL.toString()) ; + } + @Override + public CacheBean getCallCenterAgentCacheBean() { + return MainContext.getContext().getBean(CallCenterCache.class).getCacheInstance(CacheServiceEnum.CALLCENTER_AGENT.toString()) ; + } + @Override + public CacheBean getApiUserCacheBean() { + return MainContext.getContext().getBean(ApiUserCache.class).getCacheInstance(CacheServiceEnum.API_USER_CACHE.toString()) ; + } + @Override + public CacheBean getJobCacheBean() { + return MainContext.getContext().getBean(JobCache.class).getCacheInstance(CacheServiceEnum.JOB_CACHE.toString()) ; + } + @Override + public CacheBean getCallOutCacheBean() { + // TODO Auto-generated method stub + return MainContext.getContext().getBean(JobCache.class).getCacheInstance(CacheServiceEnum.HAZLCAST_CALLOUT_CACHE.toString()) ; + } +} diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/cache/hazelcast/impl/AgentStatusCache.java b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/AgentStatusCache.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/service/cache/hazelcast/impl/AgentStatusCache.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/AgentStatusCache.java index d1455c80..afc643ea 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/cache/hazelcast/impl/AgentStatusCache.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/AgentStatusCache.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.service.cache.hazelcast.impl; +package com.chatopera.cc.app.cache.hazelcast.impl; import java.util.Collection; import java.util.concurrent.locks.Lock; @@ -24,7 +24,7 @@ import org.springframework.stereotype.Service; import com.hazelcast.com.eclipsesource.json.JsonObject; import com.hazelcast.core.HazelcastInstance; -import com.chatopera.cc.webim.service.cache.CacheBean; +import com.chatopera.cc.app.cache.CacheBean; @Service("agentstatus_cache") public class AgentStatusCache implements CacheBean{ diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/cache/hazelcast/impl/AgentUserCache.java b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/AgentUserCache.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/service/cache/hazelcast/impl/AgentUserCache.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/AgentUserCache.java index 4b5a7206..f03c5989 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/cache/hazelcast/impl/AgentUserCache.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/AgentUserCache.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.service.cache.hazelcast.impl; +package com.chatopera.cc.app.cache.hazelcast.impl; import java.util.Collection; import java.util.concurrent.locks.Lock; @@ -24,7 +24,7 @@ import org.springframework.stereotype.Service; import com.hazelcast.com.eclipsesource.json.JsonObject; import com.hazelcast.core.HazelcastInstance; -import com.chatopera.cc.webim.service.cache.CacheBean; +import com.chatopera.cc.app.cache.CacheBean; @Service("agentuser_cache") public class AgentUserCache implements CacheBean{ diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/cache/hazelcast/impl/ApiUserCache.java b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/ApiUserCache.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/service/cache/hazelcast/impl/ApiUserCache.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/ApiUserCache.java index 6ec0458f..8d9f74fb 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/cache/hazelcast/impl/ApiUserCache.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/ApiUserCache.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.service.cache.hazelcast.impl; +package com.chatopera.cc.app.cache.hazelcast.impl; import java.util.Collection; import java.util.concurrent.locks.Lock; @@ -24,7 +24,7 @@ import org.springframework.stereotype.Service; import com.hazelcast.com.eclipsesource.json.JsonObject; import com.hazelcast.core.HazelcastInstance; -import com.chatopera.cc.webim.service.cache.CacheBean; +import com.chatopera.cc.app.cache.CacheBean; @Service("api_user_cache") public class ApiUserCache implements CacheBean{ diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/cache/hazelcast/impl/CallCenterCache.java b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/CallCenterCache.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/service/cache/hazelcast/impl/CallCenterCache.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/CallCenterCache.java index 91916785..e01a1ea6 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/cache/hazelcast/impl/CallCenterCache.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/CallCenterCache.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.service.cache.hazelcast.impl; +package com.chatopera.cc.app.cache.hazelcast.impl; import java.util.Collection; import java.util.concurrent.locks.Lock; @@ -24,7 +24,7 @@ import org.springframework.stereotype.Service; import com.hazelcast.com.eclipsesource.json.JsonObject; import com.hazelcast.core.HazelcastInstance; -import com.chatopera.cc.webim.service.cache.CacheBean; +import com.chatopera.cc.app.cache.CacheBean; @Service("callcenter_current_call") public class CallCenterCache implements CacheBean{ diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/cache/hazelcast/impl/JobCache.java b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/JobCache.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/service/cache/hazelcast/impl/JobCache.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/JobCache.java index 7e97067a..bb39934c 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/cache/hazelcast/impl/JobCache.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/JobCache.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.service.cache.hazelcast.impl; +package com.chatopera.cc.app.cache.hazelcast.impl; import java.util.Collection; import java.util.concurrent.locks.Lock; @@ -24,7 +24,7 @@ import org.springframework.stereotype.Service; import com.hazelcast.com.eclipsesource.json.JsonObject; import com.hazelcast.core.HazelcastInstance; -import com.chatopera.cc.webim.service.cache.CacheBean; +import com.chatopera.cc.app.cache.CacheBean; @Service("job_cache") public class JobCache implements CacheBean{ diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/cache/hazelcast/impl/MultiCache.java b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/MultiCache.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/service/cache/hazelcast/impl/MultiCache.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/MultiCache.java index 86f97a72..00cca20f 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/cache/hazelcast/impl/MultiCache.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/MultiCache.java @@ -14,12 +14,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.service.cache.hazelcast.impl; +package com.chatopera.cc.app.cache.hazelcast.impl; import java.util.Collection; import java.util.concurrent.locks.Lock; -import com.chatopera.cc.webim.service.cache.CacheBean; +import com.chatopera.cc.app.cache.CacheBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/cache/hazelcast/impl/OnlineCache.java b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/OnlineCache.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/service/cache/hazelcast/impl/OnlineCache.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/OnlineCache.java index 8bfe68c1..157b9d83 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/cache/hazelcast/impl/OnlineCache.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/OnlineCache.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.service.cache.hazelcast.impl; +package com.chatopera.cc.app.cache.hazelcast.impl; import java.util.Collection; import java.util.concurrent.locks.Lock; @@ -24,7 +24,7 @@ import org.springframework.stereotype.Service; import com.hazelcast.com.eclipsesource.json.JsonObject; import com.hazelcast.core.HazelcastInstance; -import com.chatopera.cc.webim.service.cache.CacheBean; +import com.chatopera.cc.app.cache.CacheBean; @Service("online_cache") public class OnlineCache implements CacheBean{ diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/cache/hazelcast/impl/SystemCache.java b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/SystemCache.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/service/cache/hazelcast/impl/SystemCache.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/SystemCache.java index c0a1d342..80492759 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/service/cache/hazelcast/impl/SystemCache.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/cache/hazelcast/impl/SystemCache.java @@ -14,12 +14,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.service.cache.hazelcast.impl; +package com.chatopera.cc.app.cache.hazelcast.impl; import java.util.Collection; import java.util.concurrent.locks.Lock; -import com.chatopera.cc.webim.service.cache.CacheBean; +import com.chatopera.cc.app.cache.CacheBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/ApiConfigure.java b/contact-center/app/src/main/java/com/chatopera/cc/app/config/ApiConfigure.java similarity index 94% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/ApiConfigure.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/config/ApiConfigure.java index c7fd4f1a..71f37aaa 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/ApiConfigure.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/config/ApiConfigure.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.config.web; +package com.chatopera.cc.app.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -37,7 +37,7 @@ public class ApiConfigure { .groupName("CSKefu") .apiInfo(apiInfo()) .select() - .apis(RequestHandlerSelectors.basePackage("com.chatopera.cc.webim.web.handler.api.rest")) + .apis(RequestHandlerSelectors.basePackage("com.chatopera.cc.app.handler.api.rest")) .paths(PathSelectors.any()) .build(); } diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/ApiRequestMatchingFilter.java b/contact-center/app/src/main/java/com/chatopera/cc/app/config/ApiRequestMatchingFilter.java similarity index 90% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/ApiRequestMatchingFilter.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/config/ApiRequestMatchingFilter.java index b0660f2e..dee5f14d 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/ApiRequestMatchingFilter.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/config/ApiRequestMatchingFilter.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.config.web; +package com.chatopera.cc.app.config; import java.io.IOException; @@ -27,12 +27,12 @@ import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import com.chatopera.cc.webim.service.cache.CacheHelper; +import com.chatopera.cc.app.cache.CacheHelper; import org.apache.commons.lang.StringUtils; import org.springframework.http.HttpStatus; import org.springframework.security.web.util.matcher.RequestMatcher; -import com.chatopera.cc.core.UKDataContext; +import com.chatopera.cc.app.basic.MainContext; public class ApiRequestMatchingFilter implements Filter { private RequestMatcher[] ignoredRequests; @@ -66,7 +66,7 @@ public class ApiRequestMatchingFilter implements Filter { if(StringUtils.isBlank(authorization)){ authorization = request.getParameter("authorization") ; } - if(!StringUtils.isBlank(authorization) && CacheHelper.getApiUserCacheBean().getCacheObject(authorization, UKDataContext.SYSTEM_ORGI) != null){ + if(!StringUtils.isBlank(authorization) && CacheHelper.getApiUserCacheBean().getCacheObject(authorization, MainContext.SYSTEM_ORGI) != null){ chain.doFilter(req,resp); }else{ response.sendRedirect("/tokens/error"); diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/ApplicationStartupListener.java b/contact-center/app/src/main/java/com/chatopera/cc/app/config/ApplicationStartupListener.java similarity index 86% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/ApplicationStartupListener.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/config/ApplicationStartupListener.java index d121b7b1..c8ae6a3b 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/ApplicationStartupListener.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/config/ApplicationStartupListener.java @@ -14,11 +14,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.config.web; +package com.chatopera.cc.app.config; -import com.chatopera.cc.core.UKDataContext; -import com.chatopera.cc.webim.web.model.Favorites; -import com.chatopera.cc.webim.web.model.WorkOrders; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.model.Favorites; +import com.chatopera.cc.app.model.WorkOrders; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextRefreshedEvent; @@ -45,6 +45,6 @@ public class ApplicationStartupListener implements ApplicationListener chatbot() { + Executor executor = Executors.newCachedThreadPool(); + ChatbotEventFactory factory = new ChatbotEventFactory(); + Disruptor disruptor = new Disruptor(factory, 1024, executor, ProducerType.SINGLE , new SleepingWaitStrategy()); + disruptor.handleEventsWith(new ChatbotEventHandler()); + disruptor.setDefaultExceptionHandler(new ChatbotDisruptorExceptionHandler()); + disruptor.start(); + return disruptor; + } } diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/DruidConfiguration.java b/contact-center/app/src/main/java/com/chatopera/cc/app/config/DruidConfiguration.java similarity index 96% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/DruidConfiguration.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/config/DruidConfiguration.java index d5edf0b4..cbe4eb0e 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/DruidConfiguration.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/config/DruidConfiguration.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.config.web; +package com.chatopera.cc.app.config; import javax.sql.DataSource; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/ExecutorConfig.java b/contact-center/app/src/main/java/com/chatopera/cc/app/config/ExecutorConfig.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/ExecutorConfig.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/config/ExecutorConfig.java index 4ab88883..a6d5e499 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/ExecutorConfig.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/config/ExecutorConfig.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.config.web; +package com.chatopera.cc.app.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -48,7 +48,7 @@ public class ExecutorConfig { // 线程池维护线程所允许的空闲时间 poolTaskExecutor.setKeepAliveSeconds(30000); poolTaskExecutor.setWaitForTasksToCompleteOnShutdown(true); - poolTaskExecutor.setThreadNamePrefix("CSExecutor-webim-"); + poolTaskExecutor.setThreadNamePrefix("CSExecutor-app-"); return poolTaskExecutor; } diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/IMServerConfiguration.java b/contact-center/app/src/main/java/com/chatopera/cc/app/config/IMServerConfiguration.java similarity index 88% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/IMServerConfiguration.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/config/IMServerConfiguration.java index 08c1aae3..9f0ea440 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/IMServerConfiguration.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/config/IMServerConfiguration.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.config.web; +package com.chatopera.cc.app.config; import java.io.File; import java.io.FileInputStream; @@ -25,6 +25,7 @@ import java.util.Properties; import javax.annotation.PreDestroy; +import com.chatopera.cc.app.basic.MainContext; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; @@ -34,9 +35,8 @@ import com.corundumstudio.socketio.Configuration; import com.corundumstudio.socketio.HandshakeData; import com.corundumstudio.socketio.SocketIOServer; import com.corundumstudio.socketio.annotation.SpringAnnotationScanner; -import com.chatopera.cc.core.UKDataContext; -import com.chatopera.cc.util.UKTools; -import com.chatopera.cc.util.exception.UCKeFuExceptionListener; +import com.chatopera.cc.app.basic.MainUtils; +import com.chatopera.cc.exception.UCKeFuExceptionListener; @org.springframework.context.annotation.Configuration public class IMServerConfiguration @@ -61,10 +61,10 @@ public class IMServerConfiguration @Bean(name="webimport") public Integer getWebIMPort() { if(sslPort != null){ - UKDataContext.setWebIMPort(sslPort); + MainContext.setWebIMPort(sslPort); return sslPort; } else { - UKDataContext.setWebIMPort(port); + MainContext.setWebIMPort(port); return port; } } @@ -88,7 +88,7 @@ public class IMServerConfiguration sslProperties.load(in); in.close(); if(!StringUtils.isBlank(sslProperties.getProperty("key-store")) && !StringUtils.isBlank(sslProperties.getProperty("key-store-password"))){ - config.setKeyStorePassword(UKTools.decryption(sslProperties.getProperty("key-store-password"))); + config.setKeyStorePassword(MainUtils.decryption(sslProperties.getProperty("key-store-password"))); InputStream stream = new FileInputStream(new File(path , "ssl/"+sslProperties.getProperty("key-store"))); config.setKeyStore(stream); } diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/RedisConfigure.java b/contact-center/app/src/main/java/com/chatopera/cc/app/config/RedisConfigure.java similarity index 95% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/RedisConfigure.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/config/RedisConfigure.java index 3aa8af70..4539c90c 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/RedisConfigure.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/config/RedisConfigure.java @@ -13,10 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.config.web; +package com.chatopera.cc.app.config; import com.chatopera.cc.util.Constants; -import com.chatopera.cc.webim.service.task.CallOutWireTask; +import com.chatopera.cc.app.schedule.CallOutWireTask; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/StartedEventListener.java b/contact-center/app/src/main/java/com/chatopera/cc/app/config/StartedEventListener.java similarity index 66% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/StartedEventListener.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/config/StartedEventListener.java index 5b2b8329..9521c88d 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/StartedEventListener.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/config/StartedEventListener.java @@ -14,30 +14,30 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.config.web; +package com.chatopera.cc.app.config; import java.util.ArrayList; import java.util.Date; import java.util.List; -import com.chatopera.cc.webim.service.cache.CacheHelper; -import com.chatopera.cc.webim.service.repository.GenerationRepository; -import com.chatopera.cc.webim.service.repository.SysDicRepository; -import com.chatopera.cc.webim.service.repository.SystemConfigRepository; -import com.chatopera.cc.webim.service.repository.TablePropertiesRepository; -import com.chatopera.cc.webim.web.model.Generation; -import com.chatopera.cc.webim.web.model.SysDic; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.repository.GenerationRepository; +import com.chatopera.cc.app.persistence.repository.SysDicRepository; +import com.chatopera.cc.app.persistence.repository.SystemConfigRepository; +import com.chatopera.cc.app.persistence.repository.TablePropertiesRepository; +import com.chatopera.cc.app.model.Generation; +import com.chatopera.cc.app.model.SysDic; +import com.chatopera.cc.app.basic.MainUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.stereotype.Component; -import com.chatopera.cc.core.UKDataContext; -import com.chatopera.cc.util.UKTools; -import com.chatopera.cc.webim.service.repository.BlackListRepository; -import com.chatopera.cc.webim.web.model.BlackEntity; -import com.chatopera.cc.webim.web.model.SystemConfig; +import com.chatopera.cc.app.persistence.repository.BlackListRepository; +import com.chatopera.cc.app.model.BlackEntity; +import com.chatopera.cc.app.model.SystemConfig; @Component public class StartedEventListener implements ApplicationListener { @@ -50,8 +50,8 @@ public class StartedEventListener implements ApplicationListener blackList = blackListRes.findByOrgi(UKDataContext.SYSTEM_ORGI) ; + List blackList = blackListRes.findByOrgi(MainContext.SYSTEM_ORGI) ; for(BlackEntity black : blackList){ if(!StringUtils.isBlank(black.getUserid())) { if(black.getEndtime()==null || black.getEndtime().after(new Date())){ @@ -81,19 +81,19 @@ public class StartedEventListener implements ApplicationListener generationList = generationRes.findAll() ; for(Generation generation : generationList){ - CacheHelper.getSystemCacheBean().setAtomicLong(UKDataContext.ModelType.WORKORDERS.toString(), generation.getStartinx()); + CacheHelper.getSystemCacheBean().setAtomicLong(MainContext.ModelType.WORKORDERS.toString(), generation.getStartinx()); } - UKTools.initSystemArea(); + MainUtils.initSystemArea(); - UKTools.initSystemSecField(event.getApplicationContext().getBean(TablePropertiesRepository.class)); - //UKTools.initAdv();//初始化广告位 + MainUtils.initSystemSecField(event.getApplicationContext().getBean(TablePropertiesRepository.class)); + //MainUtils.initAdv();//初始化广告位 } } \ No newline at end of file diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/StringToDateConverter.java b/contact-center/app/src/main/java/com/chatopera/cc/app/config/StringToDateConverter.java similarity index 95% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/StringToDateConverter.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/config/StringToDateConverter.java index 84c8ed80..66f1b676 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/StringToDateConverter.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/config/StringToDateConverter.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.config.web; +package com.chatopera.cc.app.config; import java.text.SimpleDateFormat; import java.util.Date; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/UKWebAppConfigurer.java b/contact-center/app/src/main/java/com/chatopera/cc/app/config/UKWebAppConfigurer.java similarity index 84% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/UKWebAppConfigurer.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/config/UKWebAppConfigurer.java index 08e47d83..21d4e203 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/UKWebAppConfigurer.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/config/UKWebAppConfigurer.java @@ -14,15 +14,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.config.web; +package com.chatopera.cc.app.config; -import com.chatopera.cc.webim.web.interceptor.LogIntercreptorHandler; -import com.chatopera.cc.webim.web.interceptor.UserInterceptorHandler; +import com.chatopera.cc.app.interceptor.LogIntercreptorHandler; +import com.chatopera.cc.app.interceptor.UserInterceptorHandler; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; -import com.chatopera.cc.webim.web.interceptor.CrossInterceptorHandler; +import com.chatopera.cc.app.interceptor.CrossInterceptorHandler; @Configuration public class UKWebAppConfigurer diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/UKeFuExceptionHandler.java b/contact-center/app/src/main/java/com/chatopera/cc/app/config/UKeFuExceptionHandler.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/UKeFuExceptionHandler.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/config/UKeFuExceptionHandler.java index 121c547b..a50eef79 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/UKeFuExceptionHandler.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/config/UKeFuExceptionHandler.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.config.web; +package com.chatopera.cc.app.config; import com.lmax.disruptor.ExceptionHandler; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/WebConfigBeans.java b/contact-center/app/src/main/java/com/chatopera/cc/app/config/WebConfigBeans.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/WebConfigBeans.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/config/WebConfigBeans.java index d5ce61e7..a9b11f57 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/WebConfigBeans.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/config/WebConfigBeans.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.config.web; +package com.chatopera.cc.app.config; import javax.annotation.PostConstruct; @@ -23,7 +23,6 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.convert.support.GenericConversionService; import org.springframework.web.bind.support.ConfigurableWebBindingInitializer; -import org.springframework.web.multipart.commons.CommonsMultipartResolver; import org.springframework.web.multipart.support.StandardServletMultipartResolver; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/WebSecurityConfig.java b/contact-center/app/src/main/java/com/chatopera/cc/app/config/WebSecurityConfig.java similarity index 97% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/WebSecurityConfig.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/config/WebSecurityConfig.java index e52e2f05..488c6301 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/WebSecurityConfig.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/config/WebSecurityConfig.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.config.web; +package com.chatopera.cc.app.config; import java.io.IOException; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/WebServerConfiguration.java b/contact-center/app/src/main/java/com/chatopera/cc/app/config/WebServerConfiguration.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/WebServerConfiguration.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/config/WebServerConfiguration.java index d13b1091..a204ffa3 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/config/web/WebServerConfiguration.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/config/WebServerConfiguration.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.config.web; +package com.chatopera.cc.app.config; import java.io.File; import java.io.FileInputStream; @@ -22,6 +22,7 @@ import java.io.IOException; import java.security.NoSuchAlgorithmException; import java.util.Properties; +import com.chatopera.cc.app.basic.MainUtils; import org.apache.catalina.connector.Connector; import org.apache.commons.lang3.StringUtils; import org.apache.coyote.http11.Http11NioProtocol; @@ -33,8 +34,6 @@ import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletCon import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import com.chatopera.cc.util.UKTools; - @Configuration public class WebServerConfiguration { @@ -59,7 +58,7 @@ public class WebServerConfiguration if(!StringUtils.isBlank(sslProperties.getProperty("key-store")) && !StringUtils.isBlank(sslProperties.getProperty("key-store-password"))){ Ssl ssl = new Ssl(); ssl.setKeyStore(new File(path , "ssl/"+sslProperties.getProperty("key-store")).getAbsolutePath()); - ssl.setKeyStorePassword(UKTools.decryption(sslProperties.getProperty("key-store-password"))); + ssl.setKeyStorePassword(MainUtils.decryption(sslProperties.getProperty("key-store-password"))); tomcatFactory.setSsl(ssl); } } diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/ApplicationController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/ApplicationController.java similarity index 80% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/ApplicationController.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/handler/ApplicationController.java index 1f2b286d..81f3d52c 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/ApplicationController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/ApplicationController.java @@ -14,20 +14,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.web.handler; +package com.chatopera.cc.app.handler; import javax.servlet.http.HttpServletRequest; -import com.chatopera.cc.webim.service.cache.CacheHelper; -import com.chatopera.cc.webim.web.model.User; +import com.chatopera.cc.app.algorithm.AutomaticServiceDist; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.model.User; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.core.UKDataContext; -import com.chatopera.cc.webim.service.acd.ServiceQuene; - @Controller public class ApplicationController extends Handler{ @@ -35,12 +34,12 @@ public class ApplicationController extends Handler{ public ModelAndView admin(HttpServletRequest request) { ModelAndView view = request(super.createRequestPageTempletResponse("/apps/index")); User user = super.getUser(request) ; - view.addObject("agentStatusReport",ServiceQuene.getAgentReport(user.getOrgi())) ; + view.addObject("agentStatusReport", AutomaticServiceDist.getAgentReport(user.getOrgi())) ; view.addObject("tenant",super.getTenant(request)); view.addObject("istenantshare",super.isEnabletneant()); if(super.isEnabletneant()) { //多租户启用 非超级管理员 一定要选择租户才能进入界面 - if(!user.isSuperuser() && !StringUtils.isBlank(user.getOrgid()) && super.isTenantconsole() &&UKDataContext.SYSTEM_ORGI.equals(user.getOrgi())) { + if(!user.isSuperuser() && !StringUtils.isBlank(user.getOrgid()) && super.isTenantconsole() && MainContext.SYSTEM_ORGI.equals(user.getOrgi())) { view = request(super.createRequestPageTempletResponse("redirect:/apps/tenant/index")); } if(StringUtils.isBlank(user.getOrgid())) { diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/Handler.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/Handler.java similarity index 77% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/Handler.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/handler/Handler.java index 28c862ea..71f70097 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/Handler.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/Handler.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.web.handler; +package com.chatopera.cc.app.handler; import static org.elasticsearch.index.query.QueryBuilders.termQuery; import static org.elasticsearch.index.query.QueryBuilders.termsQuery; @@ -24,14 +24,15 @@ import java.text.ParseException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; -import com.chatopera.cc.core.UKDataContext; -import com.chatopera.cc.util.UKView; -import com.chatopera.cc.util.exception.CSKefuException; -import com.chatopera.cc.webim.service.cache.CacheHelper; -import com.chatopera.cc.webim.service.repository.TenantRepository; -import com.chatopera.cc.webim.web.handler.api.rest.QueryParams; -import com.chatopera.cc.webim.web.model.Tenant; -import com.chatopera.cc.webim.web.model.User; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.basic.MainUtils; +import com.chatopera.cc.app.basic.Viewport; +import com.chatopera.cc.exception.CSKefuException; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.repository.TenantRepository; +import com.chatopera.cc.app.handler.api.rest.QueryParams; +import com.chatopera.cc.app.model.Tenant; +import com.chatopera.cc.app.model.User; import org.apache.commons.lang.StringUtils; import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.QueryBuilders; @@ -46,8 +47,7 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.SessionAttributes; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.util.UKTools; -import com.chatopera.cc.webim.web.model.SystemConfig; +import com.chatopera.cc.app.model.SystemConfig; @Controller @@ -66,7 +66,7 @@ public class Handler { private long starttime = System.currentTimeMillis(); public User getUser(HttpServletRequest request){ - User user = (User) request.getSession(true).getAttribute(UKDataContext.USER_SESSION_NAME) ; + User user = (User) request.getSession(true).getAttribute(MainContext.USER_SESSION_NAME) ; if(user==null){ String authorization = request.getHeader("authorization") ; if(StringUtils.isBlank(authorization) && request.getCookies()!=null){ @@ -77,13 +77,13 @@ public class Handler { } } if(!StringUtils.isBlank(authorization)){ - user = (User) CacheHelper.getApiUserCacheBean().getCacheObject(authorization, UKDataContext.SYSTEM_ORGI) ; + user = (User) CacheHelper.getApiUserCacheBean().getCacheObject(authorization, MainContext.SYSTEM_ORGI) ; } if(user==null){ user = new User(); - user.setId(UKTools.getContextID(request.getSession().getId())) ; - user.setUsername(UKDataContext.GUEST_USER+"_"+UKTools.genIDByKey(user.getId())) ; - user.setOrgi(UKDataContext.SYSTEM_ORGI); + user.setId(MainUtils.getContextID(request.getSession().getId())) ; + user.setUsername(MainContext.GUEST_USER+"_"+ MainUtils.genIDByKey(user.getId())) ; + user.setOrgi(MainContext.SYSTEM_ORGI); user.setSessionid(user.getId()) ; } }else{ @@ -179,7 +179,7 @@ public class Handler { if(!StringUtils.isBlank(request.getParameter("callbegin"))) { try { - rangeQuery = QueryBuilders.rangeQuery("calltime").from(UKTools.dateFormate.parse(request.getParameter("callbegin")).getTime()) ; + rangeQuery = QueryBuilders.rangeQuery("calltime").from(MainUtils.dateFormate.parse(request.getParameter("callbegin")).getTime()) ; } catch (ParseException e) { e.printStackTrace(); @@ -190,9 +190,9 @@ public class Handler { try { if(rangeQuery == null) { - rangeQuery = QueryBuilders.rangeQuery("calltime").to(UKTools.dateFormate.parse(request.getParameter("callend")).getTime()) ; + rangeQuery = QueryBuilders.rangeQuery("calltime").to(MainUtils.dateFormate.parse(request.getParameter("callend")).getTime()) ; }else { - rangeQuery.to(UKTools.dateFormate.parse(request.getParameter("callend")).getTime()) ; + rangeQuery.to(MainUtils.dateFormate.parse(request.getParameter("callend")).getTime()) ; } } catch (ParseException e) { @@ -209,7 +209,7 @@ public class Handler { if(!StringUtils.isBlank(request.getParameter("apbegin"))) { try { - rangeQuery = QueryBuilders.rangeQuery("aptime").from(UKTools.dateFormate.parse(request.getParameter("apbegin")).getTime()) ; + rangeQuery = QueryBuilders.rangeQuery("aptime").from(MainUtils.dateFormate.parse(request.getParameter("apbegin")).getTime()) ; } catch (ParseException e) { e.printStackTrace(); @@ -220,9 +220,9 @@ public class Handler { try { if(rangeQuery == null) { - rangeQuery = QueryBuilders.rangeQuery("aptime").to(UKTools.dateFormate.parse(request.getParameter("apend")).getTime()) ; + rangeQuery = QueryBuilders.rangeQuery("aptime").to(MainUtils.dateFormate.parse(request.getParameter("apend")).getTime()) ; }else { - rangeQuery.to(UKTools.dateFormate.parse(request.getParameter("apend")).getTime()) ; + rangeQuery.to(MainUtils.dateFormate.parse(request.getParameter("apend")).getTime()) ; } } catch (ParseException e) { @@ -265,29 +265,29 @@ public class Handler { } public User getIMUser(HttpServletRequest request , String userid , String nickname){ - User user = (User) request.getSession(true).getAttribute(UKDataContext.IM_USER_SESSION_NAME) ; + User user = (User) request.getSession(true).getAttribute(MainContext.IM_USER_SESSION_NAME) ; if(user==null){ user = new User(); if(!StringUtils.isBlank(userid)){ user.setId(userid) ; }else{ - user.setId(UKTools.getContextID(request.getSession().getId())) ; + user.setId(MainUtils.getContextID(request.getSession().getId())) ; } if(!StringUtils.isBlank(nickname)){ user.setUsername(nickname); }else{ - user.setUsername(UKDataContext.GUEST_USER+"_"+UKTools.genIDByKey(user.getId())) ; + user.setUsername(MainContext.GUEST_USER+"_"+ MainUtils.genIDByKey(user.getId())) ; } user.setSessionid(user.getId()) ; }else{ - user.setSessionid(UKTools.getContextID(request.getSession().getId())) ; + user.setSessionid(MainUtils.getContextID(request.getSession().getId())) ; } return user ; } public void setUser(HttpServletRequest request , User user){ - request.getSession(true).removeAttribute(UKDataContext.USER_SESSION_NAME) ; - request.getSession(true).setAttribute(UKDataContext.USER_SESSION_NAME , user) ; + request.getSession(true).removeAttribute(MainContext.USER_SESSION_NAME) ; + request.getSession(true).setAttribute(MainContext.USER_SESSION_NAME , user) ; } @@ -296,16 +296,16 @@ public class Handler { * @param page * @return */ - public UKView createAdminTempletResponse(String page) { - return new UKView("/admin/include/tpl" , page); + public Viewport createAdminTempletResponse(String page) { + return new Viewport("/admin/include/tpl" , page); } /** * 创建系统监控的 模板页面 * @param page * @return */ - public UKView createAppsTempletResponse(String page) { - return new UKView("/apps/include/tpl" , page); + public Viewport createAppsTempletResponse(String page) { + return new Viewport("/apps/include/tpl" , page); } /** @@ -313,12 +313,12 @@ public class Handler { * @param page * @return */ - public UKView createEntIMTempletResponse(String page) { - return new UKView("/apps/entim/include/tpl" , page); + public Viewport createEntIMTempletResponse(String page) { + return new Viewport("/apps/entim/include/tpl" , page); } - public UKView createRequestPageTempletResponse(String page) { - return new UKView(page); + public Viewport createRequestPageTempletResponse(String page) { + return new Viewport(page); } /** @@ -326,7 +326,7 @@ public class Handler { * @param data * @return */ - public ModelAndView request(UKView data) { + public ModelAndView request(Viewport data) { return new ModelAndView(data.getTemplet()!=null ? data.getTemplet(): data.getPage() , "data", data) ; } @@ -402,7 +402,7 @@ public class Handler { * @return */ public String getOrgiByTenantshare(HttpServletRequest request){ - SystemConfig systemConfig = UKTools.getSystemConfig(); + SystemConfig systemConfig = MainUtils.getSystemConfig(); if(systemConfig!=null&&systemConfig.isEnabletneant()&&systemConfig.isTenantshare()) { User user = this.getUser(request) ; return user.getOrgid(); @@ -415,7 +415,7 @@ public class Handler { * @return */ public boolean isTenantshare(){ - SystemConfig systemConfig = UKTools.getSystemConfig(); + SystemConfig systemConfig = MainUtils.getSystemConfig(); if(systemConfig!=null&&systemConfig.isEnabletneant()&&systemConfig.isTenantshare()) { return true; } @@ -427,7 +427,7 @@ public class Handler { * @return */ public boolean isEnabletneant(){ - SystemConfig systemConfig = UKTools.getSystemConfig(); + SystemConfig systemConfig = MainUtils.getSystemConfig(); if(systemConfig!=null&&systemConfig.isEnabletneant()) { return true; } @@ -438,7 +438,7 @@ public class Handler { * @return */ public boolean isTenantconsole(){ - SystemConfig systemConfig = UKTools.getSystemConfig(); + SystemConfig systemConfig = MainUtils.getSystemConfig(); if(systemConfig!=null&&systemConfig.isEnabletneant()&&systemConfig.isTenantconsole()) { return true; } diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/LoginController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/LoginController.java similarity index 85% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/LoginController.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/handler/LoginController.java index 1ae7f781..e4d249cc 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/LoginController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/LoginController.java @@ -14,18 +14,18 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.web.handler; +package com.chatopera.cc.app.handler; -import com.chatopera.cc.core.UKDataContext; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.util.UKTools; -import com.chatopera.cc.webim.service.cache.CacheHelper; -import com.chatopera.cc.webim.service.repository.OrganRepository; -import com.chatopera.cc.webim.service.repository.RoleAuthRepository; -import com.chatopera.cc.webim.service.repository.UserRepository; -import com.chatopera.cc.webim.service.repository.UserRoleRepository; -import com.chatopera.cc.webim.util.OnlineUserUtils; -import com.chatopera.cc.webim.web.model.*; +import com.chatopera.cc.app.model.*; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.repository.OrganRepository; +import com.chatopera.cc.app.persistence.repository.RoleAuthRepository; +import com.chatopera.cc.app.persistence.repository.UserRepository; +import com.chatopera.cc.app.persistence.repository.UserRoleRepository; +import com.chatopera.cc.util.OnlineUserUtils; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -89,7 +89,7 @@ public class LoginController extends Handler { @Menu(type = "apps", subtype = "user", access = true) public ModelAndView login(HttpServletRequest request, HttpServletResponse response, @RequestHeader(value = "referer", required = false) String referer, @Valid String msg) throws NoSuchAlgorithmException { ModelAndView view = request(super.createRequestPageTempletResponse("redirect:/")); - if (request.getSession(true).getAttribute(UKDataContext.USER_SESSION_NAME) == null) { + if (request.getSession(true).getAttribute(MainContext.USER_SESSION_NAME) == null) { view = request(super.createRequestPageTempletResponse("/login")); if (!StringUtils.isBlank(request.getParameter("referer"))) { referer = request.getParameter("referer"); @@ -101,8 +101,8 @@ public class LoginController extends Handler { if (cookies != null) { for (Cookie cookie : cookies) { if (cookie != null && !StringUtils.isBlank(cookie.getName()) && !StringUtils.isBlank(cookie.getValue())) { - if (cookie.getName().equals(UKDataContext.UKEFU_SYSTEM_COOKIES_FLAG)) { - String flagid = UKTools.decryption(cookie.getValue()); + if (cookie.getName().equals(MainContext.UKEFU_SYSTEM_COOKIES_FLAG)) { + String flagid = MainUtils.decryption(cookie.getValue()); if (!StringUtils.isBlank(flagid)) { User user = userRepository.findById(flagid); if (user != null) { @@ -117,7 +117,7 @@ public class LoginController extends Handler { if (!StringUtils.isBlank(msg)) { view.addObject("msg", msg); } - SystemConfig systemConfig = UKTools.getSystemConfig(); + SystemConfig systemConfig = MainUtils.getSystemConfig(); if (systemConfig != null && systemConfig.isEnableregorgi()) { view.addObject("show", true); } @@ -131,18 +131,18 @@ public class LoginController extends Handler { @Menu(type = "apps", subtype = "user", access = true) public ModelAndView login(HttpServletRequest request, HttpServletResponse response, @Valid User user, @Valid String referer, @Valid String sla) throws NoSuchAlgorithmException { ModelAndView view = request(super.createRequestPageTempletResponse("redirect:/")); - if (request.getSession(true).getAttribute(UKDataContext.USER_SESSION_NAME) == null) { + if (request.getSession(true).getAttribute(MainContext.USER_SESSION_NAME) == null) { if (user != null && user.getUsername() != null) { - final User loginUser = userRepository.findByUsernameAndPasswordAndDatastatus(user.getUsername(), UKTools.md5(user.getPassword()), false); + final User loginUser = userRepository.findByUsernameAndPasswordAndDatastatus(user.getUsername(), MainUtils.md5(user.getPassword()), false); if (loginUser != null && !StringUtils.isBlank(loginUser.getId())) { view = this.processLogin(request, response, view, loginUser, referer); if (!StringUtils.isBlank(sla) && sla.equals("1")) { - Cookie flagid = new Cookie(UKDataContext.UKEFU_SYSTEM_COOKIES_FLAG, UKTools.encryption(loginUser.getId())); + Cookie flagid = new Cookie(MainContext.UKEFU_SYSTEM_COOKIES_FLAG, MainUtils.encryption(loginUser.getId())); flagid.setMaxAge(7 * 24 * 60 * 60); response.addCookie(flagid); // add authorization code for rest api - String auth = UKTools.getUUID(); - CacheHelper.getApiUserCacheBean().put(auth, loginUser, UKDataContext.SYSTEM_ORGI); + String auth = MainUtils.getUUID(); + CacheHelper.getApiUserCacheBean().put(auth, loginUser, MainContext.SYSTEM_ORGI); response.addCookie((new Cookie("authorization", auth))); } } else { @@ -154,7 +154,7 @@ public class LoginController extends Handler { } } } - SystemConfig systemConfig = UKTools.getSystemConfig(); + SystemConfig systemConfig = MainUtils.getSystemConfig(); if (systemConfig != null && systemConfig.isEnableregorgi()) { view.addObject("show", true); } @@ -173,7 +173,7 @@ public class LoginController extends Handler { view = request(super.createRequestPageTempletResponse("redirect:/")); } //登录成功 判断是否进入多租户页面 - SystemConfig systemConfig = UKTools.getSystemConfig(); + SystemConfig systemConfig = MainUtils.getSystemConfig(); if (systemConfig != null && systemConfig.isEnabletneant() && systemConfig.isTenantconsole() && !loginUser.isSuperuser()) { view = request(super.createRequestPageTempletResponse("redirect:/apps/tenant/index")); } @@ -226,12 +226,12 @@ public class LoginController extends Handler { @RequestMapping("/logout") public String logout(HttpServletRequest request, HttpServletResponse response) { - request.getSession().removeAttribute(UKDataContext.USER_SESSION_NAME); + request.getSession().removeAttribute(MainContext.USER_SESSION_NAME); Cookie[] cookies = request.getCookies(); if (cookies != null) { for (Cookie cookie : cookies) { if (cookie != null && !StringUtils.isBlank(cookie.getName()) && !StringUtils.isBlank(cookie.getValue())) { - if (cookie.getName().equals(UKDataContext.UKEFU_SYSTEM_COOKIES_FLAG)) { + if (cookie.getName().equals(MainContext.UKEFU_SYSTEM_COOKIES_FLAG)) { cookie.setMaxAge(0); response.addCookie(cookie); } @@ -245,7 +245,7 @@ public class LoginController extends Handler { @Menu(type = "apps", subtype = "user", access = true) public ModelAndView register(HttpServletRequest request, HttpServletResponse response, @Valid String msg) { ModelAndView view = request(super.createRequestPageTempletResponse("redirect:/")); - if (request.getSession(true).getAttribute(UKDataContext.USER_SESSION_NAME) == null) { + if (request.getSession(true).getAttribute(MainContext.USER_SESSION_NAME) == null) { view = request(super.createRequestPageTempletResponse("/register")); } if (!StringUtils.isBlank(msg)) { @@ -265,13 +265,13 @@ public class LoginController extends Handler { user.setUname(user.getUsername()); user.setUsertype("0"); if (!StringUtils.isBlank(user.getPassword())) { - user.setPassword(UKTools.md5(user.getPassword())); + user.setPassword(MainUtils.md5(user.getPassword())); } user.setOrgi(super.getOrgiByTenantshare(request)); /*if(!StringUtils.isBlank(super.getUser(request).getOrgid())) { user.setOrgid(super.getUser(request).getOrgid()); }else { - user.setOrgid(UKDataContext.SYSTEM_ORGI); + user.setOrgid(MainContext.SYSTEM_ORGI); }*/ userRepository.save(user); OnlineUserUtils.clean(super.getOrgi(request)); diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/AdminController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/AdminController.java similarity index 61% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/AdminController.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/AdminController.java index 23b6c28b..68368319 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/AdminController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/AdminController.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.web.handler.admin; +package com.chatopera.cc.app.handler.admin; import java.util.ArrayList; import java.util.Date; @@ -23,15 +23,18 @@ import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; +import com.chatopera.cc.app.algorithm.AutomaticServiceDist; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.util.client.NettyClients; -import com.chatopera.cc.webim.service.cache.CacheHelper; -import com.chatopera.cc.webim.service.repository.OnlineUserRepository; -import com.chatopera.cc.webim.service.repository.SysDicRepository; -import com.chatopera.cc.webim.service.repository.UserEventRepository; -import com.chatopera.cc.webim.util.OnlineUserUtils; -import com.chatopera.cc.webim.web.model.SysDic; -import com.chatopera.cc.webim.web.model.User; +import com.chatopera.cc.app.im.client.NettyClients; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.repository.OnlineUserRepository; +import com.chatopera.cc.app.persistence.repository.SysDicRepository; +import com.chatopera.cc.app.persistence.repository.UserEventRepository; +import com.chatopera.cc.util.OnlineUserUtils; +import com.chatopera.cc.app.model.SysDic; +import com.chatopera.cc.app.model.User; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -39,11 +42,8 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.core.UKDataContext; -import com.chatopera.cc.util.UKTools; -import com.chatopera.cc.webim.service.acd.ServiceQuene; -import com.chatopera.cc.webim.service.repository.UserRepository; -import com.chatopera.cc.webim.web.handler.Handler; +import com.chatopera.cc.app.persistence.repository.UserRepository; +import com.chatopera.cc.app.handler.Handler; @Controller public class AdminController extends Handler{ @@ -64,7 +64,7 @@ public class AdminController extends Handler{ public ModelAndView index(ModelMap map ,HttpServletRequest request) { ModelAndView view = request(super.createRequestPageTempletResponse("redirect:/")); User user = super.getUser(request) ; - view.addObject("agentStatusReport",ServiceQuene.getAgentReport(user.getOrgi())) ; + view.addObject("agentStatusReport", AutomaticServiceDist.getAgentReport(user.getOrgi())) ; view.addObject("agentStatus", CacheHelper.getAgentStatusCacheBean().getCacheObject(user.getId(), user.getOrgi())) ; return view; @@ -77,28 +77,28 @@ public class AdminController extends Handler{ map.put("chatClients", NettyClients.getInstance().size()) ; map.put("systemCaches", CacheHelper.getSystemCacheBean().getSize()) ; - map.put("agentReport", ServiceQuene.getAgentReport(super.getOrgi(request))) ; - map.put("webIMReport", UKTools.getWebIMReport(userEventRes.findByOrgiAndCreatetimeRange(super.getOrgi(request), UKTools.getStartTime() , UKTools.getEndTime()))) ; + map.put("agentReport", AutomaticServiceDist.getAgentReport(super.getOrgi(request))) ; + map.put("webIMReport", MainUtils.getWebIMReport(userEventRes.findByOrgiAndCreatetimeRange(super.getOrgi(request), MainUtils.getStartTime() , MainUtils.getEndTime()))) ; map.put("agents",getAgent(request).size()) ; - map.put("webIMInvite", UKTools.getWebIMInviteStatus(onlineUserRes.findByOrgiAndStatus(super.getOrgi(request), UKDataContext.OnlineUserOperatorStatus.ONLINE.toString()))) ; + map.put("webIMInvite", MainUtils.getWebIMInviteStatus(onlineUserRes.findByOrgiAndStatus(super.getOrgi(request), MainContext.OnlineUserOperatorStatus.ONLINE.toString()))) ; - map.put("inviteResult", UKTools.getWebIMInviteResult(onlineUserRes.findByOrgiAndAgentnoAndCreatetimeRange(super.getOrgi(request), super.getUser(request).getId() , UKTools.getStartTime() , UKTools.getEndTime()))) ; + map.put("inviteResult", MainUtils.getWebIMInviteResult(onlineUserRes.findByOrgiAndAgentnoAndCreatetimeRange(super.getOrgi(request), super.getUser(request).getId() , MainUtils.getStartTime() , MainUtils.getEndTime()))) ; - map.put("agentUserCount", onlineUserRes.countByAgentForAgentUser(super.getOrgi(request), UKDataContext.AgentUserStatusEnum.INSERVICE.toString(),super.getUser(request).getId() , UKTools.getStartTime() , UKTools.getEndTime())) ; + map.put("agentUserCount", onlineUserRes.countByAgentForAgentUser(super.getOrgi(request), MainContext.AgentUserStatusEnum.INSERVICE.toString(),super.getUser(request).getId() , MainUtils.getStartTime() , MainUtils.getEndTime())) ; - map.put("agentServicesCount", onlineUserRes.countByAgentForAgentUser(super.getOrgi(request), UKDataContext.AgentUserStatusEnum.END.toString(),super.getUser(request).getId() , UKTools.getStartTime() , UKTools.getEndTime())) ; + map.put("agentServicesCount", onlineUserRes.countByAgentForAgentUser(super.getOrgi(request), MainContext.AgentUserStatusEnum.END.toString(),super.getUser(request).getId() , MainUtils.getStartTime() , MainUtils.getEndTime())) ; - map.put("agentServicesAvg", onlineUserRes.countByAgentForAvagTime(super.getOrgi(request), UKDataContext.AgentUserStatusEnum.END.toString(),super.getUser(request).getId() , UKTools.getStartTime() , UKTools.getEndTime())) ; + map.put("agentServicesAvg", onlineUserRes.countByAgentForAvagTime(super.getOrgi(request), MainContext.AgentUserStatusEnum.END.toString(),super.getUser(request).getId() , MainUtils.getStartTime() , MainUtils.getEndTime())) ; - map.put("webInviteReport", UKTools.getWebIMInviteAgg(onlineUserRes.findByOrgiAndCreatetimeRange(super.getOrgi(request) , UKDataContext.ChannelTypeEnum.WEBIM.toString(),UKTools.getLast30Day(), UKTools.getEndTime()))) ; + map.put("webInviteReport", MainUtils.getWebIMInviteAgg(onlineUserRes.findByOrgiAndCreatetimeRange(super.getOrgi(request) , MainContext.ChannelTypeEnum.WEBIM.toString(), MainUtils.getLast30Day(), MainUtils.getEndTime()))) ; - map.put("agentConsultReport", UKTools.getWebIMDataAgg(onlineUserRes.findByOrgiAndCreatetimeRangeForAgent(super.getOrgi(request), UKTools.getLast30Day(), UKTools.getEndTime()))) ; + map.put("agentConsultReport", MainUtils.getWebIMDataAgg(onlineUserRes.findByOrgiAndCreatetimeRangeForAgent(super.getOrgi(request), MainUtils.getLast30Day(), MainUtils.getEndTime()))) ; - map.put("clentConsultReport", UKTools.getWebIMDataAgg(onlineUserRes.findByOrgiAndCreatetimeRangeForClient(super.getOrgi(request), UKTools.getLast30Day(), UKTools.getEndTime() , UKDataContext.ChannelTypeEnum.WEBIM.toString()))) ; + map.put("clentConsultReport", MainUtils.getWebIMDataAgg(onlineUserRes.findByOrgiAndCreatetimeRangeForClient(super.getOrgi(request), MainUtils.getLast30Day(), MainUtils.getEndTime() , MainContext.ChannelTypeEnum.WEBIM.toString()))) ; - map.put("browserConsultReport", UKTools.getWebIMDataAgg(onlineUserRes.findByOrgiAndCreatetimeRangeForBrowser(super.getOrgi(request), UKTools.getLast30Day(), UKTools.getEndTime(), UKDataContext.ChannelTypeEnum.WEBIM.toString()))) ; + map.put("browserConsultReport", MainUtils.getWebIMDataAgg(onlineUserRes.findByOrgiAndCreatetimeRangeForBrowser(super.getOrgi(request), MainUtils.getLast30Day(), MainUtils.getEndTime(), MainContext.ChannelTypeEnum.WEBIM.toString()))) ; } private List getAgent(HttpServletRequest request){ //获取当前产品or租户坐席数 @@ -127,11 +127,11 @@ public class AdminController extends Handler{ @RequestMapping("/admin/auth/infoacq") @Menu(type = "admin" , subtype = "infoacq" , access= false , admin = true) public ModelAndView infoacq(ModelMap map , HttpServletRequest request) { - String inacq = (String) request.getSession().getAttribute(UKDataContext.UKEFU_SYSTEM_INFOACQ) ; + String inacq = (String) request.getSession().getAttribute(MainContext.UKEFU_SYSTEM_INFOACQ) ; if(!StringUtils.isBlank(inacq)){ - request.getSession().removeAttribute(UKDataContext.UKEFU_SYSTEM_INFOACQ); + request.getSession().removeAttribute(MainContext.UKEFU_SYSTEM_INFOACQ); }else{ - request.getSession().setAttribute(UKDataContext.UKEFU_SYSTEM_INFOACQ , "true"); + request.getSession().setAttribute(MainContext.UKEFU_SYSTEM_INFOACQ , "true"); } return request(super.createRequestPageTempletResponse("redirect:/")); } @@ -142,15 +142,15 @@ public class AdminController extends Handler{ map.addAttribute("title", title) ; map.addAttribute("url", url) ; if(!StringUtils.isBlank(iconstr) && !StringUtils.isBlank(icontext)){ - map.addAttribute("iconstr", iconstr.replaceAll(icontext, "&#x"+UKTools.string2HexString(icontext)+";")) ; + map.addAttribute("iconstr", iconstr.replaceAll(icontext, "&#x"+ MainUtils.string2HexString(icontext)+";")) ; } - return request(super.createRequestPageTempletResponse("/admin/system/auth/event")); + return request(super.createRequestPageTempletResponse("/admin/system/auth/exchange")); } @RequestMapping("/admin/auth/save") @Menu(type = "admin" , subtype = "authsave") public ModelAndView authsave(ModelMap map , HttpServletRequest request , @Valid String title , @Valid SysDic dic) { - SysDic sysDic = sysDicRes.findByCode(UKDataContext.UKEFU_SYSTEM_AUTH_DIC) ; + SysDic sysDic = sysDicRes.findByCode(MainContext.UKEFU_SYSTEM_AUTH_DIC) ; boolean newdic = false ; if(sysDic!=null && !StringUtils.isBlank(dic.getName())){ if(!StringUtils.isBlank(dic.getParentid())){ diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/area/AreaController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/area/AreaController.java similarity index 82% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/area/AreaController.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/area/AreaController.java index 05218975..4df06d74 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/area/AreaController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/area/AreaController.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.web.handler.admin.area; +package com.chatopera.cc.app.handler.admin.area; import java.io.FileNotFoundException; import java.io.IOException; @@ -23,21 +23,21 @@ import java.util.Date; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; +import com.chatopera.cc.app.basic.MainUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.core.UKDataContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.util.UKTools; -import com.chatopera.cc.webim.service.repository.AreaTypeRepository; -import com.chatopera.cc.webim.service.repository.SysDicRepository; -import com.chatopera.cc.webim.web.handler.Handler; -import com.chatopera.cc.webim.web.model.AreaType; -import com.chatopera.cc.webim.web.model.SysDic; -import com.chatopera.cc.webim.web.model.UKeFuDic; +import com.chatopera.cc.app.persistence.repository.AreaTypeRepository; +import com.chatopera.cc.app.persistence.repository.SysDicRepository; +import com.chatopera.cc.app.handler.Handler; +import com.chatopera.cc.app.model.AreaType; +import com.chatopera.cc.app.model.SysDic; +import com.chatopera.cc.app.model.UKeFuDic; /** * @@ -66,12 +66,12 @@ public class AreaController extends Handler{ @RequestMapping("/add") @Menu(type = "admin" , subtype = "area") public ModelAndView add(ModelMap map , HttpServletRequest request) { - SysDic sysDic = sysDicRepository.findByCode(UKDataContext.UKEFU_SYSTEM_AREA_DIC) ; + SysDic sysDic = sysDicRepository.findByCode(MainContext.UKEFU_SYSTEM_AREA_DIC) ; if(sysDic!=null){ map.addAttribute("sysarea", sysDic) ; map.addAttribute("areaList", sysDicRepository.findByDicid(sysDic.getId())) ; } - map.addAttribute("cacheList", UKeFuDic.getInstance().getDic(UKDataContext.UKEFU_SYSTEM_AREA_DIC)) ; + map.addAttribute("cacheList", UKeFuDic.getInstance().getDic(MainContext.UKEFU_SYSTEM_AREA_DIC)) ; return request(super.createRequestPageTempletResponse("/admin/area/add")); } @@ -84,7 +84,7 @@ public class AreaController extends Handler{ area.setCreatetime(new Date()); area.setCreater(super.getUser(request).getId()); areaRepository.save(area) ; - UKTools.initSystemArea(); + MainUtils.initSystemArea(); } return request(super.createRequestPageTempletResponse("redirect:/admin/area/index.html")); } @@ -94,12 +94,12 @@ public class AreaController extends Handler{ public ModelAndView edit(ModelMap map ,HttpServletRequest request , @Valid String id) { map.addAttribute("area", areaRepository.findByIdAndOrgi(id, super.getOrgi(request))) ; - SysDic sysDic = sysDicRepository.findByCode(UKDataContext.UKEFU_SYSTEM_AREA_DIC) ; + SysDic sysDic = sysDicRepository.findByCode(MainContext.UKEFU_SYSTEM_AREA_DIC) ; if(sysDic!=null){ map.addAttribute("sysarea", sysDic) ; map.addAttribute("areaList", sysDicRepository.findByDicid(sysDic.getId())) ; } - map.addAttribute("cacheList", UKeFuDic.getInstance().getDic(UKDataContext.UKEFU_SYSTEM_AREA_DIC)) ; + map.addAttribute("cacheList", UKeFuDic.getInstance().getDic(MainContext.UKEFU_SYSTEM_AREA_DIC)) ; return request(super.createRequestPageTempletResponse("/admin/area/edit")); } @@ -112,7 +112,7 @@ public class AreaController extends Handler{ area.setOrgi(super.getOrgi(request)); area.setCreater(areaType.getCreater()); areaRepository.save(area) ; - UKTools.initSystemArea(); + MainUtils.initSystemArea(); } return request(super.createRequestPageTempletResponse("redirect:/admin/area/index.html")); } @@ -123,7 +123,7 @@ public class AreaController extends Handler{ AreaType areaType = areaRepository.findByIdAndOrgi(area.getId(), super.getOrgi(request)) ; if(areaType!=null){ areaRepository.delete(areaType); - UKTools.initSystemArea(); + MainUtils.initSystemArea(); } return request(super.createRequestPageTempletResponse("redirect:/admin/area/index.html")); } diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/callcenter/CallCenterAclController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterAclController.java similarity index 91% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/callcenter/CallCenterAclController.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterAclController.java index 8338c255..b85fda6a 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/callcenter/CallCenterAclController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterAclController.java @@ -14,15 +14,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.web.handler.admin.callcenter; +package com.chatopera.cc.app.handler.admin.callcenter; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.webim.service.repository.PbxHostRepository; -import com.chatopera.cc.webim.web.handler.Handler; -import com.chatopera.cc.webim.web.model.Acl; +import com.chatopera.cc.app.persistence.repository.PbxHostRepository; +import com.chatopera.cc.app.handler.Handler; +import com.chatopera.cc.app.model.Acl; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -30,7 +30,7 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.webim.service.repository.AclRepository; +import com.chatopera.cc.app.persistence.repository.AclRepository; @Controller @RequestMapping("/admin/callcenter") diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/callcenter/CallCenterBlackController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterBlackController.java similarity index 88% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/callcenter/CallCenterBlackController.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterBlackController.java index 626044bf..b2a831e0 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/callcenter/CallCenterBlackController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterBlackController.java @@ -14,11 +14,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.web.handler.admin.callcenter; +package com.chatopera.cc.app.handler.admin.callcenter; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; +import com.chatopera.cc.app.basic.MainContext; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -26,11 +27,10 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.core.UKDataContext; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.webim.service.repository.BlackListRepository; -import com.chatopera.cc.webim.web.handler.Handler; -import com.chatopera.cc.webim.web.model.BlackEntity; +import com.chatopera.cc.app.persistence.repository.BlackListRepository; +import com.chatopera.cc.app.handler.Handler; +import com.chatopera.cc.app.model.BlackEntity; @Controller @RequestMapping("/admin/callcenter") @@ -63,7 +63,7 @@ public class CallCenterBlackController extends Handler{ if(count == 0){ BlackEntity be = new BlackEntity(); be.setPhone(ph.trim()); - be.setChannel(UKDataContext.ChannelTypeEnum.PHONE.toString()); + be.setChannel(MainContext.ChannelTypeEnum.PHONE.toString()); be.setOrgi(super.getOrgi(request)); be.setCreater(super.getUser(request).getId()); blackRes.save(be) ; @@ -88,7 +88,7 @@ public class CallCenterBlackController extends Handler{ BlackEntity oldBlack = blackRes.findByIdAndOrgi(black.getId(), super.getOrgi(request)) ; if(oldBlack!=null){ oldBlack.setPhone(black.getPhone()); - oldBlack.setChannel(UKDataContext.ChannelTypeEnum.PHONE.toString()); + oldBlack.setChannel(MainContext.ChannelTypeEnum.PHONE.toString()); oldBlack.setOrgi(super.getOrgi(request)); blackRes.save(oldBlack); } diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/callcenter/CallCenterController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterController.java similarity index 82% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/callcenter/CallCenterController.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterController.java index 434096d9..8c764f87 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/callcenter/CallCenterController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterController.java @@ -14,19 +14,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.web.handler.admin.callcenter; +package com.chatopera.cc.app.handler.admin.callcenter; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import com.chatopera.cc.core.UKDataContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.util.extra.CallCenterInterface; -import com.chatopera.cc.webim.service.repository.PbxHostRepository; -import com.chatopera.cc.webim.web.handler.Handler; -import com.chatopera.cc.webim.web.model.PbxHost; +import com.chatopera.cc.exchange.CallCenterInterface; +import com.chatopera.cc.app.persistence.repository.PbxHostRepository; +import com.chatopera.cc.app.handler.Handler; +import com.chatopera.cc.app.model.PbxHost; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -45,8 +45,8 @@ public class CallCenterController extends Handler { @Menu(type = "callcenter" , subtype = "callcenter" , access = false , admin = true) public ModelAndView index(ModelMap map , HttpServletRequest request , @Valid String msg) { List pbxHostList = pbxHostRes.findByOrgi(super.getOrgi(request)) ; - if(UKDataContext.model.get("callcenter")!=null){ - CallCenterInterface callCenterImpl = (CallCenterInterface) UKDataContext.getContext().getBean("callcenter") ; + if(MainContext.model.get("callcenter")!=null){ + CallCenterInterface callCenterImpl = (CallCenterInterface) MainContext.getContext().getBean("callcenter") ; for(PbxHost pbxHost : pbxHostList){ if(callCenterImpl!=null){ @@ -62,8 +62,8 @@ public class CallCenterController extends Handler { @Menu(type = "callcenter" , subtype = "pbxhost" , access = false , admin = true) public ModelAndView pbxhost(ModelMap map , HttpServletRequest request) { List pbxHostList = pbxHostRes.findByOrgi(super.getOrgi(request)) ; - if(UKDataContext.model.get("callcenter")!=null){ - CallCenterInterface callCenterImpl = (CallCenterInterface) UKDataContext.getContext().getBean("callcenter") ; + if(MainContext.model.get("callcenter")!=null){ + CallCenterInterface callCenterImpl = (CallCenterInterface) MainContext.getContext().getBean("callcenter") ; for(PbxHost pbxHost : pbxHostList){ if(callCenterImpl!=null){ @@ -92,8 +92,8 @@ public class CallCenterController extends Handler { pbxHost.setOrgi(super.getOrgi(request)); pbxHost.setCreater(super.getUser(request).getId()); pbxHostRes.save(pbxHost) ; - if(UKDataContext.model.get("callcenter")!=null){ - CallCenterInterface callCenterImpl = (CallCenterInterface) UKDataContext.getContext().getBean("callcenter") ; + if(MainContext.model.get("callcenter")!=null){ + CallCenterInterface callCenterImpl = (CallCenterInterface) MainContext.getContext().getBean("callcenter") ; if(callCenterImpl!=null){ try{ callCenterImpl.init(pbxHost); @@ -133,8 +133,8 @@ public class CallCenterController extends Handler { destHost.setPassword(pbxHost.getPassword()); } pbxHostRes.save(destHost) ; - if(UKDataContext.model.get("callcenter")!=null){ - CallCenterInterface callCenterImpl = (CallCenterInterface) UKDataContext.getContext().getBean("callcenter") ; + if(MainContext.model.get("callcenter")!=null){ + CallCenterInterface callCenterImpl = (CallCenterInterface) MainContext.getContext().getBean("callcenter") ; if(callCenterImpl!=null){ try{ callCenterImpl.init(destHost); @@ -156,8 +156,8 @@ public class CallCenterController extends Handler { public ModelAndView mediadelete(ModelMap map , HttpServletRequest request , @Valid String id) { if(!StringUtils.isBlank(id)){ pbxHostRes.delete(id); - if(UKDataContext.model.get("callcenter")!=null){ - CallCenterInterface callCenterImpl = (CallCenterInterface) UKDataContext.getContext().getBean("callcenter") ; + if(MainContext.model.get("callcenter")!=null){ + CallCenterInterface callCenterImpl = (CallCenterInterface) MainContext.getContext().getBean("callcenter") ; if(callCenterImpl!=null){ callCenterImpl.remove(id); } diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/callcenter/CallCenterExtentionController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterExtentionController.java similarity index 90% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/callcenter/CallCenterExtentionController.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterExtentionController.java index 4876cfba..0ad89c3e 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/callcenter/CallCenterExtentionController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterExtentionController.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.web.handler.admin.callcenter; +package com.chatopera.cc.app.handler.admin.callcenter; import java.util.Date; import java.util.List; @@ -23,11 +23,11 @@ import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.webim.service.cache.CacheHelper; -import com.chatopera.cc.webim.service.repository.PbxHostRepository; -import com.chatopera.cc.webim.service.repository.ProductRepository; -import com.chatopera.cc.webim.web.model.PbxHost; -import com.chatopera.cc.webim.web.model.User; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.repository.PbxHostRepository; +import com.chatopera.cc.app.persistence.repository.ProductRepository; +import com.chatopera.cc.app.model.PbxHost; +import com.chatopera.cc.app.model.User; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -36,14 +36,14 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.chatopera.cc.util.freeswitch.model.CallCenterAgent; -import com.chatopera.cc.webim.service.impl.CallOutQuene; -import com.chatopera.cc.webim.service.repository.ExtentionRepository; -import com.chatopera.cc.webim.service.repository.MediaRepository; -import com.chatopera.cc.webim.service.repository.QueSurveyProcessRepository; -import com.chatopera.cc.webim.service.repository.ServiceAiRepository; -import com.chatopera.cc.webim.service.repository.SipTrunkRepository; -import com.chatopera.cc.webim.web.handler.Handler; -import com.chatopera.cc.webim.web.model.Extention; +import com.chatopera.cc.app.persistence.impl.CallOutQuene; +import com.chatopera.cc.app.persistence.repository.ExtentionRepository; +import com.chatopera.cc.app.persistence.repository.MediaRepository; +import com.chatopera.cc.app.persistence.repository.QueSurveyProcessRepository; +import com.chatopera.cc.app.persistence.repository.ServiceAiRepository; +import com.chatopera.cc.app.persistence.repository.SipTrunkRepository; +import com.chatopera.cc.app.handler.Handler; +import com.chatopera.cc.app.model.Extention; @Controller @RequestMapping("/admin/callcenter") diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/callcenter/CallCenterIvrController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterIvrController.java similarity index 91% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/callcenter/CallCenterIvrController.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterIvrController.java index 7b8e1745..cd5212a8 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/callcenter/CallCenterIvrController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterIvrController.java @@ -14,13 +14,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.web.handler.admin.callcenter; +package com.chatopera.cc.app.handler.admin.callcenter; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.webim.service.repository.PbxHostRepository; +import com.chatopera.cc.app.persistence.repository.PbxHostRepository; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -28,10 +28,10 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.webim.service.repository.ExtentionRepository; -import com.chatopera.cc.webim.service.repository.IvrMenuRepository; -import com.chatopera.cc.webim.web.handler.Handler; -import com.chatopera.cc.webim.web.model.Extention; +import com.chatopera.cc.app.persistence.repository.ExtentionRepository; +import com.chatopera.cc.app.persistence.repository.IvrMenuRepository; +import com.chatopera.cc.app.handler.Handler; +import com.chatopera.cc.app.model.Extention; @Controller @RequestMapping("/admin/callcenter") diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/callcenter/CallCenterMediaController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterMediaController.java similarity index 89% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/callcenter/CallCenterMediaController.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterMediaController.java index 78528029..90bb85d8 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/callcenter/CallCenterMediaController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterMediaController.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.web.handler.admin.callcenter; +package com.chatopera.cc.app.handler.admin.callcenter; import java.io.File; import java.io.IOException; @@ -34,11 +34,11 @@ import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.util.UKTools; -import com.chatopera.cc.webim.service.repository.MediaRepository; -import com.chatopera.cc.webim.service.repository.PbxHostRepository; -import com.chatopera.cc.webim.web.handler.Handler; -import com.chatopera.cc.webim.web.model.Media; +import com.chatopera.cc.app.basic.MainUtils; +import com.chatopera.cc.app.persistence.repository.MediaRepository; +import com.chatopera.cc.app.persistence.repository.PbxHostRepository; +import com.chatopera.cc.app.handler.Handler; +import com.chatopera.cc.app.model.Media; @Controller @RequestMapping("/admin/callcenter") @@ -79,7 +79,7 @@ public class CallCenterMediaController extends Handler{ if(!StringUtils.isBlank(media.getName())){ int count = mediaRes.countByNameAndOrgi(media.getName(), super.getOrgi(request)) ; if(count == 0){ - String fileName = "media/"+UKTools.getUUID()+mediafile.getOriginalFilename().substring(mediafile.getOriginalFilename().lastIndexOf(".")) ; + String fileName = "media/"+ MainUtils.getUUID()+mediafile.getOriginalFilename().substring(mediafile.getOriginalFilename().lastIndexOf(".")) ; media.setOrgi(super.getOrgi(request)); media.setCreater(super.getUser(request).getId()); @@ -125,7 +125,7 @@ public class CallCenterMediaController extends Handler{ wavFile.deleteOnExit(); } - String fileName = "media/"+UKTools.getUUID()+mediafile.getOriginalFilename().substring(mediafile.getOriginalFilename().lastIndexOf(".")) ; + String fileName = "media/"+ MainUtils.getUUID()+mediafile.getOriginalFilename().substring(mediafile.getOriginalFilename().lastIndexOf(".")) ; oldMedia.setFilename(fileName); if(mediafile!=null && mediafile.getOriginalFilename().lastIndexOf(".") > 0){ diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/callcenter/CallCenterResourceController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterResourceController.java similarity index 86% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/callcenter/CallCenterResourceController.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterResourceController.java index cdd7c38f..575f35c3 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/callcenter/CallCenterResourceController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterResourceController.java @@ -14,20 +14,20 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.web.handler.admin.callcenter; +package com.chatopera.cc.app.handler.admin.callcenter; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import com.chatopera.cc.core.UKDataContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.util.extra.CallCenterInterface; -import com.chatopera.cc.webim.service.repository.PbxHostRepository; -import com.chatopera.cc.webim.service.repository.ServiceAiRepository; -import com.chatopera.cc.webim.web.handler.Handler; -import com.chatopera.cc.webim.web.model.PbxHost; +import com.chatopera.cc.exchange.CallCenterInterface; +import com.chatopera.cc.app.persistence.repository.PbxHostRepository; +import com.chatopera.cc.app.persistence.repository.ServiceAiRepository; +import com.chatopera.cc.app.handler.Handler; +import com.chatopera.cc.app.model.PbxHost; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -35,7 +35,7 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.webim.service.repository.ExtentionRepository; +import com.chatopera.cc.app.persistence.repository.ExtentionRepository; @Controller @RequestMapping("/admin/callcenter") @@ -92,8 +92,8 @@ public class CallCenterResourceController extends Handler { pbxHost.setOrgi(super.getOrgi(request)); pbxHostRes.save(pbxHost) ; - if(UKDataContext.model.get("callcenter")!=null){ - CallCenterInterface callCenterImpl = (CallCenterInterface) UKDataContext.getContext().getBean("callcenter") ; + if(MainContext.model.get("callcenter")!=null){ + CallCenterInterface callCenterImpl = (CallCenterInterface) MainContext.getContext().getBean("callcenter") ; callCenterImpl.init(pbxHost); } } diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/callcenter/CallCenterRouterController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterRouterController.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/callcenter/CallCenterRouterController.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterRouterController.java index 142b8eab..588a1150 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/callcenter/CallCenterRouterController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterRouterController.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.web.handler.admin.callcenter; +package com.chatopera.cc.app.handler.admin.callcenter; import java.util.List; @@ -22,8 +22,8 @@ import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.webim.service.repository.PbxHostRepository; -import com.chatopera.cc.webim.web.model.PbxHost; +import com.chatopera.cc.app.persistence.repository.PbxHostRepository; +import com.chatopera.cc.app.model.PbxHost; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -31,9 +31,9 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.webim.service.repository.RouterRulesRepository; -import com.chatopera.cc.webim.web.handler.Handler; -import com.chatopera.cc.webim.web.model.RouterRules; +import com.chatopera.cc.app.persistence.repository.RouterRulesRepository; +import com.chatopera.cc.app.handler.Handler; +import com.chatopera.cc.app.model.RouterRules; @Controller @RequestMapping("/admin/callcenter") diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/callcenter/CallCenterSipTrunkController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterSipTrunkController.java similarity index 93% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/callcenter/CallCenterSipTrunkController.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterSipTrunkController.java index 9e9c04fb..1afaa1fc 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/callcenter/CallCenterSipTrunkController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterSipTrunkController.java @@ -14,15 +14,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.web.handler.admin.callcenter; +package com.chatopera.cc.app.handler.admin.callcenter; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.webim.service.cache.CacheHelper; -import com.chatopera.cc.webim.service.repository.PbxHostRepository; -import com.chatopera.cc.webim.web.model.SipTrunk; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.repository.PbxHostRepository; +import com.chatopera.cc.app.model.SipTrunk; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -30,8 +30,8 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.webim.service.repository.SipTrunkRepository; -import com.chatopera.cc.webim.web.handler.Handler; +import com.chatopera.cc.app.persistence.repository.SipTrunkRepository; +import com.chatopera.cc.app.handler.Handler; @Controller @RequestMapping("/admin/callcenter") diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/callcenter/CallCenterSkillController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterSkillController.java similarity index 90% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/callcenter/CallCenterSkillController.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterSkillController.java index 01b34d94..c6777e41 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/callcenter/CallCenterSkillController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/callcenter/CallCenterSkillController.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.web.handler.admin.callcenter; +package com.chatopera.cc.app.handler.admin.callcenter; import java.util.Date; import java.util.List; @@ -23,15 +23,15 @@ import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.webim.service.repository.CallCenterSkillRepository; -import com.chatopera.cc.webim.service.repository.ExtentionRepository; -import com.chatopera.cc.webim.service.repository.PbxHostRepository; -import com.chatopera.cc.webim.service.repository.SkillExtentionRepository; -import com.chatopera.cc.webim.web.handler.Handler; -import com.chatopera.cc.webim.web.model.CallCenterSkill; -import com.chatopera.cc.webim.web.model.Extention; -import com.chatopera.cc.webim.web.model.PbxHost; -import com.chatopera.cc.webim.web.model.SkillExtention; +import com.chatopera.cc.app.persistence.repository.CallCenterSkillRepository; +import com.chatopera.cc.app.persistence.repository.ExtentionRepository; +import com.chatopera.cc.app.persistence.repository.PbxHostRepository; +import com.chatopera.cc.app.persistence.repository.SkillExtentionRepository; +import com.chatopera.cc.app.handler.Handler; +import com.chatopera.cc.app.model.CallCenterSkill; +import com.chatopera.cc.app.model.Extention; +import com.chatopera.cc.app.model.PbxHost; +import com.chatopera.cc.app.model.SkillExtention; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/channel/CalloutChannelController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/channel/CalloutChannelController.java similarity index 86% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/channel/CalloutChannelController.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/channel/CalloutChannelController.java index b688a8e8..fa1f75c0 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/channel/CalloutChannelController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/channel/CalloutChannelController.java @@ -13,20 +13,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.web.handler.admin.channel; +package com.chatopera.cc.app.handler.admin.channel; -import com.chatopera.cc.core.UKDataContext; -import com.chatopera.cc.util.Base62; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.util.UKTools; -import com.chatopera.cc.util.exception.CSKefuException; -import com.chatopera.cc.webim.service.repository.ConsultInviteRepository; -import com.chatopera.cc.webim.service.repository.SNSAccountRepository; -import com.chatopera.cc.webim.service.repository.SecretRepository; -import com.chatopera.cc.webim.web.handler.Handler; -import com.chatopera.cc.webim.web.model.CousultInvite; -import com.chatopera.cc.webim.web.model.SNSAccount; -import com.chatopera.cc.webim.web.model.Secret; +import com.chatopera.cc.app.basic.MainUtils; +import com.chatopera.cc.exception.CSKefuException; +import com.chatopera.cc.app.persistence.repository.ConsultInviteRepository; +import com.chatopera.cc.app.persistence.repository.SNSAccountRepository; +import com.chatopera.cc.app.persistence.repository.SecretRepository; +import com.chatopera.cc.app.handler.Handler; +import com.chatopera.cc.app.model.CousultInvite; +import com.chatopera.cc.app.model.SNSAccount; +import com.chatopera.cc.app.model.Secret; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageRequest; @@ -56,7 +55,7 @@ public class CalloutChannelController extends Handler { @RequestMapping("/index") @Menu(type = "callout" , subtype = "channel" , access = false ,admin = true) public ModelAndView index(ModelMap map , HttpServletRequest request , @Valid String execute) { - map.addAttribute("snsAccountList", snsAccountRes.findBySnstypeAndOrgi( UKDataContext.ChannelTypeEnum.PHONE.toString() , super.getOrgi(request), new PageRequest(super.getP(request), super.getPs(request)))) ; + map.addAttribute("snsAccountList", snsAccountRes.findBySnstypeAndOrgi( MainContext.ChannelTypeEnum.PHONE.toString() , super.getOrgi(request), new PageRequest(super.getP(request), super.getPs(request)))) ; List secretConfig = secRes.findByOrgi(super.getOrgi(request)) ; if(secretConfig!=null && secretConfig.size() > 0){ map.addAttribute("secret", secretConfig.get(0)) ; @@ -81,7 +80,7 @@ public class CalloutChannelController extends Handler { int count = snsAccountRes.countBySnsidAndOrgi(snsAccount.getSnsid() , super.getOrgi(request)) ; if(count == 0){ snsAccount.setOrgi(super.getOrgi(request)); - snsAccount.setSnstype(UKDataContext.ChannelTypeEnum.PHONE.toString()); + snsAccount.setSnstype(MainContext.ChannelTypeEnum.PHONE.toString()); snsAccount.setCreatetime(new Date()); snsAccountRes.save(snsAccount) ; @@ -108,7 +107,7 @@ public class CalloutChannelController extends Handler { @Menu(type = "callout" , subtype = "delete") public ModelAndView delete(ModelMap map , HttpServletRequest request , @Valid String id , @Valid String confirm) { boolean execute = false ; - if(execute = UKTools.secConfirm(secRes, super.getOrgi(request), confirm)){ + if(execute = MainUtils.secConfirm(secRes, super.getOrgi(request), confirm)){ SNSAccount snsAccount = snsAccountRes.findByIdAndOrgi(id , super.getOrgi(request)) ; if(snsAccountRes!=null){ snsAccountRes.delete(snsAccount); @@ -155,7 +154,7 @@ public class CalloutChannelController extends Handler { } } - oldSnsAccount.setSnstype(UKDataContext.ChannelTypeEnum.PHONE.toString()); + oldSnsAccount.setSnstype(MainContext.ChannelTypeEnum.PHONE.toString()); snsAccountRes.save(oldSnsAccount) ; } return request(super.createRequestPageTempletResponse("redirect:/admin/callout/index.html")); diff --git a/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/channel/SNSAccountIMController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/channel/SNSAccountIMController.java new file mode 100644 index 00000000..fcb044d3 --- /dev/null +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/channel/SNSAccountIMController.java @@ -0,0 +1,178 @@ +/* + * Copyright (C) 2017 优客服-多渠道客服系统 + * Modifications copyright (C) 2018 Chatopera Inc, + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.chatopera.cc.app.handler.admin.channel; + +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.util.Base62; +import com.chatopera.cc.util.Menu; +import com.chatopera.cc.app.basic.MainUtils; +import com.chatopera.cc.app.persistence.repository.ConsultInviteRepository; +import com.chatopera.cc.app.persistence.repository.OrganRepository; +import com.chatopera.cc.app.persistence.repository.SNSAccountRepository; +import com.chatopera.cc.app.persistence.repository.SecretRepository; +import com.chatopera.cc.app.handler.Handler; +import com.chatopera.cc.app.model.CousultInvite; +import com.chatopera.cc.app.model.SNSAccount; +import com.chatopera.cc.app.model.Secret; +import com.chatopera.cc.app.model.User; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.PageRequest; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.validation.Valid; +import java.security.NoSuchAlgorithmException; +import java.util.Date; +import java.util.List; + +/** + * + * + */ +@Controller +@RequestMapping("/admin/im") +public class SNSAccountIMController extends Handler { + + @Autowired + private SNSAccountRepository snsAccountRes; + + @Autowired + private ConsultInviteRepository invite; + + @Autowired + private SecretRepository secRes; + + @Autowired + private OrganRepository organRes; + + @RequestMapping("/index") + @Menu(type = "admin", subtype = "im", access = false, admin = true) + public ModelAndView index(ModelMap map, HttpServletRequest request, @Valid String execute) { + map.addAttribute("snsAccountList", snsAccountRes.findBySnstypeAndOrgi(MainContext.ChannelTypeEnum.WEBIM.toString(), super.getOrgi(request), new PageRequest(super.getP(request), super.getPs(request)))); + List secretConfig = secRes.findByOrgi(super.getOrgi(request)); + if (secretConfig != null && secretConfig.size() > 0) { + map.addAttribute("secret", secretConfig.get(0)); + } + if (!StringUtils.isBlank(execute) && execute.equals("false")) { + map.addAttribute("execute", execute); + } + return request(super.createAdminTempletResponse("/admin/channel/im/index")); + } + + @RequestMapping("/add") + @Menu(type = "admin", subtype = "im", access = false, admin = true) + public ModelAndView add(ModelMap map, HttpServletRequest request) { + return request(super.createRequestPageTempletResponse("/admin/channel/im/add")); + } + + @RequestMapping("/save") + @Menu(type = "admin", subtype = "weixin") + public ModelAndView save(HttpServletRequest request, @Valid SNSAccount snsAccount) throws NoSuchAlgorithmException { + if (!StringUtils.isBlank(snsAccount.getBaseURL())) { + snsAccount.setSnsid(Base62.encode(snsAccount.getBaseURL()).toLowerCase()); + int count = snsAccountRes.countBySnsidAndOrgi(snsAccount.getSnsid(), super.getOrgi(request)); + if (count == 0) { + snsAccount.setOrgi(super.getOrgi(request)); + snsAccount.setSnstype(MainContext.ChannelTypeEnum.WEBIM.toString()); + snsAccount.setCreatetime(new Date()); + User curr = super.getUser(request); + snsAccount.setCreater(curr.getId()); + if (curr.getOrgan() != null) { + snsAccount.setOrgan(curr.getOrgan()); + } + + snsAccountRes.save(snsAccount); + + /** + * 同时创建CousultInvite 记录 + */ + CousultInvite coultInvite = invite.findBySnsaccountidAndOrgi(snsAccount.getSnsid(), super.getOrgi(request)); + if (coultInvite == null) { + coultInvite = new CousultInvite(); + coultInvite.setSnsaccountid(snsAccount.getSnsid()); + coultInvite.setCreate_time(new Date()); + coultInvite.setOrgi(super.getOrgi(request)); + coultInvite.setName(snsAccount.getName()); + coultInvite.setOwner(snsAccount.getCreater()); + invite.save(coultInvite); + } + } + } + return request(super.createRequestPageTempletResponse("redirect:/admin/im/index.html")); + } + + @RequestMapping("/delete") + @Menu(type = "weixin", subtype = "delete") + public ModelAndView delete(ModelMap map, HttpServletRequest request, @Valid String id, @Valid String confirm) { + boolean execute = false; + if (execute = MainUtils.secConfirm(secRes, super.getOrgi(request), confirm)) { + SNSAccount snsAccount = snsAccountRes.findByIdAndOrgi(id, super.getOrgi(request)); + if (snsAccountRes != null) { + snsAccountRes.delete(snsAccount); + CousultInvite coultInvite = invite.findBySnsaccountidAndOrgi(snsAccount.getSnsid(), super.getOrgi(request)); + if (coultInvite != null) { + invite.delete(coultInvite); + } + } + } + + return request(super.createRequestPageTempletResponse("redirect:/admin/im/index.html?execute=" + execute)); + } + + @RequestMapping("/edit") + @Menu(type = "admin", subtype = "im", access = false, admin = true) + public ModelAndView edit(ModelMap map, HttpServletRequest request, @Valid String id) { + map.addAttribute("snsAccount", snsAccountRes.findByIdAndOrgi(id, super.getOrgi(request))); + return request(super.createRequestPageTempletResponse("/admin/channel/im/edit")); + } + + @RequestMapping("/update") + @Menu(type = "admin", subtype = "im", access = false, admin = true) + public ModelAndView update(HttpServletRequest request, @Valid SNSAccount snsAccount) throws NoSuchAlgorithmException { + SNSAccount oldSnsAccount = snsAccountRes.findByIdAndOrgi(snsAccount.getId(), super.getOrgi(request)); + if (oldSnsAccount != null) { + oldSnsAccount.setName(snsAccount.getName()); + oldSnsAccount.setBaseURL(snsAccount.getBaseURL()); + oldSnsAccount.setUpdatetime(new Date()); + /** + * SNSID如果有变更,需要同时变更 CoultInvite 表的 记录 + */ + if (!StringUtils.isBlank(oldSnsAccount.getSnsid())) { + CousultInvite coultInvite = invite.findBySnsaccountidAndOrgi(oldSnsAccount.getSnsid(), super.getOrgi(request)); + if (coultInvite == null) { + /** + * 同时创建CousultInvite 记录 + */ + coultInvite = new CousultInvite(); + coultInvite.setSnsaccountid(oldSnsAccount.getSnsid()); + coultInvite.setCreate_time(new Date()); + coultInvite.setOrgi(super.getOrgi(request)); + coultInvite.setName(snsAccount.getName()); + invite.save(coultInvite); + } + } + + oldSnsAccount.setSnstype(MainContext.ChannelTypeEnum.WEBIM.toString()); + snsAccountRes.save(oldSnsAccount); + } + return request(super.createRequestPageTempletResponse("redirect:/admin/im/index.html")); + } +} \ No newline at end of file diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/channel/WebIMController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/channel/WebIMController.java similarity index 89% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/channel/WebIMController.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/channel/WebIMController.java index df171adc..6ccc30ce 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/channel/WebIMController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/channel/WebIMController.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.web.handler.admin.channel; +package com.chatopera.cc.app.handler.admin.channel; import java.io.File; import java.io.IOException; @@ -25,12 +25,12 @@ import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.webim.service.cache.CacheHelper; -import com.chatopera.cc.webim.web.handler.Handler; -import com.chatopera.cc.webim.web.model.CousultInvite; -import com.chatopera.cc.webim.web.model.Organ; -import com.chatopera.cc.webim.web.model.OrgiSkillRel; -import com.chatopera.cc.webim.web.model.User; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.handler.Handler; +import com.chatopera.cc.app.model.CousultInvite; +import com.chatopera.cc.app.model.Organ; +import com.chatopera.cc.app.model.OrgiSkillRel; +import com.chatopera.cc.app.model.User; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -42,12 +42,12 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.webim.service.repository.ConsultInviteRepository; -import com.chatopera.cc.webim.service.repository.OrganRepository; -import com.chatopera.cc.webim.service.repository.OrgiSkillRelRepository; -import com.chatopera.cc.webim.service.repository.SNSAccountRepository; -import com.chatopera.cc.webim.service.repository.ServiceAiRepository; -import com.chatopera.cc.webim.service.repository.UserRepository; +import com.chatopera.cc.app.persistence.repository.ConsultInviteRepository; +import com.chatopera.cc.app.persistence.repository.OrganRepository; +import com.chatopera.cc.app.persistence.repository.OrgiSkillRelRepository; +import com.chatopera.cc.app.persistence.repository.SNSAccountRepository; +import com.chatopera.cc.app.persistence.repository.ServiceAiRepository; +import com.chatopera.cc.app.persistence.repository.UserRepository; @Controller @RequestMapping("/admin/webim") @@ -75,7 +75,7 @@ public class WebIMController extends Handler { private SNSAccountRepository snsAccountRes; @RequestMapping("/index") - @Menu(type = "webim" , subtype = "webim" , admin= true) + @Menu(type = "app" , subtype = "app" , admin= true) public ModelAndView index(ModelMap map , HttpServletRequest request , @Valid String snsid) { CousultInvite coultInvite = invite.findBySnsaccountidAndOrgi(snsid, super.getOrgi(request)) ; @@ -88,11 +88,11 @@ public class WebIMController extends Handler { map.addAttribute("snsAccount", snsAccountRes.findBySnsidAndOrgi(snsid, super.getOrgi(request))) ; } - return request(super.createAdminTempletResponse("/admin/webim/index")); + return request(super.createAdminTempletResponse("/admin/app/index")); } @RequestMapping("/save") - @Menu(type = "admin" , subtype = "webim" , admin= true) + @Menu(type = "admin" , subtype = "app" , admin= true) public ModelAndView save(HttpServletRequest request , @Valid CousultInvite inviteData , @RequestParam(value = "webimlogo", required = false) MultipartFile webimlogo,@RequestParam(value = "agentheadimg", required = false) MultipartFile agentheadimg) throws IOException { if(!StringUtils.isBlank(inviteData.getSnsaccountid())){ CousultInvite tempData = invite.findBySnsaccountidAndOrgi(inviteData.getSnsaccountid() , super.getOrgi(request)) ; @@ -131,11 +131,11 @@ public class WebIMController extends Handler { invite.save(inviteData) ; CacheHelper.getSystemCacheBean().put(inviteData.getSnsaccountid(), inviteData, inviteData.getOrgi()); - return request(super.createRequestPageTempletResponse("redirect:/admin/webim/index.html?snsid="+inviteData.getSnsaccountid())); + return request(super.createRequestPageTempletResponse("redirect:/admin/app/index.html?snsid="+inviteData.getSnsaccountid())); } @RequestMapping("/profile") - @Menu(type = "webim" , subtype = "profile" , admin= true) + @Menu(type = "app" , subtype = "profile" , admin= true) public ModelAndView profile(ModelMap map , HttpServletRequest request , @Valid String snsid) { CousultInvite coultInvite = invite.findBySnsaccountidAndOrgi(snsid, super.getOrgi(request)) ; if(coultInvite!=null){ @@ -145,7 +145,7 @@ public class WebIMController extends Handler { map.addAttribute("snsAccount", snsAccountRes.findBySnsidAndOrgi(snsid, super.getOrgi(request))) ; map.put("serviceAiList",serviceAiRes.findByOrgi(super.getOrgi(request)) ) ; - return request(super.createAdminTempletResponse("/admin/webim/profile")); + return request(super.createAdminTempletResponse("/admin/app/profile")); } @RequestMapping("/profile/save") @@ -220,11 +220,11 @@ public class WebIMController extends Handler { invite.save(inviteData) ; } CacheHelper.getSystemCacheBean().put(inviteData.getSnsaccountid(), inviteData, inviteData.getOrgi()); - return request(super.createRequestPageTempletResponse("redirect:/admin/webim/profile.html?snsid="+inviteData.getSnsaccountid())); + return request(super.createRequestPageTempletResponse("redirect:/admin/app/profile.html?snsid="+inviteData.getSnsaccountid())); } @RequestMapping("/invote") - @Menu(type = "webim" , subtype = "invote" , admin= true) + @Menu(type = "app" , subtype = "invote" , admin= true) public ModelAndView invote(ModelMap map , HttpServletRequest request , @Valid String snsid) { CousultInvite coultInvite = invite.findBySnsaccountidAndOrgi(snsid, super.getOrgi(request)) ; if(coultInvite!=null){ @@ -232,7 +232,7 @@ public class WebIMController extends Handler { } map.addAttribute("import", request.getServerPort()) ; map.addAttribute("snsAccount", snsAccountRes.findBySnsidAndOrgi(snsid, super.getOrgi(request))) ; - return request(super.createAdminTempletResponse("/admin/webim/invote")); + return request(super.createAdminTempletResponse("/admin/app/invote")); } @RequestMapping("/invote/save") @@ -266,7 +266,7 @@ public class WebIMController extends Handler { invite.save(inviteData) ; } CacheHelper.getSystemCacheBean().put(inviteData.getSnsaccountid(), inviteData, inviteData.getOrgi()); - return request(super.createRequestPageTempletResponse("redirect:/admin/webim/invote.html?snsid="+inviteData.getSnsaccountid())); + return request(super.createRequestPageTempletResponse("redirect:/admin/app/invote.html?snsid="+inviteData.getSnsaccountid())); } /** diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/config/SystemConfigController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/config/SystemConfigController.java similarity index 75% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/config/SystemConfigController.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/config/SystemConfigController.java index 6291a270..788d5b2f 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/config/SystemConfigController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/config/SystemConfigController.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.web.handler.admin.config; +package com.chatopera.cc.app.handler.admin.config; import java.io.File; import java.io.FileOutputStream; @@ -28,14 +28,16 @@ import java.util.Properties; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; +import com.chatopera.cc.app.basic.MainContext; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.webim.service.cache.CacheHelper; -import com.chatopera.cc.webim.service.repository.SecretRepository; -import com.chatopera.cc.webim.service.repository.SystemConfigRepository; -import com.chatopera.cc.webim.service.repository.SystemMessageRepository; -import com.chatopera.cc.webim.service.repository.TemplateRepository; -import com.chatopera.cc.webim.web.model.Secret; -import com.chatopera.cc.webim.web.model.SysDic; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.repository.SecretRepository; +import com.chatopera.cc.app.persistence.repository.SystemConfigRepository; +import com.chatopera.cc.app.persistence.repository.SystemMessageRepository; +import com.chatopera.cc.app.persistence.repository.TemplateRepository; +import com.chatopera.cc.app.model.Secret; +import com.chatopera.cc.app.model.SysDic; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -49,11 +51,9 @@ import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; import com.corundumstudio.socketio.SocketIOServer; -import com.chatopera.cc.core.UKDataContext; -import com.chatopera.cc.util.UKTools; -import com.chatopera.cc.webim.web.handler.Handler; -import com.chatopera.cc.webim.web.model.SystemConfig; -import com.chatopera.cc.webim.web.model.UKeFuDic; +import com.chatopera.cc.app.handler.Handler; +import com.chatopera.cc.app.model.SystemConfig; +import com.chatopera.cc.app.model.UKeFuDic; @Controller @RequestMapping("/admin/config") @@ -85,28 +85,28 @@ public class SystemConfigController extends Handler{ @Menu(type = "admin" , subtype = "config" , admin = true) public ModelAndView index(ModelMap map , HttpServletRequest request , @Valid String execute) throws SQLException { map.addAttribute("server", server) ; - if(UKDataContext.model.get("im")!=null){ - map.addAttribute("entim", UKDataContext.model.get("im")) ; + if(MainContext.model.get("im")!=null){ + map.addAttribute("entim", MainContext.model.get("im")) ; } - if(request.getSession().getAttribute(UKDataContext.UKEFU_SYSTEM_INFOACQ)!=null){ - map.addAttribute("entim", request.getSession().getAttribute(UKDataContext.UKEFU_SYSTEM_INFOACQ)) ; + if(request.getSession().getAttribute(MainContext.UKEFU_SYSTEM_INFOACQ)!=null){ + map.addAttribute("entim", request.getSession().getAttribute(MainContext.UKEFU_SYSTEM_INFOACQ)) ; } map.addAttribute("server", server) ; - map.addAttribute("imServerStatus", UKDataContext.getIMServerStatus()) ; + map.addAttribute("imServerStatus", MainContext.getIMServerStatus()) ; List secretConfig = secRes.findByOrgi(super.getOrgi(request)) ; if(secretConfig!=null && secretConfig.size() > 0){ map.addAttribute("secret", secretConfig.get(0)) ; } - List dicList = UKeFuDic.getInstance().getDic(UKDataContext.UKEFU_SYSTEM_DIC) ; + List dicList = UKeFuDic.getInstance().getDic(MainContext.UKEFU_SYSTEM_DIC) ; SysDic callCenterDic = null , workOrderDic = null , smsDic = null ; for(SysDic dic : dicList){ - if(dic.getCode().equals(UKDataContext.UKEFU_SYSTEM_CALLCENTER)){ + if(dic.getCode().equals(MainContext.UKEFU_SYSTEM_CALLCENTER)){ callCenterDic = dic ; } - if(dic.getCode().equals(UKDataContext.UKEFU_SYSTEM_WORKORDEREMAIL)){ + if(dic.getCode().equals(MainContext.UKEFU_SYSTEM_WORKORDEREMAIL)){ workOrderDic = dic ; } - if(dic.getCode().equals(UKDataContext.UKEFU_SYSTEM_SMSEMAIL)){ + if(dic.getCode().equals(MainContext.UKEFU_SYSTEM_SMSEMAIL)){ smsDic = dic ; } } @@ -120,7 +120,7 @@ public class SystemConfigController extends Handler{ map.addAttribute("smsList", templateRes.findByTemplettypeAndOrgi(smsDic.getId(), super.getOrgi(request))) ; } - map.addAttribute("sysMessageList", systemMessageRes.findByMsgtypeAndOrgi(UKDataContext.SystemMessageType.EMAIL.toString(), super.getOrgi(request))) ; + map.addAttribute("sysMessageList", systemMessageRes.findByMsgtypeAndOrgi(MainContext.SystemMessageType.EMAIL.toString(), super.getOrgi(request))) ; if(!StringUtils.isBlank(execute) && execute.equals("false")){ map.addAttribute("execute", execute) ; @@ -135,9 +135,9 @@ public class SystemConfigController extends Handler{ @Menu(type = "admin" , subtype = "stopimserver" , access = false , admin = true) public ModelAndView stopimserver(ModelMap map , HttpServletRequest request , @Valid String confirm) throws SQLException { boolean execute = false ; - if(execute = UKTools.secConfirm(secRes, super.getOrgi(request), confirm)){ + if(execute = MainUtils.secConfirm(secRes, super.getOrgi(request), confirm)){ server.stop(); - UKDataContext.setIMServerStatus(false); + MainContext.setIMServerStatus(false); } return request(super.createRequestPageTempletResponse("redirect:/admin/config/index.html?execute="+execute)); } @@ -145,14 +145,14 @@ public class SystemConfigController extends Handler{ @RequestMapping("/startentim") @Menu(type = "admin" , subtype = "startentim" , access = false , admin = true) public ModelAndView startentim(ModelMap map , HttpServletRequest request) throws SQLException { - UKDataContext.model.put("im", true) ; + MainContext.model.put("im", true) ; return request(super.createRequestPageTempletResponse("redirect:/admin/config/index.html")); } @RequestMapping("/stopentim") @Menu(type = "admin" , subtype = "stopentim" , access = false , admin = true) public ModelAndView stopentim(ModelMap map , HttpServletRequest request) throws SQLException { - UKDataContext.model.remove("im") ; + MainContext.model.remove("im") ; return request(super.createRequestPageTempletResponse("redirect:/admin/config/index.html")); } @@ -167,9 +167,9 @@ public class SystemConfigController extends Handler{ @Menu(type = "admin" , subtype = "stop" , access = false , admin = true) public ModelAndView stop(ModelMap map , HttpServletRequest request , @Valid String confirm) throws SQLException { boolean execute = false ; - if(execute = UKTools.secConfirm(secRes, super.getOrgi(request), confirm)){ + if(execute = MainUtils.secConfirm(secRes, super.getOrgi(request), confirm)){ server.stop(); - UKDataContext.setIMServerStatus(false); + MainContext.setIMServerStatus(false); System.exit(0); } return request(super.createRequestPageTempletResponse("redirect:/admin/config/index.html?execute="+execute)); @@ -181,8 +181,8 @@ public class SystemConfigController extends Handler{ public ModelAndView save(ModelMap map , HttpServletRequest request , @Valid SystemConfig config ,BindingResult result , @RequestParam(value = "keyfile", required = false) MultipartFile keyfile , @RequestParam(value = "loginlogo", required = false) MultipartFile loginlogo , @RequestParam(value = "consolelogo", required = false) MultipartFile consolelogo , @RequestParam(value = "favlogo", required = false) MultipartFile favlogo , @Valid Secret secret) throws SQLException, IOException, NoSuchAlgorithmException { /*SystemConfig systemConfig = systemConfigRes.findByOrgi(super.getOrgi(request)) ; config.setOrgi(super.getOrgi(request));*/ - SystemConfig systemConfig = systemConfigRes.findByOrgi(UKDataContext.SYSTEM_ORGI) ; - config.setOrgi(UKDataContext.SYSTEM_ORGI); + SystemConfig systemConfig = systemConfigRes.findByOrgi(MainContext.SYSTEM_ORGI) ; + config.setOrgi(MainContext.SYSTEM_ORGI); String msg = "0" ; if(StringUtils.isBlank(config.getJkspassword())){ config.setJkspassword(null); @@ -192,7 +192,7 @@ public class SystemConfigController extends Handler{ config.setCreatetime(new Date()); systemConfig = config ; }else{ - UKTools.copyProperties(config,systemConfig); + MainUtils.copyProperties(config,systemConfig); } if(config.isEnablessl()){ if(keyfile!=null && keyfile.getBytes()!=null && keyfile.getBytes().length > 0 && keyfile.getOriginalFilename()!=null && keyfile.getOriginalFilename().length() > 0){ @@ -204,7 +204,7 @@ public class SystemConfigController extends Handler{ } Properties prop = new Properties(); FileOutputStream oFile = new FileOutputStream(sslFilePath);//true表示追加打开 - prop.setProperty("key-store-password", UKTools.encryption(systemConfig.getJkspassword())) ; + prop.setProperty("key-store-password", MainUtils.encryption(systemConfig.getJkspassword())) ; prop.setProperty("key-store",systemConfig.getJksfile()) ; prop.store(oFile , "SSL Properties File"); oFile.close(); @@ -217,17 +217,17 @@ public class SystemConfigController extends Handler{ } if(loginlogo!=null && !StringUtils.isBlank(loginlogo.getOriginalFilename()) && loginlogo.getOriginalFilename().lastIndexOf(".") > 0) { - String logoFileName = "logo/"+UKTools.md5(loginlogo.getOriginalFilename())+loginlogo.getOriginalFilename().substring(loginlogo.getOriginalFilename().lastIndexOf(".")) ; + String logoFileName = "logo/"+ MainUtils.md5(loginlogo.getOriginalFilename())+loginlogo.getOriginalFilename().substring(loginlogo.getOriginalFilename().lastIndexOf(".")) ; FileUtils.writeByteArrayToFile(new File(path ,logoFileName), loginlogo.getBytes()); systemConfig.setLoginlogo(logoFileName); } if(consolelogo!=null && !StringUtils.isBlank(consolelogo.getOriginalFilename()) && consolelogo.getOriginalFilename().lastIndexOf(".") > 0) { - String consoleLogoFileName = "logo/"+UKTools.md5(consolelogo.getOriginalFilename())+consolelogo.getOriginalFilename().substring(consolelogo.getOriginalFilename().lastIndexOf(".")) ; + String consoleLogoFileName = "logo/"+ MainUtils.md5(consolelogo.getOriginalFilename())+consolelogo.getOriginalFilename().substring(consolelogo.getOriginalFilename().lastIndexOf(".")) ; FileUtils.writeByteArrayToFile(new File(path ,consoleLogoFileName), consolelogo.getBytes()); systemConfig.setConsolelogo(consoleLogoFileName); } if(favlogo!=null && !StringUtils.isBlank(favlogo.getOriginalFilename()) && consolelogo.getOriginalFilename().lastIndexOf(".") > 0) { - String favLogoFileName = "logo/"+UKTools.md5(favlogo.getOriginalFilename())+favlogo.getOriginalFilename().substring(favlogo.getOriginalFilename().lastIndexOf(".")) ; + String favLogoFileName = "logo/"+ MainUtils.md5(favlogo.getOriginalFilename())+favlogo.getOriginalFilename().substring(favlogo.getOriginalFilename().lastIndexOf(".")) ; FileUtils.writeByteArrayToFile(new File(path ,favLogoFileName), favlogo.getBytes()); systemConfig.setFavlogo(favLogoFileName); } @@ -239,8 +239,8 @@ public class SystemConfigController extends Handler{ if(secretConfig!=null && secretConfig.size() > 0){ Secret tempSecret = secretConfig.get(0) ; String oldpass = request.getParameter("oldpass") ; - if(!StringUtils.isBlank(oldpass) && UKTools.md5(oldpass).equals(tempSecret.getPassword())){ - tempSecret.setPassword(UKTools.md5(secret.getPassword())); + if(!StringUtils.isBlank(oldpass) && MainUtils.md5(oldpass).equals(tempSecret.getPassword())){ + tempSecret.setPassword(MainUtils.md5(secret.getPassword())); msg = "1" ; tempSecret.setEnable(true); secRes.save(tempSecret) ; @@ -251,7 +251,7 @@ public class SystemConfigController extends Handler{ secret.setOrgi(super.getOrgi(request)); secret.setCreater(super.getUser(request).getId()); secret.setCreatetime(new Date()); - secret.setPassword(UKTools.md5(secret.getPassword())); + secret.setPassword(MainUtils.md5(secret.getPassword())); secret.setEnable(true); msg = "1" ; secRes.save(secret) ; @@ -264,7 +264,7 @@ public class SystemConfigController extends Handler{ systemConfigRes.save(systemConfig) ; CacheHelper.getSystemCacheBean().put("systemConfig", systemConfig , super.getOrgi(request)); - map.addAttribute("imServerStatus", UKDataContext.getIMServerStatus()) ; + map.addAttribute("imServerStatus", MainContext.getIMServerStatus()) ; return request(super.createRequestPageTempletResponse("redirect:/admin/config/index.html?msg="+msg)); } diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/config/SystemMessageController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/config/SystemMessageController.java similarity index 86% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/config/SystemMessageController.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/config/SystemMessageController.java index b0961585..cb15c350 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/config/SystemMessageController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/config/SystemMessageController.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.web.handler.admin.config; +package com.chatopera.cc.app.handler.admin.config; import java.io.FileNotFoundException; import java.io.IOException; @@ -23,12 +23,12 @@ import java.security.NoSuchAlgorithmException; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import com.chatopera.cc.core.UKDataContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.webim.service.repository.SystemMessageRepository; -import com.chatopera.cc.webim.web.handler.Handler; -import com.chatopera.cc.webim.web.model.SystemMessage; -import com.chatopera.cc.webim.web.model.UKeFuDic; +import com.chatopera.cc.app.persistence.repository.SystemMessageRepository; +import com.chatopera.cc.app.handler.Handler; +import com.chatopera.cc.app.model.SystemMessage; +import com.chatopera.cc.app.model.UKeFuDic; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageRequest; @@ -37,7 +37,7 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.util.UKTools; +import com.chatopera.cc.app.basic.MainUtils; @Controller @RequestMapping("/admin") @@ -63,9 +63,9 @@ public class SystemMessageController extends Handler { @Menu(type = "admin" , subtype = "user") public ModelAndView save(HttpServletRequest request ,@Valid SystemMessage email) throws NoSuchAlgorithmException { email.setOrgi(super.getOrgi(request)); - email.setMsgtype(UKDataContext.SystemMessageType.EMAIL.toString()); + email.setMsgtype(MainContext.SystemMessageType.EMAIL.toString()); if(!StringUtils.isBlank(email.getSmtppassword())) { - email.setSmtppassword(UKTools.encryption(email.getSmtppassword())); + email.setSmtppassword(MainUtils.encryption(email.getSmtppassword())); } systemMessageRepository.save(email) ; return request(super.createRequestPageTempletResponse("redirect:/admin/email/index.html")); @@ -85,9 +85,9 @@ public class SystemMessageController extends Handler { if(email!=null) { email.setCreatetime(temp.getCreatetime()); email.setOrgi(temp.getOrgi()); - email.setMsgtype(UKDataContext.SystemMessageType.EMAIL.toString()); + email.setMsgtype(MainContext.SystemMessageType.EMAIL.toString()); if(!StringUtils.isBlank(email.getSmtppassword())) { - email.setSmtppassword(UKTools.encryption(email.getSmtppassword())); + email.setSmtppassword(MainUtils.encryption(email.getSmtppassword())); }else { email.setSmtppassword(temp.getSmtppassword()); } @@ -126,9 +126,9 @@ public class SystemMessageController extends Handler { @Menu(type = "admin" , subtype = "sms") public ModelAndView smssave(HttpServletRequest request ,@Valid SystemMessage sms) throws NoSuchAlgorithmException { sms.setOrgi(super.getOrgi(request)); - sms.setMsgtype(UKDataContext.SystemMessageType.SMS.toString()); + sms.setMsgtype(MainContext.SystemMessageType.SMS.toString()); if(!StringUtils.isBlank(sms.getSmtppassword())) { - sms.setSmtppassword(UKTools.encryption(sms.getSmtppassword())); + sms.setSmtppassword(MainUtils.encryption(sms.getSmtppassword())); } systemMessageRepository.save(sms) ; return request(super.createRequestPageTempletResponse("redirect:/admin/sms/index.html")); @@ -149,9 +149,9 @@ public class SystemMessageController extends Handler { if(sms!=null) { sms.setCreatetime(temp.getCreatetime()); sms.setOrgi(temp.getOrgi()); - sms.setMsgtype(UKDataContext.SystemMessageType.SMS.toString()); + sms.setMsgtype(MainContext.SystemMessageType.SMS.toString()); if(!StringUtils.isBlank(sms.getSmtppassword())) { - sms.setSmtppassword(UKTools.encryption(sms.getSmtppassword())); + sms.setSmtppassword(MainUtils.encryption(sms.getSmtppassword())); }else { sms.setSmtppassword(temp.getSmtppassword()); } diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/organ/OrganController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/organ/OrganController.java similarity index 89% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/organ/OrganController.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/organ/OrganController.java index 94b11b97..2b3651e3 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/organ/OrganController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/organ/OrganController.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.web.handler.admin.organ; +package com.chatopera.cc.app.handler.admin.organ; import java.util.ArrayList; import java.util.Date; @@ -23,11 +23,12 @@ import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.webim.service.cache.CacheHelper; -import com.chatopera.cc.webim.service.repository.OrganRepository; -import com.chatopera.cc.webim.service.repository.SysDicRepository; -import com.chatopera.cc.webim.util.OnlineUserUtils; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.repository.OrganRepository; +import com.chatopera.cc.app.persistence.repository.SysDicRepository; +import com.chatopera.cc.util.OnlineUserUtils; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -35,18 +36,17 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.core.UKDataContext; -import com.chatopera.cc.webim.service.repository.AreaTypeRepository; -import com.chatopera.cc.webim.service.repository.OrganRoleRepository; -import com.chatopera.cc.webim.service.repository.RoleRepository; -import com.chatopera.cc.webim.service.repository.UserRepository; -import com.chatopera.cc.webim.web.handler.Handler; -import com.chatopera.cc.webim.web.model.AgentStatus; -import com.chatopera.cc.webim.web.model.Organ; -import com.chatopera.cc.webim.web.model.OrganRole; -import com.chatopera.cc.webim.web.model.SysDic; -import com.chatopera.cc.webim.web.model.UKeFuDic; -import com.chatopera.cc.webim.web.model.User; +import com.chatopera.cc.app.persistence.repository.AreaTypeRepository; +import com.chatopera.cc.app.persistence.repository.OrganRoleRepository; +import com.chatopera.cc.app.persistence.repository.RoleRepository; +import com.chatopera.cc.app.persistence.repository.UserRepository; +import com.chatopera.cc.app.handler.Handler; +import com.chatopera.cc.app.model.AgentStatus; +import com.chatopera.cc.app.model.Organ; +import com.chatopera.cc.app.model.OrganRole; +import com.chatopera.cc.app.model.SysDic; +import com.chatopera.cc.app.model.UKeFuDic; +import com.chatopera.cc.app.model.User; /** * @@ -137,7 +137,7 @@ public class OrganController extends Handler{ if(!StringUtils.isBlank(super.getUser(request).getOrgid())) { organ.setOrgid(super.getUser(request).getOrgid()); }else { - organ.setOrgid(UKDataContext.SYSTEM_ORGI); + organ.setOrgid(MainContext.SYSTEM_ORGI); } firstId = organ.getId(); @@ -235,7 +235,7 @@ public class OrganController extends Handler{ if(!StringUtils.isBlank(super.getUser(request).getOrgid())) { tempOrgan.setOrgid(super.getUser(request).getOrgid()); }else { - tempOrgan.setOrgid(UKDataContext.SYSTEM_ORGI); + tempOrgan.setOrgid(MainContext.SYSTEM_ORGI); } organRepository.save(tempOrgan) ; OnlineUserUtils.clean(super.getOrgi(request)); @@ -261,7 +261,7 @@ public class OrganController extends Handler{ if(!StringUtils.isBlank(super.getUser(request).getOrgid())) { tempOrgan.setOrgid(super.getUser(request).getOrgid()); }else { - tempOrgan.setOrgid(UKDataContext.SYSTEM_ORGI); + tempOrgan.setOrgid(MainContext.SYSTEM_ORGI); } organRepository.save(tempOrgan) ; OnlineUserUtils.clean(super.getOrgi(request)); @@ -277,12 +277,12 @@ public class OrganController extends Handler{ @Menu(type = "admin" , subtype = "area") public ModelAndView area(ModelMap map ,HttpServletRequest request , @Valid String id) { - SysDic sysDic = sysDicRepository.findByCode(UKDataContext.UKEFU_SYSTEM_AREA_DIC) ; + SysDic sysDic = sysDicRepository.findByCode(MainContext.UKEFU_SYSTEM_AREA_DIC) ; if(sysDic!=null){ map.addAttribute("sysarea", sysDic) ; map.addAttribute("areaList", sysDicRepository.findByDicid(sysDic.getId())) ; } - map.addAttribute("cacheList", UKeFuDic.getInstance().getDic(UKDataContext.UKEFU_SYSTEM_AREA_DIC)) ; + map.addAttribute("cacheList", UKeFuDic.getInstance().getDic(MainContext.UKEFU_SYSTEM_AREA_DIC)) ; map.addAttribute("organData", organRepository.findByIdAndOrgi(id, super.getOrgiByTenantshare(request))) ; return request(super.createRequestPageTempletResponse("/admin/organ/area")); diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/role/RoleController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/role/RoleController.java similarity index 88% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/role/RoleController.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/role/RoleController.java index d751a837..20f82a22 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/role/RoleController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/role/RoleController.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.web.handler.admin.role; +package com.chatopera.cc.app.handler.admin.role; import java.util.Date; import java.util.List; @@ -22,10 +22,11 @@ import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.webim.service.repository.RoleAuthRepository; -import com.chatopera.cc.webim.service.repository.SysDicRepository; -import com.chatopera.cc.webim.service.repository.UserRoleRepository; +import com.chatopera.cc.app.persistence.repository.RoleAuthRepository; +import com.chatopera.cc.app.persistence.repository.SysDicRepository; +import com.chatopera.cc.app.persistence.repository.UserRoleRepository; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageRequest; @@ -34,16 +35,15 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.core.UKDataContext; -import com.chatopera.cc.webim.service.repository.RoleRepository; -import com.chatopera.cc.webim.service.repository.UserRepository; -import com.chatopera.cc.webim.web.handler.Handler; -import com.chatopera.cc.webim.web.model.Role; -import com.chatopera.cc.webim.web.model.RoleAuth; -import com.chatopera.cc.webim.web.model.SysDic; -import com.chatopera.cc.webim.web.model.UKeFuDic; -import com.chatopera.cc.webim.web.model.User; -import com.chatopera.cc.webim.web.model.UserRole; +import com.chatopera.cc.app.persistence.repository.RoleRepository; +import com.chatopera.cc.app.persistence.repository.UserRepository; +import com.chatopera.cc.app.handler.Handler; +import com.chatopera.cc.app.model.Role; +import com.chatopera.cc.app.model.RoleAuth; +import com.chatopera.cc.app.model.SysDic; +import com.chatopera.cc.app.model.UKeFuDic; +import com.chatopera.cc.app.model.User; +import com.chatopera.cc.app.model.UserRole; @Controller @RequestMapping("/admin/role") @@ -110,7 +110,7 @@ public class RoleController extends Handler{ if(!StringUtils.isBlank(super.getUser(request).getOrgid())) { role.setOrgid(super.getUser(request).getOrgid()); }else { - role.setOrgid(UKDataContext.SYSTEM_ORGI); + role.setOrgid(MainContext.SYSTEM_ORGI); } roleRepository.save(role) ; @@ -184,7 +184,7 @@ public class RoleController extends Handler{ if(!StringUtils.isBlank(super.getUser(request).getOrgid())) { tempRole.setOrgid(super.getUser(request).getOrgid()); }else { - tempRole.setOrgid(UKDataContext.SYSTEM_ORGI); + tempRole.setOrgid(MainContext.SYSTEM_ORGI); } roleRepository.save(tempRole) ; @@ -210,7 +210,7 @@ public class RoleController extends Handler{ @RequestMapping("/auth") @Menu(type = "admin" , subtype = "role") public ModelAndView auth(ModelMap map , HttpServletRequest request , @Valid String id) { - SysDic sysDic = sysDicRes.findByCode(UKDataContext.UKEFU_SYSTEM_AUTH_DIC) ; + SysDic sysDic = sysDicRes.findByCode(MainContext.UKEFU_SYSTEM_AUTH_DIC) ; if(sysDic!=null){ map.addAttribute("resourceList", sysDicRes.findByDicid(sysDic.getId())) ; } diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/skill/AgentSkillController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/skill/AgentSkillController.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/skill/AgentSkillController.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/skill/AgentSkillController.java index 3455ad8d..82cddb0a 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/skill/AgentSkillController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/skill/AgentSkillController.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.web.handler.admin.skill; +package com.chatopera.cc.app.handler.admin.skill; import java.util.Date; import java.util.List; @@ -30,9 +30,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.webim.service.repository.SkillRepository; -import com.chatopera.cc.webim.web.handler.Handler; -import com.chatopera.cc.webim.web.model.Skill; +import com.chatopera.cc.app.persistence.repository.SkillRepository; +import com.chatopera.cc.app.handler.Handler; +import com.chatopera.cc.app.model.Skill; /** * diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/system/HazelcastMonitorController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/system/HazelcastMonitorController.java similarity index 92% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/system/HazelcastMonitorController.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/system/HazelcastMonitorController.java index a112f95e..6ab4bbfc 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/system/HazelcastMonitorController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/system/HazelcastMonitorController.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.web.handler.admin.system; +package com.chatopera.cc.app.handler.admin.system; import java.sql.SQLException; import java.util.HashMap; @@ -31,8 +31,8 @@ import org.springframework.web.servlet.ModelAndView; import com.google.gson.Gson; import com.hazelcast.com.eclipsesource.json.JsonObject; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.webim.service.cache.CacheHelper; -import com.chatopera.cc.webim.web.handler.Handler; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.handler.Handler; @Controller @RequestMapping("/admin/monitor") diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/system/LogController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/system/LogController.java similarity index 77% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/system/LogController.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/system/LogController.java index 9eb5bf62..b3e46980 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/system/LogController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/system/LogController.java @@ -14,11 +14,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.web.handler.admin.system; +package com.chatopera.cc.app.handler.admin.system; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; +import com.chatopera.cc.app.basic.MainContext; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort.Direction; @@ -27,10 +28,9 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.core.UKDataContext; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.webim.service.repository.LogRepository; -import com.chatopera.cc.webim.web.handler.Handler; +import com.chatopera.cc.app.persistence.repository.LogRepository; +import com.chatopera.cc.app.handler.Handler; @Controller @RequestMapping("/admin/log") @@ -43,14 +43,14 @@ public class LogController extends Handler{ @RequestMapping("/index") @Menu(type = "admin" , subtype = "syslog") public ModelAndView index(ModelMap map , HttpServletRequest request) { - map.addAttribute("logList", logRes.findByOrgi(UKDataContext.SYSTEM_ORGI , new PageRequest(super.getP(request), super.getPs(request) , Direction.DESC , "createdate"))); + map.addAttribute("logList", logRes.findByOrgi(MainContext.SYSTEM_ORGI , new PageRequest(super.getP(request), super.getPs(request) , Direction.DESC , "createdate"))); return request(super.createAdminTempletResponse("/admin/system/log/index")); } @RequestMapping("/levels") @Menu(type = "admin" , subtype = "levels") public ModelAndView levels(ModelMap map , HttpServletRequest request , @Valid String levels) { - map.addAttribute("logList", logRes.findByOrgiAndLevels(UKDataContext.SYSTEM_ORGI , levels , new PageRequest(super.getP(request), super.getPs(request) , Direction.DESC , "createdate"))); + map.addAttribute("logList", logRes.findByOrgiAndLevels(MainContext.SYSTEM_ORGI , levels , new PageRequest(super.getP(request), super.getPs(request) , Direction.DESC , "createdate"))); map.addAttribute("levels" , levels) ; return request(super.createAdminTempletResponse("/admin/system/log/levels")); } diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/system/MetadataController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/system/MetadataController.java similarity index 91% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/system/MetadataController.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/system/MetadataController.java index e787369b..653a72d8 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/system/MetadataController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/system/MetadataController.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.web.handler.admin.system; +package com.chatopera.cc.app.handler.admin.system; import java.sql.Connection; import java.sql.SQLException; @@ -28,16 +28,17 @@ import javax.persistence.PersistenceContext; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Menu; import com.chatopera.cc.util.metadata.DatabaseMetaDataHandler; import com.chatopera.cc.util.metadata.UKColumnMetadata; import com.chatopera.cc.util.metadata.UKTableMetaData; -import com.chatopera.cc.webim.service.hibernate.BaseService; -import com.chatopera.cc.webim.service.repository.SysDicRepository; -import com.chatopera.cc.webim.service.repository.TablePropertiesRepository; -import com.chatopera.cc.webim.web.model.SysDic; -import com.chatopera.cc.webim.web.model.TableProperties; -import com.chatopera.cc.webim.web.model.User; +import com.chatopera.cc.app.persistence.hibernate.BaseService; +import com.chatopera.cc.app.persistence.repository.SysDicRepository; +import com.chatopera.cc.app.persistence.repository.TablePropertiesRepository; +import com.chatopera.cc.app.model.SysDic; +import com.chatopera.cc.app.model.TableProperties; +import com.chatopera.cc.app.model.User; import org.apache.commons.lang.StringUtils; import org.hibernate.Session; import org.hibernate.jdbc.Work; @@ -50,13 +51,12 @@ import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.core.UKDataContext; -import com.chatopera.cc.util.UKTools; +import com.chatopera.cc.app.basic.MainUtils; import com.chatopera.cc.util.UKeFuList; -import com.chatopera.cc.webim.service.repository.MetadataRepository; -import com.chatopera.cc.webim.web.handler.Handler; -import com.chatopera.cc.webim.web.model.MetadataTable; -import com.chatopera.cc.webim.web.model.UKeFuDic; +import com.chatopera.cc.app.persistence.repository.MetadataRepository; +import com.chatopera.cc.app.handler.Handler; +import com.chatopera.cc.app.model.MetadataTable; +import com.chatopera.cc.app.model.UKeFuDic; @Controller @RequestMapping("/admin/metadata") @@ -222,7 +222,7 @@ public class MetadataController extends Handler{ //当前记录没有被添加过,进行正常添加 metaDataTable.setTablename(table); metaDataTable.setOrgi(user.getOrgi()); - metaDataTable.setId(UKTools.md5(metaDataTable.getTablename())); + metaDataTable.setId(MainUtils.md5(metaDataTable.getTablename())); metaDataTable.setTabledirid("0"); metaDataTable.setCreater(user.getId()); metaDataTable.setCreatername(user.getUsername()); @@ -292,7 +292,7 @@ public class MetadataController extends Handler{ if(table.isFromdb() && !StringUtils.isBlank(table.getListblocktemplet())) { SysDic dic = UKeFuDic.getInstance().getDicItem(table.getListblocktemplet()) ; if(dic!=null) { - Object bean = UKDataContext.getContext().getBean(Class.forName(dic.getCode())) ; + Object bean = MainContext.getContext().getBean(Class.forName(dic.getCode())) ; if(bean instanceof ElasticsearchRepository) { ElasticsearchRepository jpa = (ElasticsearchRepository)bean ; jpa.deleteAll(); @@ -313,7 +313,7 @@ public class MetadataController extends Handler{ SysDic dic = UKeFuDic.getInstance().getDicItem(table.getListblocktemplet()) ; if(dic!=null) { - Object bean = UKDataContext.getContext().getBean(Class.forName(dic.getCode())) ; + Object bean = MainContext.getContext().getBean(Class.forName(dic.getCode())) ; if(bean instanceof ElasticsearchRepository) { ElasticsearchRepository jpa = (ElasticsearchRepository)bean ; if(!StringUtils.isBlank(table.getPreviewtemplet())) { @@ -344,7 +344,7 @@ public class MetadataController extends Handler{ SysDic dic = UKeFuDic.getInstance().getDicItem(table.getListblocktemplet()) ; if(dic!=null) { - Object bean = UKDataContext.getContext().getBean(Class.forName(dic.getCode())) ; + Object bean = MainContext.getContext().getBean(Class.forName(dic.getCode())) ; if(bean instanceof ElasticsearchRepository) { ElasticsearchRepository jpa = (ElasticsearchRepository)bean ; if(!StringUtils.isBlank(table.getPreviewtemplet())) { diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/system/SysDicController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/system/SysDicController.java similarity index 95% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/system/SysDicController.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/system/SysDicController.java index 90dae73e..985beb99 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/system/SysDicController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/system/SysDicController.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.web.handler.admin.system; +package com.chatopera.cc.app.handler.admin.system; import java.util.Date; import java.util.List; @@ -22,8 +22,8 @@ import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; -import com.chatopera.cc.webim.service.cache.CacheHelper; -import com.chatopera.cc.webim.service.repository.SysDicRepository; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.repository.SysDicRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort.Direction; @@ -33,8 +33,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.webim.web.handler.Handler; -import com.chatopera.cc.webim.web.model.SysDic; +import com.chatopera.cc.app.handler.Handler; +import com.chatopera.cc.app.model.SysDic; @Controller @RequestMapping("/admin/sysdic") diff --git a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/system/TemplateController.java b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/system/TemplateController.java similarity index 89% rename from contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/system/TemplateController.java rename to contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/system/TemplateController.java index e7ee92e3..49c76a0e 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/webim/web/handler/admin/system/TemplateController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/app/handler/admin/system/TemplateController.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.chatopera.cc.webim.web.handler.admin.system; +package com.chatopera.cc.app.handler.admin.system; import java.text.SimpleDateFormat; import java.util.Date; @@ -33,16 +33,16 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; -import com.chatopera.cc.core.UKDataContext; +import com.chatopera.cc.app.basic.MainContext; import com.chatopera.cc.util.Menu; -import com.chatopera.cc.util.UKTools; -import com.chatopera.cc.webim.service.cache.CacheHelper; -import com.chatopera.cc.webim.service.repository.SysDicRepository; -import com.chatopera.cc.webim.service.repository.TemplateRepository; -import com.chatopera.cc.webim.web.handler.Handler; -import com.chatopera.cc.webim.web.model.SysDic; -import com.chatopera.cc.webim.web.model.Template; -import com.chatopera.cc.webim.web.model.UKeFuDic; +import com.chatopera.cc.app.basic.MainUtils; +import com.chatopera.cc.app.cache.CacheHelper; +import com.chatopera.cc.app.persistence.repository.SysDicRepository; +import com.chatopera.cc.app.persistence.repository.TemplateRepository; +import com.chatopera.cc.app.handler.Handler; +import com.chatopera.cc.app.model.SysDic; +import com.chatopera.cc.app.model.Template; +import com.chatopera.cc.app.model.UKeFuDic; @Controller @RequestMapping("/admin/template") @@ -58,7 +58,7 @@ public class TemplateController extends Handler{ @RequestMapping("/index") @Menu(type = "admin" , subtype = "template" , access = false , admin = true) public ModelAndView index(ModelMap map , HttpServletRequest request) { - map.addAttribute("sysDicList", UKeFuDic.getInstance().getDic(UKDataContext.UKEFU_SYSTEM_DIC)); + map.addAttribute("sysDicList", UKeFuDic.getInstance().getDic(MainContext.UKEFU_SYSTEM_DIC)); return request(super.createAdminTempletResponse("/admin/system/template/index")); } @@ -67,7 +67,7 @@ public class TemplateController extends Handler{ public void expall(ModelMap map , HttpServletRequest request , HttpServletResponse response) throws Exception { List