Commit 6b00ddb1 by Java-金吉宝

录音

parent 6d4ba8f9
package com.ejweb.modules.call.api;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.ejweb.core.api.RequestBean;
import com.ejweb.core.api.ResponseBean;
import com.ejweb.core.base.PageEntity;
import com.ejweb.core.conf.ErrorCode;
import com.ejweb.core.conf.GConstants;
import com.ejweb.core.util.IdWorker;
import com.ejweb.core.util.Util;
import com.ejweb.modules.call.bean.CallFindPhoneInfoBean;
import com.ejweb.modules.call.bean.CallLogListBean;
import com.ejweb.modules.call.bean.CallPhoneAreaBean;
import com.ejweb.modules.call.bean.CallPhoneBean;
import com.ejweb.modules.call.bean.CallRecordBean;
import com.ejweb.modules.call.bean.CallRecordListBean;
import com.ejweb.modules.call.entity.CallListEntity;
import com.ejweb.modules.call.entity.CallPhoneAreaEntity;
import com.ejweb.modules.call.entity.CallPhoneInfoListEntity;
import com.ejweb.modules.call.entity.CallRecordEntity;
import com.ejweb.modules.call.entity.CallRecordListEntity;
import com.ejweb.modules.call.entity.CallSoundRecordBean;
import com.ejweb.modules.call.entity.MemberEntity;
import com.ejweb.modules.call.service.CallService;
import com.ejweb.modules.user.entity.User;
import com.ejweb.modules.user.entity.UserEntity;
import com.ejweb.modules.user.entity.UserSeatEntity;
import com.ejweb.modules.user.service.UserService;
/**
* 电话会议记录及查询
*
* @team IT Team
* @author renmb
* @version 1.0
* @time 2016年10月6日
*/
@Controller
@RequestMapping(value = "/api/call")
public class CallController {
@Autowired
private CallService callService;
@Autowired
private UserService userService;
/**
* 批量查询电话号码列表
*
* @author renmb
* @time 2017年1月22日
* @param requestBean
* @return
*/
@ResponseBody
@RequestMapping(value = "/phoneAreaList")
public ResponseBean phoneAreaList(RequestBean requestBean) {
ResponseBean responseBean = new ResponseBean();
CallPhoneAreaBean bean = requestBean.getObjectBean(CallPhoneAreaBean.class);
String message = this.callService.validate(bean);
List<CallPhoneAreaEntity> searchPhoneList = bean.getCallPhoneList();
if(message == null && searchPhoneList !=null && searchPhoneList.size()>0){
List<CallPhoneAreaEntity> callPhoneList = new ArrayList<CallPhoneAreaEntity>();
for (CallPhoneAreaEntity phone:searchPhoneList) {
CallPhoneAreaEntity callPhone = callService.addPhoneArea(phone.getMobile());
if(callPhone == null){// 未查询到相关数据
callPhone = new CallPhoneAreaEntity();
}
callPhone.setMobile(phone.getMobile());
callPhone.setShowPhone(phone.getMobile());
if("PHONE".equals(callPhone.getType())){
callPhone.setMobileNubmer(callPhone.getPhone());
callPhone.setShowPhone(callPhone.getShowPhone());
} else if("MOBILE".equals(callPhone.getType())){
callPhone.setShowPhone(callPhone.getMobile());
callPhone.setPhone(callPhone.getMobileNubmer());
}
callPhoneList.add(callPhone);
}
responseBean.setData(callPhoneList);
responseBean.setMessage(GConstants.OK);
responseBean.setStatus(ErrorCode.STATUS_CODE_2000);
return responseBean;
}
responseBean.setMessage(message);
responseBean.setStatus(ErrorCode.STATUS_CODE_4001);
return responseBean;
}
/**
* 格式化手机号码
* 42.4 查询手机归属地信息接口
*
* @author renmb
* @time 2016年12月6日
* @param requestBean
* @return
*/
@ResponseBody
@RequestMapping(value = "/phoneArea")
public ResponseBean phoneArea(RequestBean requestBean) {
ResponseBean responseBean = new ResponseBean();
CallPhoneAreaBean bean = requestBean.getObjectBean(CallPhoneAreaBean.class);
String message = this.callService.validate(bean);
CallPhoneAreaEntity callPhone = new CallPhoneAreaEntity();
if(message == null){
callPhone.setPhone(bean.getPhone());
callPhone.setMobile(bean.getMobile());
if(StringUtils.isNotBlank(bean.getMobile())){// 格式化手机号
String mobile = bean.getMobile();
String[] species = mobile.split("\\s+");// 只使用第一个手机号
if(species.length>1 && species[0].matches("1\\d+") && species[1].matches("1\\d+")){
mobile = species[0];
}
callPhone = callService.addPhoneArea(mobile);
if(callPhone == null){// 未查询到相关数据
callPhone = new CallPhoneAreaEntity();
}
callPhone.setMobile(bean.getMobile());
/*
if(mobile.startsWith("+")){// 国外手机号,前面加拨3个0
callPhone.setType("MOBILE");
callPhone.setPremobile("000");
callPhone.setMobileNubmer("000"+mobile.replace("+", ""));
} else if(mobile.matches("\\d+") && 11 == mobile.length()){
PhoneAreaEntity area = PhoneAreaUtil.get360PhoneArea(mobile);
if(area != null && StringUtils.isNotBlank(area.getProvince())){// 能够查到省份信息
if(area.getProvince().contains("北京")
|| (StringUtils.isNotBlank(area.getCity()) && area.getCity().contains("北京"))){// 北京前面加拨一个0
callPhone.setType("MOBILE");
callPhone.setMobileNubmer("0"+mobile);// 加拨1个0
callPhone.setPremobile("0");
callPhone.setMobileProvince("北京");
callPhone.setMobileCity("北京");
callPhone.setMobileSp(StringUtils.isBlank(area.getSp()) ? "" : area.getSp());
} else {// 非北京号码加拨两个0
callPhone.setType("MOBILE");
callPhone.setMobileNubmer("00"+mobile);// 加拨2个0
callPhone.setPremobile("00");
callPhone.setMobileProvince(area.getProvince());
callPhone.setMobileCity(StringUtils.isBlank(area.getCity()) ? "" : area.getCity());
callPhone.setMobileSp(StringUtils.isBlank(area.getSp()) ? "" : area.getSp());
}
}
} else{// 非手机号,按座机号处理
// String workPhone = bean.getPhone();
callPhone.setShowPhone(bean.getPhone());
// workPhone = Util.formatedWorkPhone(workPhone);
callPhone.setPhone(Util.formatedWorkPhone(bean.getPhone()));
callPhone.setType("PHONE");
}
*/
}
if(StringUtils.isNotBlank(bean.getPhone())){
// String workPhone = bean.getPhone();
callPhone.setShowPhone(bean.getPhone());
// workPhone = Util.formatedWorkPhone(bean.getPhone());
callPhone.setPhone(Util.formatedWorkPhone(bean.getPhone()));
callPhone.setType("PHONE");
}
if("PHONE".equals(callPhone.getType())){
callPhone.setMobileNubmer(callPhone.getPhone());
callPhone.setShowPhone(callPhone.getShowPhone());
} else if("MOBILE".equals(callPhone.getType())){
callPhone.setShowPhone(callPhone.getMobile());
callPhone.setPhone(callPhone.getMobileNubmer());
}
responseBean.setMessage(GConstants.OK);
responseBean.setData(callPhone);
responseBean.setStatus(ErrorCode.STATUS_CODE_2000);
return responseBean;
}
responseBean.setMessage(message);
responseBean.setStatus(ErrorCode.STATUS_CODE_4001);
return responseBean;
}
/**
* 42.1 开始会话提交接口,在发起人拨打电话时调用
*
* @author renmb
* @time 2016年10月6日
* @param requestBean
* @return
*/
@ResponseBody
@RequestMapping(value = "/start")
public ResponseBean start(RequestBean requestBean) {
ResponseBean responseBean = new ResponseBean();
CallRecordBean bean = requestBean.getObjectBean(CallRecordBean.class);
String message = callService.validate(bean);
if (message == null) {// 校验通过
List<CallPhoneBean> phoneList = bean.getPhoneList();
int userCount = phoneList.size()+1;
CallRecordEntity record = new CallRecordEntity();
record.setCallType(bean.getCallType());
record.setCreateBy(bean.getCreateBy());
if(StringUtils.isEmpty(bean.getCreateName())){
String name = callService.getNameByPhoneFromSeat(bean.getCreatePhone());
if(name!=null){
record.setCreateName(name);
}else{
name = callService.getNameByPhone(bean.getCreatePhone());
if(name!=null){
record.setCreateName(name);
}else{
record.setCreateName(bean.getCreatePhone());
}
}
}else{
record.setCreateName(bean.getCreateName());
}
// record.setCreateName(StringUtils.isEmpty(bean.getCreateName()) ? bean.getCreatePhone() : bean.getCreateName());
record.setEndStatus(bean.getEndStatus());
record.setId(IdWorker.getNextId());
record.setChannelType(bean.getChannelType());
record.setStartTime(new Date());
record.setAppCode(bean.getAppCode());
record.setPlatform(bean.getPlatform());
record.setVersionName(bean.getVersionName());
if("APP".equals(bean.getChannelType()) == false){// 通过系统拨打的电话记录
if(bean.getStartTime() != null){
record.setStartTime(bean.getStartTime());
}
}
record.setUserCount(userCount);
record.setCreatePhone(bean.getCreatePhone());
record.setCreateShowPhone(bean.getCreateShowPhone());
record.setPhoneType(Util.getPhoneType(bean.getCreatePhone()));
callService.createCallRecord(record);// 添加主记录
for (CallPhoneBean phone : phoneList) {
phone.setId(IdWorker.getNextId());
phone.setPhoneType(Util.getPhoneType(phone.getPhone()));
phone.setRecordId(record.getId());
if ("GROUP".equals(record.getCallType())) {// 群组聊天的时候记录标题
phone.setTitle("由" + record.getCreateName() + "发起电话会议");
} else {
phone.setTitle(record.getCreateName());
}
if(StringUtils.isEmpty(phone.getUserId())
&& StringUtils.isNotEmpty(phone.getPhone())){// 如果没有匹配用户信息则通过号码匹配用户信息
CallFindPhoneInfoBean phoneBean = new CallFindPhoneInfoBean();
Date current = new Date();// 用于查询通话记录
phoneBean.setEndTime(current);// 查询时间
phoneBean.setStartTime(new Date(current.getTime()-3*60*1000));// 开始时间=查询时间-3分钟
phoneBean.setPhoneNumer(phone.getPhone());
List<CallPhoneInfoListEntity> userList = callService.findUserByCallPhone(phoneBean, true);
if(userList != null && userList.size() == 1){
CallPhoneInfoListEntity callPhoneInfo = userList.get(0);
if(StringUtils.isNotEmpty(callPhoneInfo.getUserId())){
phone.setUserId(callPhoneInfo.getUserId());
phone.setUsername(callPhoneInfo.getName());
}
}
}
}
callService.addCallPhoneList(phoneList);// 添加电话列表
responseBean.setData(record);
responseBean.setMessage(GConstants.OK);
responseBean.setStatus(ErrorCode.STATUS_CODE_2000);
return responseBean;
}
responseBean.setMessage(message);
responseBean.setStatus(ErrorCode.STATUS_CODE_4001);
return responseBean;
}
/**
* 42.2 结束会话提交接口
*
* @author renmb
* @time 2016年10月6日
* @param requestBean
* @return
*/
@ResponseBody
@RequestMapping(value = "/end")
public ResponseBean end(RequestBean requestBean) {
ResponseBean responseBean = new ResponseBean();
CallRecordBean bean = requestBean.getObjectBean(CallRecordBean.class);
String message = callService.validate(bean);
if (message == null) {// 校验通过
CallRecordEntity record = new CallRecordEntity();
record.setEndStatus(bean.getEndStatus());
record.setEndTime(bean.getEndTime());
if("APP".equals(bean.getChannelType()) == false){// 通过系统拨打的电话记录
if(bean.getEndTime() != null){
record.setEndTime(bean.getEndTime());
}
}
record.setId(bean.getRecordCode());
callService.updateCallRecord(record);// 添加主记录
responseBean.setMessage(GConstants.OK);
responseBean.setStatus(ErrorCode.STATUS_CODE_2000);
return responseBean;
}
responseBean.setMessage(message);
responseBean.setStatus(ErrorCode.STATUS_CODE_4001);
return responseBean;
}
/**
* 42.3 会话列表接口
* V2.0 添加分页
*
* @author renmb
* @time 2016年10月6日
* @param requestBean
* @return
*/
@ResponseBody
@RequestMapping(value = "/list")
public ResponseBean list(RequestBean requestBean) {
ResponseBean responseBean = new ResponseBean();
CallRecordListBean bean = requestBean.getObjectBean(CallRecordListBean.class);
String message = callService.validate(bean);
if (message == null) {// 校验通过
Boolean show=false;
UserEntity ue=new UserEntity();
ue.setUsercode(bean.getUserId());
User user = userService.getUserByUserCode(ue);
if(user!=null){
if(StringUtils.isNoneBlank(user.getPhone())){
show=true;
}
}else{
UserSeatEntity seat= userService.getSeatsEntity(bean.getUserId());
if(seat != null && StringUtils.isNoneBlank(seat.getPhone())){
show=true;
}
}
PageEntity<CallRecordListEntity> page = callService.getCallRecordList(bean);
if(page == null){
responseBean.setMessage(GConstants.OK);
responseBean.setStatus(ErrorCode.STATUS_CODE_2001);
return responseBean;
}
List<CallRecordListEntity> callRecordList = page.getList();
List<CallListEntity> callList = new ArrayList<CallListEntity>();
List<String> huweiNumList = new ArrayList<>();
for(CallRecordListEntity record:callRecordList){
CallListEntity call = new CallListEntity();
call.setCallType(record.getCallType());
call.setEndStatus(record.getEndStatus());
call.setPhone(record.getPhone());
call.setStartTime(record.getStartTime());
call.setEndTime(record.getEndTime());
call.setTitle(record.getTitle());
call.setUserCount(record.getUserCount());
call.setFlow(record.getFlow());
if(bean.getUserId().equals(record.getCreateBy())){// 是本人发起的电话,即主叫
call.setFlow("CALLING");
call.setUserId(record.getUserId());
// call.setPhone( callService.GetPhoneById(record.getUserId()));
call.setUsername(record.getUsername());
// call.setUsername(record.getName());
call.setUserPhoto(Util.getAbsoluteUrl(record.getUserPhoto(), GConstants.DEFAULT_SEAT_PHOTO));
} else {// 他人发起的电话,电话号码显示
call.setFlow("CALLED");
call.setPhone(record.getCreatePhone());
// call.setPhone( callService.GetPhoneById(record.getCreateBy()));
call.setUserId(record.getCreateBy());
call.setUsername(record.getCreateName());
// call.setUsername(record.getName());
call.setUserPhoto(Util.getAbsoluteUrl(record.getCreateByPhoto(), GConstants.DEFAULT_SEAT_PHOTO));
}
if("GROUP".equals(record.getCallType())){// 群组聊天时所有的电话均设置为群发起人电话
call.setPhone(record.getCreatePhone());
List<MemberEntity> memberlist = callService.getMemberList(record.getId());
memberlist.forEach(mEntity->huweiNumList.add(mEntity.getPhone()));
call.setMemberList(memberlist);
} else if(bean.getUserId().equals(record.getCreateBy())){// 非群聊,且是本人发起的电话
// call.setTitle(record.getName());
call.setTitle(record.getUsername());
}
// if(show){
// call.setDownloadUrl(this.formatedDownloadUrl(record.getDownloadUrl()));
// }
call.setDownloadUrl(this.formatedDownloadUrl(record.getDownloadUrl()));
huweiNumList.add(call.getPhone());
// call.setDownloadUrl(this.formatedDownloadUrl(record.getDownloadUrl()));
callList.add(call);
}
Map<String, String> map = callService.findPhneByHuaweiNum(huweiNumList);// 通过华为短号查询座机号
for(CallListEntity record:callList){
if(map != null ){
if(StringUtils.isNotEmpty(map.get(record.getPhone()))){
record.setPhone(Util.formatedWorkPhone(map.get(record.getPhone())));
}
if("GROUP".equals(record.getCallType())){
record.getMemberList().forEach(entity->{
if(StringUtils.isNotEmpty(map.get(entity.getPhone()))){
entity.setPhone(Util.formatedWorkPhone(map.get(entity.getPhone())));
}
entity.setShowPhone(Util.getShowPhone(entity.getPhone()));
});
}
}
if(StringUtils.isNotEmpty(record.getPhone())
&& record.getPhone().startsWith("6")
&& record.getPhone().length() == 4){// 6开头的华为短号不展示
record.setPhone("");
}
record.setShowPhone(Util.getShowPhone(record.getPhone()));
}
PageEntity<CallListEntity> retPage = new PageEntity<CallListEntity>();
retPage.setCount(page.getCount());
retPage.setPageNo(page.getPageNo());
retPage.setList(callList);
retPage.setPageSize(page.getPageSize());
retPage.setTotalPage(page.getTotalPage());
responseBean.setData(retPage);
responseBean.setMessage(GConstants.OK);
responseBean.setStatus(ErrorCode.STATUS_CODE_2000);
return responseBean;
}
responseBean.setMessage(message);
responseBean.setStatus(ErrorCode.STATUS_CODE_4001);
return responseBean;
}
/**
* 安科录音接口
*
* @author renmb
* @time 2017年3月15日
* @param requestBean
* @return
*/
@ResponseBody
@RequestMapping(value = "/soundList")
public ResponseBean soundList(RequestBean requestBean) {
ResponseBean responseBean = new ResponseBean();
CallRecordListBean bean = requestBean.getObjectBean(CallRecordListBean.class);
String message = callService.validate(bean);
if (message == null) {// 校验通过
PageEntity<CallRecordListEntity> page = callService.getCallRecordList(bean);
// PageEntity<CallRecordListEntity> page = callService.getCallSoundList(bean);
if(page == null){
responseBean.setMessage(GConstants.OK);
responseBean.setStatus(ErrorCode.STATUS_CODE_2001);
return responseBean;
}
List<CallRecordListEntity> callRecordList = page.getList();
List<CallListEntity> callList = new ArrayList<CallListEntity>();
List<String> huweiNumList = new ArrayList<>();
for(CallRecordListEntity record:callRecordList){
CallListEntity call = new CallListEntity();
call.setCallType(record.getCallType());
call.setEndStatus(record.getEndStatus());
call.setPhone(record.getPhone());
call.setStartTime(record.getStartTime());
call.setTitle(record.getTitle());
call.setUserCount(record.getUserCount());
call.setFlow(record.getFlow());
if(bean.getUserId().equals(record.getCreateBy())){// 是本人发起的电话,即主叫
call.setFlow("CALLING");
call.setUserId(record.getUserId());
call.setUsername(record.getUsername());
call.setUserPhoto(Util.getAbsoluteUrl(record.getUserPhoto(), GConstants.DEFAULT_SEAT_PHOTO));
} else {// 他人发起的电话,电话号码显示
call.setFlow("CALLED");
call.setPhone(record.getCreatePhone());
call.setUserId(record.getCreateBy());
call.setUsername(record.getCreateName());
call.setUserPhoto(Util.getAbsoluteUrl(record.getCreateByPhoto(), GConstants.DEFAULT_SEAT_PHOTO));
}
if("GROUP".equals(record.getCallType())){// 群组聊天时所有的电话均设置为群发起人电话
call.setPhone(record.getCreatePhone());
} else if(bean.getUserId().equals(record.getCreateBy())){// 非群聊,且是本人发起的电话
call.setTitle(record.getUsername());
}
huweiNumList.add(call.getPhone());
call.setDownloadUrl(this.formatedDownloadUrl(record.getDownloadUrl()));
callList.add(call);
}
Map<String, String> map = callService.findPhneByHuaweiNum(huweiNumList);// 通过华为短号查询座机号
for(CallListEntity record:callList){
if(map != null &&
StringUtils.isNotEmpty(map.get(record.getPhone()))){
record.setPhone(Util.formatedWorkPhone(map.get(record.getPhone())));
}
// if(StringUtils.isNotEmpty(record.getPhone())
// && record.getPhone().startsWith("6")
// && record.getPhone().length() == 4){// 6开头的华为短号不展示
//
// record.setPhone("");
// }
record.setShowPhone(Util.getShowPhone(record.getPhone()));
}
PageEntity<CallListEntity> retPage = new PageEntity<CallListEntity>();
retPage.setCount(page.getCount());
retPage.setPageNo(page.getPageNo());
retPage.setList(callList);
retPage.setPageSize(page.getPageSize());
retPage.setTotalPage(page.getTotalPage());
responseBean.setData(retPage);
responseBean.setMessage(GConstants.OK);
responseBean.setStatus(ErrorCode.STATUS_CODE_2000);
return responseBean;
}
responseBean.setMessage(message);
responseBean.setStatus(ErrorCode.STATUS_CODE_4001);
return responseBean;
}
/**
* 根据电话号码查询电话相关的席位或者用户信息
*
* @author renmb
* @time 2017年1月5日
* @param requestBean
* @return
*/
@ResponseBody
@RequestMapping(value = "/findPhoneInfo")
public ResponseBean findPhoneInfo(RequestBean requestBean) {
ResponseBean responseBean = new ResponseBean();
CallFindPhoneInfoBean bean = requestBean.getObjectBean(CallFindPhoneInfoBean.class);
String message = callService.validate(bean);
if (message == null) {// 校验通过
Date current = new Date();// 用于查询通话记录
bean.setEndTime(current);// 查询时间
bean.setStartTime(new Date(current.getTime()-3*60*1000));// 开始时间=查询时间-3分钟
List<CallPhoneInfoListEntity> userList = callService.findUserByCallPhone(bean, false);
if(userList == null || userList.size() == 0){
responseBean.setMessage(GConstants.EMPTY);
responseBean.setStatus(ErrorCode.STATUS_CODE_2001);
return responseBean;
}
for(CallPhoneInfoListEntity call:userList){
call.setPhoto(Util.getAbsoluteUrl(call.getPhoto(), GConstants.DEFAULT_SEAT_PHOTO));
}
// callService.addCallRecordByCalled(bean, userList.get(0));
responseBean.setData(userList);
responseBean.setMessage(GConstants.OK);
responseBean.setStatus(ErrorCode.STATUS_CODE_2000);
return responseBean;
}
responseBean.setMessage(message);
responseBean.setStatus(ErrorCode.STATUS_CODE_4001);
return responseBean;
}
/**
* 一次性批量提交电话会议记录
*
* 42.4 批量提交通话记录接口
*
* @author renmb
* @time 2017年2月17日
* @param requestBean
* @return
*/
@ResponseBody
@RequestMapping(value = "/postCallLogList")
public ResponseBean postCallLogList(RequestBean requestBean) {
ResponseBean responseBean = new ResponseBean();
CallLogListBean callLog = requestBean.getObjectBean(CallLogListBean.class);
if (callLog != null && callLog.getCallLogList() != null) {// 校验通过
List<CallRecordBean> callLogList = callLog.getCallLogList();
for (CallRecordBean bean:callLogList) {
List<CallPhoneBean> phoneList = bean.getPhoneList();
int userCount = phoneList.size()+1;
CallRecordEntity record = new CallRecordEntity();
record.setCallType(bean.getCallType());
record.setCreateBy(bean.getCreateBy());
record.setCreateName(bean.getCreateName());
record.setEndStatus(record.getEndStatus());
record.setChannelType(bean.getChannelType());
record.setId(IdWorker.getNextId());
record.setAppCode(bean.getAppCode());
record.setPlatform(bean.getPlatform());
record.setVersionName(bean.getVersionName());
if(bean.getStartTime() == null){
record.setStartTime(new Date());
} else{
record.setStartTime(bean.getStartTime());
}
record.setUserCount(userCount);
record.setCreatePhone(bean.getCreatePhone());
record.setPhoneType(Util.getPhoneType(bean.getCreatePhone()));
callService.createCallRecord(record);// 添加主记录
for (CallPhoneBean phone : phoneList) {
phone.setId(IdWorker.getNextId());
phone.setRecordId(record.getId());
if ("GROUP".equals(record.getCallType())) {// 群组聊天的时候记录标题
phone.setTitle("由" + record.getCreateName() + "发起电话会议");
} else {
phone.setTitle(record.getCreateName());
}
}
callService.addCallPhoneList(phoneList);// 添加电话列表
}
responseBean.setMessage(GConstants.OK);
responseBean.setStatus(ErrorCode.STATUS_CODE_2000);
return responseBean;
}
responseBean.setMessage(GConstants.EMPTY);
responseBean.setStatus(ErrorCode.STATUS_CODE_4001);
return responseBean;
}
/**
* 用于安科同步录音数据
*
* @author renmb
* @time 2017年2月28日
* @param requestBean
* @return
*/
@ResponseBody
@RequestMapping(value = "/addSoundRecord")
public ResponseBean addSoundRecord(RequestBean requestBean) {
ResponseBean responseBean = new ResponseBean();
CallSoundRecordBean bean = requestBean.getObjectBean(CallSoundRecordBean.class);
String message = callService.validate(bean);
if (message == null) {// 校验通过
bean.setFocTimeMillis(System.currentTimeMillis());
Date createDate = new Date(bean.getFocTimeMillis());
bean.setCreateDate(createDate);
long focDiffMillis = bean.getCurrentTimeMillis() - bean.getFocTimeMillis()+GConstants.getIntValue("add.diff.millis", 100);
// if(focDiffMillis<1000){
// focDiffMillis = 0;
// }
bean.setFocDiffMillis((int)focDiffMillis);
Date start = new Date(bean.getBeginTime().getTime()-focDiffMillis);
bean.setFocBeginTime(start);
if(bean.getEndTime() != null){
Date end = new Date(bean.getEndTime().getTime()-focDiffMillis);
bean.setFocEndTime(end);
}
//添加通话记录call_record,call_office
CallRecordEntity record = new CallRecordEntity();
record.setCallType("USER");
String name = callService.getNameByPhoneFromSeat(bean.getCallNo());
String id = callService.getIdByPhoneFromSeat(bean.getCallNo());
if(name!=null){
record.setCreateName(name);
record.setCreateBy(id);
}else{
name = callService.getNameByPhone(bean.getCallNo());
if(name!=null){
id = callService.getIdByPhone(bean.getCallNo());
record.setCreateName(name);
record.setCreateBy(id);
}else{
record.setCreateName(bean.getCallNo());
record.setCreateBy("1");
}
}
int userCount = 1;
if(bean.getResult()!=null && !bean.getResult().equals("0")){
record.setEndStatus("SUCCESS");
userCount = 2;
}else{
record.setEndStatus("FAILD");
}
record.setId(IdWorker.getNextId());
record.setChannelType(bean.getChannelType());
record.setAppCode("30011");
record.setPlatform("JAVA");
record.setVersionName("1.0");
record.setDownloadUrl(bean.getDownloadUrl());
record.setDuration(bean.getDuration());
record.setStartTime(bean.getBeginTime());
record.setEndTime(bean.getEndTime());
record.setUserCount(userCount);
record.setCreatePhone(bean.getCallNo());
record.setCreateShowPhone(bean.getCallNo());
record.setPhoneType(Util.getPhoneType(bean.getCallNo()));
// callService.createCallRecord(record);// 添加主记录
//添加被叫记录
List<CallPhoneBean> phoneList = new ArrayList<CallPhoneBean>();
CallPhoneBean phone = new CallPhoneBean();
phone.setId(IdWorker.getNextId());
phone.setPhoneType(Util.getPhoneType(phone.getPhone()));
phone.setRecordId(record.getId());
phone.setDownloadUrl(bean.getDownloadUrl());
phone.setCenterRecordsId(bean.getId());
if ("GROUP".equals(record.getCallType())) {// 群组聊天的时候记录标题
phone.setTitle("由" + record.getCreateName() + "发起电话会议");
} else {
phone.setTitle(record.getCreateName());
}
String acceptName = callService.getNameByPhoneFromSeat(bean.getAcceptNo());
String acceptId = callService.getIdByPhoneFromSeat(bean.getAcceptNo());
if(acceptName!=null){
phone.setUserId(acceptId);
phone.setUsername(acceptName);
}else{
acceptName = callService.getNameByPhone(bean.getAcceptNo());
if(acceptName!=null){
acceptId = callService.getIdByPhone(bean.getAcceptNo());
phone.setUserId(acceptId);
phone.setUsername(acceptName);
}else{
phone.setUserId("1");
phone.setUsername(bean.getAcceptNo());
}
}
phone.setPhone(bean.getAcceptNo());
phone.setShowPhone(bean.getAcceptNo());
phone.setPhoneType(Util.getPhoneType(bean.getAcceptNo()));
phone.setFlow("CALLED");
phoneList.add(phone);
// callService.addCallPhoneList(phoneList);// 添加电话列表
bean.setCallRecordId(record.getId());
if(callService.addSoundRecord(bean,phoneList,record)){
responseBean.setMessage(GConstants.OK);
responseBean.setStatus(ErrorCode.STATUS_CODE_2000);
return responseBean;
} else{
responseBean.setData(bean);
responseBean.setMessage("记录保存失败!");
responseBean.setStatus(ErrorCode.STATUS_CODE_4001);
return responseBean;
}
}
responseBean.setMessage(message);
responseBean.setStatus(ErrorCode.STATUS_CODE_4001);
return responseBean;
}
public String formatedDownloadUrl(String downloadUrl){
try {
if(StringUtils.isEmpty(downloadUrl))
return null;
return GConstants.getValue("jd.sound.recording.prefix", "https://ifos.jdair.net/sounds")
+downloadUrl.replaceAll("\\\\+", "/").replace(GConstants.getValue("ak.sound.recording.prefix", "http://10.72.23.187"), "");
} catch (Exception e) {
// TODO: handle exception
}
return null;
}
// public static void main(String[] args){
// System.out.println(formatedDownloadUrl("http://10.72.23.187\\01\\log20170105204535S000Ch001.wav"));
// }
}
package com.ejweb.modules.call.api;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.ejweb.core.api.RequestBean;
import com.ejweb.core.api.ResponseBean;
import com.ejweb.core.base.PageEntity;
import com.ejweb.core.conf.ErrorCode;
import com.ejweb.core.conf.GConstants;
import com.ejweb.core.util.IdWorker;
import com.ejweb.core.util.Util;
import com.ejweb.modules.call.bean.CallFindPhoneInfoBean;
import com.ejweb.modules.call.bean.CallLogListBean;
import com.ejweb.modules.call.bean.CallPhoneAreaBean;
import com.ejweb.modules.call.bean.CallPhoneBean;
import com.ejweb.modules.call.bean.CallRecordBean;
import com.ejweb.modules.call.bean.CallRecordListBean;
import com.ejweb.modules.call.entity.CallListEntity;
import com.ejweb.modules.call.entity.CallPhoneAreaEntity;
import com.ejweb.modules.call.entity.CallPhoneInfoListEntity;
import com.ejweb.modules.call.entity.CallRecordEntity;
import com.ejweb.modules.call.entity.CallRecordListEntity;
import com.ejweb.modules.call.entity.CallSoundRecordBean;
import com.ejweb.modules.call.entity.MemberEntity;
import com.ejweb.modules.call.service.CallService;
import com.ejweb.modules.user.entity.User;
import com.ejweb.modules.user.entity.UserEntity;
import com.ejweb.modules.user.entity.UserSeatEntity;
import com.ejweb.modules.user.service.UserService;
/**
* 电话会议记录及查询
*
* @team IT Team
* @author renmb
* @version 1.0
* @time 2016年10月6日
*/
@Controller
@RequestMapping(value = "/api/call")
public class CallController {
@Autowired
private CallService callService;
@Autowired
private UserService userService;
/**
* 批量查询电话号码列表
*
* @author renmb
* @time 2017年1月22日
* @param requestBean
* @return
*/
@ResponseBody
@RequestMapping(value = "/phoneAreaList")
public ResponseBean phoneAreaList(RequestBean requestBean) {
ResponseBean responseBean = new ResponseBean();
CallPhoneAreaBean bean = requestBean.getObjectBean(CallPhoneAreaBean.class);
String message = this.callService.validate(bean);
List<CallPhoneAreaEntity> searchPhoneList = bean.getCallPhoneList();
if(message == null && searchPhoneList !=null && searchPhoneList.size()>0){
List<CallPhoneAreaEntity> callPhoneList = new ArrayList<CallPhoneAreaEntity>();
for (CallPhoneAreaEntity phone:searchPhoneList) {
CallPhoneAreaEntity callPhone = callService.addPhoneArea(phone.getMobile());
if(callPhone == null){// 未查询到相关数据
callPhone = new CallPhoneAreaEntity();
}
callPhone.setMobile(phone.getMobile());
callPhone.setShowPhone(phone.getMobile());
if("PHONE".equals(callPhone.getType())){
callPhone.setMobileNubmer(callPhone.getPhone());
callPhone.setShowPhone(callPhone.getShowPhone());
} else if("MOBILE".equals(callPhone.getType())){
callPhone.setShowPhone(callPhone.getMobile());
callPhone.setPhone(callPhone.getMobileNubmer());
}
callPhoneList.add(callPhone);
}
responseBean.setData(callPhoneList);
responseBean.setMessage(GConstants.OK);
responseBean.setStatus(ErrorCode.STATUS_CODE_2000);
return responseBean;
}
responseBean.setMessage(message);
responseBean.setStatus(ErrorCode.STATUS_CODE_4001);
return responseBean;
}
/**
* 格式化手机号码
* 42.4 查询手机归属地信息接口
*
* @author renmb
* @time 2016年12月6日
* @param requestBean
* @return
*/
@ResponseBody
@RequestMapping(value = "/phoneArea")
public ResponseBean phoneArea(RequestBean requestBean) {
ResponseBean responseBean = new ResponseBean();
CallPhoneAreaBean bean = requestBean.getObjectBean(CallPhoneAreaBean.class);
String message = this.callService.validate(bean);
CallPhoneAreaEntity callPhone = new CallPhoneAreaEntity();
if(message == null){
callPhone.setPhone(bean.getPhone());
callPhone.setMobile(bean.getMobile());
if(StringUtils.isNotBlank(bean.getMobile())){// 格式化手机号
String mobile = bean.getMobile();
String[] species = mobile.split("\\s+");// 只使用第一个手机号
if(species.length>1 && species[0].matches("1\\d+") && species[1].matches("1\\d+")){
mobile = species[0];
}
callPhone = callService.addPhoneArea(mobile);
if(callPhone == null){// 未查询到相关数据
callPhone = new CallPhoneAreaEntity();
}
callPhone.setMobile(bean.getMobile());
/*
if(mobile.startsWith("+")){// 国外手机号,前面加拨3个0
callPhone.setType("MOBILE");
callPhone.setPremobile("000");
callPhone.setMobileNubmer("000"+mobile.replace("+", ""));
} else if(mobile.matches("\\d+") && 11 == mobile.length()){
PhoneAreaEntity area = PhoneAreaUtil.get360PhoneArea(mobile);
if(area != null && StringUtils.isNotBlank(area.getProvince())){// 能够查到省份信息
if(area.getProvince().contains("北京")
|| (StringUtils.isNotBlank(area.getCity()) && area.getCity().contains("北京"))){// 北京前面加拨一个0
callPhone.setType("MOBILE");
callPhone.setMobileNubmer("0"+mobile);// 加拨1个0
callPhone.setPremobile("0");
callPhone.setMobileProvince("北京");
callPhone.setMobileCity("北京");
callPhone.setMobileSp(StringUtils.isBlank(area.getSp()) ? "" : area.getSp());
} else {// 非北京号码加拨两个0
callPhone.setType("MOBILE");
callPhone.setMobileNubmer("00"+mobile);// 加拨2个0
callPhone.setPremobile("00");
callPhone.setMobileProvince(area.getProvince());
callPhone.setMobileCity(StringUtils.isBlank(area.getCity()) ? "" : area.getCity());
callPhone.setMobileSp(StringUtils.isBlank(area.getSp()) ? "" : area.getSp());
}
}
} else{// 非手机号,按座机号处理
// String workPhone = bean.getPhone();
callPhone.setShowPhone(bean.getPhone());
// workPhone = Util.formatedWorkPhone(workPhone);
callPhone.setPhone(Util.formatedWorkPhone(bean.getPhone()));
callPhone.setType("PHONE");
}
*/
}
if(StringUtils.isNotBlank(bean.getPhone())){
// String workPhone = bean.getPhone();
callPhone.setShowPhone(bean.getPhone());
// workPhone = Util.formatedWorkPhone(bean.getPhone());
callPhone.setPhone(Util.formatedWorkPhone(bean.getPhone()));
callPhone.setType("PHONE");
}
if("PHONE".equals(callPhone.getType())){
callPhone.setMobileNubmer(callPhone.getPhone());
callPhone.setShowPhone(callPhone.getShowPhone());
} else if("MOBILE".equals(callPhone.getType())){
callPhone.setShowPhone(callPhone.getMobile());
callPhone.setPhone(callPhone.getMobileNubmer());
}
responseBean.setMessage(GConstants.OK);
responseBean.setData(callPhone);
responseBean.setStatus(ErrorCode.STATUS_CODE_2000);
return responseBean;
}
responseBean.setMessage(message);
responseBean.setStatus(ErrorCode.STATUS_CODE_4001);
return responseBean;
}
/**
* 42.1 开始会话提交接口,在发起人拨打电话时调用
*
* @author renmb
* @time 2016年10月6日
* @param requestBean
* @return
*/
@ResponseBody
@RequestMapping(value = "/start")
public ResponseBean start(RequestBean requestBean) {
ResponseBean responseBean = new ResponseBean();
CallRecordBean bean = requestBean.getObjectBean(CallRecordBean.class);
String message = callService.validate(bean);
if (message == null) {// 校验通过
List<CallPhoneBean> phoneList = bean.getPhoneList();
int userCount = phoneList.size()+1;
CallRecordEntity record = new CallRecordEntity();
record.setCallType(bean.getCallType());
record.setCreateBy(bean.getCreateBy());
if(StringUtils.isEmpty(bean.getCreateName())){
String name = callService.getNameByPhoneFromSeat(bean.getCreatePhone());
if(name!=null){
record.setCreateName(name);
}else{
name = callService.getNameByPhone(bean.getCreatePhone());
if(name!=null){
record.setCreateName(name);
}else{
record.setCreateName(bean.getCreatePhone());
}
}
}else{
record.setCreateName(bean.getCreateName());
}
// record.setCreateName(StringUtils.isEmpty(bean.getCreateName()) ? bean.getCreatePhone() : bean.getCreateName());
record.setEndStatus(bean.getEndStatus());
record.setId(IdWorker.getNextId());
record.setChannelType(bean.getChannelType());
record.setStartTime(new Date());
record.setAppCode(bean.getAppCode());
record.setPlatform(bean.getPlatform());
record.setVersionName(bean.getVersionName());
if("APP".equals(bean.getChannelType()) == false){// 通过系统拨打的电话记录
if(bean.getStartTime() != null){
record.setStartTime(bean.getStartTime());
}
}
record.setUserCount(userCount);
record.setCreatePhone(bean.getCreatePhone());
record.setCreateShowPhone(bean.getCreateShowPhone());
record.setPhoneType(Util.getPhoneType(bean.getCreatePhone()));
callService.createCallRecord(record);// 添加主记录
for (CallPhoneBean phone : phoneList) {
phone.setId(IdWorker.getNextId());
phone.setPhoneType(Util.getPhoneType(phone.getPhone()));
phone.setRecordId(record.getId());
if ("GROUP".equals(record.getCallType())) {// 群组聊天的时候记录标题
phone.setTitle("由" + record.getCreateName() + "发起电话会议");
} else {
phone.setTitle(record.getCreateName());
}
if(StringUtils.isEmpty(phone.getUserId())
&& StringUtils.isNotEmpty(phone.getPhone())){// 如果没有匹配用户信息则通过号码匹配用户信息
CallFindPhoneInfoBean phoneBean = new CallFindPhoneInfoBean();
Date current = new Date();// 用于查询通话记录
phoneBean.setEndTime(current);// 查询时间
phoneBean.setStartTime(new Date(current.getTime()-3*60*1000));// 开始时间=查询时间-3分钟
phoneBean.setPhoneNumer(phone.getPhone());
List<CallPhoneInfoListEntity> userList = callService.findUserByCallPhone(phoneBean, true);
if(userList != null && userList.size() == 1){
CallPhoneInfoListEntity callPhoneInfo = userList.get(0);
if(StringUtils.isNotEmpty(callPhoneInfo.getUserId())){
phone.setUserId(callPhoneInfo.getUserId());
phone.setUsername(callPhoneInfo.getName());
}
}
}
}
callService.addCallPhoneList(phoneList);// 添加电话列表
responseBean.setData(record);
responseBean.setMessage(GConstants.OK);
responseBean.setStatus(ErrorCode.STATUS_CODE_2000);
return responseBean;
}
responseBean.setMessage(message);
responseBean.setStatus(ErrorCode.STATUS_CODE_4001);
return responseBean;
}
/**
* 42.2 结束会话提交接口
*
* @author renmb
* @time 2016年10月6日
* @param requestBean
* @return
*/
@ResponseBody
@RequestMapping(value = "/end")
public ResponseBean end(RequestBean requestBean) {
ResponseBean responseBean = new ResponseBean();
CallRecordBean bean = requestBean.getObjectBean(CallRecordBean.class);
String message = callService.validate(bean);
if (message == null) {// 校验通过
CallRecordEntity record = new CallRecordEntity();
record.setEndStatus(bean.getEndStatus());
record.setEndTime(bean.getEndTime());
if("APP".equals(bean.getChannelType()) == false){// 通过系统拨打的电话记录
if(bean.getEndTime() != null){
record.setEndTime(bean.getEndTime());
}
}
record.setId(bean.getRecordCode());
callService.updateCallRecord(record);// 添加主记录
responseBean.setMessage(GConstants.OK);
responseBean.setStatus(ErrorCode.STATUS_CODE_2000);
return responseBean;
}
responseBean.setMessage(message);
responseBean.setStatus(ErrorCode.STATUS_CODE_4001);
return responseBean;
}
/**
* 42.3 会话列表接口
* V2.0 添加分页
*
* @author renmb
* @time 2016年10月6日
* @param requestBean
* @return
*/
@ResponseBody
@RequestMapping(value = "/list")
public ResponseBean list(RequestBean requestBean) {
ResponseBean responseBean = new ResponseBean();
CallRecordListBean bean = requestBean.getObjectBean(CallRecordListBean.class);
String message = callService.validate(bean);
if (message == null) {// 校验通过
Boolean show=false;
UserEntity ue=new UserEntity();
ue.setUsercode(bean.getUserId());
User user = userService.getUserByUserCode(ue);
if(user!=null){
if(StringUtils.isNoneBlank(user.getPhone())){
show=true;
}
}else{
UserSeatEntity seat= userService.getSeatsEntity(bean.getUserId());
if(seat != null && StringUtils.isNoneBlank(seat.getPhone())){
show=true;
}
}
PageEntity<CallRecordListEntity> page = callService.getCallRecordList(bean);
if(page == null){
responseBean.setMessage(GConstants.OK);
responseBean.setStatus(ErrorCode.STATUS_CODE_2001);
return responseBean;
}
List<CallRecordListEntity> callRecordList = page.getList();
List<CallListEntity> callList = new ArrayList<CallListEntity>();
List<String> huweiNumList = new ArrayList<>();
for(CallRecordListEntity record:callRecordList){
CallListEntity call = new CallListEntity();
call.setCallType(record.getCallType());
call.setEndStatus(record.getEndStatus());
call.setPhone(record.getPhone());
call.setStartTime(record.getStartTime());
call.setEndTime(record.getEndTime());
call.setTitle(record.getTitle());
call.setUserCount(record.getUserCount());
call.setFlow(record.getFlow());
if(bean.getUserId().equals(record.getCreateBy())){// 是本人发起的电话,即主叫
call.setFlow("CALLING");
call.setUserId(record.getUserId());
// call.setPhone( callService.GetPhoneById(record.getUserId()));
call.setUsername(record.getUsername());
// call.setUsername(record.getName());
call.setUserPhoto(Util.getAbsoluteUrl(record.getUserPhoto(), GConstants.DEFAULT_SEAT_PHOTO));
} else {// 他人发起的电话,电话号码显示
call.setFlow("CALLED");
call.setPhone(record.getCreatePhone());
// call.setPhone( callService.GetPhoneById(record.getCreateBy()));
call.setUserId(record.getCreateBy());
call.setUsername(record.getCreateName());
// call.setUsername(record.getName());
call.setUserPhoto(Util.getAbsoluteUrl(record.getCreateByPhoto(), GConstants.DEFAULT_SEAT_PHOTO));
}
if("GROUP".equals(record.getCallType())){// 群组聊天时所有的电话均设置为群发起人电话
call.setPhone(record.getCreatePhone());
List<MemberEntity> memberlist = callService.getMemberList(record.getId());
memberlist.forEach(mEntity->huweiNumList.add(mEntity.getPhone()));
call.setMemberList(memberlist);
} else if(bean.getUserId().equals(record.getCreateBy())){// 非群聊,且是本人发起的电话
// call.setTitle(record.getName());
call.setTitle(record.getUsername());
}
// if(show){
// call.setDownloadUrl(this.formatedDownloadUrl(record.getDownloadUrl()));
// }
call.setDownloadUrl(this.formatedDownloadUrl(record.getDownloadUrl()));
huweiNumList.add(call.getPhone());
// call.setDownloadUrl(this.formatedDownloadUrl(record.getDownloadUrl()));
callList.add(call);
}
Map<String, String> map = callService.findPhneByHuaweiNum(huweiNumList);// 通过华为短号查询座机号
for(CallListEntity record:callList){
if(map != null ){
if(StringUtils.isNotEmpty(map.get(record.getPhone()))){
record.setPhone(Util.formatedWorkPhone(map.get(record.getPhone())));
}
if("GROUP".equals(record.getCallType())){
record.getMemberList().forEach(entity->{
if(StringUtils.isNotEmpty(map.get(entity.getPhone()))){
entity.setPhone(Util.formatedWorkPhone(map.get(entity.getPhone())));
}
entity.setShowPhone(Util.getShowPhone(entity.getPhone()));
});
}
}
if(StringUtils.isNotEmpty(record.getPhone())
&& record.getPhone().startsWith("6")
&& record.getPhone().length() == 4){// 6开头的华为短号不展示
record.setPhone("");
}
record.setShowPhone(Util.getShowPhone(record.getPhone()));
}
PageEntity<CallListEntity> retPage = new PageEntity<CallListEntity>();
retPage.setCount(page.getCount());
retPage.setPageNo(page.getPageNo());
retPage.setList(callList);
retPage.setPageSize(page.getPageSize());
retPage.setTotalPage(page.getTotalPage());
responseBean.setData(retPage);
responseBean.setMessage(GConstants.OK);
responseBean.setStatus(ErrorCode.STATUS_CODE_2000);
return responseBean;
}
responseBean.setMessage(message);
responseBean.setStatus(ErrorCode.STATUS_CODE_4001);
return responseBean;
}
/**
* 安科录音接口
*
* @author renmb
* @time 2017年3月15日
* @param requestBean
* @return
*/
@ResponseBody
@RequestMapping(value = "/soundList")
public ResponseBean soundList(RequestBean requestBean) {
ResponseBean responseBean = new ResponseBean();
CallRecordListBean bean = requestBean.getObjectBean(CallRecordListBean.class);
String message = callService.validate(bean);
if (message == null) {// 校验通过
PageEntity<CallRecordListEntity> page = callService.getCallRecordList(bean);
// PageEntity<CallRecordListEntity> page = callService.getCallSoundList(bean);
if(page == null){
responseBean.setMessage(GConstants.OK);
responseBean.setStatus(ErrorCode.STATUS_CODE_2001);
return responseBean;
}
List<CallRecordListEntity> callRecordList = page.getList();
List<CallListEntity> callList = new ArrayList<CallListEntity>();
List<String> huweiNumList = new ArrayList<>();
for(CallRecordListEntity record:callRecordList){
CallListEntity call = new CallListEntity();
call.setCallType(record.getCallType());
call.setEndStatus(record.getEndStatus());
call.setPhone(record.getPhone());
call.setStartTime(record.getStartTime());
call.setTitle(record.getTitle());
call.setUserCount(record.getUserCount());
call.setFlow(record.getFlow());
if(bean.getUserId().equals(record.getCreateBy())){// 是本人发起的电话,即主叫
call.setFlow("CALLING");
call.setUserId(record.getUserId());
call.setUsername(record.getUsername());
call.setUserPhoto(Util.getAbsoluteUrl(record.getUserPhoto(), GConstants.DEFAULT_SEAT_PHOTO));
} else {// 他人发起的电话,电话号码显示
call.setFlow("CALLED");
call.setPhone(record.getCreatePhone());
call.setUserId(record.getCreateBy());
call.setUsername(record.getCreateName());
call.setUserPhoto(Util.getAbsoluteUrl(record.getCreateByPhoto(), GConstants.DEFAULT_SEAT_PHOTO));
}
if("GROUP".equals(record.getCallType())){// 群组聊天时所有的电话均设置为群发起人电话
call.setPhone(record.getCreatePhone());
} else if(bean.getUserId().equals(record.getCreateBy())){// 非群聊,且是本人发起的电话
call.setTitle(record.getUsername());
}
huweiNumList.add(call.getPhone());
call.setDownloadUrl(this.formatedDownloadUrl(record.getDownloadUrl()));
callList.add(call);
}
Map<String, String> map = callService.findPhneByHuaweiNum(huweiNumList);// 通过华为短号查询座机号
for(CallListEntity record:callList){
if(map != null &&
StringUtils.isNotEmpty(map.get(record.getPhone()))){
record.setPhone(Util.formatedWorkPhone(map.get(record.getPhone())));
}
// if(StringUtils.isNotEmpty(record.getPhone())
// && record.getPhone().startsWith("6")
// && record.getPhone().length() == 4){// 6开头的华为短号不展示
//
// record.setPhone("");
// }
record.setShowPhone(Util.getShowPhone(record.getPhone()));
}
PageEntity<CallListEntity> retPage = new PageEntity<CallListEntity>();
retPage.setCount(page.getCount());
retPage.setPageNo(page.getPageNo());
retPage.setList(callList);
retPage.setPageSize(page.getPageSize());
retPage.setTotalPage(page.getTotalPage());
responseBean.setData(retPage);
responseBean.setMessage(GConstants.OK);
responseBean.setStatus(ErrorCode.STATUS_CODE_2000);
return responseBean;
}
responseBean.setMessage(message);
responseBean.setStatus(ErrorCode.STATUS_CODE_4001);
return responseBean;
}
/**
* 根据电话号码查询电话相关的席位或者用户信息
*
* @author renmb
* @time 2017年1月5日
* @param requestBean
* @return
*/
@ResponseBody
@RequestMapping(value = "/findPhoneInfo")
public ResponseBean findPhoneInfo(RequestBean requestBean) {
ResponseBean responseBean = new ResponseBean();
CallFindPhoneInfoBean bean = requestBean.getObjectBean(CallFindPhoneInfoBean.class);
String message = callService.validate(bean);
if (message == null) {// 校验通过
Date current = new Date();// 用于查询通话记录
bean.setEndTime(current);// 查询时间
bean.setStartTime(new Date(current.getTime()-3*60*1000));// 开始时间=查询时间-3分钟
List<CallPhoneInfoListEntity> userList = callService.findUserByCallPhone(bean, false);
if(userList == null || userList.size() == 0){
responseBean.setMessage(GConstants.EMPTY);
responseBean.setStatus(ErrorCode.STATUS_CODE_2001);
return responseBean;
}
for(CallPhoneInfoListEntity call:userList){
call.setPhoto(Util.getAbsoluteUrl(call.getPhoto(), GConstants.DEFAULT_SEAT_PHOTO));
}
// callService.addCallRecordByCalled(bean, userList.get(0));
responseBean.setData(userList);
responseBean.setMessage(GConstants.OK);
responseBean.setStatus(ErrorCode.STATUS_CODE_2000);
return responseBean;
}
responseBean.setMessage(message);
responseBean.setStatus(ErrorCode.STATUS_CODE_4001);
return responseBean;
}
/**
* 一次性批量提交电话会议记录
*
* 42.4 批量提交通话记录接口
*
* @author renmb
* @time 2017年2月17日
* @param requestBean
* @return
*/
@ResponseBody
@RequestMapping(value = "/postCallLogList")
public ResponseBean postCallLogList(RequestBean requestBean) {
ResponseBean responseBean = new ResponseBean();
CallLogListBean callLog = requestBean.getObjectBean(CallLogListBean.class);
if (callLog != null && callLog.getCallLogList() != null) {// 校验通过
List<CallRecordBean> callLogList = callLog.getCallLogList();
for (CallRecordBean bean:callLogList) {
List<CallPhoneBean> phoneList = bean.getPhoneList();
int userCount = phoneList.size()+1;
CallRecordEntity record = new CallRecordEntity();
record.setCallType(bean.getCallType());
record.setCreateBy(bean.getCreateBy());
record.setCreateName(bean.getCreateName());
record.setEndStatus(record.getEndStatus());
record.setChannelType(bean.getChannelType());
record.setId(IdWorker.getNextId());
record.setAppCode(bean.getAppCode());
record.setPlatform(bean.getPlatform());
record.setVersionName(bean.getVersionName());
if(bean.getStartTime() == null){
record.setStartTime(new Date());
} else{
record.setStartTime(bean.getStartTime());
}
record.setUserCount(userCount);
record.setCreatePhone(bean.getCreatePhone());
record.setPhoneType(Util.getPhoneType(bean.getCreatePhone()));
callService.createCallRecord(record);// 添加主记录
for (CallPhoneBean phone : phoneList) {
phone.setId(IdWorker.getNextId());
phone.setRecordId(record.getId());
if ("GROUP".equals(record.getCallType())) {// 群组聊天的时候记录标题
phone.setTitle("由" + record.getCreateName() + "发起电话会议");
} else {
phone.setTitle(record.getCreateName());
}
}
callService.addCallPhoneList(phoneList);// 添加电话列表
}
responseBean.setMessage(GConstants.OK);
responseBean.setStatus(ErrorCode.STATUS_CODE_2000);
return responseBean;
}
responseBean.setMessage(GConstants.EMPTY);
responseBean.setStatus(ErrorCode.STATUS_CODE_4001);
return responseBean;
}
/**
* 用于安科同步录音数据
*
* @author renmb
* @time 2017年2月28日
* @param requestBean
* @return
*/
@ResponseBody
@RequestMapping(value = "/addSoundRecord")
public ResponseBean addSoundRecord(RequestBean requestBean) {
ResponseBean responseBean = new ResponseBean();
CallSoundRecordBean bean = requestBean.getObjectBean(CallSoundRecordBean.class);
String message = callService.validate(bean);
if (message == null) {// 校验通过
bean.setFocTimeMillis(System.currentTimeMillis());
Date createDate = new Date(bean.getFocTimeMillis());
bean.setCreateDate(createDate);
long focDiffMillis = bean.getCurrentTimeMillis() - bean.getFocTimeMillis()+GConstants.getIntValue("add.diff.millis", 100);
// if(focDiffMillis<1000){
// focDiffMillis = 0;
// }
bean.setFocDiffMillis((int)focDiffMillis);
Date start = new Date(bean.getBeginTime().getTime()-focDiffMillis);
bean.setFocBeginTime(start);
if(bean.getEndTime() != null){
Date end = new Date(bean.getEndTime().getTime()-focDiffMillis);
bean.setFocEndTime(end);
}
//添加通话记录call_record,call_office
CallRecordEntity record = new CallRecordEntity();
record.setCallType("USER");
String name = callService.getNameByPhoneFromSeat(bean.getCallNo());
String id = callService.getIdByPhoneFromSeat(bean.getCallNo());
if(name!=null){
record.setCreateName(name);
record.setCreateBy(id);
}else{
name = callService.getNameByPhone(bean.getCallNo());
if(name!=null){
id = callService.getIdByPhone(bean.getCallNo());
record.setCreateName(name);
record.setCreateBy(id);
}else{
record.setCreateName(bean.getCallNo());
record.setCreateBy("1");
}
}
int userCount = 1;
if(bean.getResult()!=null && !bean.getResult().equals("0")){
record.setEndStatus("SUCCESS");
userCount = 2;
}else{
record.setEndStatus("FAILD");
}
record.setId(IdWorker.getNextId());
record.setChannelType(bean.getChannelType());
record.setAppCode("30011");
record.setPlatform("JAVA");
record.setVersionName("1.0");
record.setDownloadUrl(bean.getDownloadUrl());
record.setDuration(bean.getDuration());
record.setStartTime(bean.getBeginTime());
record.setEndTime(bean.getEndTime());
record.setUserCount(userCount);
record.setCreatePhone(bean.getCallNo());
record.setCreateShowPhone(bean.getCallNo());
record.setPhoneType(Util.getPhoneType(bean.getCallNo()));
// callService.createCallRecord(record);// 添加主记录
//添加被叫记录
List<CallPhoneBean> phoneList = new ArrayList<CallPhoneBean>();
CallPhoneBean phone = new CallPhoneBean();
phone.setId(IdWorker.getNextId());
phone.setPhoneType(Util.getPhoneType(phone.getPhone()));
phone.setRecordId(record.getId());
phone.setDownloadUrl(bean.getDownloadUrl());
phone.setCenterRecordsId(bean.getId());
if ("GROUP".equals(record.getCallType())) {// 群组聊天的时候记录标题
phone.setTitle("由" + record.getCreateName() + "发起电话会议");
} else {
phone.setTitle(record.getCreateName());
}
String acceptName = callService.getNameByPhoneFromSeat(bean.getAcceptNo());
String acceptId = callService.getIdByPhoneFromSeat(bean.getAcceptNo());
if(acceptName!=null){
phone.setUserId(acceptId);
phone.setUsername(acceptName);
}else{
acceptName = callService.getNameByPhone(bean.getAcceptNo());
if(acceptName!=null){
acceptId = callService.getIdByPhone(bean.getAcceptNo());
phone.setUserId(acceptId);
phone.setUsername(acceptName);
}else{
phone.setUserId("1");
phone.setUsername(bean.getAcceptNo());
}
}
phone.setPhone(bean.getAcceptNo());
phone.setShowPhone(bean.getAcceptNo());
phone.setPhoneType(Util.getPhoneType(bean.getAcceptNo()));
phone.setFlow("CALLED");
phoneList.add(phone);
// callService.addCallPhoneList(phoneList);// 添加电话列表
bean.setCallRecordId(record.getId());
if(callService.addSoundRecord(bean,phoneList,record)){
responseBean.setMessage(GConstants.OK);
responseBean.setStatus(ErrorCode.STATUS_CODE_2000);
return responseBean;
} else{
responseBean.setData(bean);
responseBean.setMessage("记录保存失败!");
responseBean.setStatus(ErrorCode.STATUS_CODE_4001);
return responseBean;
}
}
responseBean.setMessage(message);
responseBean.setStatus(ErrorCode.STATUS_CODE_4001);
return responseBean;
}
public String formatedDownloadUrl(String downloadUrl){
try {
if(StringUtils.isEmpty(downloadUrl))
return null;
return GConstants.getValue("jd.sound.recording.prefix", "https://ifos.jdair.net/sounds")
+downloadUrl.replaceAll("\\\\+", "/").replace(GConstants.getValue("ak.sound.recording.prefix", "http://10.72.23.187"), "");
} catch (Exception e) {
// TODO: handle exception
}
return null;
}
// public static void main(String[] args){
// System.out.println(formatedDownloadUrl("http://10.72.23.187\\01\\log20170105204535S000Ch001.wav"));
// }
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment