diff --git a/blade-biz-common/src/main/java/org/springblade/common/component/MockLoginService.java b/blade-biz-common/src/main/java/org/springblade/common/component/MockLoginService.java index bac0bc4a0..80cadb339 100644 --- a/blade-biz-common/src/main/java/org/springblade/common/component/MockLoginService.java +++ b/blade-biz-common/src/main/java/org/springblade/common/component/MockLoginService.java @@ -19,7 +19,8 @@ public class MockLoginService { public JSONObject mockToken(String tenantId,String account) { String url = "http://" + LauncherConstant.loginAddr(Objects.requireNonNull(environment.getActiveProfiles()[0])) + "/blade-auth/oauth/token"; HttpRequest urlRequest = HttpRequest.post(url); - urlRequest.header("Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0"); +// urlRequest.header("Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0"); + urlRequest.header("Authorization", "Basic bG9jYWw6bG9jYWxfc2VjcmV0"); urlRequest.header("Tenant-Id", "627683"); Map params = new HashMap<>(); diff --git a/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/entity/SyncOldTrayTypeLogEntity.java b/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/entity/SyncOldTrayTypeLogEntity.java index 822f50b07..79e890d59 100644 --- a/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/entity/SyncOldTrayTypeLogEntity.java +++ b/blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/entity/SyncOldTrayTypeLogEntity.java @@ -51,4 +51,7 @@ public class SyncOldTrayTypeLogEntity extends TenantEntity { @ApiModelProperty(value = "同步次数") private Integer syncNum; + @ApiModelProperty(value = "队列状态") + private Integer mqStatus; + } diff --git a/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/aspect/JobAnnotationAspect.java b/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/aspect/JobAnnotationAspect.java index a9db2ab45..cbb71dfdf 100644 --- a/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/aspect/JobAnnotationAspect.java +++ b/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/aspect/JobAnnotationAspect.java @@ -9,6 +9,7 @@ import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.springblade.common.cache.CacheNames; +import org.springblade.common.component.MockLoginService; import org.springblade.common.constant.LauncherConstant; import org.springblade.core.redis.cache.BladeRedis; import org.springblade.core.redis.lock.LockType; @@ -34,6 +35,8 @@ public class JobAnnotationAspect { private final Environment environment; private final RedisLockClient redisLockClient; + private final MockLoginService mockLoginService; + @Around("@annotation(com.xxl.job.core.handler.annotation.XxlJob)") public Object xxlJobAnnotationMethods(ProceedingJoinPoint joinPoint) throws Throwable { @@ -45,7 +48,7 @@ public class JobAnnotationAspect { HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.add("Blade-Auth","bearer "+jsonObject.get("access_token") ); - httpHeaders.add( "Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0"); + httpHeaders.add( "Authorization", "Basic bG9jYWw6bG9jYWxfc2VjcmV0"); ThreadLocalUtil.put("bladeContext", httpHeaders); DynamicDataSourceContextHolder.push(jsonObject.getString("tenant_id")); @@ -68,20 +71,8 @@ public class JobAnnotationAspect { if(flag){ data =bladeRedis.get(CacheNames.LOCAL_SERVER_USER+account); if(Objects.isNull(data)){ - String url = "http://"+ LauncherConstant.loginAddr(Objects.requireNonNull(environment.getActiveProfiles()[0]))+"/blade-auth/oauth/token"; - HttpRequest urlRequest = HttpRequest.post(url); - urlRequest.header("Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0"); - urlRequest.header("Tenant-Id", "627683"); - - Map params = new HashMap<>(); - params.put("grant_type", "local_server"); - params.put("scope", "all"); - params.put("username", account); - params.put("tenantId", "627683"); - HttpResponse execute = urlRequest.form(params).execute(); - String body = execute.body(); - data = JSONObject.parseObject(body); - bladeRedis.setEx(CacheNames.LOCAL_SERVER_USER+account,data,3200L); + data = mockLoginService.mockToken("627683",account); + bladeRedis.setEx(CacheNames.LOCAL_SERVER_USER+account,data,25919900L); redisLockClient.unLock("local_server_user", LockType.FAIR); } } diff --git a/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/controller/AftersalesReturnRecordController.java b/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/controller/AftersalesReturnRecordController.java index 93ada89ea..237a5b458 100644 --- a/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/controller/AftersalesReturnRecordController.java +++ b/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/controller/AftersalesReturnRecordController.java @@ -141,7 +141,22 @@ public class AftersalesReturnRecordController extends BladeController { return R.status(aftersalesReturnRecordService.batchRepulse(aftersalesReturnRecord)); } - + /** + * 客服异常工单 已完结数据打回操作 + */ + @PostMapping("/batchRepulseCompleted") + @ApiOperationSupport(order = 4) + @ApiOperation(value = "异常工单 已完结数据打回操作", notes = "传入aftersalesWorkOrder") + public R batchRepulseCompleted(@Valid @RequestBody AftersalesReturnRecordDTO aftersalesReturnRecord) { + if(aftersalesReturnRecord.getWorkOrderIds().isEmpty()){ + return R.fail("请选择工单!"); + } +// if(aftersalesReturnRecord.getProcessorList().isEmpty()){ +// return R.fail("请选择打回的营业部!"); +// } + aftersalesReturnRecord.setTypesOf(ReturnRecordTypesOfStatusConstant.wanjeidahui.getValue()); + return R.status(aftersalesReturnRecordService.batchRepulseCompleted(aftersalesReturnRecord)); + } /** * 客服异常工单 已完结数据打回操作 @@ -153,9 +168,9 @@ public class AftersalesReturnRecordController extends BladeController { if(aftersalesReturnRecord.getWorkOrderIds().isEmpty()){ return R.fail("请选择工单!"); } - if(aftersalesReturnRecord.getProcessorList().isEmpty()){ - return R.fail("请选择打回的营业部!"); - } +// if(aftersalesReturnRecord.getProcessorList().isEmpty()){ +// return R.fail("请选择打回的营业部!"); +// } aftersalesReturnRecord.setTypesOf(ReturnRecordTypesOfStatusConstant.wanjeidahui.getValue()); return R.status(aftersalesReturnRecordService.getCompletedReturned(aftersalesReturnRecord)); } diff --git a/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/service/IAftersalesReturnRecordService.java b/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/service/IAftersalesReturnRecordService.java index 8b15471d5..864898395 100644 --- a/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/service/IAftersalesReturnRecordService.java +++ b/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/service/IAftersalesReturnRecordService.java @@ -70,4 +70,7 @@ public interface IAftersalesReturnRecordService extends BaseService workOrderIds = aftersalesReturnRecord.getWorkOrderIds(); + String reasonReturn = aftersalesReturnRecord.getReasonReturn(); + List returnRecordEntities = new ArrayList<>(); + List workOrderEntities = new ArrayList<>(); + if(CollUtil.isNotEmpty(workOrderIds)){ + for (Long workOrderId : workOrderIds) { + AftersalesReturnRecordEntity returnRecordEntity = new AftersalesReturnRecordEntity(); + BeanUtil.copyProperties(aftersalesReturnRecord,returnRecordEntity); + returnRecordEntities.add(returnRecordEntity); + AftersalesWorkOrderEntity orderEntity = new AftersalesWorkOrderEntity(); + orderEntity.setId(workOrderId); + orderEntity.setWorkOrderStatus(WorkOrderStatusConstant.yichuli.getValue()); + workOrderEntities.add(orderEntity); + } + } + if(CollUtil.isNotEmpty(returnRecordEntities)){ + this.saveBatch(returnRecordEntities); + } + if(CollUtil.isNotEmpty(workOrderEntities)){ + aftersalesWorkOrderService.updateBatchById(workOrderEntities); + } + return true; + } + } diff --git a/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/service/impl/AftersalesWorkOrderServiceImpl.java b/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/service/impl/AftersalesWorkOrderServiceImpl.java index 9f3378806..2626a62e7 100644 --- a/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/service/impl/AftersalesWorkOrderServiceImpl.java +++ b/blade-service/logpm-aftersales/src/main/java/com/logpm/aftersales/service/impl/AftersalesWorkOrderServiceImpl.java @@ -679,9 +679,11 @@ public class AftersalesWorkOrderServiceImpl extends BaseServiceImpllambdaQuery().eq(AftersalesCompletionRecordEntity::getWorkOrderId, v.getId())); completionRecordService.saveBatch(v.getCompletionRecordEntities()); //添加受款方信息,可以为空 if (ObjectUtils.isNotNull(v.getCompletionRecipientEntities())) { + completionRecipientService.remove(Wrappers.lambdaQuery().eq(AftersalesCompletionRecipientEntity::getWorkOrderId, v.getId())); completionRecipientService.saveBatch(v.getCompletionRecipientEntities()); } //修改工单异常待审核状态 @@ -1751,13 +1753,7 @@ public class AftersalesWorkOrderServiceImpl extends BaseServiceImpl params = new HashMap<>(); - params.put("grant_type", "local_server"); - params.put("scope", "all"); - params.put("username", account); - params.put("tenantId", "627683"); - HttpResponse execute = urlRequest.form(params).execute(); - String body = execute.body(); - data = JSONObject.parseObject(body); - bladeRedis.setEx(CacheNames.LOCAL_SERVER_USER+account,data,3200L); + data = mockLoginService.mockToken("627683",account); + bladeRedis.setEx(CacheNames.LOCAL_SERVER_USER+account,data,25919900L); redisLockClient.unLock("local_server_user", LockType.FAIR); } } diff --git a/blade-service/logpm-business/src/main/java/com/logpm/business/aspect/ChangeAsyncAnnotationAspect.java b/blade-service/logpm-business/src/main/java/com/logpm/business/aspect/ChangeAsyncAnnotationAspect.java index 2be435999..2fd34d0bd 100644 --- a/blade-service/logpm-business/src/main/java/com/logpm/business/aspect/ChangeAsyncAnnotationAspect.java +++ b/blade-service/logpm-business/src/main/java/com/logpm/business/aspect/ChangeAsyncAnnotationAspect.java @@ -90,7 +90,7 @@ public class ChangeAsyncAnnotationAspect { HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.add("Blade-Auth","bearer "+data.get("access_token") ); - httpHeaders.add( "Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0"); + httpHeaders.add( "Authorization", "Basic bG9jYWw6bG9jYWxfc2VjcmV0"); ThreadLocalUtil.put("bladeContext", httpHeaders); DynamicDataSourceContextHolder.push(data.getString("tenant_id")); diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/aspect/ChangeAsyncAnnotationAspect.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/aspect/ChangeAsyncAnnotationAspect.java index f986d0c87..c75e6445f 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/aspect/ChangeAsyncAnnotationAspect.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/aspect/ChangeAsyncAnnotationAspect.java @@ -92,7 +92,7 @@ public class ChangeAsyncAnnotationAspect { HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.add("Blade-Auth","bearer "+data.get("access_token") ); - httpHeaders.add( "Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0"); + httpHeaders.add( "Authorization", "Basic bG9jYWw6bG9jYWxfc2VjcmV0"); ThreadLocalUtil.put("bladeContext", httpHeaders); DynamicDataSourceContextHolder.push(data.getString("tenant_id")); diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionDeliveryListMapper.xml b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionDeliveryListMapper.xml index ac52ceac1..8f3370086 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionDeliveryListMapper.xml +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionDeliveryListMapper.xml @@ -1815,7 +1815,8 @@ ldr.service_number, ldr.cancel_reason, ldr.is_urgent, - ldr.collection_fee + ldr.collection_fee, + ldr.signing_status FROM logpm_distribution_signfor AS lds INNER JOIN logpm_distribution_reservation AS ldr ON lds.reservation_id = ldr.id diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java index 882956376..d25e00d97 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java @@ -2877,7 +2877,6 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl { HashSet orderNumber = new HashSet<>(); //运单号 -// HashSet waybillNo = new HashSet<>(); //运单ID -------这里运单Id后续可能变更为运单号 HashSet waybillId = new HashSet<>(); //订单服务号 @@ -3170,7 +3169,6 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl reservationStockarticleEntityList = distributionReservationStockarticleMapper.selectList(Wrappers.query().lambda().eq(DistributionReservationStockarticleEntity::getReservationId, reservationEntity.getId()).ne(DistributionReservationStockarticleEntity::getStockArticleStatus, ReservationOrderStatusConstant.quxiao.getValue())); Map> oldOrder = reservationStockarticleEntityList.stream().collect(Collectors.groupingBy(DistributionReservationStockarticleEntity::getStockArticleId)); @@ -3214,12 +3212,12 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl packageListInfo = s.getPackageListInfo(); if (Func.isNotEmpty(packageListInfo)) { @@ -3359,9 +3357,9 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl { if (Func.isEmpty(oldPackageList.get(p.getId()))) { - if (Func.isNotEmpty(signforEntity) && signforEntity.getSigningStatus().equals(SignforStatusConstant.yiqianshou.getValue())) { + if (Func.isNotEmpty(reservationEntity) && reservationEntity.getSigningStatus().equals(ReservationSigningStatusConstant.yiqianshou.getValue())) { log.error("#############商配文员对已复核预约进行订单追加reservationId:{}", reservationEntity.getId()); - throw new RuntimeException("收货单位:" + reservationEntity.getMallName() + "客户:" + reservationEntity.getConsignee() + "完成复核签收,无法追加订单"); + throw new RuntimeException("收货单位:" + reservationEntity.getMallName() + "客户:" + reservationEntity.getConsignee() + "司机完成签收,无法追加订单"); } //为该订单新增了包件 DistributionReservationPackageEntity reservationPackageEntity = new DistributionReservationPackageEntity(); @@ -3384,30 +3382,33 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl { - if (Func.isNotEmpty(signforEntity) && signforEntity.getSigningStatus().equals(SignforStatusConstant.yiqianshou.getValue())) { + if (!oldPackageList.isEmpty()) { + if (Func.isNotEmpty(signforEntity) && signforEntity.getSigningStatus().equals(ReservationSigningStatusConstant.yiqianshou.getValue())) { log.error("#############商配文员对已复核预约进行订单追加reservationId:{}", reservationEntity.getId()); - throw new RuntimeException("收货单位:" + reservationEntity.getMallName() + "客户:" + reservationEntity.getConsignee() + "完成复核签收,无法追加订单"); + throw new RuntimeException("收货单位:" + reservationEntity.getMallName() + "客户:" + reservationEntity.getConsignee() + "完成复核签收,无法取消包件"); } - DistributionReservationPackageEntity reservationPackageEntity = b.get(0); - reservationPackageEntity.setPacketBarStatus(ReservationPackageStatusConstant.quxiao.getValue()); - distributionReservationPackageService.updateById(reservationPackageEntity); - //取消包件的预约状态,并且进行整个订单的状态修改 - DistributionParcelListEntity parcelListEntity = distributionParcelListService.getById(reservationPackageEntity.getParceListId()); - parcelListEntity.setOrderPackageReservationStatus(OrderPackageReservationStatusConstant.daiyuyue.getValue()); - distributionParcelListService.updateById(parcelListEntity); - if (Func.isNotEmpty(bladeRedis.get("warehouseId:"+myCurrentWarehouse.getId()+"orderCode:"+parcelListEntity.getOrderCode()))){ - List ids = bladeRedis.get("warehouseId:" + myCurrentWarehouse.getId() + "orderCode:" + parcelListEntity.getOrderCode()); - int indexOf = ids.indexOf(parcelListEntity.getId()); - if (indexOf>0){ - ids.remove(indexOf); - bladeRedis.set("warehouseId:" + myCurrentWarehouse.getId() + "orderCode:" + parcelListEntity.getOrderCode(),ids); + oldPackageList.forEach((a, b) -> { + DistributionReservationPackageEntity reservationPackageEntity = b.get(0); + reservationPackageEntity.setPacketBarStatus(ReservationPackageStatusConstant.quxiao.getValue()); + distributionReservationPackageService.updateById(reservationPackageEntity); + //取消包件的预约状态,并且进行整个订单的状态修改 + DistributionParcelListEntity parcelListEntity = distributionParcelListService.getById(reservationPackageEntity.getParceListId()); + parcelListEntity.setOrderPackageReservationStatus(OrderPackageReservationStatusConstant.daiyuyue.getValue()); + distributionParcelListService.updateById(parcelListEntity); + if (Func.isNotEmpty(bladeRedis.get("warehouseId:"+myCurrentWarehouse.getId()+"orderCode:"+parcelListEntity.getOrderCode()))){ + List ids = bladeRedis.get("warehouseId:" + myCurrentWarehouse.getId() + "orderCode:" + parcelListEntity.getOrderCode()); + int indexOf = ids.indexOf(parcelListEntity.getId()); + if (indexOf>0){ + ids.remove(indexOf); + bladeRedis.set("warehouseId:" + myCurrentWarehouse.getId() + "orderCode:" + parcelListEntity.getOrderCode(),ids); + } } - } - String content = "包件在"+myCurrentWarehouse.getName()+"由"+AuthUtil.getUser().getNickName()+"取消商配计划配车,操作方式:对已有计划订单进行勾选包件取消操作,预约任务号:"+reservationEntity.getReservationCode(); - JSONObject js = handleLogJSONObject(myCurrentWarehouse, AuthUtil.getUser(), parcelListEntity.getOrderPackageCode(),content , WorkNodeEnums.PLAN_DISTRIBUTION.getCode()); - logs.add(js); - }); + String content = "包件在"+myCurrentWarehouse.getName()+"由"+AuthUtil.getUser().getNickName()+"取消商配计划配车,操作方式:对已有计划订单进行勾选包件取消操作,预约任务号:"+reservationEntity.getReservationCode(); + JSONObject js = handleLogJSONObject(myCurrentWarehouse, AuthUtil.getUser(), parcelListEntity.getOrderPackageCode(),content , WorkNodeEnums.PLAN_DISTRIBUTION.getCode()); + logs.add(js); + }); + + } } else { //查找该订单没有进行包件选择的操作, 但是存在newOrder列表中 视为该订单保持计划选择 packageNum.getAndAdd(reservationStockarticleEntity.getReservationNum()); @@ -3502,11 +3503,11 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl { - if (Func.isNotEmpty(signforEntity) && signforEntity.getSigningStatus().equals(SignforStatusConstant.yiqianshou.getValue())) { - log.error("#############商配文员对已复核预约进行订单追加reservationId:{}", reservationEntity.getId()); - throw new RuntimeException("收货单位:" + reservationEntity.getMallName() + "客户:" + reservationEntity.getConsignee() + "完成复核签收,无法追加订单"); - } DistributionReservationStockarticleEntity reservationStockarticleEntity = n.get(0); if (reservationStockarticleEntity.getIsZero().equals(IsOrNoConstant.no.getValue())) { List reservationPackageEntityList = distributionReservationPackageMapper.selectList(Wrappers.query().lambda().eq(DistributionReservationPackageEntity::getReservationId, reservationEntity.getId()).eq(DistributionReservationPackageEntity::getStockArticleId, reservationStockarticleEntity.getStockArticleId())); diff --git a/blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/aspect/JobAnnotationAspect.java b/blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/aspect/JobAnnotationAspect.java index 72f7ea7c0..eec5f9b82 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/aspect/JobAnnotationAspect.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/aspect/JobAnnotationAspect.java @@ -9,6 +9,7 @@ import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.springblade.common.cache.CacheNames; +import org.springblade.common.component.MockLoginService; import org.springblade.common.constant.LauncherConstant; import org.springblade.core.redis.cache.BladeRedis; import org.springblade.core.redis.lock.LockType; @@ -33,6 +34,7 @@ public class JobAnnotationAspect { private final BladeRedis bladeRedis; private final Environment environment; private final RedisLockClient redisLockClient; + private final MockLoginService mockLoginService; @Around("@annotation(com.xxl.job.core.handler.annotation.XxlJob)") public Object xxlJobAnnotationMethods(ProceedingJoinPoint joinPoint) throws Throwable { @@ -45,7 +47,7 @@ public class JobAnnotationAspect { HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.add("Blade-Auth","bearer "+jsonObject.get("access_token") ); - httpHeaders.add( "Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0"); + httpHeaders.add( "Authorization", "Basic bG9jYWw6bG9jYWxfc2VjcmV0"); ThreadLocalUtil.put("bladeContext", httpHeaders); DynamicDataSourceContextHolder.push(jsonObject.getString("tenant_id")); @@ -68,20 +70,8 @@ public class JobAnnotationAspect { if(flag){ data =bladeRedis.get(CacheNames.LOCAL_SERVER_USER+account); if(Objects.isNull(data)){ - String url = "http://"+ LauncherConstant.loginAddr(Objects.requireNonNull(environment.getActiveProfiles()[0]))+"/blade-auth/oauth/token"; - HttpRequest urlRequest = HttpRequest.post(url); - urlRequest.header("Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0"); - urlRequest.header("Tenant-Id", "627683"); - - Map params = new HashMap<>(); - params.put("grant_type", "local_server"); - params.put("scope", "all"); - params.put("username", account); - params.put("tenantId", "627683"); - HttpResponse execute = urlRequest.form(params).execute(); - String body = execute.body(); - data = JSONObject.parseObject(body); - bladeRedis.setEx(CacheNames.LOCAL_SERVER_USER+account,data,3200L); + data = mockLoginService.mockToken("627683",account); + bladeRedis.setEx(CacheNames.LOCAL_SERVER_USER+account,data,25919900L); redisLockClient.unLock("local_server_user", LockType.FAIR); } } diff --git a/blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/interceptor/LocalServerLoginAccountsInterceptor.java b/blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/interceptor/LocalServerLoginAccountsInterceptor.java index ceea7ba59..72db6146b 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/interceptor/LocalServerLoginAccountsInterceptor.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-jinpai/src/main/java/com/logpm/factorydata/jinpai/interceptor/LocalServerLoginAccountsInterceptor.java @@ -3,13 +3,16 @@ package com.logpm.factorydata.jinpai.interceptor; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; -import com.logpm.factorydata.jinpai.wrapper.CustomHttpServletRequestWrapper; import lombok.AllArgsConstructor; import lombok.extern.log4j.Log4j2; import org.springblade.common.cache.CacheNames; +import org.springblade.common.component.MockLoginService; import org.springblade.common.constant.LauncherConstant; import org.springblade.common.exception.CustomerException; +import org.springblade.common.wrapper.CustomHttpServletRequestWrapper; import org.springblade.core.redis.cache.BladeRedis; +import org.springblade.core.redis.lock.LockType; +import org.springblade.core.redis.lock.RedisLockClient; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.ThreadLocalUtil; import org.springframework.core.env.Environment; @@ -25,6 +28,7 @@ import java.io.PrintWriter; import java.util.HashMap; import java.util.Map; import java.util.Objects; +import java.util.concurrent.TimeUnit; @Log4j2 @AllArgsConstructor @@ -32,29 +36,26 @@ public class LocalServerLoginAccountsInterceptor extends HandlerInterceptorAdapt private final BladeRedis bladeRedis; private final Environment environment; + private final RedisLockClient redisLockClient; + private final MockLoginService mockLoginService; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws CustomerException { try { - CustomHttpServletRequestWrapper wrappedRequest = new CustomHttpServletRequestWrapper(request); + org.springblade.common.wrapper.CustomHttpServletRequestWrapper wrappedRequest = new CustomHttpServletRequestWrapper(request); String account ="shujutongbu"; JSONObject data =bladeRedis.get(CacheNames.LOCAL_SERVER_USER+account); if(Objects.isNull(data)){ - String url = "http://"+ LauncherConstant.loginAddr(Objects.requireNonNull(environment.getActiveProfiles()[0]))+"/blade-auth/oauth/token"; - HttpRequest urlRequest = HttpRequest.post(url); - urlRequest.header("Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0"); - urlRequest.header("Tenant-Id", "627683"); - - Map params = new HashMap<>(); - params.put("grant_type", "local_server"); - params.put("scope", "all"); - params.put("username", account); - params.put("tenantId", "627683"); - HttpResponse execute = urlRequest.form(params).execute(); - String body = execute.body(); - data = JSONObject.parseObject(body); - bladeRedis.setEx(CacheNames.LOCAL_SERVER_USER+account,data,3200L); + boolean flag = redisLockClient.tryLock("local_server_user", LockType.FAIR, 5000, 10000, TimeUnit.MILLISECONDS); + if(flag){ + data =bladeRedis.get(CacheNames.LOCAL_SERVER_USER+account); + if(Objects.isNull(data)){ + data = mockLoginService.mockToken("627683",account); + bladeRedis.setEx(CacheNames.LOCAL_SERVER_USER+account,data,25919900L); + redisLockClient.unLock("local_server_user", LockType.FAIR); + } + } } // 修改或添加header @@ -65,7 +66,7 @@ public class LocalServerLoginAccountsInterceptor extends HandlerInterceptorAdapt wrappedRequest.addHeader("Blade-Auth", "bearer "+data.getString("access_token")); HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.add("Blade-Auth","bearer "+data.get("access_token") ); - httpHeaders.add( "Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0"); + httpHeaders.add( "Authorization", "Basic bG9jYWw6bG9jYWxfc2VjcmV0"); ThreadLocalUtil.put("bladeContext", httpHeaders); diff --git a/blade-service/logpm-factory-data/logpm-factory-data-linsy/src/main/java/com/logpm/factorydata/linsy/interceptor/LocalServerLoginAccountsInterceptor.java b/blade-service/logpm-factory-data/logpm-factory-data-linsy/src/main/java/com/logpm/factorydata/linsy/interceptor/LocalServerLoginAccountsInterceptor.java index d5c29323e..f7c781fa2 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-linsy/src/main/java/com/logpm/factorydata/linsy/interceptor/LocalServerLoginAccountsInterceptor.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-linsy/src/main/java/com/logpm/factorydata/linsy/interceptor/LocalServerLoginAccountsInterceptor.java @@ -3,13 +3,16 @@ package com.logpm.factorydata.linsy.interceptor; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; -import com.logpm.factorydata.linsy.wrapper.CustomHttpServletRequestWrapper; import lombok.AllArgsConstructor; import lombok.extern.log4j.Log4j2; import org.springblade.common.cache.CacheNames; +import org.springblade.common.component.MockLoginService; import org.springblade.common.constant.LauncherConstant; import org.springblade.common.exception.CustomerException; +import org.springblade.common.wrapper.CustomHttpServletRequestWrapper; import org.springblade.core.redis.cache.BladeRedis; +import org.springblade.core.redis.lock.LockType; +import org.springblade.core.redis.lock.RedisLockClient; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.ThreadLocalUtil; import org.springframework.core.env.Environment; @@ -25,6 +28,7 @@ import java.io.PrintWriter; import java.util.HashMap; import java.util.Map; import java.util.Objects; +import java.util.concurrent.TimeUnit; @Log4j2 @AllArgsConstructor @@ -32,29 +36,26 @@ public class LocalServerLoginAccountsInterceptor extends HandlerInterceptorAdapt private final BladeRedis bladeRedis; private final Environment environment; + private final RedisLockClient redisLockClient; + private final MockLoginService mockLoginService; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws CustomerException { try { - CustomHttpServletRequestWrapper wrappedRequest = new CustomHttpServletRequestWrapper(request); + org.springblade.common.wrapper.CustomHttpServletRequestWrapper wrappedRequest = new CustomHttpServletRequestWrapper(request); String account ="shujutongbu"; JSONObject data =bladeRedis.get(CacheNames.LOCAL_SERVER_USER+account); if(Objects.isNull(data)){ - String url = "http://"+ LauncherConstant.loginAddr(Objects.requireNonNull(environment.getActiveProfiles()[0]))+"/blade-auth/oauth/token"; - HttpRequest urlRequest = HttpRequest.post(url); - urlRequest.header("Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0"); - urlRequest.header("Tenant-Id", "627683"); - - Map params = new HashMap<>(); - params.put("grant_type", "local_server"); - params.put("scope", "all"); - params.put("username", account); - params.put("tenantId", "627683"); - HttpResponse execute = urlRequest.form(params).execute(); - String body = execute.body(); - data = JSONObject.parseObject(body); - bladeRedis.setEx(CacheNames.LOCAL_SERVER_USER+account,data,3200L); + boolean flag = redisLockClient.tryLock("local_server_user", LockType.FAIR, 5000, 10000, TimeUnit.MILLISECONDS); + if(flag){ + data =bladeRedis.get(CacheNames.LOCAL_SERVER_USER+account); + if(Objects.isNull(data)){ + data = mockLoginService.mockToken("627683",account); + bladeRedis.setEx(CacheNames.LOCAL_SERVER_USER+account,data,25919900L); + redisLockClient.unLock("local_server_user", LockType.FAIR); + } + } } // 修改或添加header @@ -65,7 +66,7 @@ public class LocalServerLoginAccountsInterceptor extends HandlerInterceptorAdapt wrappedRequest.addHeader("Blade-Auth", "bearer "+data.getString("access_token")); HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.add("Blade-Auth","bearer "+data.get("access_token") ); - httpHeaders.add( "Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0"); + httpHeaders.add( "Authorization", "Basic bG9jYWw6bG9jYWxfc2VjcmV0"); ThreadLocalUtil.put("bladeContext", httpHeaders); diff --git a/blade-service/logpm-factory-data/logpm-factory-data-mwh/src/main/java/com/logpm/factorydata/mwh/interceptor/LocalServerLoginAccountsInterceptor.java b/blade-service/logpm-factory-data/logpm-factory-data-mwh/src/main/java/com/logpm/factorydata/mwh/interceptor/LocalServerLoginAccountsInterceptor.java index 9be406d1c..96f4794e3 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-mwh/src/main/java/com/logpm/factorydata/mwh/interceptor/LocalServerLoginAccountsInterceptor.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-mwh/src/main/java/com/logpm/factorydata/mwh/interceptor/LocalServerLoginAccountsInterceptor.java @@ -3,13 +3,16 @@ package com.logpm.factorydata.mwh.interceptor; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; -import com.logpm.factorydata.mwh.wrapper.CustomHttpServletRequestWrapper; import lombok.AllArgsConstructor; import lombok.extern.log4j.Log4j2; import org.springblade.common.cache.CacheNames; +import org.springblade.common.component.MockLoginService; import org.springblade.common.constant.LauncherConstant; import org.springblade.common.exception.CustomerException; +import org.springblade.common.wrapper.CustomHttpServletRequestWrapper; import org.springblade.core.redis.cache.BladeRedis; +import org.springblade.core.redis.lock.LockType; +import org.springblade.core.redis.lock.RedisLockClient; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.ThreadLocalUtil; import org.springframework.core.env.Environment; @@ -25,6 +28,7 @@ import java.io.PrintWriter; import java.util.HashMap; import java.util.Map; import java.util.Objects; +import java.util.concurrent.TimeUnit; @Log4j2 @AllArgsConstructor @@ -32,29 +36,26 @@ public class LocalServerLoginAccountsInterceptor extends HandlerInterceptorAdapt private final BladeRedis bladeRedis; private final Environment environment; + private final RedisLockClient redisLockClient; + private final MockLoginService mockLoginService; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws CustomerException { try { - CustomHttpServletRequestWrapper wrappedRequest = new CustomHttpServletRequestWrapper(request); + org.springblade.common.wrapper.CustomHttpServletRequestWrapper wrappedRequest = new CustomHttpServletRequestWrapper(request); String account ="shujutongbu"; JSONObject data =bladeRedis.get(CacheNames.LOCAL_SERVER_USER+account); if(Objects.isNull(data)){ - String url = "http://"+ LauncherConstant.loginAddr(Objects.requireNonNull(environment.getActiveProfiles()[0]))+"/blade-auth/oauth/token"; - HttpRequest urlRequest = HttpRequest.post(url); - urlRequest.header("Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0"); - urlRequest.header("Tenant-Id", "627683"); - - Map params = new HashMap<>(); - params.put("grant_type", "local_server"); - params.put("scope", "all"); - params.put("username", account); - params.put("tenantId", "627683"); - HttpResponse execute = urlRequest.form(params).execute(); - String body = execute.body(); - data = JSONObject.parseObject(body); - bladeRedis.setEx(CacheNames.LOCAL_SERVER_USER+account,data,3200L); + boolean flag = redisLockClient.tryLock("local_server_user", LockType.FAIR, 5000, 10000, TimeUnit.MILLISECONDS); + if(flag){ + data =bladeRedis.get(CacheNames.LOCAL_SERVER_USER+account); + if(Objects.isNull(data)){ + data = mockLoginService.mockToken("627683",account); + bladeRedis.setEx(CacheNames.LOCAL_SERVER_USER+account,data,25919900L); + redisLockClient.unLock("local_server_user", LockType.FAIR); + } + } } // 修改或添加header @@ -65,7 +66,7 @@ public class LocalServerLoginAccountsInterceptor extends HandlerInterceptorAdapt wrappedRequest.addHeader("Blade-Auth", "bearer "+data.getString("access_token")); HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.add("Blade-Auth","bearer "+data.get("access_token") ); - httpHeaders.add( "Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0"); + httpHeaders.add( "Authorization", "Basic bG9jYWw6bG9jYWxfc2VjcmV0"); ThreadLocalUtil.put("bladeContext", httpHeaders); diff --git a/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/aspect/JobAnnotationAspect.java b/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/aspect/JobAnnotationAspect.java index aacf226c4..7396d4886 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/aspect/JobAnnotationAspect.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/aspect/JobAnnotationAspect.java @@ -9,6 +9,7 @@ import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.springblade.common.cache.CacheNames; +import org.springblade.common.component.MockLoginService; import org.springblade.common.constant.LauncherConstant; import org.springblade.core.redis.cache.BladeRedis; import org.springblade.core.redis.lock.LockType; @@ -33,6 +34,7 @@ public class JobAnnotationAspect { private final BladeRedis bladeRedis; private final Environment environment; private final RedisLockClient redisLockClient; + private final MockLoginService mockLoginService; @Around("@annotation(com.xxl.job.core.handler.annotation.XxlJob)") public Object xxlJobAnnotationMethods(ProceedingJoinPoint joinPoint) throws Throwable { @@ -45,7 +47,7 @@ public class JobAnnotationAspect { HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.add("Blade-Auth","bearer "+jsonObject.get("access_token") ); - httpHeaders.add( "Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0"); + httpHeaders.add( "Authorization", "Basic bG9jYWw6bG9jYWxfc2VjcmV0"); ThreadLocalUtil.put("bladeContext", httpHeaders); DynamicDataSourceContextHolder.push(jsonObject.getString("tenant_id")); @@ -68,20 +70,8 @@ public class JobAnnotationAspect { if(flag){ data =bladeRedis.get(CacheNames.LOCAL_SERVER_USER+account); if(Objects.isNull(data)){ - String url = "http://"+ LauncherConstant.loginAddr(Objects.requireNonNull(environment.getActiveProfiles()[0]))+"/blade-auth/oauth/token"; - HttpRequest urlRequest = HttpRequest.post(url); - urlRequest.header("Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0"); - urlRequest.header("Tenant-Id", "627683"); - - Map params = new HashMap<>(); - params.put("grant_type", "local_server"); - params.put("scope", "all"); - params.put("username", account); - params.put("tenantId", "627683"); - HttpResponse execute = urlRequest.form(params).execute(); - String body = execute.body(); - data = JSONObject.parseObject(body); - bladeRedis.setEx(CacheNames.LOCAL_SERVER_USER+account,data,3200L); + data = mockLoginService.mockToken("627683",account); + bladeRedis.setEx(CacheNames.LOCAL_SERVER_USER+account,data,25919900L); redisLockClient.unLock("local_server_user", LockType.FAIR); } } diff --git a/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/interceptor/LocalServerLoginAccountsInterceptor.java b/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/interceptor/LocalServerLoginAccountsInterceptor.java index be5af954f..92368054e 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/interceptor/LocalServerLoginAccountsInterceptor.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/interceptor/LocalServerLoginAccountsInterceptor.java @@ -3,13 +3,16 @@ package com.logpm.factorydata.olo.interceptor; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; -import com.logpm.factorydata.olo.wrapper.CustomHttpServletRequestWrapper; import lombok.AllArgsConstructor; import lombok.extern.log4j.Log4j2; import org.springblade.common.cache.CacheNames; +import org.springblade.common.component.MockLoginService; import org.springblade.common.constant.LauncherConstant; import org.springblade.common.exception.CustomerException; +import org.springblade.common.wrapper.CustomHttpServletRequestWrapper; import org.springblade.core.redis.cache.BladeRedis; +import org.springblade.core.redis.lock.LockType; +import org.springblade.core.redis.lock.RedisLockClient; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.ThreadLocalUtil; import org.springframework.core.env.Environment; @@ -25,6 +28,7 @@ import java.io.PrintWriter; import java.util.HashMap; import java.util.Map; import java.util.Objects; +import java.util.concurrent.TimeUnit; @Log4j2 @AllArgsConstructor @@ -32,6 +36,8 @@ public class LocalServerLoginAccountsInterceptor extends HandlerInterceptorAdapt private final BladeRedis bladeRedis; private final Environment environment; + private final RedisLockClient redisLockClient; + private final MockLoginService mockLoginService; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws CustomerException { @@ -41,20 +47,15 @@ public class LocalServerLoginAccountsInterceptor extends HandlerInterceptorAdapt String account ="shujutongbu"; JSONObject data =bladeRedis.get(CacheNames.LOCAL_SERVER_USER+account); if(Objects.isNull(data)){ - String url = "http://"+ LauncherConstant.loginAddr(Objects.requireNonNull(environment.getActiveProfiles()[0]))+"/blade-auth/oauth/token"; - HttpRequest urlRequest = HttpRequest.post(url); - urlRequest.header("Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0"); - urlRequest.header("Tenant-Id", "627683"); - - Map params = new HashMap<>(); - params.put("grant_type", "local_server"); - params.put("scope", "all"); - params.put("username", account); - params.put("tenantId", "627683"); - HttpResponse execute = urlRequest.form(params).execute(); - String body = execute.body(); - data = JSONObject.parseObject(body); - bladeRedis.setEx(CacheNames.LOCAL_SERVER_USER+account,data,3200L); + boolean flag = redisLockClient.tryLock("local_server_user", LockType.FAIR, 5000, 10000, TimeUnit.MILLISECONDS); + if(flag){ + data =bladeRedis.get(CacheNames.LOCAL_SERVER_USER+account); + if(Objects.isNull(data)){ + data = mockLoginService.mockToken("627683",account); + bladeRedis.setEx(CacheNames.LOCAL_SERVER_USER+account,data,25919900L); + redisLockClient.unLock("local_server_user", LockType.FAIR); + } + } } // 修改或添加header @@ -65,7 +66,7 @@ public class LocalServerLoginAccountsInterceptor extends HandlerInterceptorAdapt wrappedRequest.addHeader("Blade-Auth", "bearer "+data.getString("access_token")); HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.add("Blade-Auth","bearer "+data.get("access_token") ); - httpHeaders.add( "Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0"); + httpHeaders.add( "Authorization", "Basic bG9jYWw6bG9jYWxfc2VjcmV0"); ThreadLocalUtil.put("bladeContext", httpHeaders); diff --git a/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/mq/NodeDataPushListener.java b/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/mq/NodeDataPushListener.java index b2360d2ff..07c83687a 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/mq/NodeDataPushListener.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-olo/src/main/java/com/logpm/factorydata/olo/mq/NodeDataPushListener.java @@ -25,6 +25,7 @@ import org.springframework.amqp.rabbit.annotation.Queue; import org.springframework.amqp.rabbit.annotation.QueueBinding; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Map; @@ -49,6 +50,7 @@ public class NodeDataPushListener { exchange = @Exchange(name = FactoryDataConstants.Mq.Exchanges.NODE_DATA_PUSH, type = ExchangeTypes.TOPIC), key = FactoryDataConstants.Mq.RoutingKeys.OLO_NODE_DATA_PUSH )) + @Transactional(rollbackFor = Exception.class) public void nodeDataPush(String msg) { log.info("接收到节点数据推送:{}", msg); if (checkData(msg)) { diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/interceptor/LocalServerLoginAccountsInterceptor.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/interceptor/LocalServerLoginAccountsInterceptor.java index 7cc09abec..26235cc9f 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/interceptor/LocalServerLoginAccountsInterceptor.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/interceptor/LocalServerLoginAccountsInterceptor.java @@ -3,13 +3,16 @@ package com.logpm.factorydata.suofeiya.interceptor; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; -import com.logpm.factorydata.suofeiya.wrapper.CustomHttpServletRequestWrapper; import lombok.AllArgsConstructor; import lombok.extern.log4j.Log4j2; import org.springblade.common.cache.CacheNames; +import org.springblade.common.component.MockLoginService; import org.springblade.common.constant.LauncherConstant; import org.springblade.common.exception.CustomerException; +import org.springblade.common.wrapper.CustomHttpServletRequestWrapper; import org.springblade.core.redis.cache.BladeRedis; +import org.springblade.core.redis.lock.LockType; +import org.springblade.core.redis.lock.RedisLockClient; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.ThreadLocalUtil; import org.springframework.core.env.Environment; @@ -25,6 +28,7 @@ import java.io.PrintWriter; import java.util.HashMap; import java.util.Map; import java.util.Objects; +import java.util.concurrent.TimeUnit; @Log4j2 @AllArgsConstructor @@ -32,29 +36,26 @@ public class LocalServerLoginAccountsInterceptor extends HandlerInterceptorAdapt private final BladeRedis bladeRedis; private final Environment environment; + private final RedisLockClient redisLockClient; + private final MockLoginService mockLoginService; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws CustomerException { try { - CustomHttpServletRequestWrapper wrappedRequest = new CustomHttpServletRequestWrapper(request); + org.springblade.common.wrapper.CustomHttpServletRequestWrapper wrappedRequest = new CustomHttpServletRequestWrapper(request); String account ="shujutongbu"; JSONObject data =bladeRedis.get(CacheNames.LOCAL_SERVER_USER+account); if(Objects.isNull(data)){ - String url = "http://"+ LauncherConstant.loginAddr(Objects.requireNonNull(environment.getActiveProfiles()[0]))+"/blade-auth/oauth/token"; - HttpRequest urlRequest = HttpRequest.post(url); - urlRequest.header("Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0"); - urlRequest.header("Tenant-Id", "627683"); - - Map params = new HashMap<>(); - params.put("grant_type", "local_server"); - params.put("scope", "all"); - params.put("username", account); - params.put("tenantId", "627683"); - HttpResponse execute = urlRequest.form(params).execute(); - String body = execute.body(); - data = JSONObject.parseObject(body); - bladeRedis.setEx(CacheNames.LOCAL_SERVER_USER+account,data,3200L); + boolean flag = redisLockClient.tryLock("local_server_user", LockType.FAIR, 5000, 10000, TimeUnit.MILLISECONDS); + if(flag){ + data =bladeRedis.get(CacheNames.LOCAL_SERVER_USER+account); + if(Objects.isNull(data)){ + data = mockLoginService.mockToken("627683",account); + bladeRedis.setEx(CacheNames.LOCAL_SERVER_USER+account,data,25919900L); + redisLockClient.unLock("local_server_user", LockType.FAIR); + } + } } // 修改或添加header @@ -65,7 +66,7 @@ public class LocalServerLoginAccountsInterceptor extends HandlerInterceptorAdapt wrappedRequest.addHeader("Blade-Auth", "bearer "+data.getString("access_token")); HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.add("Blade-Auth","bearer "+data.get("access_token") ); - httpHeaders.add( "Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0"); + httpHeaders.add( "Authorization", "Basic bG9jYWw6bG9jYWxfc2VjcmV0"); ThreadLocalUtil.put("bladeContext", httpHeaders); diff --git a/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/interceptor/LocalServerLoginAccountsInterceptor.java b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/interceptor/LocalServerLoginAccountsInterceptor.java index 8d4e22760..e55036115 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/interceptor/LocalServerLoginAccountsInterceptor.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/interceptor/LocalServerLoginAccountsInterceptor.java @@ -3,13 +3,16 @@ package com.logpm.factorydata.zbom.interceptor; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; -import com.logpm.factorydata.zbom.wrapper.CustomHttpServletRequestWrapper; import lombok.AllArgsConstructor; import lombok.extern.log4j.Log4j2; import org.springblade.common.cache.CacheNames; +import org.springblade.common.component.MockLoginService; import org.springblade.common.constant.LauncherConstant; import org.springblade.common.exception.CustomerException; +import org.springblade.common.wrapper.CustomHttpServletRequestWrapper; import org.springblade.core.redis.cache.BladeRedis; +import org.springblade.core.redis.lock.LockType; +import org.springblade.core.redis.lock.RedisLockClient; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.ThreadLocalUtil; import org.springframework.core.env.Environment; @@ -25,6 +28,7 @@ import java.io.PrintWriter; import java.util.HashMap; import java.util.Map; import java.util.Objects; +import java.util.concurrent.TimeUnit; @Log4j2 @AllArgsConstructor @@ -32,29 +36,26 @@ public class LocalServerLoginAccountsInterceptor extends HandlerInterceptorAdapt private final BladeRedis bladeRedis; private final Environment environment; + private final RedisLockClient redisLockClient; + private final MockLoginService mockLoginService; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws CustomerException { try { - CustomHttpServletRequestWrapper wrappedRequest = new CustomHttpServletRequestWrapper(request); + org.springblade.common.wrapper.CustomHttpServletRequestWrapper wrappedRequest = new CustomHttpServletRequestWrapper(request); String account ="shujutongbu"; JSONObject data =bladeRedis.get(CacheNames.LOCAL_SERVER_USER+account); if(Objects.isNull(data)){ - String url = "http://"+ LauncherConstant.loginAddr(Objects.requireNonNull(environment.getActiveProfiles()[0]))+"/blade-auth/oauth/token"; - HttpRequest urlRequest = HttpRequest.post(url); - urlRequest.header("Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0"); - urlRequest.header("Tenant-Id", "627683"); - - Map params = new HashMap<>(); - params.put("grant_type", "local_server"); - params.put("scope", "all"); - params.put("username", account); - params.put("tenantId", "627683"); - HttpResponse execute = urlRequest.form(params).execute(); - String body = execute.body(); - data = JSONObject.parseObject(body); - bladeRedis.setEx(CacheNames.LOCAL_SERVER_USER+account,data,3200L); + boolean flag = redisLockClient.tryLock("local_server_user", LockType.FAIR, 5000, 10000, TimeUnit.MILLISECONDS); + if(flag){ + data =bladeRedis.get(CacheNames.LOCAL_SERVER_USER+account); + if(Objects.isNull(data)){ + data = mockLoginService.mockToken("627683",account); + bladeRedis.setEx(CacheNames.LOCAL_SERVER_USER+account,data,25919900L); + redisLockClient.unLock("local_server_user", LockType.FAIR); + } + } } // 修改或添加header @@ -65,7 +66,7 @@ public class LocalServerLoginAccountsInterceptor extends HandlerInterceptorAdapt wrappedRequest.addHeader("Blade-Auth", "bearer "+data.getString("access_token")); HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.add("Blade-Auth","bearer "+data.get("access_token") ); - httpHeaders.add( "Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0"); + httpHeaders.add( "Authorization", "Basic bG9jYWw6bG9jYWxfc2VjcmV0"); ThreadLocalUtil.put("bladeContext", httpHeaders); diff --git a/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/mq/ZbomNodeDataPushListener.java b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/mq/ZbomNodeDataPushListener.java index 8b8f58d25..a5f694dd9 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/mq/ZbomNodeDataPushListener.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-zbom/src/main/java/com/logpm/factorydata/zbom/mq/ZbomNodeDataPushListener.java @@ -41,6 +41,7 @@ import org.springframework.amqp.rabbit.annotation.Queue; import org.springframework.amqp.rabbit.annotation.QueueBinding; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.HashMap; @@ -88,6 +89,7 @@ public class ZbomNodeDataPushListener { exchange = @Exchange(name = FactoryDataConstants.Mq.Exchanges.NODE_DATA_PUSH, type = ExchangeTypes.TOPIC), key = FactoryDataConstants.Mq.RoutingKeys.ZBOM_NODE_DATA_PUSH )) + @Transactional(rollbackFor = Exception.class) public void nodeDataPush(String msg) { // {"brand":"ZBOM","node":"TRANSFER_WAREHOUSE_DEPART","operator":"","operatorTime":"","content":[{"packageCode":"1423090693445"}]} log.info("zb接收到节点数据推送:{}", msg); diff --git a/blade-service/logpm-factory/src/main/java/com/logpm/factory/aspect/JobAnnotationAspect.java b/blade-service/logpm-factory/src/main/java/com/logpm/factory/aspect/JobAnnotationAspect.java index 8e2fac5ae..e42b9112e 100644 --- a/blade-service/logpm-factory/src/main/java/com/logpm/factory/aspect/JobAnnotationAspect.java +++ b/blade-service/logpm-factory/src/main/java/com/logpm/factory/aspect/JobAnnotationAspect.java @@ -9,6 +9,7 @@ import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.springblade.common.cache.CacheNames; +import org.springblade.common.component.MockLoginService; import org.springblade.common.constant.LauncherConstant; import org.springblade.core.redis.cache.BladeRedis; import org.springblade.core.redis.lock.LockType; @@ -33,7 +34,7 @@ public class JobAnnotationAspect { private final BladeRedis bladeRedis; private final Environment environment; private final RedisLockClient redisLockClient; - + private final MockLoginService mockLoginService; @Around("@annotation(com.xxl.job.core.handler.annotation.XxlJob)") public Object xxlJobAnnotationMethods(ProceedingJoinPoint joinPoint) throws Throwable { @@ -45,7 +46,7 @@ public class JobAnnotationAspect { HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.add("Blade-Auth","bearer "+jsonObject.get("access_token") ); - httpHeaders.add( "Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0"); + httpHeaders.add( "Authorization", "Basic bG9jYWw6bG9jYWxfc2VjcmV0"); ThreadLocalUtil.put("bladeContext", httpHeaders); DynamicDataSourceContextHolder.push(jsonObject.getString("tenant_id")); @@ -68,20 +69,8 @@ public class JobAnnotationAspect { if(flag){ data =bladeRedis.get(CacheNames.LOCAL_SERVER_USER+account); if(Objects.isNull(data)){ - String url = "http://"+ LauncherConstant.loginAddr(Objects.requireNonNull(environment.getActiveProfiles()[0]))+"/blade-auth/oauth/token"; - HttpRequest urlRequest = HttpRequest.post(url); - urlRequest.header("Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0"); - urlRequest.header("Tenant-Id", "627683"); - - Map params = new HashMap<>(); - params.put("grant_type", "local_server"); - params.put("scope", "all"); - params.put("username", account); - params.put("tenantId", "627683"); - HttpResponse execute = urlRequest.form(params).execute(); - String body = execute.body(); - data = JSONObject.parseObject(body); - bladeRedis.setEx(CacheNames.LOCAL_SERVER_USER+account,data,3200L); + data = mockLoginService.mockToken("627683",account); + bladeRedis.setEx(CacheNames.LOCAL_SERVER_USER+account,data,25919900L); redisLockClient.unLock("local_server_user", LockType.FAIR); } } diff --git a/blade-service/logpm-factory/src/main/java/com/logpm/factory/config/InterceptorAdapterConfig.java b/blade-service/logpm-factory/src/main/java/com/logpm/factory/config/InterceptorAdapterConfig.java index 190350ed0..a0e1e063d 100644 --- a/blade-service/logpm-factory/src/main/java/com/logpm/factory/config/InterceptorAdapterConfig.java +++ b/blade-service/logpm-factory/src/main/java/com/logpm/factory/config/InterceptorAdapterConfig.java @@ -6,6 +6,7 @@ import com.logpm.factory.interceptor.LocalServerLoginAccountsInterceptor; import com.logpm.factory.interceptor.ZbFactoryAccountsInterceptor; import com.logpm.factory.props.ZbFactoryProperties; import lombok.AllArgsConstructor; +import org.springblade.common.component.MockLoginService; import org.springblade.core.redis.cache.BladeRedis; import org.springblade.core.redis.lock.RedisLockClient; import org.springframework.context.annotation.Configuration; @@ -26,6 +27,7 @@ public class InterceptorAdapterConfig implements WebMvcConfigurer { private final Environment environment; private final RedisLockClient redisLockClient; + private final MockLoginService mockLoginService; @Override @@ -38,7 +40,7 @@ public class InterceptorAdapterConfig implements WebMvcConfigurer { .excludePathPatterns("/factory/common/**").order(2); interceptorRegistry.addInterceptor(new ZbFactoryAccountsInterceptor(zbFactoryProperties)) .addPathPatterns("/factory/zb/**").order(3); - interceptorRegistry.addInterceptor(new LocalServerLoginAccountsInterceptor(redis,environment,redisLockClient)).addPathPatterns("/**").order(1); + interceptorRegistry.addInterceptor(new LocalServerLoginAccountsInterceptor(redis,redisLockClient,mockLoginService)).addPathPatterns("/**").order(1); } } diff --git a/blade-service/logpm-factory/src/main/java/com/logpm/factory/interceptor/LocalServerLoginAccountsInterceptor.java b/blade-service/logpm-factory/src/main/java/com/logpm/factory/interceptor/LocalServerLoginAccountsInterceptor.java index a08908b03..e3e3f308f 100644 --- a/blade-service/logpm-factory/src/main/java/com/logpm/factory/interceptor/LocalServerLoginAccountsInterceptor.java +++ b/blade-service/logpm-factory/src/main/java/com/logpm/factory/interceptor/LocalServerLoginAccountsInterceptor.java @@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject; import lombok.AllArgsConstructor; import lombok.extern.log4j.Log4j2; import org.springblade.common.cache.CacheNames; +import org.springblade.common.component.MockLoginService; import org.springblade.common.constant.LauncherConstant; import org.springblade.common.exception.CustomerException; import org.springblade.common.wrapper.CustomHttpServletRequestWrapper; @@ -34,8 +35,8 @@ import java.util.concurrent.TimeUnit; public class LocalServerLoginAccountsInterceptor extends HandlerInterceptorAdapter { private final BladeRedis bladeRedis; - private final Environment environment; private final RedisLockClient redisLockClient; + private final MockLoginService mockLoginService; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws CustomerException { @@ -50,20 +51,8 @@ public class LocalServerLoginAccountsInterceptor extends HandlerInterceptorAdapt if(flag){ data =bladeRedis.get(CacheNames.LOCAL_SERVER_USER+account); if(Objects.isNull(data)){ - String url = "http://"+ LauncherConstant.loginAddr(Objects.requireNonNull(environment.getActiveProfiles()[0]))+"/blade-auth/oauth/token"; - HttpRequest urlRequest = HttpRequest.post(url); - urlRequest.header("Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0"); - urlRequest.header("Tenant-Id", "627683"); - - Map params = new HashMap<>(); - params.put("grant_type", "local_server"); - params.put("scope", "all"); - params.put("username", account); - params.put("tenantId", "627683"); - HttpResponse execute = urlRequest.form(params).execute(); - String body = execute.body(); - data = JSONObject.parseObject(body); - bladeRedis.setEx(CacheNames.LOCAL_SERVER_USER+account,data,3200L); + data = mockLoginService.mockToken("627683",account); + bladeRedis.setEx(CacheNames.LOCAL_SERVER_USER+account,data,25919900L); redisLockClient.unLock("local_server_user", LockType.FAIR); } } @@ -77,7 +66,7 @@ public class LocalServerLoginAccountsInterceptor extends HandlerInterceptorAdapt wrappedRequest.addHeader("Blade-Auth", "bearer "+data.getString("access_token")); HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.add("Blade-Auth","bearer "+data.get("access_token") ); - httpHeaders.add( "Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0"); + httpHeaders.add( "Authorization", "Basic bG9jYWw6bG9jYWxfc2VjcmV0"); ThreadLocalUtil.put("bladeContext", httpHeaders); diff --git a/blade-service/logpm-patch/src/main/java/com/logpm/patch/aspect/JobAnnotationAspect.java b/blade-service/logpm-patch/src/main/java/com/logpm/patch/aspect/JobAnnotationAspect.java index 22536bd1a..639488680 100644 --- a/blade-service/logpm-patch/src/main/java/com/logpm/patch/aspect/JobAnnotationAspect.java +++ b/blade-service/logpm-patch/src/main/java/com/logpm/patch/aspect/JobAnnotationAspect.java @@ -9,6 +9,7 @@ import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.springblade.common.cache.CacheNames; +import org.springblade.common.component.MockLoginService; import org.springblade.common.constant.LauncherConstant; import org.springblade.core.redis.cache.BladeRedis; import org.springblade.core.redis.lock.LockType; @@ -33,6 +34,7 @@ public class JobAnnotationAspect { private final BladeRedis bladeRedis; private final Environment environment; private final RedisLockClient redisLockClient; + private final MockLoginService mockLoginService; @Around("@annotation(com.xxl.job.core.handler.annotation.XxlJob)") public Object xxlJobAnnotationMethods(ProceedingJoinPoint joinPoint) throws Throwable { @@ -45,7 +47,7 @@ public class JobAnnotationAspect { HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.add("Blade-Auth","bearer "+jsonObject.get("access_token") ); - httpHeaders.add( "Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0"); + httpHeaders.add( "Authorization", "Basic bG9jYWw6bG9jYWxfc2VjcmV0"); ThreadLocalUtil.put("bladeContext", httpHeaders); DynamicDataSourceContextHolder.push(jsonObject.getString("tenant_id")); @@ -68,20 +70,8 @@ public class JobAnnotationAspect { if(flag){ data =bladeRedis.get(CacheNames.LOCAL_SERVER_USER+account); if(Objects.isNull(data)){ - String url = "http://"+ LauncherConstant.loginAddr(Objects.requireNonNull(environment.getActiveProfiles()[0]))+"/blade-auth/oauth/token"; - HttpRequest urlRequest = HttpRequest.post(url); - urlRequest.header("Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0"); - urlRequest.header("Tenant-Id", "627683"); - - Map params = new HashMap<>(); - params.put("grant_type", "local_server"); - params.put("scope", "all"); - params.put("username", account); - params.put("tenantId", "627683"); - HttpResponse execute = urlRequest.form(params).execute(); - String body = execute.body(); - data = JSONObject.parseObject(body); - bladeRedis.setEx(CacheNames.LOCAL_SERVER_USER+account,data,3200L); + data = mockLoginService.mockToken("627683",account); + bladeRedis.setEx(CacheNames.LOCAL_SERVER_USER+account,data,25919900L); redisLockClient.unLock("local_server_user", LockType.FAIR); } } diff --git a/blade-service/logpm-patch/src/main/java/com/logpm/patch/config/InterceptorAdapterConfig.java b/blade-service/logpm-patch/src/main/java/com/logpm/patch/config/InterceptorAdapterConfig.java new file mode 100644 index 000000000..83e7c2a59 --- /dev/null +++ b/blade-service/logpm-patch/src/main/java/com/logpm/patch/config/InterceptorAdapterConfig.java @@ -0,0 +1,28 @@ +package com.logpm.patch.config; + +import com.logpm.patch.interceptor.LocalServerLoginAccountsInterceptor; +import lombok.AllArgsConstructor; +import org.springblade.core.redis.cache.BladeRedis; +import org.springblade.core.redis.lock.RedisLockClient; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.env.Environment; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +@AllArgsConstructor +public class InterceptorAdapterConfig implements WebMvcConfigurer { + + private final BladeRedis redis; + + private final Environment environment; + + private final RedisLockClient redisLockClient; + + + @Override + public void addInterceptors(InterceptorRegistry interceptorRegistry) { + interceptorRegistry.addInterceptor(new LocalServerLoginAccountsInterceptor(redis,environment,redisLockClient)).addPathPatterns("/**").order(1); + + } +} diff --git a/blade-service/logpm-patch/src/main/java/com/logpm/patch/interceptor/LocalServerLoginAccountsInterceptor.java b/blade-service/logpm-patch/src/main/java/com/logpm/patch/interceptor/LocalServerLoginAccountsInterceptor.java new file mode 100644 index 000000000..9bdc18823 --- /dev/null +++ b/blade-service/logpm-patch/src/main/java/com/logpm/patch/interceptor/LocalServerLoginAccountsInterceptor.java @@ -0,0 +1,112 @@ +package com.logpm.patch.interceptor; + +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; +import com.alibaba.fastjson.JSONObject; +import lombok.AllArgsConstructor; +import lombok.extern.log4j.Log4j2; +import org.springblade.common.cache.CacheNames; +import org.springblade.common.constant.LauncherConstant; +import org.springblade.common.exception.CustomerException; +import org.springblade.common.wrapper.CustomHttpServletRequestWrapper; +import org.springblade.core.redis.cache.BladeRedis; +import org.springblade.core.redis.lock.LockType; +import org.springblade.core.redis.lock.RedisLockClient; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.ThreadLocalUtil; +import org.springframework.core.env.Environment; +import org.springframework.http.HttpHeaders; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; +import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.concurrent.TimeUnit; + +@Log4j2 +@AllArgsConstructor +public class LocalServerLoginAccountsInterceptor extends HandlerInterceptorAdapter { + + private final BladeRedis bladeRedis; + private final Environment environment; + private final RedisLockClient redisLockClient; + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws CustomerException { + + + try { + CustomHttpServletRequestWrapper wrappedRequest = new CustomHttpServletRequestWrapper(request); + String account ="shujutongbu"; + JSONObject data =bladeRedis.get(CacheNames.LOCAL_SERVER_USER+account); + if(Objects.isNull(data)){ + boolean flag = redisLockClient.tryLock("local_server_user", LockType.FAIR, 5000, 10000, TimeUnit.MILLISECONDS); + if(flag){ + data =bladeRedis.get(CacheNames.LOCAL_SERVER_USER+account); + if(Objects.isNull(data)){ + String url = "http://"+ LauncherConstant.loginAddr(Objects.requireNonNull(environment.getActiveProfiles()[0]))+"/blade-auth/oauth/token"; + HttpRequest urlRequest = HttpRequest.post(url); + urlRequest.header("Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0"); + urlRequest.header("Tenant-Id", "627683"); + + Map params = new HashMap<>(); + params.put("grant_type", "local_server"); + params.put("scope", "all"); + params.put("username", account); + params.put("tenantId", "627683"); + HttpResponse execute = urlRequest.form(params).execute(); + String body = execute.body(); + data = JSONObject.parseObject(body); + bladeRedis.setEx(CacheNames.LOCAL_SERVER_USER+account,data,3200L); + redisLockClient.unLock("local_server_user", LockType.FAIR); + } + } + } + + // 修改或添加header + + // 发送登录请求 + log.info("##########preHandle: request={}", request); + + wrappedRequest.addHeader("Blade-Auth", "bearer "+data.getString("access_token")); + HttpHeaders httpHeaders = new HttpHeaders(); + httpHeaders.add("Blade-Auth","bearer "+data.get("access_token") ); + httpHeaders.add( "Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0"); + ThreadLocalUtil.put("bladeContext", httpHeaders); + + + // 用包装后的request替换原始request + request = wrappedRequest; + RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(request)); + return true; + } catch (Exception e) { + returnJson(response, JSONObject.toJSONString(R.fail(500, "服务异常,请联系管理员"))); + return false; + } + } + + private void returnJson(HttpServletResponse response, String json) { + PrintWriter writer = null; + response.setCharacterEncoding("UTF-8"); + response.setContentType("application/json"); + try { + writer = response.getWriter(); + writer.print(json); + + } catch (IOException e) { + System.out.println(e.getMessage()); + } finally { + if (writer != null) { + writer.close(); + } + } + } + + +} diff --git a/blade-service/logpm-patch/src/main/java/com/logpm/patch/jobhandle/SyncOldTrayTypeData.java b/blade-service/logpm-patch/src/main/java/com/logpm/patch/jobhandle/SyncOldTrayTypeData.java index 61a52d835..d26822a79 100644 --- a/blade-service/logpm-patch/src/main/java/com/logpm/patch/jobhandle/SyncOldTrayTypeData.java +++ b/blade-service/logpm-patch/src/main/java/com/logpm/patch/jobhandle/SyncOldTrayTypeData.java @@ -32,6 +32,8 @@ public class SyncOldTrayTypeData { for (SyncOldTrayTypeLogEntity syncOldTrayTypeLogEntity : ls) { String args = syncOldTrayTypeLogEntity.getArgs(); Long id = syncOldTrayTypeLogEntity.getId(); + syncOldTrayTypeLogEntity.setMqStatus(1); + oldTrayTypeService.updateMqStatus(id, 1); Integer syncNum = syncOldTrayTypeLogEntity.getSyncNum(); log.info("##############syncOldTrayTypeInfo: 当前同步的数据为 {}",args); JSONObject jsonObject = JSONObject.parseObject(args); diff --git a/blade-service/logpm-patch/src/main/java/com/logpm/patch/mapper/OldTrayTypeMapper.java b/blade-service/logpm-patch/src/main/java/com/logpm/patch/mapper/OldTrayTypeMapper.java index 604b5954b..d3ae4e6e1 100644 --- a/blade-service/logpm-patch/src/main/java/com/logpm/patch/mapper/OldTrayTypeMapper.java +++ b/blade-service/logpm-patch/src/main/java/com/logpm/patch/mapper/OldTrayTypeMapper.java @@ -13,4 +13,6 @@ public interface OldTrayTypeMapper { void updateSyncStatus(@Param("id") Long id, @Param("syncStatus") int syncStatus); void updateSyncNum(@Param("id") Long id, @Param("syncNum") int syncNum); + + void updateMqStatus(@Param("id") Long id, @Param("mqStatus") int mqStatus); } diff --git a/blade-service/logpm-patch/src/main/java/com/logpm/patch/mapper/OldTrayTypeMapper.xml b/blade-service/logpm-patch/src/main/java/com/logpm/patch/mapper/OldTrayTypeMapper.xml index 25c58c4f2..bf43fefff 100644 --- a/blade-service/logpm-patch/src/main/java/com/logpm/patch/mapper/OldTrayTypeMapper.xml +++ b/blade-service/logpm-patch/src/main/java/com/logpm/patch/mapper/OldTrayTypeMapper.xml @@ -7,6 +7,7 @@ from sync_old_tray_type_log where sync_status = #{syncStatus} and sync_num < #{syncNum} + and mq_status = 0 @@ -21,4 +22,10 @@ where id = #{id} + + update sync_old_tray_type_log + set mq_status = #{mqStatus} + where id = #{id} + + diff --git a/blade-service/logpm-patch/src/main/java/com/logpm/patch/service/IOldTrayTypeService.java b/blade-service/logpm-patch/src/main/java/com/logpm/patch/service/IOldTrayTypeService.java index e7c35f4a2..060ee1e4d 100644 --- a/blade-service/logpm-patch/src/main/java/com/logpm/patch/service/IOldTrayTypeService.java +++ b/blade-service/logpm-patch/src/main/java/com/logpm/patch/service/IOldTrayTypeService.java @@ -10,4 +10,6 @@ public interface IOldTrayTypeService { void updateSyncStatus(Long id, int syncStatus); void updateSyncNum(Long id, int syncNum); + + void updateMqStatus(Long id, int mqStatus); } diff --git a/blade-service/logpm-patch/src/main/java/com/logpm/patch/service/impl/OldTrayTypeServiceImpl.java b/blade-service/logpm-patch/src/main/java/com/logpm/patch/service/impl/OldTrayTypeServiceImpl.java index d57d885fa..b47c78cba 100644 --- a/blade-service/logpm-patch/src/main/java/com/logpm/patch/service/impl/OldTrayTypeServiceImpl.java +++ b/blade-service/logpm-patch/src/main/java/com/logpm/patch/service/impl/OldTrayTypeServiceImpl.java @@ -31,4 +31,9 @@ public class OldTrayTypeServiceImpl implements IOldTrayTypeService { public void updateSyncNum(Long id, int syncNum) { oldTrayTypeMapper.updateSyncNum(id,syncNum); } + + @Override + public void updateMqStatus(Long id, int mqStatus) { + oldTrayTypeMapper.updateMqStatus(id,mqStatus); + } } diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/aspect/ChangeAsyncAnnotationAspect.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/aspect/ChangeAsyncAnnotationAspect.java index e9f0b4091..30f3903ce 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/aspect/ChangeAsyncAnnotationAspect.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/aspect/ChangeAsyncAnnotationAspect.java @@ -90,7 +90,7 @@ public class ChangeAsyncAnnotationAspect { HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.add("Blade-Auth","bearer "+data.get("access_token") ); - httpHeaders.add( "Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0"); + httpHeaders.add( "Authorization", "Basic bG9jYWw6bG9jYWxfc2VjcmV0"); ThreadLocalUtil.put("bladeContext", httpHeaders); DynamicDataSourceContextHolder.push(data.getString("tenant_id")); diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/OpenOrderServiceImpl.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/OpenOrderServiceImpl.java index efe3b3885..20d5e60f2 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/OpenOrderServiceImpl.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/OpenOrderServiceImpl.java @@ -182,16 +182,6 @@ public class OpenOrderServiceImpl implements IOpenOrderService { areaId = badeRegionAreaId; } - openOrderVO.setDefaultDeliveryWay("2"); - Integer typeService = basicdataClientEntity.getTypeService(); - if (typeService == 1){ - openOrderVO.setDefaultDeliveryWay("2"); - }else if(typeService == 2){ - openOrderVO.setDefaultDeliveryWay("3"); - }else if(typeService == 3){ - openOrderVO.setDefaultDeliveryWay("1"); - } - openOrderVO.setDeparture(name); openOrderVO.setDepartureCode(areaId); openOrderVO.setDepartureArray(departureArray); @@ -233,6 +223,21 @@ public class OpenOrderServiceImpl implements IOpenOrderService { areaId = badeRegionAreaId; } + + openOrderVO.setDefaultDeliveryWay("2"); + String typeService = "1"; + BasicdataStoreBusinessEntity storeBusinessEntity = basicdataStoreBusinessClient.findByClientIdAndTypeService(clientId, 3); + if(!Objects.isNull(storeBusinessEntity)){ + typeService = storeBusinessEntity.getMold(); + } + if ("1".equals(typeService)){ + openOrderVO.setDefaultDeliveryWay("2"); + }else if("2".equals(typeService)){ + openOrderVO.setDefaultDeliveryWay("3"); + }else if("3".equals(typeService)){ + openOrderVO.setDefaultDeliveryWay("1"); + } + openOrderVO.setDestination(name); openOrderVO.setDestinationCode(areaId); openOrderVO.setDestinationArray(destinationArray); diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/config/InterceptorAdapterConfig.java b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/config/InterceptorAdapterConfig.java index 34240ea2d..5645722ca 100644 --- a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/config/InterceptorAdapterConfig.java +++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/config/InterceptorAdapterConfig.java @@ -2,6 +2,7 @@ package com.logpm.warehouse.config; import com.logpm.warehouse.config.interceptor.LocalServerLoginAccountsInterceptor; import lombok.AllArgsConstructor; +import org.springblade.common.component.MockLoginService; import org.springblade.core.redis.cache.BladeRedis; import org.springblade.core.redis.lock.RedisLockClient; import org.springframework.context.annotation.Configuration; @@ -15,14 +16,13 @@ public class InterceptorAdapterConfig implements WebMvcConfigurer { private final BladeRedis redis; - private final Environment environment; - private final RedisLockClient redisLockClient; + private final MockLoginService mockLoginService; @Override public void addInterceptors(InterceptorRegistry interceptorRegistry) { - interceptorRegistry.addInterceptor(new LocalServerLoginAccountsInterceptor(redis,environment,redisLockClient)).addPathPatterns("/oldpush/**").order(1); + interceptorRegistry.addInterceptor(new LocalServerLoginAccountsInterceptor(redis,redisLockClient,mockLoginService)).addPathPatterns("/oldpush/**").order(1); // interceptorRegistry.addInterceptor(new ParameterCombinationInterceptor()) // .addPathPatterns("/**"); diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/config/interceptor/LocalServerLoginAccountsInterceptor.java b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/config/interceptor/LocalServerLoginAccountsInterceptor.java index d4095f029..ddbe48af9 100644 --- a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/config/interceptor/LocalServerLoginAccountsInterceptor.java +++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/config/interceptor/LocalServerLoginAccountsInterceptor.java @@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject; import lombok.AllArgsConstructor; import lombok.extern.log4j.Log4j2; import org.springblade.common.cache.CacheNames; +import org.springblade.common.component.MockLoginService; import org.springblade.common.constant.LauncherConstant; import org.springblade.common.exception.CustomerException; import org.springblade.common.wrapper.CustomHttpServletRequestWrapper; @@ -34,8 +35,8 @@ import java.util.concurrent.TimeUnit; public class LocalServerLoginAccountsInterceptor extends HandlerInterceptorAdapter { private final BladeRedis bladeRedis; - private final Environment environment; private final RedisLockClient redisLockClient; + private final MockLoginService mockLoginService; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws CustomerException { @@ -49,20 +50,8 @@ public class LocalServerLoginAccountsInterceptor extends HandlerInterceptorAdapt if(flag){ data =bladeRedis.get(CacheNames.LOCAL_SERVER_USER+account); if(Objects.isNull(data)){ - String url = "http://"+ LauncherConstant.loginAddr(Objects.requireNonNull(environment.getActiveProfiles()[0]))+"/blade-auth/oauth/token"; - HttpRequest urlRequest = HttpRequest.post(url); - urlRequest.header("Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0"); - urlRequest.header("Tenant-Id", "627683"); - - Map params = new HashMap<>(); - params.put("grant_type", "local_server"); - params.put("scope", "all"); - params.put("username", account); - params.put("tenantId", "627683"); - HttpResponse execute = urlRequest.form(params).execute(); - String body = execute.body(); - data = JSONObject.parseObject(body); - bladeRedis.setEx(CacheNames.LOCAL_SERVER_USER+account,data,3200L); + data = mockLoginService.mockToken("627683",account); + bladeRedis.setEx(CacheNames.LOCAL_SERVER_USER+account,data,25919900L); redisLockClient.unLock("local_server_user", LockType.FAIR); } } @@ -76,7 +65,7 @@ public class LocalServerLoginAccountsInterceptor extends HandlerInterceptorAdapt wrappedRequest.addHeader("Blade-Auth", "bearer "+data.getString("access_token")); HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.add("Blade-Auth","bearer "+data.get("access_token") ); - httpHeaders.add( "Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0"); + httpHeaders.add( "Authorization", "Basic bG9jYWw6bG9jYWxfc2VjcmV0"); ThreadLocalUtil.put("bladeContext", httpHeaders); diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseUpdownTypeMapper.xml b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseUpdownTypeMapper.xml index c7c88ec91..0a39d8864 100644 --- a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseUpdownTypeMapper.xml +++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseUpdownTypeMapper.xml @@ -86,7 +86,8 @@ update sync_old_tray_type_log - set sync_num = sync_num + 1 + set sync_num = sync_num + 1, + mq_status = 0 where id = #{oldTrayTypeId} diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/receiver/OldTrayTypeListener.java b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/receiver/OldTrayTypeListener.java index 0e4c891d5..a92169a2b 100644 --- a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/receiver/OldTrayTypeListener.java +++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/receiver/OldTrayTypeListener.java @@ -71,6 +71,7 @@ public class OldTrayTypeListener { syncOldTrayTypeLogEntity.setArgs(com.alibaba.fastjson.JSONObject.toJSONString(trayInfoDTO)); syncOldTrayTypeLogEntity.setSyncStatus(0); syncOldTrayTypeLogEntity.setSyncNum(0); + syncOldTrayTypeLogEntity.setMqStatus(0); syncOldTrayTypeLogService.save(syncOldTrayTypeLogEntity); } }