2 Revīzijas 9055c51c83 ... a95b23ea90

Autors SHA1 Ziņojums Datums
  baifucheng a95b23ea90 Merge remote-tracking branch 'origin/master' 4 dienas atpakaļ
  baifucheng adea66b4c9 小程序二维码 4 dienas atpakaļ

+ 44 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/info/HospitalController.java

@@ -1,9 +1,10 @@
 package com.ruoyi.web.controller.info;
 
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
-import javax.servlet.http.HttpServletResponse;
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
 
@@ -26,14 +27,19 @@ import com.ruoyi.common.core.validate.EditGroup;
 import com.ruoyi.common.core.validate.QueryGroup;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.BeanCopyUtils;
-import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.info.hospital.domain.bo.HospitalBo;
+import com.ruoyi.info.hospital.domain.bo.HospitalQrCodeBo;
 import com.ruoyi.info.hospital.domain.bo.HospitalRackUpdateBo;
 import com.ruoyi.info.hospital.domain.vo.HospitalSimpleInfoVo;
 import com.ruoyi.info.hospital.domain.vo.HospitalVo;
 import com.ruoyi.info.hospital.service.IHospitalService;
+import com.ruoyi.system.domain.SysOss;
+import com.ruoyi.system.service.ISysOssService;
+import com.ruoyi.weixin.service.WxMinService;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import cn.hutool.core.util.IdUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -54,6 +60,10 @@ public class HospitalController extends BaseController {
 
     private final IHospitalService iHospitalService;
 
+    private final WxMinService wxMinService;
+
+    private final ISysOssService iSysOssService;
+
     /**
      * 分页查询医院信息列表
      */
@@ -137,6 +147,38 @@ public class HospitalController extends BaseController {
     }
 
 
+    @ApiOperation("获取二维码")
+    @PostMapping("/getQrCode")
+    public R<Map<String,String>> getQrCode(@RequestBody HospitalQrCodeBo bo) {
+
+        HospitalVo hospitalVo = iHospitalService.queryById(bo.getHospitalId());
+        if(StringUtils.isNotBlank(hospitalVo.getQrCodeUrl())) {
+            Map<String,String> map = new HashMap<>();
+            map.put("url", hospitalVo.getQrCodeUrl());
+            return R.ok(map);
+        }
+
+        String t = getSceneType(bo);
+        String scene = String.format("t=%s&id=%s", t, bo.getHospitalId());
+        byte[] bytes = wxMinService.getWxMinCode(bo.getPath(), scene);
+        String filename = IdUtil.fastSimpleUUID() + ".jpg";
+        SysOss sysOss = iSysOssService.localUpload(bytes, filename);
+
+        iHospitalService.updateQrCodeUrl(bo.getHospitalId(), sysOss.getUrl());
+        Map<String,String> map = new HashMap<>();
+        map.put("url",sysOss.getUrl());
+        return R.ok(map);
+    }
+
+    private String getSceneType(HospitalQrCodeBo bo) {
+        switch (bo.getSceneType()){
+            case SHOP_INDEX:
+                return "i";
+            default:
+                return "";
+        }
+    }
+
 
 
 

+ 3 - 0
ruoyi-common/src/main/java/com/ruoyi/common/enums/WxMinQrCode.java

@@ -6,6 +6,9 @@ import java.io.Serializable;
 
 @Data
 public class WxMinQrCode implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
     /**
      * 小程序码路径
      */

+ 3 - 3
ruoyi-info/src/main/java/com/ruoyi/info/hospital/domain/bo/HospitalBo.java

@@ -98,7 +98,7 @@ public class HospitalBo extends BaseEntity {
     /**
      * 省名称
      */
-    @ApiModelProperty(value = "省名称", required = true)
+    @ApiModelProperty(value = "省名称")
     private String provinceName;
 
     /**
@@ -111,7 +111,7 @@ public class HospitalBo extends BaseEntity {
     /**
      * 市名称
      */
-    @ApiModelProperty(value = "市名称", required = true)
+    @ApiModelProperty(value = "市名称")
     private String cityName;
 
     /**
@@ -124,7 +124,7 @@ public class HospitalBo extends BaseEntity {
     /**
      * 区域名称
      */
-    @ApiModelProperty(value = "区域名称", required = true)
+    @ApiModelProperty(value = "区域名称")
     private String areaName;
 
     /**

+ 35 - 0
ruoyi-info/src/main/java/com/ruoyi/info/hospital/domain/bo/HospitalQrCodeBo.java

@@ -0,0 +1,35 @@
+package com.ruoyi.info.hospital.domain.bo;
+
+import com.ruoyi.common.enums.SceneType;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+/**
+ * @author fucheng.bai
+ * @date 2025/9/22
+ */
+@Data
+@ApiModel("医院二维码获取请求")
+public class HospitalQrCodeBo {
+
+
+    /**
+     * 医院id
+     */
+    private Long hospitalId;
+
+    /**
+     * 小程序码路径
+     */
+    private String path;
+    /**
+     * 小程序码场景值
+     */
+    private SceneType sceneType;
+
+    /**
+     * 场景值实体值
+     */
+    private String entityValue;
+}

+ 8 - 0
ruoyi-info/src/main/java/com/ruoyi/info/hospital/service/IHospitalService.java

@@ -83,4 +83,12 @@ public interface IHospitalService {
     void updateRackStatus(HospitalRackUpdateBo bo);
 
     String queryNameById(Long id);
+
+    /**
+     * 修改二维码
+     *
+     * @param hospitalId
+     * @param qrCodeUrl
+     */
+    void updateQrCodeUrl(Long hospitalId, String qrCodeUrl);
 }

+ 7 - 0
ruoyi-info/src/main/java/com/ruoyi/info/hospital/service/impl/HospitalServiceImpl.java

@@ -211,4 +211,11 @@ public class HospitalServiceImpl implements IHospitalService {
         return baseMapper.queryNameById(id);
     }
 
+    @Override
+    public void updateQrCodeUrl(Long hospitalId, String qrCodeUrl) {
+        Hospital hospital = baseMapper.selectById(hospitalId);
+        hospital.setQrCodeUrl(qrCodeUrl);
+        baseMapper.updateById(hospital);
+    }
+
 }

+ 2 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOssService.java

@@ -30,4 +30,6 @@ public interface ISysOssService {
 
     SysOss upload(byte[] bytes,String fileName,String contentType);
 
+
+    SysOss localUpload(byte[] bytes, String fileName);
 }

+ 32 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java

@@ -198,6 +198,38 @@ public class SysOssServiceImpl implements ISysOssService {
         return oss;
     }
 
+    @Override
+    public SysOss localUpload(byte[] bytes, String fileName) {
+        try {
+            String suffix = StringUtils.substring(fileName, fileName.lastIndexOf("."), fileName.length());
+
+            // 获取项目路径
+            String property = System.getProperty("user.dir");
+
+            // 获取文件存放路径
+            String filePath = this.createFilePath(property) + fileName;
+
+            BufferedInputStream bufferedInputStream = new BufferedInputStream(new ByteArrayInputStream(bytes));
+            this.copyFile(bufferedInputStream, filePath);
+
+            // 本地路径替换成url
+            String replace = this.urlByFilePath(property, filePath);
+
+            // 保存文件信息
+            SysOss oss = new SysOss();
+            oss.setUrl(replace);
+            oss.setFileSuffix(suffix);
+            oss.setFileName(fileName);
+            oss.setOriginalName(fileName);
+            oss.setService("本地上传");
+            baseMapper.insert(oss);
+            return oss;
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new ServiceException("文件上传失败!");
+        }
+    }
+
     /**
      * 获取文件新名字(UUID模式)
      * @param suffix