Эх сурвалжийг харах

设备二维码添加自定义商户

李进 1 жил өмнө
parent
commit
2f92e3db04

+ 4 - 0
device-api-service/src/main/java/com/xy/entity/DeviceCreateIds.java

@@ -74,4 +74,8 @@ public class DeviceCreateIds implements Serializable {
      */
     private LocalDateTime lastExportQrCodeTime;
 
+    /**
+     * 设备二维码商户id
+     */
+    private Long deviceQrMercId;
 }

+ 65 - 11
device-api-service/src/main/java/com/xy/service/DeviceCreateIdsServiceImpl.java

@@ -17,10 +17,13 @@ import com.xy.device.EnumDeviceQrCode;
 import com.xy.device.EnumDeviceType;
 import com.xy.dto.DeviceCreateIdsDto;
 import com.xy.dto.DeviceQualityDto;
+import com.xy.dto.MercDeviceQrConfigDto;
 import com.xy.dto.SysWorkUser.ListDto;
 import com.xy.dto.SysWorkUser.SysWorkVo;
+import com.xy.dto.be.MercDto;
 import com.xy.entity.DeviceCreateIds;
 import com.xy.mapper.DeviceCreateIdsMapper;
+import com.xy.service.be.MercService;
 import com.xy.utils.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -64,6 +67,10 @@ public class DeviceCreateIdsServiceImpl extends ServiceImpl<DeviceCreateIdsMappe
 
     private final SysWorkUserService sysWorkUserService;
 
+    private final MercDeviceQrConfigService mercDeviceQrConfigService;
+
+    private final MercService mercService;
+
     @SneakyThrows
     @PostMapping("save")
     @ApiOperation("添加")
@@ -144,17 +151,41 @@ public class DeviceCreateIdsServiceImpl extends ServiceImpl<DeviceCreateIdsMappe
         PageBean<DeviceCreateIdsDto.Vo> voPageBean = toPageBean(PlusBeans.copy(DeviceCreateIdsDto.Vo.class, iPage));
         List<DeviceCreateIdsDto.Vo> records = voPageBean.getRecords();
         JList<Long> createUserIds = new JArrayList<>(records).getProperty(DeviceCreateIdsDto.Vo::getCreateUserId);
+        //查询创建人
+        JMap<Long, SysWorkVo> sysWorkVoJMap;
         List<SysWorkVo> sysWorkVos = sysWorkUserService.list(new ListDto().setId(createUserIds)).getData();
         if (Emptys.check(sysWorkVos)) {
-            JMap<Long, SysWorkVo> sysWorkVoJMap = new JArrayList<>(sysWorkVos).toMap(SysWorkVo::getId).cover();
-            records.forEach(vo -> {
-                SysWorkVo sysWorkVo = sysWorkVoJMap.get(vo.getCreateUserId());
-                if (sysWorkVo == null) {
-                    return;
-                }
-                vo.setCreateUserName(sysWorkVo.getAccount());
-            });
+            sysWorkVoJMap = new JArrayList<>(sysWorkVos).toMap(SysWorkVo::getId).cover();
+        } else {
+            sysWorkVoJMap = new JHashMap<>();
+        }
+        //查询绑定商户
+        JMap<Long, MercDto.Vo> mercsJMaps;
+        JList<Long> mercIds = new JArrayList<>(records).filter().isNotNull(DeviceCreateIdsDto.Vo::getDeviceQrMercId).list().getProperty(DeviceCreateIdsDto.Vo::getDeviceQrMercId);
+        if (Emptys.check(mercIds)) {
+            List<MercDto.Vo> mercs = mercService.list(new MercDto.SelectList().setMercIds(mercIds)).getData();
+            mercsJMaps = new JArrayList<>(mercs).toMap(MercDto.Vo::getId).cover();
+        } else {
+            mercsJMaps = new JHashMap<>();
         }
+        records.forEach(vo -> {
+            if (Emptys.check(sysWorkVoJMap)) {
+                if (Emptys.check(vo.getCreateUserId())) {
+                    SysWorkVo sysWorkVo = sysWorkVoJMap.get(vo.getCreateUserId());
+                    if (sysWorkVo != null) {
+                        vo.setCreateUserName(sysWorkVo.getAccount());
+                    }
+                }
+            }
+            if (Emptys.check(mercsJMaps)) {
+                if (Emptys.check(vo.getDeviceQrMercId())) {
+                    MercDto.Vo mercVo = mercsJMaps.get(vo.getDeviceQrMercId());
+                    if (mercVo != null) {
+                        vo.setDeviceQrMercName(mercVo.getName());
+                    }
+                }
+            }
+        });
         return R.ok(voPageBean);
     }
 
@@ -169,9 +200,15 @@ public class DeviceCreateIdsServiceImpl extends ServiceImpl<DeviceCreateIdsMappe
     @PostMapping("getQrCode")
     @ApiOperation("获取二维码")
     public R<List<String>> getQrCode(@RequestBody @Validated DeviceQualityDto.Qrcode qrcode) {
-        //查询设备类型
         DeviceCreateIds deviceCreateIds = getById(qrcode.getDeviceId());
+        //查询商户特有二维码地址
         String qrUrl = SysDictUtils.getValue(EnumDeviceQrCode.Code.CODE.getCode(), EnumDeviceQrCode.URL.getCode(), String.class);
+        if (Emptys.check(deviceCreateIds.getDeviceQrMercId())) {
+            MercDeviceQrConfigDto.Vo mercDeviceQrConfig = mercDeviceQrConfigService.obj(new MercDeviceQrConfigDto.Vo().setMercId(deviceCreateIds.getDeviceQrMercId())).getData();
+            if (Emptys.check(mercDeviceQrConfig)) {
+                qrUrl = mercDeviceQrConfig.getQrUrl() + "?deviceId=";
+            }
+        }
         //验证是否是双门柜
         int deviceType = SysDictUtils.getValue(EnumDeviceType.Code.CODE.getCode(), EnumDeviceType.N_2.getCode(), Integer.class);
         String deviceId = qrcode.getDeviceId().toString();
@@ -194,14 +231,31 @@ public class DeviceCreateIdsServiceImpl extends ServiceImpl<DeviceCreateIdsMappe
     @PostMapping("exportQrCode")
     @ApiOperation("导出二维码")
     public void exportQrCode(@RequestBody @Validated DeviceCreateIdsDto.ExportQrCode exportQrCode) {
-        String qrUrl = SysDictUtils.getValue(EnumDeviceQrCode.Code.CODE.getCode(), EnumDeviceQrCode.URL.getCode(), String.class);
+        String url = SysDictUtils.getValue(EnumDeviceQrCode.Code.CODE.getCode(), EnumDeviceQrCode.URL.getCode(), String.class);
         int deviceType = SysDictUtils.getValue(EnumDeviceType.Code.CODE.getCode(), EnumDeviceType.N_2.getCode(), Integer.class);
         LocalDateTime now = LocalDateTime.now();
         JList<String> deviceIds = new JArrayList<>();
         List<String> deviceIdInfos = new ArrayList<>();
         List<DeviceCreateIds> updateDeviceCreateIds = new ArrayList<>();
-        List<DeviceCreateIds> deviceCreateIdss = listByIds(exportQrCode.getDeviceIds());
+        JList<DeviceCreateIds> deviceCreateIdss = new JArrayList<>(listByIds(exportQrCode.getDeviceIds()));
+        //查询商户特有二维码地址
+        JMap<Long, MercDeviceQrConfigDto.Vo> mercDeviceQrConfigsJMas;
+        JList<Long> mercIds = deviceCreateIdss.filter().isNotNull(DeviceCreateIds::getDeviceQrMercId).list().getProperty(DeviceCreateIds::getDeviceQrMercId);
+        if (Emptys.check(mercIds)) {
+            List<MercDeviceQrConfigDto.Vo> mercDeviceQrConfigs = mercDeviceQrConfigService.list(new MercDeviceQrConfigDto.SelectList().setMercId(mercIds)).getData();
+            mercDeviceQrConfigsJMas = new JArrayList<>(mercDeviceQrConfigs).toMap(MercDeviceQrConfigDto.Vo::getMercId).cover();
+        } else {
+            mercDeviceQrConfigsJMas = new JHashMap<>();
+        }
+        //循环
         deviceCreateIdss.forEach(deviceCreateIds -> {
+            String qrUrl = url;
+            if (Emptys.check(deviceCreateIds.getDeviceQrMercId())) {
+                MercDeviceQrConfigDto.Vo mercDeviceQrConfig = mercDeviceQrConfigsJMas.get(deviceCreateIds.getDeviceQrMercId());
+                if (Emptys.check(mercDeviceQrConfig)) {
+                    qrUrl = mercDeviceQrConfig.getQrUrl() + "?deviceId=";
+                }
+            }
             //验证是否是双门柜
             if (deviceCreateIds.getDeviceType() == deviceType) {
                 for (int i = 0; i < 2; i++) {

+ 6 - 0
device-api/src/main/java/com/xy/dto/DeviceCreateIdsDto.java

@@ -189,6 +189,12 @@ public class DeviceCreateIdsDto {
         @ApiModelProperty("最后导出二维码时间")
         @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
         private LocalDateTime lastExportQrCodeTime;
+
+        @ApiModelProperty("设备二维码商户id")
+        private Long deviceQrMercId;
+
+        @ApiModelProperty("设备二维码商户名称")
+        private String deviceQrMercName;
     }
 
 }