package org.springblade.modules.traceability.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.zxing.WriterException; import org.springblade.common.config.TraceabilityCodeConfig; import org.springblade.common.utils.QRCodeUtil; import org.springblade.modules.traceability.dto.TraceabilityDTO; import org.springblade.modules.traceability.entity.Traceability; import org.springblade.modules.traceability.mapper.TraceabilityMapper; import org.springblade.modules.traceability.service.TraceabilityService; import org.springblade.modules.traceability.vo.TraceabilityVO; import org.springframework.stereotype.Service; import sun.misc.BASE64Encoder; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.List; /** * 溯源码表服务实现类 * @since 2022-05-19 * @author zhongrj */ @Service public class TraceabilityServiceImpl extends ServiceImpl implements TraceabilityService { /** * 自定义分页 * * @param page * @param traceability * @return */ @Override public IPage selectTraceabilityPage(IPage page, TraceabilityVO traceability) { return page.setRecords(baseMapper.selectTraceabilityPage(page, traceability)); } @Override public String selectRevorid(String code) { return baseMapper.selectRevorid(code); } /** * 获取溯源简介信息 * @param traceability * @return */ @Override public TraceabilityDTO getSimpleInfo(Traceability traceability) { TraceabilityDTO simpleInfo = baseMapper.getSimpleInfo(traceability); simpleInfo.setCode(traceability.getCode()); //获取二维码信息 String url = TraceabilityCodeConfig.getCodeUrl(); String encoded = null; try { encoded = URLEncoder.encode(traceability.getCode(),"UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } String content = url + "?code=" + encoded; byte[] qrCodeImage = new byte[0]; try { qrCodeImage = QRCodeUtil.getQRCodeImage(content, 350, 350); } catch (WriterException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } String encode = new BASE64Encoder().encode(qrCodeImage); simpleInfo.setQrcode("data:image/png;base64,"+encode); //返回 return simpleInfo; } }