|
@@ -0,0 +1,130 @@
|
|
|
|
|
+package com.fs.ecall.service.impl;
|
|
|
|
|
+
|
|
|
|
|
+import com.fs.ecall.config.EcallProperties;
|
|
|
|
|
+import com.fs.ecall.domain.ECallResponse;
|
|
|
|
|
+import com.fs.ecall.domain.MemberMembershipRequest;
|
|
|
|
|
+import com.fs.ecall.domain.MemberTerminateRequest;
|
|
|
|
|
+import com.fs.ecall.domain.ModifyTboxPhoneRequest;
|
|
|
|
|
+import com.fs.ecall.service.IECallService;
|
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
+import org.springframework.boot.context.properties.ConfigurationProperties;
|
|
|
|
|
+import org.springframework.http.HttpEntity;
|
|
|
|
|
+import org.springframework.http.HttpHeaders;
|
|
|
|
|
+import org.springframework.http.MediaType;
|
|
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
|
|
+import org.springframework.util.DigestUtils;
|
|
|
|
|
+import org.springframework.web.client.RestTemplate;
|
|
|
|
|
+
|
|
|
|
|
+@Slf4j
|
|
|
|
|
+@Service
|
|
|
|
|
+@ConfigurationProperties(prefix = "ecall")
|
|
|
|
|
+public class ECallServiceImpl implements IECallService {
|
|
|
|
|
+ private final RestTemplate restTemplate;
|
|
|
|
|
+ private final EcallProperties ecallProperties;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 会员备案更新接口
|
|
|
|
|
+ * @param restTemplate
|
|
|
|
|
+ * @param ecallProperties
|
|
|
|
|
+ */
|
|
|
|
|
+ public ECallServiceImpl(RestTemplate restTemplate, EcallProperties ecallProperties) {
|
|
|
|
|
+ this.restTemplate = restTemplate;
|
|
|
|
|
+ this.ecallProperties = ecallProperties;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public ECallResponse saveOrUpdateMember(MemberMembershipRequest request) {
|
|
|
|
|
+ EcallProperties.EnvConfig env = ecallProperties.getEnv();
|
|
|
|
|
+
|
|
|
|
|
+ // 1. 生成 Authorization: MD5(appkey + appsecret) -> UpperCase
|
|
|
|
|
+ String rawKey = env.getAppKey() + env.getAppSecret();
|
|
|
|
|
+ String authCode = DigestUtils.md5DigestAsHex(rawKey.getBytes()).toUpperCase();
|
|
|
|
|
+
|
|
|
|
|
+ // 2. 设置 HTTP Header
|
|
|
|
|
+ HttpHeaders headers = new HttpHeaders();
|
|
|
|
|
+ headers.setContentType(MediaType.APPLICATION_JSON);
|
|
|
|
|
+ headers.set("Authorization", authCode);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ // 4. 构建 Entity 并发送 POST 请求
|
|
|
|
|
+ HttpEntity<MemberMembershipRequest> entity = new HttpEntity<>(request, headers);
|
|
|
|
|
+ String url = env.getUrl().getMembership();
|
|
|
|
|
+
|
|
|
|
|
+ try {
|
|
|
|
|
+ log.info("调用 E-Call 会员备案接口, URL: {}, ExtenalId: {}", url, request.getExtenalId());
|
|
|
|
|
+ return restTemplate.postForObject(url, entity, ECallResponse.class);
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.error("E-Call 接口调用失败", e);
|
|
|
|
|
+ return new ECallResponse("03", "系统异常: " + e.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 会员终止服务
|
|
|
|
|
+ * @param request
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public ECallResponse saveOrUpdateMember(MemberTerminateRequest request) {
|
|
|
|
|
+ EcallProperties.EnvConfig env = ecallProperties.getEnv();
|
|
|
|
|
+
|
|
|
|
|
+ // 1. 生成 Authorization: MD5(appkey + appsecret) -> UpperCase
|
|
|
|
|
+ String rawKey = env.getAppKey() + env.getAppSecret();
|
|
|
|
|
+ String authCode = DigestUtils.md5DigestAsHex(rawKey.getBytes()).toUpperCase();
|
|
|
|
|
+
|
|
|
|
|
+ // 2. 设置 HTTP Header
|
|
|
|
|
+ HttpHeaders headers = new HttpHeaders();
|
|
|
|
|
+ headers.setContentType(MediaType.APPLICATION_JSON);
|
|
|
|
|
+ headers.set("Authorization", authCode);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ // 4. 构建 Entity 并发送 POST 请求
|
|
|
|
|
+ HttpEntity<MemberTerminateRequest> entity = new HttpEntity<>(request, headers);
|
|
|
|
|
+ String url = env.getUrl().getTerminate();
|
|
|
|
|
+
|
|
|
|
|
+ try {
|
|
|
|
|
+ log.info("调用 E-Call 会员备案接口, URL: {}, ExtenalId: {}", url, request.getExtenalId());
|
|
|
|
|
+ return restTemplate.postForObject(url, entity, ECallResponse.class);
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.error("E-Call 接口调用失败", e);
|
|
|
|
|
+ return new ECallResponse("03", "系统异常: " + e.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 修改设备电话接口
|
|
|
|
|
+ * @param request
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public ECallResponse modifyTboxPhone(ModifyTboxPhoneRequest request) {
|
|
|
|
|
+ EcallProperties.EnvConfig env = ecallProperties.getEnv();
|
|
|
|
|
+
|
|
|
|
|
+ // 1. 生成 Authorization: MD5(appkey + appsecret) -> UpperCase
|
|
|
|
|
+ String rawKey = env.getAppKey() + env.getAppSecret();
|
|
|
|
|
+ String authCode = DigestUtils.md5DigestAsHex(rawKey.getBytes()).toUpperCase();
|
|
|
|
|
+
|
|
|
|
|
+ // 2. 设置 HTTP Header
|
|
|
|
|
+ HttpHeaders headers = new HttpHeaders();
|
|
|
|
|
+ headers.setContentType(MediaType.APPLICATION_JSON);
|
|
|
|
|
+ headers.set("Authorization", authCode);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ // 4. 构建 Entity 并发送 POST 请求
|
|
|
|
|
+ HttpEntity<ModifyTboxPhoneRequest> entity = new HttpEntity<>(request, headers);
|
|
|
|
|
+ String url = env.getUrl().getTerminate();
|
|
|
|
|
+
|
|
|
|
|
+ try {
|
|
|
|
|
+ log.info("调用 E-Call 会员备案接口, URL: {}, ExtenalId: {}", url, request.getExtenalId());
|
|
|
|
|
+ return restTemplate.postForObject(url, entity, ECallResponse.class);
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.error("E-Call 接口调用失败", e);
|
|
|
|
|
+ return new ECallResponse("03", "系统异常: " + e.getMessage());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|