diff --git a/src/main/java/com/corewing/app/dto/DeviceActivationRequest.java b/src/main/java/com/corewing/app/dto/DeviceActivationRequest.java new file mode 100644 index 0000000..589b788 --- /dev/null +++ b/src/main/java/com/corewing/app/dto/DeviceActivationRequest.java @@ -0,0 +1,15 @@ +package com.corewing.app.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class DeviceActivationRequest { + + @ApiModelProperty(value = "MAC地址", required = true) + @NotBlank(message = "MAC地址不能为空") + private String mac; + +} diff --git a/src/main/java/com/corewing/app/entity/BizDevice.java b/src/main/java/com/corewing/app/entity/BizDevice.java new file mode 100644 index 0000000..31db7bd --- /dev/null +++ b/src/main/java/com/corewing/app/entity/BizDevice.java @@ -0,0 +1,40 @@ +package com.corewing.app.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.corewing.app.common.base.CommonEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 设备表 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@TableName("biz_device") +public class BizDevice extends CommonEntity { + + @TableId + @ApiModelProperty("设备id") + private String id; + + @ApiModelProperty("设备mac地址") + private String deviceMac; + + @ApiModelProperty("状态") + private String status; + + @ApiModelProperty("公布状态") + private String publicStatus; + + @ApiModelProperty("排序") + private int sortCode; + + @ApiModelProperty("备注") + private String remark; + + @ApiModelProperty("扩展字段") + private String extJson; + +} diff --git a/src/main/java/com/corewing/app/entity/BizDeviceActivation.java b/src/main/java/com/corewing/app/entity/BizDeviceActivation.java new file mode 100644 index 0000000..70252f7 --- /dev/null +++ b/src/main/java/com/corewing/app/entity/BizDeviceActivation.java @@ -0,0 +1,45 @@ +package com.corewing.app.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.corewing.app.common.base.CommonEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 设备激活表 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@TableName("biz_device_activation") +public class BizDeviceActivation extends CommonEntity { + + @TableId + @ApiModelProperty("激活id") + private String id; + + @ApiModelProperty("设备mac地址") + private String deviceMac; + + @ApiModelProperty("设备id") + private String deviceId; + + @ApiModelProperty("激活时间") + private Date activationTime; + + @ApiModelProperty("用户id") + private Long userId; + + @ApiModelProperty("激活ip") + private String activationIp; + + @ApiModelProperty("备注") + private String remark; + + @ApiModelProperty("扩展字段") + private String extJson; + +} diff --git a/src/main/java/com/corewing/app/entity/BizDeviceCategory.java b/src/main/java/com/corewing/app/entity/BizDeviceCategory.java new file mode 100644 index 0000000..f8953e2 --- /dev/null +++ b/src/main/java/com/corewing/app/entity/BizDeviceCategory.java @@ -0,0 +1,38 @@ +package com.corewing.app.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.corewing.app.common.base.CommonEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 设备型号表 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@TableName("biz_device_category") +public class BizDeviceCategory extends CommonEntity { + + @TableId + @ApiModelProperty("设备型号id") + private String id; + + @ApiModelProperty("设备型号缩略图") + private String thumbnail; + + @ApiModelProperty("设备型号名称") + private String deviceName; + + @ApiModelProperty("排序") + private int sortCode; + + @ApiModelProperty("备注") + private String remark; + + @ApiModelProperty("扩展字段") + private String extJson; + + +} diff --git a/src/main/java/com/corewing/app/mapper/BizDeviceActivationMapper.java b/src/main/java/com/corewing/app/mapper/BizDeviceActivationMapper.java new file mode 100644 index 0000000..574fe45 --- /dev/null +++ b/src/main/java/com/corewing/app/mapper/BizDeviceActivationMapper.java @@ -0,0 +1,9 @@ +package com.corewing.app.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.corewing.app.entity.BizDeviceActivation; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface BizDeviceActivationMapper extends BaseMapper { +} diff --git a/src/main/java/com/corewing/app/mapper/BizDeviceCategoryMapper.java b/src/main/java/com/corewing/app/mapper/BizDeviceCategoryMapper.java new file mode 100644 index 0000000..3dadfd2 --- /dev/null +++ b/src/main/java/com/corewing/app/mapper/BizDeviceCategoryMapper.java @@ -0,0 +1,9 @@ +package com.corewing.app.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.corewing.app.entity.BizDeviceCategory; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface BizDeviceCategoryMapper extends BaseMapper { +} diff --git a/src/main/java/com/corewing/app/mapper/BizDeviceMapper.java b/src/main/java/com/corewing/app/mapper/BizDeviceMapper.java new file mode 100644 index 0000000..6725d12 --- /dev/null +++ b/src/main/java/com/corewing/app/mapper/BizDeviceMapper.java @@ -0,0 +1,9 @@ +package com.corewing.app.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.corewing.app.entity.BizDevice; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface BizDeviceMapper extends BaseMapper { +} diff --git a/src/main/java/com/corewing/app/modules/app/AppDeviceController.java b/src/main/java/com/corewing/app/modules/app/AppDeviceController.java new file mode 100644 index 0000000..acdda96 --- /dev/null +++ b/src/main/java/com/corewing/app/modules/app/AppDeviceController.java @@ -0,0 +1,33 @@ +package com.corewing.app.modules.app; + +import com.corewing.app.common.Result; +import com.corewing.app.dto.DeviceActivationRequest; +import com.corewing.app.service.BizDeviceActivationService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * 产品激活接口 + */ +@Api(tags = "产品激活") +@RestController +@RequestMapping("/api/app/device") +public class AppDeviceController { + + @Resource + private BizDeviceActivationService activationService; + + @ApiOperation("激活接口") + @PostMapping("activation") + public Result activation(@RequestBody DeviceActivationRequest deviceActivationRequest) { + return Result.success(activationService.activation(deviceActivationRequest)); + } + + +} diff --git a/src/main/java/com/corewing/app/service/BizDeviceActivationService.java b/src/main/java/com/corewing/app/service/BizDeviceActivationService.java new file mode 100644 index 0000000..b0c79e1 --- /dev/null +++ b/src/main/java/com/corewing/app/service/BizDeviceActivationService.java @@ -0,0 +1,9 @@ +package com.corewing.app.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.corewing.app.dto.DeviceActivationRequest; +import com.corewing.app.entity.BizDeviceActivation; + +public interface BizDeviceActivationService extends IService { + Boolean activation(DeviceActivationRequest deviceActivationRequest); +} diff --git a/src/main/java/com/corewing/app/service/BizDeviceCategoryService.java b/src/main/java/com/corewing/app/service/BizDeviceCategoryService.java new file mode 100644 index 0000000..e3ef7f6 --- /dev/null +++ b/src/main/java/com/corewing/app/service/BizDeviceCategoryService.java @@ -0,0 +1,8 @@ +package com.corewing.app.service; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.service.IService; +import com.corewing.app.entity.BizDeviceCategory; + +public interface BizDeviceCategoryService extends IService { +} diff --git a/src/main/java/com/corewing/app/service/BizDeviceService.java b/src/main/java/com/corewing/app/service/BizDeviceService.java new file mode 100644 index 0000000..628599a --- /dev/null +++ b/src/main/java/com/corewing/app/service/BizDeviceService.java @@ -0,0 +1,7 @@ +package com.corewing.app.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.corewing.app.entity.BizDevice; + +public interface BizDeviceService extends IService { +} diff --git a/src/main/java/com/corewing/app/service/impl/BizDeviceActivationServiceImpl.java b/src/main/java/com/corewing/app/service/impl/BizDeviceActivationServiceImpl.java new file mode 100644 index 0000000..98a50f6 --- /dev/null +++ b/src/main/java/com/corewing/app/service/impl/BizDeviceActivationServiceImpl.java @@ -0,0 +1,60 @@ +package com.corewing.app.service.impl; + +import cn.dev33.satoken.stp.StpUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.corewing.app.dto.DeviceActivationRequest; +import com.corewing.app.entity.BizDevice; +import com.corewing.app.entity.BizDeviceActivation; +import com.corewing.app.mapper.BizDeviceActivationMapper; +import com.corewing.app.service.BizDeviceActivationService; +import com.corewing.app.service.BizDeviceService; +import com.corewing.app.util.CommonServletUtil; +import com.corewing.app.util.IpUtil; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; + +@Service +public class BizDeviceActivationServiceImpl extends ServiceImpl implements BizDeviceActivationService { + + @Resource + private BizDeviceService deviceService; + + @Override + public Boolean activation(DeviceActivationRequest deviceActivationRequest) { + Object loginId = StpUtil.getLoginId(); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(BizDeviceActivation::getDeviceMac, deviceActivationRequest.getMac()); + BizDeviceActivation checkDeviceActivation = getOne(wrapper); + if(checkDeviceActivation != null) { + // 该用户已经激活过该设备 + if(checkDeviceActivation.getUserId().equals(loginId)) { + return true; + } + return updateById(checkDeviceActivation); + } + + // 校验是否为酷翼飞控设备 + LambdaQueryWrapper checkDeviceWrapper = new LambdaQueryWrapper<>(); + checkDeviceWrapper.eq(BizDevice::getDeviceMac, deviceActivationRequest.getMac()); + List list = deviceService.list(checkDeviceWrapper); + if(list.isEmpty()) { + throw new RuntimeException("该设备不是酷翼官方产品"); + } + + BizDevice bizDevice = list.get(0); + + // 执行新设备绑定激活 + BizDeviceActivation deviceActivation = new BizDeviceActivation(); + deviceActivation.setDeviceMac(bizDevice.getDeviceMac()); + deviceActivation.setActivationIp(IpUtil.getClientIp(CommonServletUtil.getRequest())); + deviceActivation.setActivationTime(new Date()); + deviceActivation.setUserId(Long.valueOf(loginId.toString())); + deviceActivation.setDeviceId(bizDevice.getId()); + return this.saveOrUpdate(deviceActivation); + } +} diff --git a/src/main/java/com/corewing/app/service/impl/BizDeviceCategoryServiceImpl.java b/src/main/java/com/corewing/app/service/impl/BizDeviceCategoryServiceImpl.java new file mode 100644 index 0000000..a02823e --- /dev/null +++ b/src/main/java/com/corewing/app/service/impl/BizDeviceCategoryServiceImpl.java @@ -0,0 +1,11 @@ +package com.corewing.app.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.corewing.app.entity.BizDeviceCategory; +import com.corewing.app.mapper.BizDeviceCategoryMapper; +import com.corewing.app.service.BizDeviceCategoryService; +import org.springframework.stereotype.Service; + +@Service +public class BizDeviceCategoryServiceImpl extends ServiceImpl implements BizDeviceCategoryService { +} diff --git a/src/main/java/com/corewing/app/service/impl/BizDeviceServiceImpl.java b/src/main/java/com/corewing/app/service/impl/BizDeviceServiceImpl.java new file mode 100644 index 0000000..dfa1a9f --- /dev/null +++ b/src/main/java/com/corewing/app/service/impl/BizDeviceServiceImpl.java @@ -0,0 +1,11 @@ +package com.corewing.app.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.corewing.app.entity.BizDevice; +import com.corewing.app.mapper.BizDeviceMapper; +import com.corewing.app.service.BizDeviceService; +import org.springframework.stereotype.Service; + +@Service +public class BizDeviceServiceImpl extends ServiceImpl implements BizDeviceService { +}