From 15d0063ec21cf5ebcb9e190e8c0f165790703c8c Mon Sep 17 00:00:00 2001 From: Hai Liang Wang Date: Thu, 5 Dec 2019 08:43:45 +0800 Subject: [PATCH] Enhance entim, visitor comments, health metric api, clean container script, etc. --- contact-center/Dockerfile | 2 +- contact-center/app/pom.xml | 4 + .../admin/config/SystemConfigController.java | 2 +- .../controller/apps/ContactsController.java | 15 +- .../controller/apps/CustomerController.java | 11 +- .../cc/controller/apps/IMController.java | 1 + .../apps/service/AgentSummaryController.java | 8 +- .../service/ProcessedSummaryController.java | 4 +- .../com/chatopera/cc/proxy/UserProxy.java | 11 +- .../src/main/resources/static/css/entim.css | 2 + .../static/fonts/csfont/iconfont.eot | Bin 4576 -> 5116 bytes .../main/resources/static/im/css/ukefu.css | 6 +- .../resources/static/im/img/evaluationm.png | Bin 0 -> 1138 bytes .../templates/admin/config/index.html | 2 +- .../templates/admin/webim/index.html | 4 +- .../templates/admin/webim/invote.html | 2 +- .../templates/admin/webim/profile.html | 2 +- .../apps/business/contacts/edit.html | 1 + .../apps/business/contacts/index.html | 8 +- .../apps/business/customer/edit.html | 1 + .../apps/business/customer/index.html | 6 +- .../templates/apps/entim/group/index.html | 1 + .../resources/templates/apps/entim/index.html | 1 + .../resources/templates/apps/im/index.html | 2 + .../resources/templates/apps/im/mobile.html | 194 +++++++++++++++++- .../main/resources/templates/apps/index.html | 2 +- .../templates/apps/service/history/index.html | 72 +++---- .../apps/service/processed/index.html | 107 +++++----- .../templates/apps/service/summary/index.html | 113 +++++----- scripts/clean.container.sh | 31 +++ 30 files changed, 426 insertions(+), 189 deletions(-) create mode 100644 contact-center/app/src/main/resources/static/im/img/evaluationm.png create mode 100755 scripts/clean.container.sh diff --git a/contact-center/Dockerfile b/contact-center/Dockerfile index bda6859b..fe4493d0 100644 --- a/contact-center/Dockerfile +++ b/contact-center/Dockerfile @@ -19,7 +19,7 @@ RUN chmod +x /opt/install-corretto-8.sh && /opt/install-corretto-8.sh # install other lib and configure timezone RUN apt-get update && \ - apt-get install --no-install-recommends -y tzdata mysql-client-5.7 zip unzip vim-tiny libfontconfig1 libfreetype6 && \ + apt-get install --no-install-recommends -y tzdata iputils-ping mysql-client-5.7 zip unzip vim-tiny libfontconfig1 libfreetype6 && \ ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \ DEBIAN_FRONTEND=noninteractive dpkg-reconfigure --frontend noninteractive tzdata && \ rm -rf /var/lib/apt/lists/* diff --git a/contact-center/app/pom.xml b/contact-center/app/pom.xml index 5eef9af8..93ab3eb1 100644 --- a/contact-center/app/pom.xml +++ b/contact-center/app/pom.xml @@ -145,6 +145,10 @@ org.springframework.boot spring-boot-starter-thymeleaf + + org.springframework.boot + spring-boot-starter-actuator + commons-beanutils commons-beanutils diff --git a/contact-center/app/src/main/java/com/chatopera/cc/controller/admin/config/SystemConfigController.java b/contact-center/app/src/main/java/com/chatopera/cc/controller/admin/config/SystemConfigController.java index 5ee71363..6c9c596f 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/controller/admin/config/SystemConfigController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/controller/admin/config/SystemConfigController.java @@ -239,7 +239,7 @@ public class SystemConfigController extends Handler { systemConfig.setConsolelogo(super.saveImageFileWithMultipart(consolelogo)); } if (favlogo != null && StringUtils.isNotBlank( - favlogo.getOriginalFilename()) && consolelogo.getOriginalFilename().lastIndexOf(".") > 0) { + favlogo.getOriginalFilename()) && favlogo.getOriginalFilename().lastIndexOf(".") > 0) { systemConfig.setFavlogo(super.saveImageFileWithMultipart(favlogo)); } diff --git a/contact-center/app/src/main/java/com/chatopera/cc/controller/apps/ContactsController.java b/contact-center/app/src/main/java/com/chatopera/cc/controller/apps/ContactsController.java index 1bc5914d..b49aa9db 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/controller/apps/ContactsController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/controller/apps/ContactsController.java @@ -242,14 +242,14 @@ public class ContactsController extends Handler { @RequestMapping("/delete") @Menu(type = "contacts", subtype = "contacts") - public ModelAndView delete(HttpServletRequest request, @Valid Contacts contacts, @Valid String p) { + public ModelAndView delete(HttpServletRequest request, @Valid Contacts contacts, @Valid String p, @Valid String ckind) { if (contacts != null) { contacts = contactsRes.findOne(contacts.getId()); contacts.setDatastatus(true); //客户和联系人都是 逻辑删除 contactsRes.save(contacts); } return request(super.createRequestPageTempletResponse( - "redirect:/apps/contacts/index.html?p=" + p + "&ckind=" + contacts.getCkind())); + "redirect:/apps/contacts/index.html?p=" + p + "&ckind=" + ckind)); } @RequestMapping("/add") @@ -296,8 +296,9 @@ public class ContactsController extends Handler { @RequestMapping("/edit") @Menu(type = "contacts", subtype = "contacts") - public ModelAndView edit(ModelMap map, HttpServletRequest request, @Valid String id) { + public ModelAndView edit(ModelMap map, HttpServletRequest request, @Valid String id, @Valid String ckind) { map.addAttribute("contacts", contactsRes.findOne(id)); + map.addAttribute("ckindId", ckind); return request(super.createRequestPageTempletResponse("/apps/business/contacts/edit")); } @@ -350,7 +351,7 @@ public class ContactsController extends Handler { @RequestMapping("/update") @Menu(type = "contacts", subtype = "contacts") - public ModelAndView update(HttpServletRequest request, @Valid Contacts contacts) { + public ModelAndView update(HttpServletRequest request, @Valid Contacts contacts , @Valid String ckindId) { final User logined = super.getUser(request); final String orgi = logined.getOrgi(); Contacts data = contactsRes.findOne(contacts.getId()); @@ -372,13 +373,13 @@ public class ContactsController extends Handler { } else { //无修改,直接点击确定 return request(super.createRequestPageTempletResponse( - "redirect:/apps/contacts/index.html?ckind=" + contacts.getCkind())); + "redirect:/apps/contacts/index.html?ckind=" + ckindId)); } } else { logger.info("[contacts edit] errer :The same skypeid exists"); msg = "edit_contacts_fail"; return request(super.createRequestPageTempletResponse( - "redirect:/apps/contacts/index.html?ckind=" + contacts.getCkind() + "&msg=" + msg)); + "redirect:/apps/contacts/index.html?ckind=" + ckindId + "&msg=" + msg)); } @@ -411,7 +412,7 @@ public class ContactsController extends Handler { contactsRes.save(contacts); } return request(super.createRequestPageTempletResponse( - "redirect:/apps/contacts/index.html?ckind=" + contacts.getCkind() + "&msg=" + msg)); + "redirect:/apps/contacts/index.html?ckind=" + ckindId + "&msg=" + msg)); } diff --git a/contact-center/app/src/main/java/com/chatopera/cc/controller/apps/CustomerController.java b/contact-center/app/src/main/java/com/chatopera/cc/controller/apps/CustomerController.java index 78ab3358..1ed0590e 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/controller/apps/CustomerController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/controller/apps/CustomerController.java @@ -262,25 +262,26 @@ public class CustomerController extends Handler { @RequestMapping("/delete") @Menu(type = "customer", subtype = "customer") - public ModelAndView delete(HttpServletRequest request, @Valid EntCustomer entCustomer, @Valid String p) { + public ModelAndView delete(HttpServletRequest request, @Valid EntCustomer entCustomer, @Valid String p, @Valid String ekind) { if (entCustomer != null) { entCustomer = entCustomerRes.findOne(entCustomer.getId()); entCustomer.setDatastatus(true); //客户和联系人都是 逻辑删除 entCustomerRes.save(entCustomer); } - return request(super.createRequestPageTempletResponse("redirect:/apps/customer/index.html?p=" + p + "&ekind=" + entCustomer.getEkind())); + return request(super.createRequestPageTempletResponse("redirect:/apps/customer/index.html?p=" + p + "&ekind=" + ekind)); } @RequestMapping("/edit") @Menu(type = "customer", subtype = "customer") - public ModelAndView edit(ModelMap map, HttpServletRequest request, @Valid String id) { + public ModelAndView edit(ModelMap map, HttpServletRequest request, @Valid String id, @Valid String ekind) { map.addAttribute("entCustomer", entCustomerRes.findOne(id)); + map.addAttribute("ekindId", ekind); return request(super.createRequestPageTempletResponse("/apps/business/customer/edit")); } @RequestMapping("/update") @Menu(type = "customer", subtype = "customer") - public ModelAndView update(HttpServletRequest request, @Valid CustomerGroupForm customerGroupForm) { + public ModelAndView update(HttpServletRequest request, @Valid CustomerGroupForm customerGroupForm, @Valid String ekindId) { final User logined = super.getUser(request); EntCustomer customer = entCustomerRes.findOne(customerGroupForm.getEntcustomer().getId()); String msg = ""; @@ -306,7 +307,7 @@ public class CustomerController extends Handler { customerGroupForm.getEntcustomer().setPinyin(PinYinTools.getInstance().getFirstPinYin(customerGroupForm.getEntcustomer().getName())); entCustomerRes.save(customerGroupForm.getEntcustomer()); - return request(super.createRequestPageTempletResponse("redirect:/apps/customer/index.html?ekind=" + customerGroupForm.getEntcustomer().getEkind() + "&msg=" + msg)); + return request(super.createRequestPageTempletResponse("redirect:/apps/customer/index.html?ekind=" + ekindId + "&msg=" + msg)); } @RequestMapping("/imp") diff --git a/contact-center/app/src/main/java/com/chatopera/cc/controller/apps/IMController.java b/contact-center/app/src/main/java/com/chatopera/cc/controller/apps/IMController.java index 55ac7867..34537204 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/controller/apps/IMController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/controller/apps/IMController.java @@ -319,6 +319,7 @@ public class IMController extends Handler { data.setWlsid(sid); data.setWlsystem_name(system_name); data.setName(username + '@' + company_name); + data.setShares("all"); data.setPinyin(PinYinTools.getInstance().getFirstPinYin(username)); contactsRes.save(data); diff --git a/contact-center/app/src/main/java/com/chatopera/cc/controller/apps/service/AgentSummaryController.java b/contact-center/app/src/main/java/com/chatopera/cc/controller/apps/service/AgentSummaryController.java index 3e29bc53..4eb167f3 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/controller/apps/service/AgentSummaryController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/controller/apps/service/AgentSummaryController.java @@ -96,11 +96,11 @@ public class AgentSummaryController extends Handler{ list.add(cb.equal(root.get("process").as(boolean.class), 0)) ; list.add(cb.notEqual(root.get("channel").as(String.class), MainContext.ChannelType.PHONE.toString())) ; try { - if(!StringUtils.isBlank(begin) && begin.matches("[\\d]{4}-[\\d]{2}-[\\d]{2} [\\d]{2}:[\\d]{2}:[\\d]{2}")){ - list.add(cb.greaterThanOrEqualTo(root.get("createtime").as(Date.class), MainUtils.dateFormate.parse(begin))) ; + if(!StringUtils.isBlank(begin) && begin.matches("[\\d]{4}-[\\d]{2}-[\\d]{2}")){ + list.add(cb.greaterThanOrEqualTo(root.get("createtime").as(Date.class),MainUtils.simpleDateFormat.parse(begin))); } - if(!StringUtils.isBlank(end) && end.matches("[\\d]{4}-[\\d]{2}-[\\d]{2} [\\d]{2}:[\\d]{2}:[\\d]{2}")){ - list.add(cb.lessThanOrEqualTo(root.get("createtime").as(Date.class), MainUtils.dateFormate.parse(end))) ; + if(!StringUtils.isBlank(end) && end.matches("[\\d]{4}-[\\d]{2}-[\\d]{2}")){ + list.add(cb.lessThanOrEqualTo(root.get("createtime").as(Date.class),MainUtils.dateFormate.parse(end + " 23:59:59"))); } } catch (ParseException e) { e.printStackTrace(); diff --git a/contact-center/app/src/main/java/com/chatopera/cc/controller/apps/service/ProcessedSummaryController.java b/contact-center/app/src/main/java/com/chatopera/cc/controller/apps/service/ProcessedSummaryController.java index e83be7fe..1bbd2112 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/controller/apps/service/ProcessedSummaryController.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/controller/apps/service/ProcessedSummaryController.java @@ -102,10 +102,10 @@ public class ProcessedSummaryController extends Handler{ } try { if(!StringUtils.isBlank(begin) && begin.matches("[\\d]{4}-[\\d]{2}-[\\d]{2}")) { - list.add(cb.greaterThanOrEqualTo(root.get("createtime").as(Date.class), MainUtils.simpleDateFormat.parse(begin))) ; + list.add(cb.greaterThanOrEqualTo(root.get("createtime").as(Date.class), MainUtils.simpleDateFormat.parse(begin))); } if(!StringUtils.isBlank(end) && end.matches("[\\d]{4}-[\\d]{2}-[\\d]{2}")){ - list.add(cb.lessThanOrEqualTo(root.get("createtime").as(Date.class), MainUtils.dateFormate.parse(end + " 23:59:59"))); + list.add(cb.lessThanOrEqualTo(root.get("createtime").as(Date.class),MainUtils.dateFormate.parse(end + " 23:59:59"))); } } catch (Exception e) { e.printStackTrace(); diff --git a/contact-center/app/src/main/java/com/chatopera/cc/proxy/UserProxy.java b/contact-center/app/src/main/java/com/chatopera/cc/proxy/UserProxy.java index 17246da2..5688e6b7 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/proxy/UserProxy.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/proxy/UserProxy.java @@ -502,7 +502,7 @@ public class UserProxy { * * @param user */ - public void processAffiliates(final User user, final Map skills, final Organ organ) { + public void processAffiliates(final User user, final Organ organ) { if (organ == null) { return; } @@ -513,15 +513,13 @@ public class UserProxy { user.getAffiliates().add(organ.getId()); - if (organ.isSkill()) skills.put(organ.getId(), organ.getName()); - // 获得子部门 List y = organRes.findByOrgiAndParent(user.getOrgi(), organ.getId()); for (Organ x : y) { try { // 递归调用 - processAffiliates(user, skills, x); + processAffiliates(user, x); } catch (Exception e) { logger.error("processAffiliates", e); } @@ -544,9 +542,12 @@ public class UserProxy { // 添加直属部门到organs final Organ o = organRes.findOne(organ.getOrgan()); user.getOrgans().put(organ.getOrgan(), o); + if (o.isSkill()) { + skills.put(o.getId(), o.getName()); + } // 添加部门及附属部门 - processAffiliates(user, skills, o); + processAffiliates(user, o); } user.setSkills(skills); diff --git a/contact-center/app/src/main/resources/static/css/entim.css b/contact-center/app/src/main/resources/static/css/entim.css index 3ba0b04c..e36214a8 100644 --- a/contact-center/app/src/main/resources/static/css/entim.css +++ b/contact-center/app/src/main/resources/static/css/entim.css @@ -512,6 +512,8 @@ input,textarea{ border: 1px solid #DDDDDD; float: left; min-width: 25px; + max-width: 400px; + word-break: break-all; } .chatting-left div.chat-content *{ background-color: #EDEDED !important; diff --git a/contact-center/app/src/main/resources/static/fonts/csfont/iconfont.eot b/contact-center/app/src/main/resources/static/fonts/csfont/iconfont.eot index e959ba54604c98e4d18b0a2e097fc0cb81f61db3..95223e15892906df3df374ba78842859991b534d 100644 GIT binary patch delta 1190 zcmY*XO>7%Q6n<}ZcXqvNuM>N{-lVqUe;YSVpmx`W#35>0MM6RasZ{)=0jo4kN*srf zCIKoOiA$xPDkFr%g+qlzgb*kaP^l6^aIQG?0*9y+Y2^dr1QLf3^Tq}VX8g^(`R2X% zeY@TVnZp7<3AC@mSULBFYTBh6w1b3MT-#1E=;=6?Ga&vRXz1sVW`rW56U=KRq;v!CV zlI)_ydPkk>Z0hXZKQgyL>PO?W>r}A^GVD;91w+Kh9`h9Mn3wXVym@c2>+hcL^#D8| zcGOFC{$%k|P7<8+UAs_Wsg~tAj6u|aJBq4@hG#j8FlVeY~=CspO z2v8G}8-Ut@H#&f@?HwC{B*04zAfDcv8h~WMn;(D-fVVh6jl4jY#0AI|bm`v{5bvNr zKF3d4ku9-%(i!Q7bWfgDxbnWz-Tz%~U|XTL{jn@dFTw=81aHHK@CiV!keR?j|5tTS zRorp{qi)rWo{UmpM`y4~OvF+n7FSJF3xb)!I#TW=ni#}FUR39~$|qB8# zVyS3$Ix##pU(1z(aU*6X=kjQ$n4;%Cd;Rg+EAJ&WnIX%c&BaxHEPN{BYah?1Of8nK zXC*{Q8jjsuykPpAbLB{7WT<2)VM~((Zay^^tCfps&V5|{O{G=I6e`vDTq^GdWX%dI z{zrzLN~C;lL^HRIV9*W*jkg%j#1hXu`oud=7P3wfhs^QJvzRnu!EDhCF-%6!oG!P= zW|Pais>}G=^P{y`<@6kqK|2&kP83Fp44q=GJQf_b$Xu>CwN-g~$$tod)xQCn Co!2D* delta 653 zcmY*WO=uHA7=7RDPqRs?X$1|bLPbH46#S!#6|5lCt57{@WQlDO&1ORlw3R|4da4zy z@zhfh=~>7r&_l&zZ^eV&V!6~;5WRT`QCo>-dpz9sm=+vGXzWyt-9lO zetUUib@FL_5s)PSxATEtz1a4?0m>#W6v~UUZ@zxt0_F(X7g?Rc^f#8 zrQxk=_^7u3;l&Xk^^5~;2w*jO4cu|Q^jOZWVg9RRpCP-kyq&*y@X8M)n4R_c=h3Tw zcV4YKyH`t4n)*zR8WgQz6jveMo|64!;4hASC6pB&8WfG6VZtJF{q|Pj+UiY77 znsO2PXQtIAvBRBTU_dn*Mlca|CW48rMu&V;V%ES zfr-a@Cs}zQJL-m7Q9IUkJ8rMpdq6AY_|huH_TytoQDTWLj<_-)G4UiW2}#NzhUde% XhqL8yJ_swNS~yp#6q+v&m1*)Dp_z(g diff --git a/contact-center/app/src/main/resources/static/im/css/ukefu.css b/contact-center/app/src/main/resources/static/im/css/ukefu.css index 40e46e25..05c8ce53 100644 --- a/contact-center/app/src/main/resources/static/im/css/ukefu.css +++ b/contact-center/app/src/main/resources/static/im/css/ukefu.css @@ -418,7 +418,7 @@ input,textarea{ position: absolute; right: 5px; width:70px; - top:5px; + top:9px; } .mobile-chat-bottom .send-btn{ width: 96px; @@ -467,8 +467,8 @@ input,textarea{ } .mobile-chat-bottom #message { position: absolute; - left: 45px; - width: calc(100% - 130px); + left: 80px; + width: calc(100% - 160px); border:1px solid #cccccc; font-size:16px; height:40px; diff --git a/contact-center/app/src/main/resources/static/im/img/evaluationm.png b/contact-center/app/src/main/resources/static/im/img/evaluationm.png new file mode 100644 index 0000000000000000000000000000000000000000..da0f99b90cfb97ce11fcb2ea20777411a289da74 GIT binary patch literal 1138 zcmV-&1daQNP)<&8$s0iqQzD#eW zf;C1|P}DREirQ+Qx-(mdV(f!fvok40K`dx(v?%S)?97on?yPGv-JMM$zIfku@44sv z?zv~q`4j%*MRSes<+2+fcqJHBA!vU`vHbB|e9Z~K&lzJ(SVO=c05S}8f@oB=%In&N zXd5674&XI~gY757%-QY?KT4oo3_PRR&SULBv<2Xs#tsH{6Z4Zw$=%Ty$jj@mgJ}bR zO{(p@nie7vpprAz6R;72zhlPts;|6orpxc@sL~XGBdYE6&kVr1WtUeeoB$v?I9QIV z7I=#P5P_Buu!M;}R6J#r#=kk$cy<;5U$0;3S7{Q!Q2^J~jR{|ZaSem-)NFTO(hYr6 z-^HLI)NE%#0_!!~d8;YFnf`1cBlu7d(m>bYa`CLGuM#9~1@mnLe4*IRs&l1RX2GZM z$J+ir!Q#y-^ArPDNS_RTLbKhWwg6&d>D;5>-kA<&!g!`}4+Oqai;jGbXvLSB7eLyg zO0xSOAkF}Y?^i8%@0@C2A)X*E?4|%-Vc80V;W!ho)-3n^`2>#7R`S_(#Qb(DfZq$f zm#JZJA_Q&gw99)I0wC_7sQ_d^&ooYfFsfS4)`b9w+qA;LRa83mZPO=+0P@BJLYh`f zkmL zWj+Jwv}%`E%nu;C{lz|umFJfxPox5fo*`%42f|(k4yr8fri8<-!2Z?_{D5k^FDBVH z)dLk%ACf{tPB$X#REo~0t%Az^Xfz{yUaF>~{@=0&8V%|Y(Vz4N5r!43Je~v+4=e%N zEGJ;A;E~6AvoQ5Lh-piM<4JjQsctG}b~Q0S2tpycA@Bp3OCY$BJwqo#79az_c?5h! zf<~lJ^-NDxQ_xR^-bELM!65+G)`A}gVH%9302UK)5Q29rMfb3m z(>Fm-9~iv^EN5U*?MxM*uK_+H1brX_`vtupA?;+~MgY?w90y}D5c!pB;#ZLwAkQ>j z0G>!q*0P30r;kIfPtGs@GYITd!W@
- + 上传图片
diff --git a/contact-center/app/src/main/resources/templates/admin/webim/index.html b/contact-center/app/src/main/resources/templates/admin/webim/index.html index 401ce65e..167e5190 100644 --- a/contact-center/app/src/main/resources/templates/admin/webim/index.html +++ b/contact-center/app/src/main/resources/templates/admin/webim/index.html @@ -318,7 +318,7 @@ -
2、自定义LOGO
+
2、自定义LOGO (建议尺寸:220*60)
-
3、自定义客服图标
+
3、自定义客服图标 (建议尺寸:80*80)
-
7、自定义访客邀请框背景图片
+
7、自定义访客邀请框背景图片 (建议尺寸:273*230)
-
7、自定义形象图片
+
7、自定义形象图片 (建议尺寸:276*236)