From fb7ca62d2854c82ac6e0a551bf921dabe6ee7bbc Mon Sep 17 00:00:00 2001
From: feige <791364011@qq.com>
Date: 星期二, 29 四月 2025 15:02:24 +0800
Subject: [PATCH] 增加了二维码接口

---
 zhang-content/src/main/java/com/ruoyi/domain/qrcode.java                       |   45 +++++++
 zhang-content/src/main/java/com/ruoyi/mapper/qrcodeMapper.java                 |    8 +
 ruoyi-admin/pom.xml                                                            |    7 +
 zhang-content/src/main/java/com/ruoyi/service/impl/qrCodeServiceImpl.java      |  105 +++++++++++++++++
 zhang-content/src/main/java/com/ruoyi/service/qrCodeService.java               |   21 +++
 ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml                |    2 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/zhang/qrCodeController.java |  162 +++++++++++++++++++++++++++
 7 files changed, 349 insertions(+), 1 deletions(-)

diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml
index 0c8e112..e9dc548 100644
--- a/ruoyi-admin/pom.xml
+++ b/ruoyi-admin/pom.xml
@@ -77,6 +77,13 @@
             <artifactId>ruoyi-common</artifactId>
         </dependency>
 
+
+
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>5.7.1</version>
+        </dependency>
         <!-- 鑵捐浜� -->
         <dependency>
             <groupId>com.qcloud</groupId>
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zhang/qrCodeController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zhang/qrCodeController.java
new file mode 100644
index 0000000..c766895
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zhang/qrCodeController.java
@@ -0,0 +1,162 @@
+package com.ruoyi.web.controller.zhang;
+
+import cn.hutool.extra.qrcode.QrCodeUtil;
+import cn.hutool.extra.qrcode.QrConfig;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.config.RuoYiConfig;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.text.Convert;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.ServletUtils;
+import com.ruoyi.common.utils.file.FileUploadUtils;
+import com.ruoyi.common.utils.file.FileUtils;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.sign.Base64;
+import com.ruoyi.domain.qrcode;
+import com.ruoyi.framework.config.ServerConfig;
+import com.ruoyi.service.qrCodeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.mock.web.MockMultipartFile;
+import org.springframework.util.FastByteArrayOutputStream;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.imageio.ImageIO;
+import javax.servlet.http.HttpServletResponse;
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
+import static com.ruoyi.common.core.page.TableSupport.PAGE_NUM;
+import static com.ruoyi.common.core.page.TableSupport.PAGE_SIZE;
+
+@RestController
+@RequestMapping("/qrCode")
+public class qrCodeController {
+    @Autowired
+    private ServerConfig serverConfig;
+
+    @Autowired
+    private qrCodeService coSService;
+    @GetMapping("/all")
+    public AjaxResult listAll(qrcode cos){
+        //  startPage();
+
+        Integer pageNum = Convert.toInt(ServletUtils.getParameter(PAGE_NUM), 1);
+        Integer pageSize = Convert.toInt(ServletUtils.getParameter(PAGE_SIZE), 10);
+
+        return coSService.selectDataList(cos, pageNum,pageSize);
+    }
+
+    @GetMapping(value = "/getInf")
+    public AjaxResult getInf(@RequestParam(name = "id") Long id) {
+        return AjaxResult.success(coSService.getById(id));
+    }
+
+    @Log(title = "鐢熸垚浜岀淮鐮佽褰�", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody qrcode cos) throws ParseException {
+        cos.setCreateTime(new Date());
+            try {
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+                Date d  = null;
+
+                d = sdf.parse("2024-01-01");
+
+            }catch (Exception e) {
+                e.printStackTrace();
+            }
+        return coSService.addData(cos);
+    }
+    @Log(title = "鐢熸垚浜岀淮鐮佽褰�", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody qrcode cos)
+    {
+        //  cos.setApproveStatus(1);
+        return coSService.updateData(cos);
+    }
+//
+    /**
+     * 鎵归噺鍒犻櫎淇濇磥鏀剁撼璁板綍
+     */
+//    @PreAuthorize("@ss.hasPermi('system:property:remove')")
+    @Log(title = "鐢熸垚浜岀淮鐮佽褰�", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return coSService.deleteData(ids);
+    }
+
+    @Log(title = "浜岀淮鐮佺敓鎴愯褰�", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, qrcode cos)
+    {
+
+        List<qrcode> list = coSService.selectByCondition(cos);
+        // log.info("瀵煎嚭璁板綍涓�:{}",list);
+        ExcelUtil<qrcode> util = new ExcelUtil<>(qrcode.class);
+        util.exportExcel(response, list, "浜岀淮鐮佺敓鎴愯褰曟暟鎹�");
+    }
+
+    @GetMapping("/generateCode")
+    public AjaxResult generateCode(@RequestParam  Integer id, @RequestParam  String uri) {
+        AjaxResult ajax = AjaxResult.success();
+
+        BufferedImage image = null;
+
+        QrConfig config = new QrConfig(300, 300);
+        config.setMargin(3);
+        //   config.setErrorCorrection(ErrorCorrectionLevel.H);
+
+// 璁剧疆鍓嶆櫙鑹诧紝鏃簩缁寸爜棰滆壊锛堥潚鑹诧級
+// config.setForeColor(new Color(0,60,130).getRGB());
+
+// config.setBackColor(new Color(242,242,242).getRGB());
+        image = QrCodeUtil.generate(uri, //浜岀淮鐮佸唴瀹�
+                config
+        );
+        String url = "";
+
+        // 杞崲娴佷俊鎭啓鍑�
+        FastByteArrayOutputStream os = new FastByteArrayOutputStream();
+        try
+        {
+            ImageIO.write(image, "jpg", os);
+            //    ImageIO.write(image, "jpg", new File("D:/1.jpg"));
+            String filePath = RuoYiConfig.getUploadPath();
+            InputStream input = new ByteArrayInputStream(os.toByteArray());
+            //InputStream杞垚MultipartFile
+            MultipartFile multipartFile =new MockMultipartFile("file", "file.jpg", "text/plain", input);
+
+            String fileName = FileUploadUtils.upload(multipartFile,filePath);
+            url = serverConfig.getUrl() + fileName;
+            System.out.println(url);
+            System.out.println(fileName);
+            System.out.println(FileUtils.getName(fileName));
+            qrcode cos = new qrcode();
+            cos.setId(id);
+            cos.setCodeS(fileName);
+            coSService.updateData(cos);;
+//            urls.add(url);
+//
+//            fileNames.add(fileName);
+//            newFileNames.add(FileUtils.getName(fileName));
+//            originalFilenames.add(file.getOriginalFilename());
+        }
+        catch (IOException e)
+        {
+            return AjaxResult.error(e.getMessage());
+        }
+
+        ajax.put("uuid", "222222222222222222222");
+        ajax.put("img", Base64.encode(os.toByteArray()));
+        return ajax;
+    }
+
+
+}
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml
index c097605..b5553a3 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml
@@ -56,7 +56,7 @@
 	</select>
 	<select id="selectMenuTreeAllSuperAdmin" resultMap="SysMenuResult">
 		select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.`query`, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time
-		from sys_menu m where m.menu_type in ('M', 'C') and m.status = 0 and m.menu_id in (11, 12, 13, 14)
+		from sys_menu m where m.menu_type in ('M', 'C') and m.status = 0 and m.menu_id in (11, 12, 13, 14,15)
 		order by m.parent_id, m.order_num
 	</select>
 	<select id="selectMenuListByUserId" parameterType="SysMenu" resultMap="SysMenuResult">
diff --git a/zhang-content/src/main/java/com/ruoyi/domain/qrcode.java b/zhang-content/src/main/java/com/ruoyi/domain/qrcode.java
new file mode 100644
index 0000000..72cc9ba
--- /dev/null
+++ b/zhang-content/src/main/java/com/ruoyi/domain/qrcode.java
@@ -0,0 +1,45 @@
+package com.ruoyi.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@TableName("qrcode")
+public class qrcode  implements Serializable {
+
+    @TableId(value = "id", type = IdType.AUTO)
+
+    private Integer id;
+
+    @Excel(name = "濮撳悕")
+    private String name;
+
+    @Excel(name = "鏍囬")
+    private String title;
+
+    private String filePath;
+    @Excel(name = "鍥剧墖" ,height=55, cellType = Excel.ColumnType.IMAGE)
+    private String codeS;
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createTime;
+    /**
+     * 寮�濮嬫椂闂�
+     */
+    @TableField(exist = false)
+    private Date happenStartDeadTime;
+
+    /**
+     * 缁撴潫鏃堕棿
+     */
+    @TableField(exist = false)
+    private Date happenEndDeadTime;
+}
\ No newline at end of file
diff --git a/zhang-content/src/main/java/com/ruoyi/mapper/qrcodeMapper.java b/zhang-content/src/main/java/com/ruoyi/mapper/qrcodeMapper.java
new file mode 100644
index 0000000..2a77cfd
--- /dev/null
+++ b/zhang-content/src/main/java/com/ruoyi/mapper/qrcodeMapper.java
@@ -0,0 +1,8 @@
+package com.ruoyi.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.domain.qrcode;
+import org.apache.ibatis.annotations.Mapper;
+@Mapper
+public interface qrcodeMapper extends BaseMapper<qrcode>{
+}
diff --git a/zhang-content/src/main/java/com/ruoyi/service/impl/qrCodeServiceImpl.java b/zhang-content/src/main/java/com/ruoyi/service/impl/qrCodeServiceImpl.java
new file mode 100644
index 0000000..27ac452
--- /dev/null
+++ b/zhang-content/src/main/java/com/ruoyi/service/impl/qrCodeServiceImpl.java
@@ -0,0 +1,105 @@
+package com.ruoyi.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.utils.MapUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.domain.Physcial;
+import com.ruoyi.domain.qrcode;
+import com.ruoyi.mapper.PhyscialMapper;
+import com.ruoyi.mapper.qrcodeMapper;
+import com.ruoyi.service.PhyscialService;
+import com.ruoyi.service.qrCodeService;
+import org.springframework.stereotype.Service;
+
+import java.text.ParseException;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+@Service
+public class qrCodeServiceImpl extends ServiceImpl<qrcodeMapper, qrcode> implements qrCodeService {
+
+
+
+
+    private LambdaQueryWrapper<qrcode> buildCondition(qrcode cos){
+        LambdaQueryWrapper<qrcode> lqw = new LambdaQueryWrapper<>();
+
+        lqw.like(!StringUtils.isEmpty(cos.getName()),qrcode::getName,cos.getName())
+                .between(cos.getHappenStartDeadTime()!=null&&cos.getHappenEndDeadTime()!=null,qrcode::getCreateTime,cos.getHappenStartDeadTime(),cos.getHappenEndDeadTime());
+//        lqw.like(!StringUtils.isEmpty(zfProperty.getType()), ZfProperty::getType, zfProperty.getType())
+//                .like(!StringUtils.isEmpty(zfProperty.getTitle()), ZfProperty::getTitle, zfProperty.getTitle())
+//                .like(!StringUtils.isEmpty(zfProperty.getLocation()), ZfProperty::getLocation, zfProperty.getLocation())
+//                .like(!StringUtils.isEmpty(zfProperty.getHolder()), ZfProperty::getHolder, zfProperty.getHolder())
+//                .like(!StringUtils.isEmpty(zfProperty.getAddress()), ZfProperty::getAddress, zfProperty.getAddress())
+//                .like(!StringUtils.isEmpty(zfProperty.getRemark()), ZfProperty::getRemark, zfProperty.getRemark())
+//                .eq(zfProperty.getFamilyId()!=null,ZfProperty::getFamilyId,zfProperty.getFamilyId())
+//                .in(ZfProperty::getFamilyId,familyIdList)
+//                .eq(zfProperty.getHappenTime()!=null,ZfProperty::getHappenTime,zfProperty.getHappenTime())
+//                .between(zfProperty.getHappenStartTime() != null && zfProperty.getHappenEndTime() != null, ZfProperty::getHappenTime, zfProperty.getHappenStartTime(), zfProperty.getHappenEndTime());
+//        if(cos.getUid()!=1)
+//            lqw.eq(cos.getUid()!=null, coscan::getUid,cos.getUid());
+        lqw.orderByDesc(qrcode::getCreateTime);
+        return lqw;
+
+    }
+
+    @Override
+    public List<qrcode> selectByCondition(qrcode cos) {
+        LambdaQueryWrapper<qrcode> lqw = buildCondition(cos);
+        List<qrcode> beanRecords = list(lqw);
+        return beanRecords;
+    }
+
+    @Override
+    public AjaxResult selectDataList(qrcode cos, Integer pageNum, Integer pageSize) {
+        LambdaQueryWrapper<qrcode> lqw = buildCondition(cos);
+
+        System.out.println(pageNum);
+        System.out.println(pageSize);
+        System.out.println("--------------------");
+        Page<qrcode> zfPropertyPage = new Page<>(pageNum, pageSize);
+        Page<qrcode> pageResult =
+                // page(zfPropertyPage);
+                page(zfPropertyPage, lqw);
+        long total = pageResult.getTotal();
+        List<qrcode> beanRecords = pageResult.getRecords();//寰楀埌鏌ヨ鍑烘潵鐨勬暟鎹�
+        System.out.println(beanRecords);
+        //  List<ZfProperty> dtoResult = markOwnData(familyId, beanRecords);
+
+        HashMap<String, Object> data = MapUtils.getResult(pageResult);
+        return AjaxResult.success(data);
+    }
+
+    @Override
+    public AjaxResult addData(qrcode cos) throws ParseException {
+        if (save(cos)) {
+            return AjaxResult.success();
+        }
+        else{
+            return AjaxResult.error();
+        }
+    }
+
+    @Override
+    public AjaxResult updateData(qrcode cos) {
+        if(this.updateById(cos))
+            return AjaxResult.success("淇敼鎴愬姛锛�");
+        else
+            return AjaxResult.error("淇敼澶辫触!");
+    }
+
+    @Override
+    public AjaxResult deleteData(Long[] ids) {
+
+        if (this.removeByIds(Arrays.asList(ids))) {
+
+
+            return AjaxResult.success();
+        }else {
+            return AjaxResult.error();
+        }
+    }
+}
diff --git a/zhang-content/src/main/java/com/ruoyi/service/qrCodeService.java b/zhang-content/src/main/java/com/ruoyi/service/qrCodeService.java
new file mode 100644
index 0000000..3ddb820
--- /dev/null
+++ b/zhang-content/src/main/java/com/ruoyi/service/qrCodeService.java
@@ -0,0 +1,21 @@
+package com.ruoyi.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.domain.qrcode;
+
+import java.text.ParseException;
+import java.util.List;
+
+public interface qrCodeService extends IService<qrcode> {
+
+    public List<qrcode> selectByCondition(qrcode cos);
+    public AjaxResult selectDataList(qrcode cos, Integer pageNum, Integer pageSize);
+
+    public AjaxResult addData(qrcode cos) throws ParseException;
+
+
+    public AjaxResult updateData(qrcode cos);
+
+    public AjaxResult deleteData(Long[] ids) ;
+}

--
Gitblit v1.9.1