From 0ba48cdae511143979d154d63f793c6ef983cc5e Mon Sep 17 00:00:00 2001 From: rqian <1206436827@qq.com> Date: Fri, 15 May 2026 10:58:51 +0800 Subject: [PATCH] =?UTF-8?q?#=E9=80=82=E9=85=8D=E5=89=8D=E7=AB=AF=E7=9A=84?= =?UTF-8?q?=E4=BA=8C=E7=BB=B4=E7=A0=81=E6=96=B0=E5=A2=9E=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/SysQrCodeController.java | 14 ++++ .../business/dto/QrCodeGenerateRequest.java | 37 +++++++++++ .../business/sys_robot_qrcode/SysQrCode.java | 26 +++++++- .../com/maibu/service/ISysQrCodeService.java | 4 ++ .../service/impl/SysQrCodeServiceImpl.java | 66 +++++++++++++++++++ 5 files changed, 146 insertions(+), 1 deletion(-) create mode 100644 maibu-common/src/main/java/com/maibu/core/business/dto/QrCodeGenerateRequest.java diff --git a/maibu-admin/src/main/java/com/maibu/web/controller/system/SysQrCodeController.java b/maibu-admin/src/main/java/com/maibu/web/controller/system/SysQrCodeController.java index e188612..05595a4 100644 --- a/maibu-admin/src/main/java/com/maibu/web/controller/system/SysQrCodeController.java +++ b/maibu-admin/src/main/java/com/maibu/web/controller/system/SysQrCodeController.java @@ -2,6 +2,7 @@ package com.maibu.web.controller.system; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.maibu.core.business.dto.QrCodeGenerateRequest; import com.maibu.core.business.sys_robot_qrcode.SysQrCode; import com.maibu.core.domain.AjaxResult; import com.maibu.service.ISysQrCodeService; @@ -52,6 +53,7 @@ public class SysQrCodeController { return AjaxResult.success(qrCodeService.selectBySerialNumber(serialNumber)); } +/* @PreAuthorize("@ss.hasPermi('system:qrcode:generate')") @ApiOperation("生成二维码并保存记录") @PostMapping("/generate") @@ -64,6 +66,18 @@ public class SysQrCodeController { modelId, configId, typeId, countryId, provinceId); return AjaxResult.success(qrCode); } +*/ + + + + @PreAuthorize("@ss.hasPermi('system:qrcode:generate')") + @ApiOperation("生成二维码并保存记录") + @PostMapping("/generate") + public AjaxResult generate(@RequestBody QrCodeGenerateRequest request) { + SysQrCode qrCode = qrCodeService.generateQrCodeFromFrontend(request); + return AjaxResult.success(qrCode); + } + @PreAuthorize("@ss.hasPermi('system:qrcode:bind')") @ApiOperation("绑定设备") diff --git a/maibu-common/src/main/java/com/maibu/core/business/dto/QrCodeGenerateRequest.java b/maibu-common/src/main/java/com/maibu/core/business/dto/QrCodeGenerateRequest.java new file mode 100644 index 0000000..4189f89 --- /dev/null +++ b/maibu-common/src/main/java/com/maibu/core/business/dto/QrCodeGenerateRequest.java @@ -0,0 +1,37 @@ +package com.maibu.core.business.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel("二维码生成请求") +public class QrCodeGenerateRequest { + + @ApiModelProperty("型号") + private String model; + + @ApiModelProperty("配置") + private String config; + + @ApiModelProperty("类型") + private String type; + + @ApiModelProperty("国家代码") + private String countryCode; + + @ApiModelProperty("国家全称") + private String countryFullName; + + @ApiModelProperty("省份代码") + private String provinceCode; + + @ApiModelProperty("省份全称") + private String provinceFullName; + + @ApiModelProperty("序列号") + private String serialNumber; + + @ApiModelProperty("二维码Base64数据") + private String qrcode; +} diff --git a/maibu-common/src/main/java/com/maibu/core/business/sys_robot_qrcode/SysQrCode.java b/maibu-common/src/main/java/com/maibu/core/business/sys_robot_qrcode/SysQrCode.java index 91389b4..ad8381f 100644 --- a/maibu-common/src/main/java/com/maibu/core/business/sys_robot_qrcode/SysQrCode.java +++ b/maibu-common/src/main/java/com/maibu/core/business/sys_robot_qrcode/SysQrCode.java @@ -1,54 +1,78 @@ package com.maibu.core.business.sys_robot_qrcode; import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.time.LocalDateTime; @Data +@ApiModel("二维码管理") @TableName("sys_qr_code") public class SysQrCode implements Serializable { private static final long serialVersionUID = 1L; + @ApiModelProperty("主键ID") @TableId(type = IdType.AUTO) private Long id; + @ApiModelProperty("序列号") private String serialNumber; + @ApiModelProperty("型号ID") private Long modelId; + @ApiModelProperty("配置ID") private Long configId; + @ApiModelProperty("类型ID") private Long typeId; + @ApiModelProperty("国家ID") private Long countryId; + @ApiModelProperty("省份ID") private Long provinceId; + @ApiModelProperty("二维码图片URL") private String qrCodeUrl; + @ApiModelProperty("二维码内容") private String qrCodeContent; + @ApiModelProperty("二维码Base64图片数据") + private String qrCodeBase64; + + @ApiModelProperty("状态") private Integer status; + @ApiModelProperty("设备ID") private Long deviceId; + @ApiModelProperty("绑定时间") private LocalDateTime bindTime; + @ApiModelProperty("创建时间") @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; + @ApiModelProperty("更新时间") @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; + @ApiModelProperty("创建者") @TableField(fill = FieldFill.INSERT) private String createBy; + @ApiModelProperty("更新者") @TableField(fill = FieldFill.INSERT_UPDATE) private String updateBy; + @ApiModelProperty("备注") private String remark; + @ApiModelProperty("删除标志") @TableLogic private Integer delFlag; -} \ No newline at end of file +} diff --git a/maibu-service/maibu-system-service/src/main/java/com/maibu/service/ISysQrCodeService.java b/maibu-service/maibu-system-service/src/main/java/com/maibu/service/ISysQrCodeService.java index 2e2c012..a083598 100644 --- a/maibu-service/maibu-system-service/src/main/java/com/maibu/service/ISysQrCodeService.java +++ b/maibu-service/maibu-system-service/src/main/java/com/maibu/service/ISysQrCodeService.java @@ -2,6 +2,7 @@ package com.maibu.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; +import com.maibu.core.business.dto.QrCodeGenerateRequest; import com.maibu.core.business.sys_robot_qrcode.SysQrCode; import java.util.List; @@ -22,4 +23,7 @@ public interface ISysQrCodeService extends IService { boolean bindDevice(Long qrCodeId, Long deviceId); boolean unbindDevice(Long qrCodeId); + + + SysQrCode generateQrCodeFromFrontend(QrCodeGenerateRequest request); } \ No newline at end of file diff --git a/maibu-service/maibu-system-service/src/main/java/com/maibu/service/impl/SysQrCodeServiceImpl.java b/maibu-service/maibu-system-service/src/main/java/com/maibu/service/impl/SysQrCodeServiceImpl.java index 3f0241c..d38abaf 100644 --- a/maibu-service/maibu-system-service/src/main/java/com/maibu/service/impl/SysQrCodeServiceImpl.java +++ b/maibu-service/maibu-system-service/src/main/java/com/maibu/service/impl/SysQrCodeServiceImpl.java @@ -8,6 +8,7 @@ import com.google.zxing.EncodeHintType; import com.google.zxing.client.j2se.MatrixToImageWriter; import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.QRCodeWriter; +import com.maibu.core.business.dto.QrCodeGenerateRequest; import com.maibu.core.business.sys_robot_qrcode.*; import com.maibu.mapper.*; import com.maibu.service.ISysQrCodeService; @@ -199,4 +200,69 @@ public class SysQrCodeServiceImpl extends ServiceImpl wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SysQrCode::getSerialNumber, request.getSerialNumber()); + if (this.count(wrapper) > 0) { + throw new RuntimeException("序列号已存在"); + } + + SysQrCode qrCode = new SysQrCode(); + qrCode.setSerialNumber(request.getSerialNumber()); + qrCode.setModelId(model.getId()); + qrCode.setConfigId(config.getId()); + qrCode.setTypeId(type.getId()); + qrCode.setCountryId(country.getId()); + qrCode.setProvinceId(province.getId()); + qrCode.setQrCodeBase64(request.getQrcode()); + qrCode.setQrCodeContent(request.getSerialNumber()); + qrCode.setStatus(0); + + this.save(qrCode); + return qrCode; + } + private SysRobotModel findModelByStoreValue(String storeValue) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SysRobotModel::getStoreValue, storeValue); + return robotModelMapper.selectOne(wrapper); + } + + private SysRobotConfig findConfigByStoreValue(String storeValue) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SysRobotConfig::getStoreValue, storeValue); + return robotConfigMapper.selectOne(wrapper); + } + + private SysRobotType findTypeByStoreValue(String storeValue) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SysRobotType::getStoreValue, storeValue); + return robotTypeMapper.selectOne(wrapper); + } + + private SysRobotCountry findCountryByStoreValue(String storeValue) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SysRobotCountry::getStoreValue, storeValue); + return robotCountryMapper.selectOne(wrapper); + } + + private SysRobotProvince findProvinceByStoreValue(String storeValue) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(SysRobotProvince::getStoreValue, storeValue); + return robotProvinceMapper.selectOne(wrapper); + } + + }