SmartQrcodeController.java 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. package com.template.controller;
  2. import cn.hutool.core.codec.Base64;
  3. import cn.hutool.extra.qrcode.QrCodeUtil;
  4. import com.alibaba.fastjson.JSON;
  5. import com.template.annotation.DESRespondSecret;
  6. import com.template.annotation.PassToken;
  7. import com.template.api.SmartQrcodeControllerAPI;
  8. import com.template.common.utils.TimeExchange;
  9. import com.template.model.enumModel.eQrcodeType;
  10. import com.template.model.pojo.SmartUser;
  11. import com.template.model.pojo.SmartVisitor;
  12. import com.template.model.result.CommonResult;
  13. import com.template.model.vo.BaseImageVo;
  14. import com.template.model.vo.QrcodeImageVo;
  15. import com.template.services.SmartUserService;
  16. import com.template.services.SmartVisitorService;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.web.bind.annotation.RequestMapping;
  19. import org.springframework.web.bind.annotation.RestController;
  20. import javax.imageio.ImageIO;
  21. import java.awt.image.BufferedImage;
  22. import java.io.ByteArrayOutputStream;
  23. import java.io.IOException;
  24. import java.util.Date;
  25. /**
  26. * <p>
  27. * 扫码记录 前端控制器
  28. * </p>
  29. *
  30. * @author ceshi
  31. * @since 2024-01-18
  32. */
  33. @RestController
  34. //返回参数加密注解
  35. @DESRespondSecret
  36. public class SmartQrcodeController implements SmartQrcodeControllerAPI {
  37. @Autowired
  38. private SmartUserService smartUserService;
  39. @Autowired
  40. private SmartVisitorService smartVisitorService;
  41. @Override
  42. @DESRespondSecret(validated = true)
  43. public CommonResult generateQrcode(int userId) {
  44. SmartUser user = smartUserService.getSmartById(userId);
  45. if (user == null) {
  46. return CommonResult.fail("用户信息无效,无法生成二维码");
  47. }
  48. QrcodeImageVo qiv = new QrcodeImageVo();
  49. qiv.setId(user.getId());
  50. qiv.setType(eQrcodeType.Identity.getValue());
  51. qiv.setPhone(user.getPhone());//身份码不需要添加访客数据ID
  52. qiv.setTimestamp(TimeExchange.getTime());
  53. String qrStr = JSON.toJSONString(qiv);
  54. BaseImageVo result = new BaseImageVo();
  55. result.setQrcode(qrStr);
  56. return CommonResult.ok(result);
  57. }
  58. @Override
  59. @PassToken
  60. @DESRespondSecret(validated = true)
  61. public CommonResult visitorQrcode(String visitorId) {
  62. if (visitorId == null) {
  63. return CommonResult.fail("访客code不能为空");
  64. }
  65. SmartVisitor visitor = smartVisitorService.querySmartVisitorByCode(visitorId);
  66. if (visitor == null) {
  67. return CommonResult.fail("访客数据无效,无法生成二维码");
  68. }
  69. if (visitor.getVisitorTime().after(new Date())) {
  70. return CommonResult.fail("未到来访时间,无法生成二维码");
  71. }
  72. if (visitor.getVisitorDeadline().before(new Date())) {
  73. return CommonResult.fail("访客时间已失效,无法生成二维码");
  74. }
  75. QrcodeImageVo qiv = new QrcodeImageVo();
  76. qiv.setId(visitor.getId());
  77. qiv.setType(eQrcodeType.Visitor.getValue());
  78. qiv.setPhone(visitor.getUserPhone());
  79. qiv.setTimestamp(TimeExchange.getTime());
  80. String qrStr = JSON.toJSONString(qiv);
  81. BaseImageVo result = new BaseImageVo();
  82. result.setQrcode(qrStr);
  83. return CommonResult.ok(result);
  84. }
  85. }