Bläddra i källkod

Merge remote-tracking branch 'origin/main'

chejianzheng 2 månader sedan
förälder
incheckning
cf496dbdd5

+ 11 - 3
portal-service-application/src/main/java/com/hfln/portal/application/controller/wap/ShareController.java

@@ -5,6 +5,7 @@ import cn.hfln.framework.dto.ApiResult;
 import com.hfln.portal.common.dto.data.share.ShareDto;
 import com.hfln.portal.common.request.share.ShareConfirmParam;
 import com.hfln.portal.common.request.share.ShareParam;
+import com.hfln.portal.common.request.share.UrlShareConfirmParam;
 import com.hfln.portal.common.request.share.updateShareParam;
 import com.hfln.portal.domain.gateway.DeviceGateway;
 import io.swagger.v3.oas.annotations.Operation;
@@ -33,7 +34,7 @@ public class ShareController {
     }
 
     @PostMapping("/Confirm")
-    @Operation(summary = "设备分享确认")
+    @Operation(summary = "手机号分享设备确认")
     public ApiResult<Void> confirm(@RequestBody @Valid ShareConfirmParam param) {
         deviceGateway.shareConfirm(param);
         return ApiResult.success();
@@ -47,8 +48,15 @@ public class ShareController {
 
     @PostMapping("/shareByUrl")
     @Operation(summary = "通过链接分享设备")
-    public ApiResult<Void> shareByUrl(@Valid @RequestBody ShareParam shareParam) {
-        deviceGateway.shareByUrl(shareParam);
+    public ApiResult<ShareDto> shareByUrl(@Valid @RequestBody ShareParam shareParam) {
+        ShareDto dto = deviceGateway.shareByUrl(shareParam);
+        return ApiResult.success(dto);
+    }
+
+    @PostMapping("/urlShareConfirm")
+    @Operation(summary = "链接分享设备确认")
+    public ApiResult<Void> urlShareConfirm(@RequestBody @Valid UrlShareConfirmParam param) {
+        deviceGateway.urlShareConfirm(param);
         return ApiResult.success();
     }
 

+ 2 - 2
portal-service-common/src/main/java/com/hfln/portal/common/dto/data/share/ShareDto.java

@@ -14,9 +14,9 @@ import java.time.LocalDateTime;
 public class ShareDto extends BaseVO {
 
     /**
-     * 主键ID
+     * 设备分享表主键ID
      */
-    @Schema(description = "主键ID")
+    @Schema(description = "设备分享表主键ID")
     private Long shareId;
 
     /**

+ 2 - 2
portal-service-common/src/main/java/com/hfln/portal/common/request/device/DeviceBandingParams.java

@@ -25,9 +25,9 @@ public class DeviceBandingParams extends BaseVO {
     @Size(max = 10, message = "设备名称不能超过10个字符")
     private String devName;
 
-    @Schema(description = "安装高度: 250 - 370 cm 之内")
+    @Schema(description = "安装高度: 200 - 370 cm 之内")
     @DecimalMax(value = "370", message = "height不能大于370")
-    @DecimalMin(value = "250", message = "height不能小于250")
+    @DecimalMin(value = "200", message = "height不能小于200")
     private BigDecimal height;
 
     @Schema(description = "WIFI名称")

+ 1 - 1
portal-service-common/src/main/java/com/hfln/portal/common/request/device/DeviceListParams.java

@@ -19,7 +19,7 @@ public class DeviceListParams extends BaseVO {
     @Schema(description = "关键词")
     private String keyWord;
 
-    @Schema(description = "状态 不传:默认为全部 0:在线  1:离线  2:报警")
+    @Schema(description = "状态 不传:全部 / 0:离线 / 1:在线 / 2:报警")
     private Integer status;
 
 

+ 2 - 2
portal-service-common/src/main/java/com/hfln/portal/common/request/device/UpdateDeviceParams.java

@@ -27,9 +27,9 @@ public class UpdateDeviceParams extends BaseVO {
     @Size(max = 10, message = "设备名称不能超过10个字符")
     private String devName;
 
-    @Schema(description = "安装高度: 250 - 370 cm 之内")
+    @Schema(description = "安装高度: 200 - 370 cm 之内")
     @DecimalMax(value = "370", message = "height不能大于370")
-    @DecimalMin(value = "250", message = "height不能小于250")
+    @DecimalMin(value = "200", message = "height不能小于200")
     private BigDecimal height;
 
     @Schema(description = "WIFI名称")

+ 2 - 2
portal-service-common/src/main/java/com/hfln/portal/common/request/device/WebUpdateDeviceParams.java

@@ -29,9 +29,9 @@ public class WebUpdateDeviceParams extends BaseVO {
     @Size(max = 10, message = "设备名称不能超过10个字符")
     private String devName;
 
-    @Schema(description = "安装高度: 250 - 370 cm 之内")
+    @Schema(description = "安装高度: 200 - 370 cm 之内")
     @DecimalMax(value = "370", message = "height不能大于370")
-    @DecimalMin(value = "250", message = "height不能小于250")
+    @DecimalMin(value = "200", message = "height不能小于200")
     private BigDecimal height;
 
     @Schema(description = "WIFI名称")

+ 32 - 0
portal-service-common/src/main/java/com/hfln/portal/common/request/share/UrlShareConfirmParam.java

@@ -0,0 +1,32 @@
+package com.hfln.portal.common.request.share;
+
+import com.hfln.portal.common.vo.BaseVO;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.validation.constraints.NotNull;
+
+@EqualsAndHashCode(callSuper = true)
+@Schema(description = "设备分享确认")
+@Data
+public class UrlShareConfirmParam extends BaseVO {
+
+
+    @Schema(description = "设备分享表主键ID")
+    @NotNull(message = "设备分享表主键ID不能为空")
+    private Long shareId;
+
+    @Schema(description = "被分享人userId")
+    @NotNull(message = "被分享人userId不能为空")
+    private Long sharedUserId;
+
+    @Schema(description = "被分享人手机号")
+    @NotNull(message = "被分享人手机号不能为空")
+    private String sharedPhone;
+
+
+    @Schema(description = "确认状态 1-已确认,2-已拒绝")
+    @NotNull(message = "确认状态不能为空")
+    private Integer state;
+}

+ 4 - 1
portal-service-domain/src/main/java/com/hfln/portal/domain/gateway/DeviceGateway.java

@@ -8,6 +8,7 @@ import com.hfln.portal.common.request.device.*;
 import com.hfln.portal.common.request.room.RoomParam;
 import com.hfln.portal.common.request.share.ShareConfirmParam;
 import com.hfln.portal.common.request.share.ShareParam;
+import com.hfln.portal.common.request.share.UrlShareConfirmParam;
 import com.hfln.portal.common.request.share.updateShareParam;
 import com.hfln.portal.common.response.device.UsedInfoQueryRes;
 import org.springframework.web.multipart.MultipartFile;
@@ -61,7 +62,9 @@ public interface DeviceGateway {
 
     Boolean devShare(ShareParam shareParam);
 
-    Boolean shareByUrl(ShareParam shareParam);
+    ShareDto shareByUrl(ShareParam shareParam);
+
+    void urlShareConfirm (UrlShareConfirmParam param);
 
     List<ShareDto> queryDevShare(Long userId);
 

+ 47 - 33
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/gateway/impl/DeviceGatewayImpl.java

@@ -23,6 +23,7 @@ import com.hfln.portal.common.request.room.RoomParam;
 import com.hfln.portal.common.request.room.SubRegionInfo;
 import com.hfln.portal.common.request.share.ShareConfirmParam;
 import com.hfln.portal.common.request.share.ShareParam;
+import com.hfln.portal.common.request.share.UrlShareConfirmParam;
 import com.hfln.portal.common.request.share.updateShareParam;
 import com.hfln.portal.common.response.device.UsedInfoQueryRes;
 import com.hfln.portal.common.vo.PageRecord;
@@ -681,52 +682,65 @@ public class DeviceGatewayImpl implements DeviceGateway {
     }
 
     @Override
-    public Boolean shareByUrl(ShareParam shareParam) {
+    public ShareDto shareByUrl(ShareParam shareParam) {
         //校验主绑人
         DevInfo devInfo = devInfoService.getById(shareParam.getDevId());
         if (!Objects.equals(shareParam.getSharerUserId(), devInfo.getUserId())) {
             throw new BizException(ErrorEnum.USER_NO_PERMISSION.getErrorCode(), ErrorEnum.USER_NO_PERMISSION.getErrorMessage());
         }
 
-        // 1. 验证是否存在未处理的分享
-        DevShare notDealShare = devShareService.queryNotDeal(shareParam.getSharerUserId(), shareParam.getSharedUserId(), shareParam.getDevId());
-        if (notDealShare != null) {
-            throw new BizException(ErrorEnum.EXIST_NOT_DEAL_SHARE.getErrorCode(), ErrorEnum.EXIST_NOT_DEAL_SHARE.getErrorMessage());
-        }
-
-        // 2. 验证是否存在已分享的记录
-        LambdaQueryWrapper<DevShare> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(DevShare::getDevId, shareParam.getDevId())
-                   .eq(DevShare::getSharerUserId, shareParam.getSharerUserId())
-                   .eq(DevShare::getSharedUserId, shareParam.getSharedUserId())
-                   .in(DevShare::getState, Arrays.asList(0, 1))
-                   .eq(DevShare::getIsDeleted, 0);
-        List<DevShare> existingShares = devShareService.list(queryWrapper);
-
-        if (existingShares != null && !existingShares.isEmpty()) {
-            throw new BizException(ErrorEnum.SHARE_IS_NOT_REPEAT.getErrorCode(), ErrorEnum.SHARE_IS_NOT_REPEAT.getErrorMessage());
-        }
 
-        // 3. 创建新的分享记录
+        //插入新分享记录
         DevShare devShare = new DevShare();
-        BeanUtils.copyProperties(shareParam, devShare);
-        
-        // 4. 如果分享人手机号为空,从用户信息中获取
-        if (StringUtils.isEmpty(shareParam.getSharerPhone())) {
-            UserInfo shareUser = userService.queryById(shareParam.getSharerUserId());
-            if (shareUser == null) {
-                throw new BizException(ErrorEnum.SHARER_IS_NOT_EXIST.getErrorCode(), ErrorEnum.SHARER_IS_NOT_EXIST.getErrorMessage());
-            }
-            devShare.setSharerPhone(shareUser.getPhone());
-        }
-
-        // 5. 设置分享状态并保存
+        devShare.setDevId(shareParam.getDevId());
+        devShare.setSharerUserId(shareParam.getSharerUserId());
+        devShare.setSharerPhone(shareParam.getSharerPhone());
         devShare.setMessageFlag(shareParam.getMessageFlag());
         devShare.setServiceNumberFlag(shareParam.getServiceNumberFlag());
         devShare.setVoipFlag(shareParam.getVoipFlag());
         devShare.setState(0);
         devShareService.save(devShare);
-        return true;
+
+        //构建返回对象
+        ShareDto dto = new ShareDto();
+        dto.setShareId(devShare.getShareId());
+        dto.setDevId(shareParam.getDevId());
+        dto.setClientId(devInfo.getClientId());
+        dto.setDevName(devInfo.getDevName());
+        dto.setSharerUserId(shareParam.getSharerUserId());
+        dto.setSharedPhone(shareParam.getSharerPhone());
+        dto.setShareTime(devShare.getCreateTime());
+        dto.setState(devShare.getState());
+        return dto;
+    }
+
+
+    @Override
+    public void urlShareConfirm (UrlShareConfirmParam param) {
+        //1.查询分享记录信息
+        DevShare devShare = devShareService.getById(param.getShareId());
+
+        //2.校验分享信息是否存在
+        if (devShare == null) {
+            throw new BizException(ErrorEnum.SHARE_INFO_NOT_EXIST.getErrorCode(), ErrorEnum.SHARE_INFO_NOT_EXIST.getErrorMessage());
+        }
+
+        //3.校验分享是否已经被处理
+        if (devShare.getState() == null || devShare.getState() != 0){
+            throw new BizException(ErrorEnum.SHARE_INFO_ALREADY_DEAL.getErrorCode(), ErrorEnum.SHARE_INFO_ALREADY_DEAL.getErrorMessage());
+        }
+
+        //4.校验被分享人是否注册
+        UserInfo userInfo = userService.queryById(param.getSharedUserId());
+        if (userInfo == null) {
+            throw new BizException(ErrorEnum.USER_NOT_FOUND.getErrorCode(), ErrorEnum.USER_NOT_FOUND.getErrorMessage());
+        }
+
+        //5.保存分享信息(将入参写入该记录)
+        devShare.setSharedUserId(param.getSharedUserId());
+        devShare.setSharedPhone(param.getSharedPhone());
+        devShare.setState(param.getState()); // 1-已确认,2-已拒绝
+        devShareService.updateById(devShare);
     }
 
     @Override

+ 1 - 1
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/gateway/impl/WebGatewayImpl.java

@@ -157,8 +157,8 @@ public class WebGatewayImpl implements WebGateway {
         if (!CollectionUtils.isEmpty(existClientIds)) {
             uploadRes.setSuc(false);
             uploadRes.setMsgList(existClientIds);
+            uploadRes.setMsg("上传重复");
         }
-        uploadRes.setMsg("上传重复");
         return uploadRes;
     }
 

+ 1 - 1
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/po/DevShare.java

@@ -18,7 +18,7 @@ public class DevShare extends BasePO {
      * 主键ID
      */
     @TableId(type = IdType.ASSIGN_ID)
-    private Long ShareId;
+    private Long shareId;
 
     /**
      * 设备表(dev_info)主键