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