From e72d4b5bc0a13f53b95ef7730f441d5cabc103b2 Mon Sep 17 00:00:00 2001 From: Shaun Chyxion Date: Mon, 25 Oct 2021 00:22:30 +0800 Subject: [PATCH] add cdr campaign filter --- .../CallDetailRecordController.java | 26 +++++++++++++++---- .../form/CallSatisfactionListCtrlrReq.java | 1 + .../yo/cms/form/FormListCallDetailRecord.java | 1 + .../app/templates/call-detail-record/list.hbs | 11 ++++++++ 4 files changed, 34 insertions(+), 5 deletions(-) diff --git a/cms/src/main/java/com/pudonghot/yo/cms/controller/CallDetailRecordController.java b/cms/src/main/java/com/pudonghot/yo/cms/controller/CallDetailRecordController.java index bf97b72b..1bc42218 100644 --- a/cms/src/main/java/com/pudonghot/yo/cms/controller/CallDetailRecordController.java +++ b/cms/src/main/java/com/pudonghot/yo/cms/controller/CallDetailRecordController.java @@ -2,22 +2,27 @@ package com.pudonghot.yo.cms.controller; import lombok.val; import java.util.List; +import java.util.Objects; import lombok.extern.slf4j.Slf4j; import java.util.function.Function; import java.util.function.Supplier; import java.util.function.BiFunction; import me.chyxion.tigon.mybatis.Search; +import org.springframework.util.Assert; import com.wacai.tigon.model.ViewModel; import org.apache.commons.lang3.StringUtils; import javax.validation.constraints.NotNull; import com.pudonghot.yo.util.PhoneNumberUtils; import com.wacai.tigon.web.annotation.ListApi; +import com.pudonghot.yo.model.domain.Campaign; import com.wacai.tigon.web.controller.ArgQuery; import com.pudonghot.yo.cms.auth.SessionAbility; import com.wacai.tigon.web.annotation.FilterCol; +import org.apache.commons.lang3.time.DateUtils; import org.springframework.stereotype.Controller; import com.pudonghot.yo.basic.model.PrivacyLevel; import com.pudonghot.yo.mapper.CallRecordingMapper; +import com.pudonghot.yo.cms.service.CampaignService; import com.pudonghot.yo.cms.model.HangupCauseMapping; import com.pudonghot.yo.model.dbobject.CallDetailReport; import com.pudonghot.yo.model.domain.CallDetailRecordAll; @@ -25,10 +30,10 @@ import org.springframework.beans.factory.annotation.Value; import com.pudonghot.yo.cms.form.FormListCallDetailRecord; import com.wacai.tigon.web.controller.BaseQueryController; import org.springframework.validation.annotation.Validated; -import com.pudonghot.yo.cms.service.CallDetailRecordService; -import com.pudonghot.yo.cellphone.privacy.NumberPrivacyUtils; import org.springframework.web.bind.annotation.PostMapping; +import com.pudonghot.yo.cms.service.CallDetailRecordService; import org.springframework.web.bind.annotation.RequestParam; +import com.pudonghot.yo.cellphone.privacy.NumberPrivacyUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import static com.pudonghot.yo.model.domain.CallDetailRecord.*; @@ -46,7 +51,8 @@ import com.pudonghot.yo.cms.service.request.CallDetailRecordDeleteServReq; }, filterCols = { @FilterCol(param = DIAL_TYPE, type = CallDetailRecordAll.DialType.class), - @FilterCol(param = CALL_TYPE, type = CallDetailRecordAll.CallType.class) + @FilterCol(param = CALL_TYPE, type = CallDetailRecordAll.CallType.class), + @FilterCol(param = CAMPAIGN_ID, type = Integer.class) }) @Slf4j @RequestMapping("/cms/api/call-detail-record") @@ -56,6 +62,8 @@ public class CallDetailRecordController @Autowired private CallRecordingMapper callRecordingMapper; + @Autowired + private CampaignService campaignService; @Value("${yo.cms.recording-server.base-path}") private String fileServerBasePath; @@ -91,9 +99,15 @@ public class CallDetailRecordController } } else { - search.gt(START_STAMP, form.getStartDate()); - search.lt(START_STAMP, form.getEndDate()); + val startDate = form.getStartDate(); + val endDate = form.getEndDate(); + Assert.state(DateUtils.addDays(startDate, 14).after(endDate), + "查询时间范围不能大于14天"); + search.gt(START_STAMP, startDate); + search.lt(START_STAMP, endDate); + + doSearch(search::eq, CAMPAIGN_ID, form::getCampaignId, Objects::nonNull); doSearch(search::eq, ACCOUNT, form::getAccount, StringUtils::isNotBlank); doSearch(search::eq, CALLER_NUMBER, form::getCallerNumber, StringUtils::isNotBlank); doSearch(search::eq, CALLED_NUMBER, form::getCalledNumber, StringUtils::isNotBlank); @@ -132,6 +146,8 @@ public class CallDetailRecordController if (arg.getType() == ArgQuery.Type.LIST) { val maskNumber = !getRoles().contains("NO_NUMBER_PRIVACY"); val vmList = (ViewModel>>) arg.getResult(); + vmList.attr("campaigns", campaignService.list( + new Search(Campaign.TENANT_ID, getTenantId()))); vmList.setAttr("dialTypeList", CallDetailRecordAll.DialType.values()); vmList.setAttr("callTypeList", CallDetailRecordAll.CallType.values()); vmList.attr("numberPrivacy", maskNumber); diff --git a/cms/src/main/java/com/pudonghot/yo/cms/form/CallSatisfactionListCtrlrReq.java b/cms/src/main/java/com/pudonghot/yo/cms/form/CallSatisfactionListCtrlrReq.java index 24aa5c9c..83d953b6 100644 --- a/cms/src/main/java/com/pudonghot/yo/cms/form/CallSatisfactionListCtrlrReq.java +++ b/cms/src/main/java/com/pudonghot/yo/cms/form/CallSatisfactionListCtrlrReq.java @@ -15,6 +15,7 @@ public class CallSatisfactionListCtrlrReq extends FormList { private Date startDate; private Date endDate; private String connId; + private Integer campaignId; private String account; private String callerNumber; private String calledNumber; diff --git a/cms/src/main/java/com/pudonghot/yo/cms/form/FormListCallDetailRecord.java b/cms/src/main/java/com/pudonghot/yo/cms/form/FormListCallDetailRecord.java index ce2b53f2..df563b6b 100644 --- a/cms/src/main/java/com/pudonghot/yo/cms/form/FormListCallDetailRecord.java +++ b/cms/src/main/java/com/pudonghot/yo/cms/form/FormListCallDetailRecord.java @@ -17,6 +17,7 @@ public class FormListCallDetailRecord extends FormList { private Date startDate; @NotNull private Date endDate; + private Integer campaignId; private String connId; private String account; private String callerNumber; diff --git a/web/cms/app/templates/call-detail-record/list.hbs b/web/cms/app/templates/call-detail-record/list.hbs index 74a5449f..cffb488a 100644 --- a/web/cms/app/templates/call-detail-record/list.hbs +++ b/web/cms/app/templates/call-detail-record/list.hbs @@ -114,6 +114,14 @@ 通话时长 + + {{th-filter name='campaignId' + text='外呼活动' + options=model.campaigns + value-field='id' + text-field='name' + }} + 挂断原因 @@ -174,6 +182,9 @@ {{sec-to-time it.billsec}} + + {{option-text model.campaigns it.campaignId 'id' 'name'}} + {{it.hangupCause}}