添加微信接口二进制转base64

master
吴顺杰 12 months ago
parent f3c655959d
commit 86a495c369

@ -54,8 +54,8 @@ public class WeChatController extends BaseController {
@ApiOperation("获取微信二维码")
@PostMapping("/findWxCode")
public AjaxResult findWxCode(@RequestBody WeChatCodeRequest req) {
return AjaxResult.success(weChatService.findWxCode(req));
weChatService.findWxCode(req);
return AjaxResult.success();
}
/**

@ -50,5 +50,5 @@ public interface WeChatService {
* @param req
* @return
*/
String findWxCode(WeChatCodeRequest req);
void findWxCode(WeChatCodeRequest req);
}

@ -12,12 +12,17 @@ import com.ruoyi.system.domain.dto.request.WeChatRequest;
import com.ruoyi.system.service.WeChatService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import sun.misc.BASE64Decoder;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import java.util.Base64;
import java.util.Formatter;
import java.util.HashMap;
import java.util.Map;
@ -32,12 +37,11 @@ import java.util.concurrent.TimeUnit;
@Service
public class WeChatServiceImpl implements WeChatService {
static BASE64Decoder decoder = new BASE64Decoder();
@Value("${wechat.appid}")
private String appid;
@Value("${wechat.secret}")
private String secret;
@Resource
private RedisCache redisCache;
@ -146,7 +150,7 @@ public class WeChatServiceImpl implements WeChatService {
* @return
*/
@Override
public String findWxCode(WeChatCodeRequest req) {
public void findWxCode(WeChatCodeRequest req) {
String accessToken = this.findAccessToken();
Map<String, Object> map = new HashMap<>();
if (req.getWidth() != null) {
@ -155,6 +159,17 @@ public class WeChatServiceImpl implements WeChatService {
map.put("path", req.getPath() + "?shanghuId=" + req.getShanghuId());
String jsonStr = JSONUtil.toJsonStr(map);
String body = HttpUtil.post("https://api.weixin.qq.com/wxa/getwxacode?access_token=" + accessToken, jsonStr);
return Base64.getEncoder().encodeToString(body.getBytes());
// BufferedImage image = null;
// return Base64.getEncoder().encodeToString(body.getBytes());
try {
byte[] bytes1 = decoder.decodeBuffer(body);
ByteArrayInputStream bais = new ByteArrayInputStream(bytes1);
BufferedImage bi1 = ImageIO.read(bais);
File w2 = new File("D:\\QQ.png");// 可以是jpg,png,gif格式
ImageIO.write(bi1, "png", w2);// 不管输出什么格式图片,此处不需改动
} catch (IOException e) {
e.printStackTrace();
}
}
}

@ -1,15 +1,5 @@
package com.ruoyi.web.controller.common;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.FastByteArrayOutputStream;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import com.google.code.kaptcha.Producer;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.constant.CacheConstants;
@ -19,15 +9,25 @@ import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.sign.Base64;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.system.service.ISysConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.FastByteArrayOutputStream;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
/**
*
*
*
* @author ruoyi
*/
@RestController
public class CaptchaController
{
public class CaptchaController {
@Resource(name = "captchaProducer")
private Producer captchaProducer;
@ -36,20 +36,19 @@ public class CaptchaController
@Autowired
private RedisCache redisCache;
@Autowired
private ISysConfigService configService;
/**
*
*/
@GetMapping("/captchaImage")
public AjaxResult getCode(HttpServletResponse response) throws IOException
{
public AjaxResult getCode(HttpServletResponse response) throws IOException {
AjaxResult ajax = AjaxResult.success();
boolean captchaEnabled = configService.selectCaptchaEnabled();
ajax.put("captchaEnabled", captchaEnabled);
if (!captchaEnabled)
{
if (!captchaEnabled) {
return ajax;
}
@ -62,15 +61,12 @@ public class CaptchaController
// 生成验证码
String captchaType = RuoYiConfig.getCaptchaType();
if ("math".equals(captchaType))
{
if ("math".equals(captchaType)) {
String capText = captchaProducerMath.createText();
capStr = capText.substring(0, capText.lastIndexOf("@"));
code = capText.substring(capText.lastIndexOf("@") + 1);
image = captchaProducerMath.createImage(capStr);
}
else if ("char".equals(captchaType))
{
} else if ("char".equals(captchaType)) {
capStr = code = captchaProducer.createText();
image = captchaProducer.createImage(capStr);
}
@ -78,12 +74,9 @@ public class CaptchaController
redisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
// 转换流信息写出
FastByteArrayOutputStream os = new FastByteArrayOutputStream();
try
{
try {
ImageIO.write(image, "jpg", os);
}
catch (IOException e)
{
} catch (IOException e) {
return AjaxResult.error(e.getMessage());
}

Loading…
Cancel
Save