From f07e6ca849d2292003d8254f579de802a9b36b0a Mon Sep 17 00:00:00 2001 From: Hai Liang Wang Date: Wed, 8 Sep 2021 09:44:58 +0800 Subject: [PATCH] https://github.com/chatopera/cskefu/issues/466 enable multi text ads --- .../com/chatopera/cc/basic/MainUtils.java | 25 +++++++++---- .../cc/controller/apps/IMController.java | 36 ++++++++++++++----- .../templates/apps/im/chatbot/index.pug | 22 ++++++++---- .../resources/templates/apps/im/index.pug | 22 ++++++++---- .../resources/templates/apps/im/point.pug | 9 +++-- 5 files changed, 83 insertions(+), 31 deletions(-) diff --git a/contact-center/app/src/main/java/com/chatopera/cc/basic/MainUtils.java b/contact-center/app/src/main/java/com/chatopera/cc/basic/MainUtils.java index d733a6a6..77318df3 100644 --- a/contact-center/app/src/main/java/com/chatopera/cc/basic/MainUtils.java +++ b/contact-center/app/src/main/java/com/chatopera/cc/basic/MainUtils.java @@ -901,13 +901,14 @@ public class MainUtils { } /** - * 按照权重获取广告 + * 获得所有广告 * * @param adpos + * @param skill + * @param orgi * @return */ - @SuppressWarnings("unchecked") - public static AdType getPointAdv(String adpos, String skill, String orgi) { + public static List getPointAdvs(String adpos, String skill, String orgi) { List adTypeList = new ArrayList(); List cacheAdTypeList = MainContext.getCache().findOneSystemListByIdAndOrgi( Constants.CSKEFU_SYSTEM_ADV + "_" + skill, orgi); @@ -934,7 +935,19 @@ public class MainUtils { } } } - return weitht(adTypeList); + return adTypeList; + } + + /** + * 按照权重获取广告 + * + * @param adpos + * @return + */ + @SuppressWarnings("unchecked") + public static AdType getPointAdv(String adpos, String skill, String orgi) { + List ads = getPointAdvs(adpos, skill, orgi); + return weitht(ads); } private static Random random = new Random(); @@ -945,7 +958,7 @@ public class MainUtils { * @param adList * @return */ - private static AdType weitht(List adList) { + public static AdType weitht(List adList) { AdType adType = null; int weight = 0; if (adList != null && adList.size() > 0) { @@ -1003,7 +1016,7 @@ public class MainUtils { config.setCaching(false); config.setMode(Pug4J.Mode.XML); config.setPrettyPrint(true); - String retValue = config.renderTemplate(template,values); + String retValue = config.renderTemplate(template, values); return retValue; } 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 8b91a69d..22c4fcde 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 @@ -33,7 +33,6 @@ import com.chatopera.cc.persistence.repository.*; import com.chatopera.cc.proxy.OnlineUserProxy; import com.chatopera.cc.socketio.util.RichMediaUtils; import com.chatopera.cc.util.*; - import org.apache.commons.io.FileUtils; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; @@ -67,10 +66,7 @@ import java.io.File; import java.io.IOException; import java.net.URLDecoder; import java.net.URLEncoder; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; +import java.util.*; @Controller @RequestMapping("/im") @@ -333,9 +329,31 @@ public class IMController extends Handler { // 用户的浏览历史会有很大的数据量,目前强制开启 userHistoryRes.save(userHistory); - view.addObject( - "pointAd", - MainUtils.getPointAdv(MainContext.AdPosEnum.POINT.toString(), invite.getConsult_skill_fixed_id(), Constants.SYSTEM_ORGI)); + /** + * 广告信息 + */ + List ads = MainUtils.getPointAdvs(MainContext.AdPosEnum.POINT.toString(), invite.getConsult_skill_fixed_id(), Constants.SYSTEM_ORGI); + + if (ads.size() > 0) { + view.addObject( + "pointAds", + ads + ); + view.addObject( + "pointAd", + MainUtils.weitht(ads) + ); + } else { + view.addObject( + "pointAds", + null + ); + view.addObject( + "pointAd", + null + ); + } + view.addObject( "inviteAd", MainUtils.getPointAdv(MainContext.AdPosEnum.INVITE.toString(), invite.getConsult_skill_fixed_id(), Constants.SYSTEM_ORGI)); @@ -947,7 +965,7 @@ public class IMController extends Handler { view.addObject("commentList", Dict.getInstance().getDic(Constants.CSKEFU_SYSTEM_COMMENT_DIC)); view.addObject("commentItemList", Dict.getInstance().getDic(Constants.CSKEFU_SYSTEM_COMMENT_ITEM_DIC)); view.addObject("welcomeAd", MainUtils.getPointAdv(MainContext.AdPosEnum.WELCOME.toString(), skill, orgi)); - view.addObject("imageAd", MainUtils.getPointAdv(MainContext.AdPosEnum.IMAGE.toString(), skill, orgi)); + view.addObject("figureAds", MainUtils.getPointAdvs(MainContext.AdPosEnum.IMAGE.toString(), skill, orgi)); // 确定"接受邀请"被处理后,通知浏览器关闭弹出窗口 OnlineUserProxy.sendWebIMClients(userid, "accept"); diff --git a/contact-center/app/src/main/resources/templates/apps/im/chatbot/index.pug b/contact-center/app/src/main/resources/templates/apps/im/chatbot/index.pug index 021e2b7e..765177a6 100644 --- a/contact-center/app/src/main/resources/templates/apps/im/chatbot/index.pug +++ b/contact-center/app/src/main/resources/templates/apps/im/chatbot/index.pug @@ -389,13 +389,21 @@ html p(style="text-indent:25px;line-height:25px;")= inviteData.dialog_introduction .content-pic(style='width:100%;height:192px;') - if imageAd - if imageAd.adtype == "image" - a(href=imageAd.url, title=imageAd.tiptext, target="_blank") - img(src=imageAd.imgurl, style="max-width:100%;max-height:190px;margin:0px;vertical-align: middle;") - else - div(style="padding:0px 5px 10px 5px;border-bottom:1px solid #dedede;") - a#point_ad_text(href=imageAd.url, title=imageAd.tiptext, target="_blank")= imageAd.content + if figureAds + - var figureAdsNum = 0 + for figureAd in figureAds + if figureAd.adtype == "image" && figureAdsNum < 5 + - figureAdsNum = 6 + a(href=figureAd.url, title=figureAd.tiptext, target="_blank") + img(src=figureAd.imgurl, style="max-width:100%;max-height:190px;margin:0px;vertical-align: middle;") + else if figureAdsNum < 5 + - figureAdsNum = figureAdsNum + 1 + if figureAdsNum == 1 + div(style="padding:4px 5px 1px 7px") + a#point_ad_text(href=figureAd.url, title=figureAd.tiptext, target="_blank")= figureAd.content + else + div(style="padding:1px 5px 1px 7px") + a#point_ad_text(href=figureAd.url, title=figureAd.tiptext, target="_blank")= figureAd.content else if inviteData.dialog_ad img(src="/res/image.html?id=" + inviteData.dialog_ad, style="height:190px;width:100%;") diff --git a/contact-center/app/src/main/resources/templates/apps/im/index.pug b/contact-center/app/src/main/resources/templates/apps/im/index.pug index 0938fa6a..3793c81c 100644 --- a/contact-center/app/src/main/resources/templates/apps/im/index.pug +++ b/contact-center/app/src/main/resources/templates/apps/im/index.pug @@ -431,13 +431,21 @@ html p(style="text-indent:25px;line-height:25px;")= inviteData.dialog_introduction .content-pic(style='width:100%;height:192px;') - if imageAd - if imageAd.adtype == "image" - a(href=imageAd.url, title=imageAd.tiptext, target="_blank") - img(src=imageAd.imgurl, style="max-width:100%;max-height:190px;margin:0px;vertical-align: middle;") - else - div(style="padding:0px 5px 10px 5px;border-bottom:1px solid #dedede;") - a#point_ad_text(href=imageAd.url, title=imageAd.tiptext, target="_blank")= imageAd.content + if figureAds + - var figureAdsNum = 0 + for figureAd in figureAds + if figureAd.adtype == "image" && figureAdsNum < 5 + - figureAdsNum = 6 + a(href=figureAd.url, title=figureAd.tiptext, target="_blank") + img(src=figureAd.imgurl, style="max-width:100%;max-height:190px;margin:0px;vertical-align: middle;") + else if figureAdsNum < 5 + - figureAdsNum = figureAdsNum + 1 + if figureAdsNum == 1 + div(style="padding:4px 5px 1px 7px") + a#point_ad_text(href=figureAd.url, title=figureAd.tiptext, target="_blank")= figureAd.content + else + div(style="padding:1px 5px 1px 7px") + a#point_ad_text(href=figureAd.url, title=figureAd.tiptext, target="_blank")= figureAd.content else if inviteData.dialog_ad img(src="/res/image.html?id=" + inviteData.dialog_ad, style="height:190px;width:100%;") diff --git a/contact-center/app/src/main/resources/templates/apps/im/point.pug b/contact-center/app/src/main/resources/templates/apps/im/point.pug index b8ce2e28..33a072a1 100644 --- a/contact-center/app/src/main/resources/templates/apps/im/point.pug +++ b/contact-center/app/src/main/resources/templates/apps/im/point.pug @@ -66,8 +66,13 @@ else if inviteData.consult_invite_color == "6" a(href=pointAd.url, title=pointAd.tiptext, target="_blank") img(src=baseUrl + pointAd.imgurl, style='max-width:140px;max-height:90px;margin:0 5px;vertical-align: middle;') else - div(style="padding:0px 5px 10px 5px;border-bottom:1px solid #dedede;") - a#point_ad_text(href=pointAd.url, title=pointAd.tiptext, target="_blank")= pointAd.content + // 文本 + for ad in pointAds + - var pointAdsNum = 0 + if ad.adtype == "text" && pointAdsNum <= 5 + - pointAdsNum = pointAdsNum + 1 + div(style="padding:0px 5px 10px 5px;border-bottom:1px solid #dedede;") + a#point_ad_text(href=ad.url, title=ad.tiptext, target="_blank")= ad.content else img(src=baseUrl + '/images/title.jpg', style='width:140px;margin:0 5px;vertical-align: middle;') div(style="padding:10px 5px;text-align:center;color:#555;")= inviteData.skill == true && inviteData.consult_skill_fixed == false && inviteData.consult_skill_msg ? inviteData.consult_skill_msg : ''