package com.care.outcall.controller; import cn.hutool.json.JSONUtil; import com.care.common.entity.CcCallResult; import com.care.common.service.CcCallResultService; import com.care.common.util.*; import com.care.common.vo.UserLogindConvertVO; import com.care.outcall.entity.CcKoalaLog; import com.care.outcall.service.KoalaOutCallService; import io.jsonwebtoken.Claims; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.util.Date; import java.util.Map; /** * @author stw * @version 2.7.0 创建于 2019/7/15 **/ @Api(value = "外呼操作-->外呼相关接口", description = "外呼操作-->外呼相关接口") @RestController @RequestMapping("/bms/outcall") public class KoalaOutCallController { private static final Logger logger = LogManager.getLogger(KoalaOutCallController.class); @Autowired private KoalaOutCallService koalaOutCallService; @Autowired private CcCallResultService ccCallResultService; @ApiOperation(value = "获取坐席基础信息接口", notes = "获取坐席基础信息接口") @ApiImplicitParams({ @ApiImplicitParam(name = "token", value = "放在请求头中的令牌", dataType = "String", paramType = "header", required = true) }) @GetMapping(value = "/koala/getAgentInfo") public Result getAgentInfo(@RequestHeader(name = "token") String token) { try { Claims claims = JwtUtils.tokenParse(token); if (claims != null) { UserLogindConvertVO vo = JSONUtil.toBean(claims.getSubject(), UserLogindConvertVO.class); String userId = vo.getId().toString(); Map map = this.koalaOutCallService.getAgentInfo(userId); return Result.success(map); } else { return Result.error("获取坐席基础信息异常"); } } catch (Exception e) { logger.error("获取坐席基础信息异常,信息为:" + e.getMessage()); return Result.error(e.getMessage()); } } @ApiOperation(value = "记录呼叫日志API", notes = "记录呼叫日志API") @PostMapping(value = "/koala/addOptLog", produces = "application/json;charset=UTF-8", consumes = "application/json;charset=UTF-8") public Result addOptLog(@RequestBody CcKoalaLog ccKoalaLog) { try { if (logger.isDebugEnabled()) { logger.debug(JsonUtil.toJson(ccKoalaLog)); } koalaOutCallService.addOptLog(ccKoalaLog); return Result.success(); } catch (Exception e) { logger.error("记录日志接口异常,异常信息:" + e.getMessage()); return Result.error(e.getMessage()); } } @ApiOperation(value = "保存呼叫结果接口", notes = "保存呼叫结果接口") @PostMapping(value = "/koala/addCallResult", produces = "application/json;charset=UTF-8", consumes = "application/json;charset=UTF-8") public Result addCallResult(HttpServletRequest request, @RequestBody CcCallResult ccCallResult) { try { UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request); if (logger.isDebugEnabled()) { logger.debug(JsonUtil.toJson(ccCallResult)); } //找到sessionId CcKoalaLog ccKoalaLog = new CcKoalaLog(); ccKoalaLog.setOrgId(ccCallResult.getOrgId().toString()); ccKoalaLog.setStationId(ccCallResult.getStationId().toString()); ccKoalaLog.setHouseId(ccCallResult.getHouseId().toString()); //ccKoalaLog.setOlderId(ccCallResult.getOlderId().toString()); ccKoalaLog.setOrderId(ccCallResult.getOrderId().toString()); ccKoalaLog.setCalledId(ccCallResult.getCalledId().toString()); ccKoalaLog.setCalledType(ccCallResult.getCalledType()); ccKoalaLog.setPhone(ccCallResult.getPhone()); String sessionId = koalaOutCallService.getSessionId(ccKoalaLog); if(sessionId == null){ // throw new Exception("会话ID为空,不能保存"); } ccCallResult.setSessionId(sessionId); Date now = new Date(); ccCallResult.setCreateTime(now); ccCallResult.setUpdateTime(now); ccCallResultService.saveCallResult(ccCallResult,loginUser); return Result.success(); } catch (Exception e) { logger.error("保存呼叫结果接口异常,异常信息: {}",e); return Result.error(e.getMessage()); } } }