diff --git a/src/demo/src/main/java/com/example/demo/common/HttpGetUtil.java b/src/demo/src/main/java/com/example/demo/common/HttpGetUtil.java index 420d91f..444ede9 100644 --- a/src/demo/src/main/java/com/example/demo/common/HttpGetUtil.java +++ b/src/demo/src/main/java/com/example/demo/common/HttpGetUtil.java @@ -10,10 +10,10 @@ import java.util.Map; public class HttpGetUtil { public static String httpRequestToString(String url, - Map params) { + Map params, String type) { String result = null; try { - InputStream is = httpRequestToStream(url, params); + InputStream is = httpRequestToStream(url, params, type); BufferedReader in = new BufferedReader(new InputStreamReader(is, "UTF-8")); StringBuffer buffer = new StringBuffer(); @@ -31,17 +31,17 @@ public class HttpGetUtil { } private static InputStream httpRequestToStream(String url, - Map params) { + Map params, String type) { InputStream is = null; try { String parameters = ""; boolean hasParams = false; - for(Object key : params.keySet()){ + for (Object key : params.keySet()) { String value = URLEncoder.encode((String) params.get(key), "UTF-8"); - parameters += key +"="+ value +"&"; + parameters += key + "=" + value + "&"; hasParams = true; } - if(hasParams){ + if (hasParams) { parameters = parameters.substring(0, parameters.length()-1); } @@ -57,7 +57,7 @@ public class HttpGetUtil { conn.setReadTimeout(50000); conn.setDoInput(true); //设置请求方式,默认为GET - conn.setRequestMethod("GET"); + conn.setRequestMethod(type); is = conn.getInputStream(); } catch (UnsupportedEncodingException e) { diff --git a/src/demo/src/main/java/com/example/demo/controller/Demmo.java b/src/demo/src/main/java/com/example/demo/controller/Demmo.java index 0592173..d91bb84 100644 --- a/src/demo/src/main/java/com/example/demo/controller/Demmo.java +++ b/src/demo/src/main/java/com/example/demo/controller/Demmo.java @@ -44,7 +44,7 @@ public class Demmo { System.out.println(params); String result = HttpGetUtil.httpRequestToString( - "https://api.weixin.qq.com/sns/jscode2session", params); + "https://api.weixin.qq.com/sns/jscode2session", params, "GET"); JSONObject jsonObject = JSONObject.parseObject(result); String openid = jsonObject.get("openid").toString(); diff --git a/src/demo/src/main/java/com/example/demo/controller/TaskuploadController.java b/src/demo/src/main/java/com/example/demo/controller/TaskuploadController.java index fc1ac78..94fa529 100644 --- a/src/demo/src/main/java/com/example/demo/controller/TaskuploadController.java +++ b/src/demo/src/main/java/com/example/demo/controller/TaskuploadController.java @@ -33,7 +33,8 @@ public class TaskuploadController { @RequestMapping(value = "/taskupload", method = RequestMethod.POST) @Operation(summary = "任务上传接口") public String taskupload(HttpServletRequest request, - @RequestParam(name = "skey", required = true) String skey) { + @RequestParam(name = "skey", required = true) String skey, + @RequestParam(name = "Task_id", required = true) Integer Taskid) { //skey 查表 QueryWrapper queryWrapper = new QueryWrapper<>(); @@ -42,11 +43,11 @@ public class TaskuploadController { System.out.println(user); QueryWrapper queryWrapper1 = new QueryWrapper<>(); queryWrapper1.like("studentnumber", user.getStudentNumber()); - queryWrapper1.like("Task_id", 1); //任务表(需修改) + queryWrapper1.like("Task_id", Taskid); //任务表(需修改) Taskson taskson = this.tasksonMapper.selectOne(queryWrapper1); if (taskson == null) { taskson = new Taskson(); - taskson.setTaskid(1);//任务id(需修改) + taskson.setTaskid(Taskid);//任务id(需修改) taskson.setStudentnumber(user.getStudentNumber()); this.tasksonMapper.insert(taskson); } diff --git a/src/demo/src/main/java/com/example/demo/controller/Webcontroller.java b/src/demo/src/main/java/com/example/demo/controller/Webcontroller.java index 569ec78..0b7c083 100644 --- a/src/demo/src/main/java/com/example/demo/controller/Webcontroller.java +++ b/src/demo/src/main/java/com/example/demo/controller/Webcontroller.java @@ -1,16 +1,135 @@ package com.example.demo.controller; +import com.alibaba.fastjson.JSONObject; +import com.example.demo.common.HttpGetUtil; +import org.apache.commons.codec.binary.Base64; + +import org.apache.tomcat.util.http.ResponseUtil; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.client.RestTemplate; + +import javax.servlet.http.HttpServletRequest; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.PrintWriter; +import java.net.URL; +import java.net.URLConnection; +import java.nio.Buffer; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + @Controller +@RequestMapping("/web") public class Webcontroller { - @RequestMapping("/dashboard.html") - - public String login(){ + @RequestMapping("/dashboard") + public String login() { return "dashboard"; } + @RequestMapping("/list") - public String numer(){ - return "list"; + public String numer() { + return "list"; + } + + /** + * 获取qrcode + * issue: 小程序未上线,无法使用获取二维码接口。 + * + * @return + */ + @RequestMapping("/getqrcode") + public Object getqrcode() { + RestTemplate restTemplate = new RestTemplate(); + //首先获取ACCESS_TOKEN + String getAccessTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=你的appid&secret=你的secret"; + JSONObject tokenResult = restTemplate.getForObject(getAccessTokenUrl, JSONObject.class); + assert tokenResult != null; + String accessToken = tokenResult.getString("access_token"); + + //然后调用微信官方api生成二维码 + String createQrCodeUrl = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + accessToken; + //此处我是使用的阿里巴巴的fastJson + JSONObject createQrParam = new JSONObject(); + createQrParam.put("scene", scene); + createQrParam.put("page", page); + + + PrintWriter out = null; + InputStream in = null; + try { + URL realUrl = new URL(createQrCodeUrl); + // 打开和URL之间的连接 + URLConnection conn = realUrl.openConnection(); + // 设置通用的请求属性 + conn.setRequestProperty("accept", "*/*"); + conn.setRequestProperty("connection", "Keep-Alive"); + conn.setRequestProperty("user-agent", + "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); + // 发送POST请求必须设置如下两行 + conn.setDoOutput(true); + conn.setDoInput(true); + // 获取URLConnection对象对应的输出流 + out = new PrintWriter(conn.getOutputStream()); + // 发送请求参数,利用connection的输出流,去写数据到connection中,我的参数数据流出我的电脑内存到connection中,让connection把参数帮我传到URL中去请求。 + out.print(createQrParam); + // flush输出流的缓冲 + out.flush(); + //获取URL的connection中的输入流,这个输入流就是我请求的url返回的数据,返回的数据在这个输入流中,流入我内存,我将从此流中读取数据。 + in = conn.getInputStream(); + //定义个空字节数组 + byte[] data = null; + // 读取图片字节数组 + try { + //创建字节数组输出流作为中转仓库,等待被写入数据 + ByteArrayOutputStream swapStream = new ByteArrayOutputStream(); + byte[] buff = new byte[100]; + int rc = 0; + while ((rc = in.read(buff, 0, 100)) > 0) { + //向中转的输出流循环写出输入流中的数据 + swapStream.write(buff, 0, rc); + } + //此时connection的输入流返回给我们的请求结果数据已经被完全地写入了我们定义的中转输出流swapStream中 + data = swapStream.toByteArray(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + if (in != null) { + try { + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + String base64Code = new String(Objects.requireNonNull(Base64.encodeBase64(data))); + //Base64转byte[]数组 + System.out.println(base64Code); + } catch (Exception e) { + System.out.println("发送 POST 请求出现异常!" + e); + e.printStackTrace(); + } + + // 使用finally块来关闭输出流、输入流 + finally { + try { + if (out != null) { + out.close(); + } + if (in != null) { + in.close(); + } + } catch (IOException ex) { + ex.printStackTrace(); + } + } + return ResponseUtil.class; } } + + + diff --git a/src/demo/src/main/resources/static/js/logincode.js b/src/demo/src/main/resources/static/js/logincode.js new file mode 100644 index 0000000..ef63495 --- /dev/null +++ b/src/demo/src/main/resources/static/js/logincode.js @@ -0,0 +1,14 @@ +/** + * 网页登录二维码生成 + * auther:wangh + * 2022.11.6 + */ +createCode() +{ + let codeNumber = ''; + for (var i = 0; i < 0; i++) { + codeNumber += Math.floor(Math.random() * 10); + } + this.codeNumber = codeNumber; + this.qrCode = '' +} diff --git a/src/demo/src/main/resources/templates/index.html b/src/demo/src/main/resources/templates/index.html index 3e23580..37347d0 100644 --- a/src/demo/src/main/resources/templates/index.html +++ b/src/demo/src/main/resources/templates/index.html @@ -16,17 +16,17 @@ -