添加微信接口二进制转base64

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

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

@ -50,5 +50,5 @@ public interface WeChatService {
* @param req * @param req
* @return * @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 com.ruoyi.system.service.WeChatService;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import sun.misc.BASE64Decoder;
import javax.annotation.Resource; 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.MessageDigest;
import java.security.NoSuchAlgorithmException; import java.security.NoSuchAlgorithmException;
import java.util.Arrays; import java.util.Arrays;
import java.util.Base64;
import java.util.Formatter; import java.util.Formatter;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@ -32,12 +37,11 @@ import java.util.concurrent.TimeUnit;
@Service @Service
public class WeChatServiceImpl implements WeChatService { public class WeChatServiceImpl implements WeChatService {
static BASE64Decoder decoder = new BASE64Decoder();
@Value("${wechat.appid}") @Value("${wechat.appid}")
private String appid; private String appid;
@Value("${wechat.secret}") @Value("${wechat.secret}")
private String secret; private String secret;
@Resource @Resource
private RedisCache redisCache; private RedisCache redisCache;
@ -146,7 +150,7 @@ public class WeChatServiceImpl implements WeChatService {
* @return * @return
*/ */
@Override @Override
public String findWxCode(WeChatCodeRequest req) { public void findWxCode(WeChatCodeRequest req) {
String accessToken = this.findAccessToken(); String accessToken = this.findAccessToken();
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
if (req.getWidth() != null) { if (req.getWidth() != null) {
@ -155,6 +159,17 @@ public class WeChatServiceImpl implements WeChatService {
map.put("path", req.getPath() + "?shanghuId=" + req.getShanghuId()); map.put("path", req.getPath() + "?shanghuId=" + req.getShanghuId());
String jsonStr = JSONUtil.toJsonStr(map); String jsonStr = JSONUtil.toJsonStr(map);
String body = HttpUtil.post("https://api.weixin.qq.com/wxa/getwxacode?access_token=" + accessToken, jsonStr); 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; 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.google.code.kaptcha.Producer;
import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.constant.CacheConstants; 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.sign.Base64;
import com.ruoyi.common.utils.uuid.IdUtils; import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.system.service.ISysConfigService; 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 * @author ruoyi
*/ */
@RestController @RestController
public class CaptchaController public class CaptchaController {
{
@Resource(name = "captchaProducer") @Resource(name = "captchaProducer")
private Producer captchaProducer; private Producer captchaProducer;
@ -36,20 +36,19 @@ public class CaptchaController
@Autowired @Autowired
private RedisCache redisCache; private RedisCache redisCache;
@Autowired @Autowired
private ISysConfigService configService; private ISysConfigService configService;
/** /**
* *
*/ */
@GetMapping("/captchaImage") @GetMapping("/captchaImage")
public AjaxResult getCode(HttpServletResponse response) throws IOException public AjaxResult getCode(HttpServletResponse response) throws IOException {
{
AjaxResult ajax = AjaxResult.success(); AjaxResult ajax = AjaxResult.success();
boolean captchaEnabled = configService.selectCaptchaEnabled(); boolean captchaEnabled = configService.selectCaptchaEnabled();
ajax.put("captchaEnabled", captchaEnabled); ajax.put("captchaEnabled", captchaEnabled);
if (!captchaEnabled) if (!captchaEnabled) {
{
return ajax; return ajax;
} }
@ -62,15 +61,12 @@ public class CaptchaController
// 生成验证码 // 生成验证码
String captchaType = RuoYiConfig.getCaptchaType(); String captchaType = RuoYiConfig.getCaptchaType();
if ("math".equals(captchaType)) if ("math".equals(captchaType)) {
{
String capText = captchaProducerMath.createText(); String capText = captchaProducerMath.createText();
capStr = capText.substring(0, capText.lastIndexOf("@")); capStr = capText.substring(0, capText.lastIndexOf("@"));
code = capText.substring(capText.lastIndexOf("@") + 1); code = capText.substring(capText.lastIndexOf("@") + 1);
image = captchaProducerMath.createImage(capStr); image = captchaProducerMath.createImage(capStr);
} } else if ("char".equals(captchaType)) {
else if ("char".equals(captchaType))
{
capStr = code = captchaProducer.createText(); capStr = code = captchaProducer.createText();
image = captchaProducer.createImage(capStr); image = captchaProducer.createImage(capStr);
} }
@ -78,12 +74,9 @@ public class CaptchaController
redisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES); redisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
// 转换流信息写出 // 转换流信息写出
FastByteArrayOutputStream os = new FastByteArrayOutputStream(); FastByteArrayOutputStream os = new FastByteArrayOutputStream();
try try {
{
ImageIO.write(image, "jpg", os); ImageIO.write(image, "jpg", os);
} } catch (IOException e) {
catch (IOException e)
{
return AjaxResult.error(e.getMessage()); return AjaxResult.error(e.getMessage());
} }

Loading…
Cancel
Save