From 03621c3d05fcd781d861dc54e3045af1fbb10a42 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Thu, 8 May 2025 19:34:09 +0800 Subject: [PATCH] =?UTF-8?q?feat:url=E4=BA=8C=E7=BB=B4=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/manager/HardDoorCabinetEntity.java | 129 +++++++++--------- .../manager/HardDoorManagerController.java | 3 +- .../hard/service/HardDoorCabinetService.java | 2 +- .../manager/HardDoorCabinetServiceImpl.java | 53 +++++-- .../api/entity/mch/MchManageEntity.java | 6 + .../impl/mch/MchManageServiceImpl.java | 29 +++- .../resources/mapper/mch/MchManageMapper.xml | 1 + 7 files changed, 142 insertions(+), 81 deletions(-) diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/manager/HardDoorCabinetEntity.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/manager/HardDoorCabinetEntity.java index a3a54b0e2..560449077 100644 --- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/manager/HardDoorCabinetEntity.java +++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/entity/manager/HardDoorCabinetEntity.java @@ -6,6 +6,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; import com.bsd.pjcloud.common.core.util.TenantTable; + import java.time.LocalDateTime; /** @@ -22,94 +23,100 @@ import java.time.LocalDateTime; public class HardDoorCabinetEntity extends Model { - /** - * 编号 - */ + /** + * 编号 + */ @TableId(type = IdType.ASSIGN_ID) - @Schema(description="编号") + @Schema(description = "编号") private Long id; - /** - * 智能柜编号 - */ - @Schema(description="智能柜编号") + /** + * 智能柜编号 + */ + @Schema(description = "智能柜编号") private Long hardDoorId; - /** - * 货柜编号(1,2) - */ - @Schema(description="货柜编号(1,2)") + /** + * 货柜编号(1,2) + */ + @Schema(description = "货柜编号(1,2)") private Integer cabinetNo; - /** - * 锁在线1:在线;2:离线; - */ - @Schema(description="锁在线1:在线;2:离线;") + /** + * 锁在线1:在线;2:离线; + */ + @Schema(description = "锁在线1:在线;2:离线;") private String isLockOnline; - /** - * 锁状态1:开锁;2:关锁; - */ - @Schema(description="锁状态1:开锁;2:关锁;") + /** + * 锁状态1:开锁;2:关锁; + */ + @Schema(description = "锁状态1:开锁;2:关锁;") private Integer lockStatus; - /** - * 门状态1:门关;2:门开 - */ - @Schema(description="门状态1:门关;2:门开") + /** + * 门状态1:门关;2:门开 + */ + @Schema(description = "门状态1:门关;2:门开") private Integer doorStatus; - /** - * 货柜售卖状态1:在售;2:停售 - */ - @Schema(description="货柜售卖状态1:在售;2:停售") + /** + * 货柜售卖状态1:在售;2:停售 + */ + @Schema(description = "货柜售卖状态1:在售;2:停售") private Integer saleStatus; - /** - * 二维码 - */ - @Schema(description="二维码") + /** + * 二维码 + */ + @Schema(description = "二维码") private String qrCode; - /** - * 创建人 - */ - @TableField(fill = FieldFill.INSERT) - @Schema(description="创建人") + /** + * url二维码 + */ + @Schema(description = "url二维码") + private String urlQrCode; + + /** + * 创建人 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description = "创建人") private String createBy; - /** - * 创建时间 - */ - @TableField(fill = FieldFill.INSERT) - @Schema(description="创建时间") + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description = "创建时间") private LocalDateTime createTime; - /** - * 修改人 - */ - @TableField(fill = FieldFill.INSERT_UPDATE) - @Schema(description="修改人") + /** + * 修改人 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @Schema(description = "修改人") private String updateBy; - /** - * 修改时间 - */ - @TableField(fill = FieldFill.INSERT_UPDATE) - @Schema(description="修改时间") + /** + * 修改时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @Schema(description = "修改时间") private LocalDateTime updateTime; - /** - * 删除标记 - */ + /** + * 删除标记 + */ @TableLogic - @TableField(fill = FieldFill.INSERT) - @Schema(description="删除标记") + @TableField(fill = FieldFill.INSERT) + @Schema(description = "删除标记") private String delFlag; - /** - * 租户ID - */ - @Schema(description="租户ID") + /** + * 租户ID + */ + @Schema(description = "租户ID") private Long tenantId; } \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/manager/HardDoorManagerController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/manager/HardDoorManagerController.java index 9db6b6e2b..e7e4f423e 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/manager/HardDoorManagerController.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/manager/HardDoorManagerController.java @@ -72,7 +72,8 @@ public class HardDoorManagerController { @Operation(summary = "刷新智能柜货柜二维码", description = "刷新智能柜货柜二维码") @GetMapping("/refresh-qr-code") public R refreshQrCode(@RequestParam Long hardDoorId, @RequestParam Integer cabinetNo) { - return R.ok(hardDoorCabinetService.refreshQrCode(hardDoorId, cabinetNo)); + hardDoorCabinetService.refreshQrCode(hardDoorId, cabinetNo); + return R.ok(); } @Operation(summary = "音量修改", description = "音量修改") diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorCabinetService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorCabinetService.java index f4aabea87..1e3903aaa 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorCabinetService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardDoorCabinetService.java @@ -21,5 +21,5 @@ public interface HardDoorCabinetService extends IService /** * 刷新智能柜货柜二维码 */ - String refreshQrCode(Long hardDoorId, Integer cabinetNo); + void refreshQrCode(Long hardDoorId, Integer cabinetNo); } \ No newline at end of file diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/manager/HardDoorCabinetServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/manager/HardDoorCabinetServiceImpl.java index 01974dd53..6e8d677b1 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/manager/HardDoorCabinetServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/manager/HardDoorCabinetServiceImpl.java @@ -38,6 +38,8 @@ import java.util.Map; @Service public class HardDoorCabinetServiceImpl extends ServiceImpl implements HardDoorCabinetService { + private static final String TAG = "智能柜货柜"; + private final RemoteFileService remoteFileService; @Override @@ -89,33 +91,56 @@ public class HardDoorCabinetServiceImpl extends ServiceImpl() .eq(HardDoorCabinetEntity::getHardDoorId, hardDoorId) .eq(HardDoorCabinetEntity::getCabinetNo, cabinetNo) ); if (ObjectUtil.isEmpty(cabinetDetail)) throw new RuntimeException("货柜不存在"); + String qrCode = generateQrCode(cabinetDetail); + String urlQrCode = generateUrlQrCode(cabinetDetail); + // 更新 + HardDoorCabinetEntity updateObj = new HardDoorCabinetEntity(); + updateObj.setId(cabinetDetail.getId()); + updateObj.setQrCode(qrCode); + updateObj.setUrlQrCode(urlQrCode); + baseMapper.updateById(updateObj); + } + + // 生成二维码 + private String generateQrCode(HardDoorCabinetEntity detail) { HardDoorCabinetCodeVo cabinetCodeVo = new HardDoorCabinetCodeVo(); - cabinetCodeVo.setHardDoorId(String.valueOf(hardDoorId)); - cabinetCodeVo.setCabinetNo(String.valueOf(cabinetNo)); - // 生成二维码 + cabinetCodeVo.setHardDoorId(String.valueOf(detail.getHardDoorId())); + cabinetCodeVo.setCabinetNo(String.valueOf(detail.getCabinetNo())); + String fileName = String.format("%s-%s.png", detail.getHardDoorId(), System.currentTimeMillis()); String coeContent = Base64.encode(JSONUtil.toJsonStr(cabinetCodeVo)); try { byte[] bytes = QRCodeImageGenerator.generateQrCodeImage(coeContent, 300); - MultipartFile multipartFile = new MockMultipartFile("file", hardDoorId + "-" + System.currentTimeMillis() + ".png", "image/png", new ByteArrayInputStream(bytes)); + MultipartFile multipartFile = new MockMultipartFile("file", fileName, "image/png", new ByteArrayInputStream(bytes)); R upload = remoteFileService.innerUpload(multipartFile, null, null, null); Map data = (Map) upload.getData(); - String url = (String) data.get("url"); - // 更新 - HardDoorCabinetEntity updateObj = new HardDoorCabinetEntity(); - updateObj.setId(cabinetDetail.getId()); - updateObj.setQrCode(url); - baseMapper.updateById(updateObj); - return url; + return (String) data.get("url"); } catch (Exception e) { - log.error("refreshQrCode刷新智能柜货柜二维码,hardDoorId:{},cabinetNo:{}", hardDoorId, cabinetNo, e); - throw new RuntimeException("刷新二维码失败"); + log.error("|{}|生成url二维码,dto:|{}|error:|{}|", TAG, JSONUtil.toJsonStr(detail), e.getMessage()); + return null; + } + } + + // 生成url二维码 + private String generateUrlQrCode(HardDoorCabinetEntity detail) { + HardDoorCabinetCodeVo cabinetCodeVo = new HardDoorCabinetCodeVo(); + String fileName = String.format("%s-%s.png", detail.getHardDoorId(), System.currentTimeMillis()); + String coeContent = String.format("https://stgl.pj.gov.cn/h5/#/pages/cabinet/buy?hardDoorId=%s&cabinetNo=%s", detail.getHardDoorId(), detail.getCabinetNo()); + try { + byte[] bytes = QRCodeImageGenerator.generateQrCodeImage(coeContent, 300); + MultipartFile multipartFile = new MockMultipartFile("file", fileName, "image/png", new ByteArrayInputStream(bytes)); + R upload = remoteFileService.innerUpload(multipartFile, null, null, null); + Map data = (Map) upload.getData(); + return (String) data.get("url"); + } catch (Exception e) { + log.error("|{}|生成url二维码,dto:|{}|error:|{}|", TAG, JSONUtil.toJsonStr(detail), e.getMessage()); + return null; } } } \ No newline at end of file diff --git a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/mch/MchManageEntity.java b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/mch/MchManageEntity.java index c9d0b2510..bf7c33445 100644 --- a/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/mch/MchManageEntity.java +++ b/pjcloud-wallet/pjcloud-wallet-api/src/main/java/com/bsd/pjcloud/wallet/api/entity/mch/MchManageEntity.java @@ -78,6 +78,12 @@ public class MchManageEntity extends Model { @Schema(description = "商户收款码,自动生成") private String collectionCode; + /** + * 商户收款码(url形式),自动生成 + */ + @Schema(description = "商户收款码(url形式),自动生成") + private String collectionUrlCode; + /** * 商户轮播图,逗号分隔 */ diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchManageServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchManageServiceImpl.java index 1cc3c7148..206f817d6 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchManageServiceImpl.java +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchManageServiceImpl.java @@ -39,7 +39,6 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Lazy; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.mock.web.MockMultipartFile; -import org.springframework.security.core.parameters.P; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; @@ -50,6 +49,7 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.UUID; /** * 商户管理 @@ -301,10 +301,12 @@ public class MchManageServiceImpl extends ServiceImpl() .eq(ObjectUtil.isNotEmpty(name), MchManageEntity::getName, name) diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/MchManageMapper.xml b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/MchManageMapper.xml index 62469d3be..4942cd30d 100644 --- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/MchManageMapper.xml +++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/resources/mapper/mch/MchManageMapper.xml @@ -36,6 +36,7 @@ a.catgory_id, a.logo_pic, a.collection_code, + a.collection_url_code, a.swiper_pic, a.phone, a.address_des,