From dd7f6e190c57ed97a9396f45428e4270414db653 Mon Sep 17 00:00:00 2001 From: linfso Date: Fri, 25 Oct 2024 23:45:26 +0800 Subject: [PATCH] md --- .../erp/web/emis/EmisCommonController.java | 19 +++ .../web/emis/EmisCommonToolsController.java | 4 + .../erp/emis/service/kefu/RL7moorService.java | 137 ++++++++++++++++++ 3 files changed, 160 insertions(+) create mode 100644 emis-biz/src/main/java/com/xdadan/erp/emis/service/kefu/RL7moorService.java diff --git a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisCommonController.java b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisCommonController.java index 30c78cdd3..621ada7c1 100644 --- a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisCommonController.java +++ b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisCommonController.java @@ -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异常"); + } + + } + + } diff --git a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisCommonToolsController.java b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisCommonToolsController.java index d8dd897f7..e8b330457 100644 --- a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisCommonToolsController.java +++ b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisCommonToolsController.java @@ -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 + } diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/kefu/RL7moorService.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/kefu/RL7moorService.java new file mode 100644 index 000000000..f5837d3c2 --- /dev/null +++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/kefu/RL7moorService.java @@ -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(); + 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(); + } + } + + +}