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 lombok.val;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
import java.util.function.BiFunction;
|
import java.util.function.BiFunction;
|
||||||
import me.chyxion.tigon.mybatis.Search;
|
import me.chyxion.tigon.mybatis.Search;
|
||||||
|
import org.springframework.util.Assert;
|
||||||
import com.wacai.tigon.model.ViewModel;
|
import com.wacai.tigon.model.ViewModel;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
import com.pudonghot.yo.util.PhoneNumberUtils;
|
import com.pudonghot.yo.util.PhoneNumberUtils;
|
||||||
import com.wacai.tigon.web.annotation.ListApi;
|
import com.wacai.tigon.web.annotation.ListApi;
|
||||||
|
import com.pudonghot.yo.model.domain.Campaign;
|
||||||
import com.wacai.tigon.web.controller.ArgQuery;
|
import com.wacai.tigon.web.controller.ArgQuery;
|
||||||
import com.pudonghot.yo.cms.auth.SessionAbility;
|
import com.pudonghot.yo.cms.auth.SessionAbility;
|
||||||
import com.wacai.tigon.web.annotation.FilterCol;
|
import com.wacai.tigon.web.annotation.FilterCol;
|
||||||
|
import org.apache.commons.lang3.time.DateUtils;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
import com.pudonghot.yo.basic.model.PrivacyLevel;
|
import com.pudonghot.yo.basic.model.PrivacyLevel;
|
||||||
import com.pudonghot.yo.mapper.CallRecordingMapper;
|
import com.pudonghot.yo.mapper.CallRecordingMapper;
|
||||||
|
import com.pudonghot.yo.cms.service.CampaignService;
|
||||||
import com.pudonghot.yo.cms.model.HangupCauseMapping;
|
import com.pudonghot.yo.cms.model.HangupCauseMapping;
|
||||||
import com.pudonghot.yo.model.dbobject.CallDetailReport;
|
import com.pudonghot.yo.model.dbobject.CallDetailReport;
|
||||||
import com.pudonghot.yo.model.domain.CallDetailRecordAll;
|
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.pudonghot.yo.cms.form.FormListCallDetailRecord;
|
||||||
import com.wacai.tigon.web.controller.BaseQueryController;
|
import com.wacai.tigon.web.controller.BaseQueryController;
|
||||||
import org.springframework.validation.annotation.Validated;
|
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 org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import com.pudonghot.yo.cms.service.CallDetailRecordService;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
import com.pudonghot.yo.cellphone.privacy.NumberPrivacyUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import static com.pudonghot.yo.model.domain.CallDetailRecord.*;
|
import static com.pudonghot.yo.model.domain.CallDetailRecord.*;
|
||||||
@ -46,7 +51,8 @@ import com.pudonghot.yo.cms.service.request.CallDetailRecordDeleteServReq;
|
|||||||
},
|
},
|
||||||
filterCols = {
|
filterCols = {
|
||||||
@FilterCol(param = DIAL_TYPE, type = CallDetailRecordAll.DialType.class),
|
@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
|
@Slf4j
|
||||||
@RequestMapping("/cms/api/call-detail-record")
|
@RequestMapping("/cms/api/call-detail-record")
|
||||||
@ -56,6 +62,8 @@ public class CallDetailRecordController
|
|||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private CallRecordingMapper callRecordingMapper;
|
private CallRecordingMapper callRecordingMapper;
|
||||||
|
@Autowired
|
||||||
|
private CampaignService campaignService;
|
||||||
@Value("${yo.cms.recording-server.base-path}")
|
@Value("${yo.cms.recording-server.base-path}")
|
||||||
private String fileServerBasePath;
|
private String fileServerBasePath;
|
||||||
|
|
||||||
@ -91,9 +99,15 @@ public class CallDetailRecordController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
search.gt(START_STAMP, form.getStartDate());
|
val startDate = form.getStartDate();
|
||||||
search.lt(START_STAMP, form.getEndDate());
|
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, ACCOUNT, form::getAccount, StringUtils::isNotBlank);
|
||||||
doSearch(search::eq, CALLER_NUMBER, form::getCallerNumber, StringUtils::isNotBlank);
|
doSearch(search::eq, CALLER_NUMBER, form::getCallerNumber, StringUtils::isNotBlank);
|
||||||
doSearch(search::eq, CALLED_NUMBER, form::getCalledNumber, StringUtils::isNotBlank);
|
doSearch(search::eq, CALLED_NUMBER, form::getCalledNumber, StringUtils::isNotBlank);
|
||||||
@ -132,6 +146,8 @@ public class CallDetailRecordController
|
|||||||
if (arg.getType() == ArgQuery.Type.LIST) {
|
if (arg.getType() == ArgQuery.Type.LIST) {
|
||||||
val maskNumber = !getRoles().contains("NO_NUMBER_PRIVACY");
|
val maskNumber = !getRoles().contains("NO_NUMBER_PRIVACY");
|
||||||
val vmList = (ViewModel<List<ViewModel<CallDetailRecordAll>>>) arg.getResult();
|
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("dialTypeList", CallDetailRecordAll.DialType.values());
|
||||||
vmList.setAttr("callTypeList", CallDetailRecordAll.CallType.values());
|
vmList.setAttr("callTypeList", CallDetailRecordAll.CallType.values());
|
||||||
vmList.attr("numberPrivacy", maskNumber);
|
vmList.attr("numberPrivacy", maskNumber);
|
||||||
|
@ -15,6 +15,7 @@ public class CallSatisfactionListCtrlrReq extends FormList {
|
|||||||
private Date startDate;
|
private Date startDate;
|
||||||
private Date endDate;
|
private Date endDate;
|
||||||
private String connId;
|
private String connId;
|
||||||
|
private Integer campaignId;
|
||||||
private String account;
|
private String account;
|
||||||
private String callerNumber;
|
private String callerNumber;
|
||||||
private String calledNumber;
|
private String calledNumber;
|
||||||
|
@ -17,6 +17,7 @@ public class FormListCallDetailRecord extends FormList {
|
|||||||
private Date startDate;
|
private Date startDate;
|
||||||
@NotNull
|
@NotNull
|
||||||
private Date endDate;
|
private Date endDate;
|
||||||
|
private Integer campaignId;
|
||||||
private String connId;
|
private String connId;
|
||||||
private String account;
|
private String account;
|
||||||
private String callerNumber;
|
private String callerNumber;
|
||||||
|
@ -114,6 +114,14 @@
|
|||||||
<th>
|
<th>
|
||||||
通话时长
|
通话时长
|
||||||
</th>
|
</th>
|
||||||
|
<th>
|
||||||
|
{{th-filter name='campaignId'
|
||||||
|
text='外呼活动'
|
||||||
|
options=model.campaigns
|
||||||
|
value-field='id'
|
||||||
|
text-field='name'
|
||||||
|
}}
|
||||||
|
</th>
|
||||||
<th>
|
<th>
|
||||||
挂断原因
|
挂断原因
|
||||||
</th>
|
</th>
|
||||||
@ -174,6 +182,9 @@
|
|||||||
<td>
|
<td>
|
||||||
{{sec-to-time it.billsec}}
|
{{sec-to-time it.billsec}}
|
||||||
</td>
|
</td>
|
||||||
|
<td>
|
||||||
|
{{option-text model.campaigns it.campaignId 'id' 'name'}}
|
||||||
|
</td>
|
||||||
<td>
|
<td>
|
||||||
{{it.hangupCause}}
|
{{it.hangupCause}}
|
||||||
</td>
|
</td>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user