This commit is contained in:
linfso 2024-10-25 23:45:26 +08:00
parent 8765592a57
commit dd7f6e190c
3 changed files with 160 additions and 0 deletions

View File

@ -26,6 +26,7 @@ import com.xdadan.erp.emis.domain.EmisWaybill;
import com.xdadan.erp.emis.domain.exception.EmisBizError;
import com.xdadan.erp.emis.domain.vo.AddressParseResult;
import com.xdadan.erp.emis.service.*;
import com.xdadan.erp.emis.service.kefu.RL7moorService;
import com.xdadan.erp.emis.service.print.IXddTplPrint;
import com.xdadan.erp.emis.service.print.tanex.TanexPdfPrinter;
import com.xdadan.erp.emis.utils.WaybillHelper;
@ -69,6 +70,9 @@ public class EmisCommonController extends EmisBaseController
@Autowired
private IEmisRegionService emisRegionService;
@Autowired
private RL7moorService rl7moorService;
@Autowired
private ISysConfigService configService;
@ -971,4 +975,19 @@ public class EmisCommonController extends EmisBaseController
}
@GetMapping(value = "/getKefuSsoToken")
public AjaxResult getKefuSsoToken()
{
String token= null;
try {
token = rl7moorService.getSsoTokenByEmpCode(getLoginUser().getUser().getEmpCode());
return AjaxResult.success("获取成功",token);
} catch (Exception e) {
e.printStackTrace();
return AjaxResult.error("获取token异常");
}
}
}

View File

@ -23,6 +23,7 @@ import com.xdadan.erp.emis.service.EmisBaseService;
import com.xdadan.erp.emis.service.IEmisElectronicPagService;
import com.xdadan.erp.emis.service.IEmisRegionService;
import com.xdadan.erp.emis.service.IEmisWaybillService;
import com.xdadan.erp.emis.service.kefu.RL7moorService;
import com.xdadan.erp.system.domain.SysNotice;
import com.xdadan.erp.system.service.ISysNoticeService;
import org.springframework.beans.factory.annotation.Autowired;
@ -57,6 +58,8 @@ public class EmisCommonToolsController extends EmisBaseController
private EmisBaseService emisBaseService;
/**
* 获取app首页统计
*/
@ -124,4 +127,5 @@ public class EmisCommonToolsController extends EmisBaseController
}

View File

@ -0,0 +1,137 @@
package com.xdadan.erp.emis.service.kefu;
import com.alibaba.fastjson.JSONObject;
import com.xdadan.erp.common.core.domain.entity.SysUser;
import com.xdadan.erp.common.utils.DateUtils;
import com.xdadan.erp.common.utils.sign.Base64;
import com.xdadan.erp.common.utils.sign.MD5;
import com.xdadan.erp.emis.domain.enumtype.EmisBizErrorType;
import com.xdadan.erp.emis.domain.exception.EmisBizError;
import com.xdadan.erp.emis.utils.HTTPHelperV3;
import com.xdadan.erp.system.mapper.SysUserMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 容联七陌服务单点登录
*/
@Service
@Slf4j
public class RL7moorService {
private static String GET_TOKEN="https://openapis.7moor.com/v20160818/sso/getToken/T00000030515?sig=";
private static String ACCOUNTID="T00000030515";
private static String APISecret="81360ad0-927b-11ef-9c48-436edbca608b";
@Autowired
private SysUserMapper sysUserMapper;
/*
账户编号(ACCOUNTID): T00000030515
帐号APISecret: 81360ad0-927b-11ef-9c48-436edbca608b
请求域名(HOST): https://openapis.7moor.com
PBX 地址(proxy_url)
cc-v4.hw.1.0 https://sh-hw-cc-v4.7moor.com
Content-Type:application/json;charset=utf-8;
Authorization: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX;
*/
/**
* 根据员工编号获取客服token
* @return
* @throws Exception
*/
public String getSsoTokenByEmpCode(String empCode) throws Exception {
SysUser sysUser=sysUserMapper.selectUserByUserName(empCode);
String token=get7moorSsoToken(sysUser.getKefuUid(),sysUser.getKefuPwd());
return token;
}
/**
* 获取单点登录token
* @param clientId
* @param clientPassword
* @return
* @throws Exception
*/
public static String get7moorSsoToken(String clientId,String clientPassword) throws Exception {
log.debug("===>getSsoToken==>获取单点登录token==START");
if(StringUtils.isEmpty(clientId) || StringUtils.isEmpty(clientPassword) ){
log.debug("===>getSsoToken==>clientId,clientPassword is empty");
return null;
}
String timeStr= DateUtils.parseDateToStr(DateUtils.YYYYMMDDHHMMSS,new Date());
String authorizationStr= Base64.encode((ACCOUNTID+":"+timeStr).getBytes("utf-8"));
String sigStr=MD5.md5(ACCOUNTID+APISecret+timeStr).toUpperCase();
Map headers = new HashMap<String,String>();
headers.put("Authorization",authorizationStr);
String postUrl=GET_TOKEN+""+sigStr;
/*
"exten":"8000",
"password":"3757ac77ab6b7cfc3249f55532e67ecd",
"extentype":"null",
"timeStamp":"20170417135455",
"module":"call"
座席登陆密码,为加密值(7moor[固定字符]+account [账户编号]+exten [坐席号]+password[坐席密码]+ timeStamp [如20170712135437]),加密方式:32位小写的md5加密
*/
String encPwd= MD5.md5("7moor"+ACCOUNTID+clientId+clientPassword+timeStr);
JSONObject jObjPost = new JSONObject();
jObjPost.put("exten",clientId);
jObjPost.put("password",encPwd);
jObjPost.put("extentype","null");
jObjPost.put("timeStamp",timeStr);
jObjPost.put("module","webchat");
log.debug("postUrl==>"+postUrl);
log.debug("authorizationStr==>"+authorizationStr);
log.debug("sig==>"+sigStr);
log.debug("==>POSTJSON STR==>"+jObjPost.toJSONString());
String restStr= HTTPHelperV3.postJson(postUrl,headers,jObjPost.toJSONString());
log.debug("===>REST STR==>"+restStr);
JSONObject jResObj = JSONObject.parseObject(restStr);
String code=jResObj.getString("code");
String message=jResObj.getString("message");
if(!"200".equals(code)){
throw new EmisBizError(EmisBizErrorType.FAIL,message);
}
String token=jResObj.getString("token");
log.debug("===>getSsoToken==>获取单点登录token==END");
return token;
}
public static void main(String[] args) {
try {
String token=get7moorSsoToken("8000","#Tan7080123");
// 9ba9101b753dfc8b23586f56c41e0741
System.out.println(token);
} catch (Exception e) {
e.printStackTrace();
}
}
}