add cdr campaign filter
This commit is contained in:
parent
1acb437c17
commit
e72d4b5bc0
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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>
|
||||
|
Loading…
x
Reference in New Issue
Block a user