add cdr campaign filter

This commit is contained in:
Shaun Chyxion 2021-10-25 00:22:30 +08:00
parent 1acb437c17
commit e72d4b5bc0
4 changed files with 34 additions and 5 deletions

View File

@ -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<List<ViewModel<CallDetailRecordAll>>>) 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);

View File

@ -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;

View File

@ -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;

View File

@ -114,6 +114,14 @@
<th>
通话时长
</th>
<th>
{{th-filter name='campaignId'
text='外呼活动'
options=model.campaigns
value-field='id'
text-field='name'
}}
</th>
<th>
挂断原因
</th>
@ -174,6 +182,9 @@
<td>
{{sec-to-time it.billsec}}
</td>
<td>
{{option-text model.campaigns it.campaignId 'id' 'name'}}
</td>
<td>
{{it.hangupCause}}
</td>