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}