diff --git a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/form/ExternalAppFormDTO.java b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/form/ExternalAppFormDTO.java
index 00b99a500e..8a1b6713c0 100644
--- a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/form/ExternalAppFormDTO.java
+++ b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/form/ExternalAppFormDTO.java
@@ -20,6 +20,15 @@ public class ExternalAppFormDTO {
@NotBlank(message = "缺少所属客户ID", groups = { AddExternalApp.class, UpdateExternalApp.class })
private String customerId;
+ /**
+ * 客户类型
+ * external:外部
+ * internal:内部
+ */
+ @NotBlank(message = "缺少客户类型", groups = { AddExternalApp.class, UpdateExternalApp.class })
+ private String customerType;
+
+
private Integer pageNo = 1;
private Integer pageSize = 10;
diff --git a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/result/ExternalAppResultDTO.java b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/result/ExternalAppResultDTO.java
index e4cf3fedb6..93fba80fa2 100644
--- a/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/result/ExternalAppResultDTO.java
+++ b/epmet-module/epmet-common-service/common-service-client/src/main/java/com/epmet/dto/result/ExternalAppResultDTO.java
@@ -21,6 +21,10 @@ public class ExternalAppResultDTO {
*/
private String customerName;
+ private String customerType;
+
+ private String customerTypeName;
+
/**
* 秘钥
*/
diff --git a/epmet-module/epmet-common-service/common-service-server/pom.xml b/epmet-module/epmet-common-service/common-service-server/pom.xml
index 3988353e35..a81498d9a8 100644
--- a/epmet-module/epmet-common-service/common-service-server/pom.xml
+++ b/epmet-module/epmet-common-service/common-service-server/pom.xml
@@ -64,6 +64,12 @@
jjwt
0.7.0
+
+
+ com.epmet
+ oper-crm-client
+ 2.0.0
+
diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ExternalAppController.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ExternalAppController.java
index c272d83675..ffab33bbbe 100644
--- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ExternalAppController.java
+++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/controller/ExternalAppController.java
@@ -66,8 +66,9 @@ public class ExternalAppController {
String appName = formDTO.getAppName();
String customerId = formDTO.getCustomerId();
+ String customerType = formDTO.getCustomerType();
- ExternalAppResultDTO dto = externalAppService.add(appName, customerId);
+ ExternalAppResultDTO dto = externalAppService.add(appName, customerId, customerType);
return new Result().ok(dto);
}
@@ -84,8 +85,9 @@ public class ExternalAppController {
String appId = formDTO.getAppId();
String appName = formDTO.getAppName();
String customerId = formDTO.getCustomerId();
+ String customerType = formDTO.getCustomerType();
- ExternalAppResultDTO dto = externalAppService.updateById(appId, appName, customerId);
+ ExternalAppResultDTO dto = externalAppService.updateById(appId, appName, customerId, customerType);
return new Result().ok(dto);
}
diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/entity/ExternalAppEntity.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/entity/ExternalAppEntity.java
index e4a4056108..421e9712f5 100644
--- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/entity/ExternalAppEntity.java
+++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/entity/ExternalAppEntity.java
@@ -48,4 +48,6 @@ public class ExternalAppEntity extends BaseEpmetEntity {
*/
private String customerId;
+ private String customerType;
+
}
diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/enu/CustomerTypeEnum.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/enu/CustomerTypeEnum.java
new file mode 100644
index 0000000000..c8ecc22dab
--- /dev/null
+++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/enu/CustomerTypeEnum.java
@@ -0,0 +1,41 @@
+package com.epmet.enu;
+
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * 客户类型枚举
+ */
+public enum CustomerTypeEnum {
+
+ INTERNAL("internal", "内部客户"),
+ EXTERNAL("external", "外部客户"),
+ UN_KNOW("unknow", "未知类型");
+
+ private String type;
+ private String name;
+
+ CustomerTypeEnum(String type, String name) {
+ this.type = type;
+ this.name = name;
+ }
+
+ public static String getName(String type) {
+ if (StringUtils.isBlank(type)) {
+ return null;
+ }
+ for (CustomerTypeEnum value : CustomerTypeEnum.values()) {
+ if (value.type.equals(type)) {
+ return value.name;
+ }
+ }
+ return UN_KNOW.name;
+ }
+
+ public String getType() {
+ return type;
+ }
+
+ public String getName() {
+ return name;
+ }
+}
diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/ExternalAppService.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/ExternalAppService.java
index a2352ec41e..4d5d847e68 100644
--- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/ExternalAppService.java
+++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/ExternalAppService.java
@@ -29,9 +29,9 @@ import java.util.List;
* @since v1.0.0 2020-08-18
*/
public interface ExternalAppService {
- ExternalAppResultDTO add(String appName, String customerId);
+ ExternalAppResultDTO add(String appName, String customerId, String customerType);
- ExternalAppResultDTO updateById(String appId, String appName, String customerId);
+ ExternalAppResultDTO updateById(String appId, String appName, String customerId, String customerType);
PageData listPage(Integer pageNo, Integer pageSize, String customerId);
diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ExternalAppServiceImpl.java b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ExternalAppServiceImpl.java
index c6b106c1a5..db3267c600 100644
--- a/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ExternalAppServiceImpl.java
+++ b/epmet-module/epmet-common-service/common-service-server/src/main/java/com/epmet/service/impl/ExternalAppServiceImpl.java
@@ -20,15 +20,23 @@ package com.epmet.service.impl;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
+import com.epmet.commons.tools.redis.RedisKeys;
+import com.epmet.commons.tools.redis.RedisUtils;
+import com.epmet.commons.tools.utils.Result;
import com.epmet.dao.ExternalAppDao;
import com.epmet.dao.ExternalAppSecretDao;
import com.epmet.dao.ExternalCustomerDao;
+import com.epmet.dto.CustomerDTO;
import com.epmet.dto.result.ExternalAppResultDTO;
import com.epmet.entity.ExternalAppEntity;
import com.epmet.entity.ExternalAppSecretEntity;
+import com.epmet.enu.CustomerTypeEnum;
+import com.epmet.feign.OperCrmOpenFeignClient;
import com.epmet.service.ExternalAppService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -45,6 +53,8 @@ import java.util.UUID;
@Service
public class ExternalAppServiceImpl implements ExternalAppService {
+ private static Logger logger = LoggerFactory.getLogger(ExternalAppServiceImpl.class);
+
@Autowired
private ExternalAppDao externalAppDao;
@@ -54,24 +64,42 @@ public class ExternalAppServiceImpl implements ExternalAppService {
@Autowired
private ExternalCustomerDao externalCustomerDao;
+ @Autowired
+ private OperCrmOpenFeignClient operCrmOpenFeignClient;
+
+ @Autowired
+ private RedisUtils redisUtils;
+
@Transactional
@Override
- public ExternalAppResultDTO add(String appName, String customerId) {
+ public ExternalAppResultDTO add(String appName, String customerId, String customerType) {
Integer count = externalAppDao.countByAppNameAndCustomerId(appName, customerId);
if (count > 0) {
throw new RenException(EpmetErrorCode.OPER_EXTERNAL_APP_EXISTS.getCode(),
EpmetErrorCode.OPER_EXTERNAL_APP_EXISTS.getMsg());
}
- if (externalCustomerDao.selectById(customerId) == null) {
+ if (CustomerTypeEnum.EXTERNAL.getType().equals(customerType) && externalCustomerDao.selectById(customerId) == null) {
throw new RenException(EpmetErrorCode.OPER_EXTERNAL_CUSTOMER_NOT_EXISTS.getCode(),
EpmetErrorCode.OPER_EXTERNAL_CUSTOMER_NOT_EXISTS.getMsg());
}
+ if (CustomerTypeEnum.INTERNAL.getType().equals(customerType)) {
+ CustomerDTO form = new CustomerDTO();
+ form.setId(customerId);
+ Result customerInfoRst = operCrmOpenFeignClient.getCustomerInfo(form);
+ if (customerInfoRst.success() && customerInfoRst.getData() == null) {
+ throw new RenException(EpmetErrorCode.OPER_EXTERNAL_CUSTOMER_NOT_EXISTS.getCode(),
+ EpmetErrorCode.OPER_EXTERNAL_CUSTOMER_NOT_EXISTS.getMsg());
+ }
+
+ }
+
// 应用表插入
ExternalAppEntity appEntity = new ExternalAppEntity();
appEntity.setAppName(appName);
appEntity.setCustomerId(customerId);
+ appEntity.setCustomerType(customerType);
externalAppDao.insert(appEntity);
// 秘钥表插入
@@ -98,7 +126,7 @@ public class ExternalAppServiceImpl implements ExternalAppService {
}
@Override
- public ExternalAppResultDTO updateById(String appId, String appName, String customerId) {
+ public ExternalAppResultDTO updateById(String appId, String appName, String customerId, String customerType) {
ExternalAppEntity exists = externalAppDao.selectById(appId);
if (exists == null) {
throw new RenException(EpmetErrorCode.OPER_EXTERNAL_CUSTOMER_NOT_EXISTS.getCode(),
@@ -113,6 +141,7 @@ public class ExternalAppServiceImpl implements ExternalAppService {
exists.setAppName(appName);
exists.setCustomerId(customerId);
+ exists.setCustomerType(customerType);
externalAppDao.updateById(exists);
ExternalAppResultDTO resultDTO = new ExternalAppResultDTO();
@@ -126,6 +155,26 @@ public class ExternalAppServiceImpl implements ExternalAppService {
public PageData listPage(Integer pageNo, Integer pageSize, String customerId) {
PageHelper.startPage(pageNo, pageSize);
List list = externalAppDao.list(customerId);
+ for (ExternalAppResultDTO app : list) {
+ // 设置客户类型中文
+ app.setCustomerTypeName(CustomerTypeEnum.getName(app.getCustomerType()));
+
+ if (CustomerTypeEnum.INTERNAL.getType().equals(app.getCustomerType())) {
+ // 如果是内部客户,那么需要去oper_crm库查询客户信息
+ CustomerDTO form = new CustomerDTO();
+ form.setId(app.getCustomerId());
+ Result customerInfoRst = operCrmOpenFeignClient.getCustomerInfo(form);
+ if (! customerInfoRst.success()) {
+ logger.error("common service->ExternalAppServiceImpl#listPage查询内部客户失败:{}", customerInfoRst.getInternalMsg());
+ continue;
+ }
+ // 设置客户名称
+ CustomerDTO customerInfo = customerInfoRst.getData();
+ if (customerInfo != null) {
+ app.setCustomerName(customerInfo.getCustomerName());
+ }
+ }
+ }
PageInfo pageInfo = new PageInfo<>(list);
return new PageData<>(list, pageInfo.getTotal());
}
@@ -140,8 +189,11 @@ public class ExternalAppServiceImpl implements ExternalAppService {
public String resetSecret(String appId) {
String secret = genSecret();
if (externalAppSecretDao.updateSecret(appId, secret) > 0) {
+ // 删除外部应用的秘钥缓存,再次使用的时候将主动加载入缓存
+ redisUtils.delete(RedisKeys.getExternalAppSecretKey(appId));
return secret;
}
+
return null;
}
diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/resources/db/migration/V0.0.4__add_extcustomer_type.sql b/epmet-module/epmet-common-service/common-service-server/src/main/resources/db/migration/V0.0.4__add_extcustomer_type.sql
new file mode 100644
index 0000000000..fb82b44bcd
--- /dev/null
+++ b/epmet-module/epmet-common-service/common-service-server/src/main/resources/db/migration/V0.0.4__add_extcustomer_type.sql
@@ -0,0 +1 @@
+alter table external_app add column CUSTOMER_TYPE varchar(20) not null after CUSTOMER_ID;
\ No newline at end of file
diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/ExternalAppDao.xml b/epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/ExternalAppDao.xml
index 62d5823a96..8ce99b1a67 100644
--- a/epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/ExternalAppDao.xml
+++ b/epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/ExternalAppDao.xml
@@ -7,6 +7,7 @@
+
@@ -33,10 +34,11 @@
ea.APP_NAME,
ea.CUSTOMER_ID,
ec.CUSTOMER_NAME ,
+ ea.CUSTOMER_TYPE,
eas.SECRET
FROM
external_app ea
- INNER JOIN external_customer ec ON ( ea.CUSTOMER_ID = ec.ID )
+ LEFT JOIN external_customer ec ON ( ea.CUSTOMER_ID = ec.ID )
LEFT JOIN external_app_secret eas ON (ea.ID = eas.APP_ID)
ea.DEL_FLAG = 0
diff --git a/epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/ExternalAppSecretDao.xml b/epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/ExternalAppSecretDao.xml
index 995dbd0270..a192df36b1 100644
--- a/epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/ExternalAppSecretDao.xml
+++ b/epmet-module/epmet-common-service/common-service-server/src/main/resources/mapper/ExternalAppSecretDao.xml
@@ -19,7 +19,7 @@
update external_app_secret
set SECRET=#{secret}
- where ID = #{appId}
+ where APP_ID = #{appId}