Sfoglia il codice sorgente

Merge branch 'refs/heads/master' into master-商品重构2阶段

tanbin 6 mesi fa
parent
commit
648879deb9

+ 50 - 0
device-api-service/src/main/java/com/xy/service/DeviceInfoServiceImpl.java

@@ -117,6 +117,10 @@ public class DeviceInfoServiceImpl extends ServiceImpl<DeviceInfoMapper, DeviceI
     private final DevicePartServiceImpl devicePartService;
     private final MercService mercService;
 
+    private final MercDeviceQrConfigService mercDeviceQrConfigService;
+
+    private final DeviceCreateIdsServiceImpl deviceCreateIdsService;
+
 
     @Override
     @ApiOperation("设备列表-管理员")
@@ -845,6 +849,52 @@ public class DeviceInfoServiceImpl extends ServiceImpl<DeviceInfoMapper, DeviceI
     @Override
     @Transactional(rollbackFor = Exception.class)
     public R<Boolean> mercDeviceAuth(DeviceInfoDto.MercDeviceAuthDto auth) {
+        //检查
+        FunctionUtils.NoParamsNoResult check = () -> {
+            //商户二维码
+            MercDeviceQrConfigDto.Vo mercDeviceQrConfig = mercDeviceQrConfigService.obj(new MercDeviceQrConfigDto.Vo().setMercId(auth.getMercId())).getData();
+            //设备ID号生成记录
+            List<DeviceCreateIds> list = deviceCreateIdsService.list(new LambdaQueryWrapper<DeviceCreateIds>()
+                    .in(DeviceCreateIds::getDeviceId, auth.getDeviceIds())
+            );
+            JList<DeviceCreateIds> deviceCreateIds = new JArrayList<>(list);
+            //授权商户有专用码
+            if (Emptys.check(mercDeviceQrConfig.getMercId())) {
+                //设备无专用商户
+                JList<DeviceCreateIds> isNullDeviceQrMercIds = deviceCreateIds.filter().isNull(DeviceCreateIds::getDeviceQrMercId).list();
+                isNullDeviceQrMercIds.addAll(deviceCreateIds.filter().eq(DeviceCreateIds::getDeviceQrMercId, -1).list());
+                if (Emptys.check(isNullDeviceQrMercIds)) {
+                    throw new CommRuntimeException("请授权专用设备给该商户");
+                }
+                //有专用商户的设备数量低于需要授权的数量
+                JList<DeviceCreateIds> isNotNullDeviceQrMercIds = deviceCreateIds.filter()
+                        .isNotNull(DeviceCreateIds::getDeviceQrMercId)
+                        .ne(DeviceCreateIds::getDeviceQrMercId, -1)
+                        .list();
+                if (isNotNullDeviceQrMercIds.size() < auth.getDeviceIds().size()) {
+                    throw new CommRuntimeException("请授权专用设备给该商户");
+                }
+                //循环比对授权商户专用码编码是否和设备专用商户专用码编码是否一致
+                List<MercDeviceQrConfigDto.Vo> mercDeviceQrConfigs = mercDeviceQrConfigService.list(new MercDeviceQrConfigDto.SelectList().setMercId(isNotNullDeviceQrMercIds.getProperty(DeviceCreateIds::getDeviceQrMercId))).getData();
+                for (MercDeviceQrConfigDto.Vo deviceQrConfig : mercDeviceQrConfigs) {
+                    if (!deviceQrConfig.getCode().equals(mercDeviceQrConfig.getCode())) {
+                        throw new CommRuntimeException("请授权专用设备给该商户");
+                    }
+                }
+            }
+            //授权商户无专用码
+            if (!Emptys.check(mercDeviceQrConfig.getMercId())) {
+                //设备有专用商户
+                JList<DeviceCreateIds> isNotNullDeviceQrMercIds = deviceCreateIds.filter()
+                        .isNotNull(DeviceCreateIds::getDeviceQrMercId)
+                        .ne(DeviceCreateIds::getDeviceQrMercId, -1)
+                        .list();
+                if (Emptys.check(isNotNullDeviceQrMercIds)) {
+                    throw new CommRuntimeException("专用设备无法授权给该商户");
+                }
+            }
+        };
+        check.run();
         Long mercId = auth.getMercId();
         String mercCode = auth.getMercCode();
         Long algorithmId = auth.getAlgorithmId();