二维码签到签退
整体的思路
首先被服务的公司生成签到的二维码,然后二维码带有指定的参数,本接口是用的url跳到指定的签到页面,然后进行点击签到,然后对签相关的一些信息进行存储.
使用场景
二维码支付跳转,二维码登陆,二维码签到签退
使用的技术选型
Google的QR code技术.
上代码
1.导入依赖
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>javase</artifactId>
<version>3.3.0</version>
</dependency>
2.参数TwoCodeParam
主要是关于二维码的一口血基本的参数的设置(重点)
@Data
public class TwoCodeParam {
private int width = 300;
private int height = 300;
private String format = "png";
private String content ;
}
3.接口的定义
二维码生成以及场景定义接口的设计
public interface CodeService {
Result produceCode(TwoCodeParam params);
}
二维码接口实现
@Slf4j
@Service
public class CodeServiceImpl implements CodeService {
@Override
public Result produceCode(TwoCodeParam params) {
Result result = new Result();
if(ObjectUtil.isEmpty(params) ){
return result.code(CodesEnum.ERR);
}
Map hints = new HashMap();
hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
hints.put(EncodeHintType.MARGIN,2);
try {
BitMatrix bitMatrix = new MultiFormatWriter().encode(params.getContent(), BarcodeFormat.QR_CODE,params.getWidth(),params.getHeight());
String path = "D:/images/" + UUID.randomUUID();
File file = new File(path);
MatrixToImageWriter.writeToFile(bitMatrix, params.getFormat(), file);
} catch (Exception e) {
return result.code(CodesEnum.ERR);
}
return result.code(CodesEnum.SUC);
}
}
4.拿到二维码后的操作
常见场景:
1.跳转到登陆界面,进行登陆
2.签到,签退
3.支付跳转
…