diff --git a/src/demo/.idea/compiler.xml b/src/demo/.idea/compiler.xml index 07e72e7..bfc71e1 100644 --- a/src/demo/.idea/compiler.xml +++ b/src/demo/.idea/compiler.xml @@ -2,6 +2,7 @@ + diff --git a/src/demo/pom.xml b/src/demo/pom.xml index 431a469..0200cfd 100644 --- a/src/demo/pom.xml +++ b/src/demo/pom.xml @@ -22,6 +22,7 @@ spring-boot-starter-web + org.springframework.boot spring-boot-starter-test @@ -80,7 +81,7 @@ com.baomidou mybatis-plus-boot-starter - 3.1.1 + 3.4.2 @@ -107,6 +108,11 @@ org.springframework.boot spring-boot-starter-thymeleaf + + cn.hutool + hutool-all + 5.7.22 + diff --git a/src/demo/src/main/java/com/example/demo/common/GlobalResult.java b/src/demo/src/main/java/com/example/demo/common/GlobalResult.java index a66f5e4..4f120c1 100644 --- a/src/demo/src/main/java/com/example/demo/common/GlobalResult.java +++ b/src/demo/src/main/java/com/example/demo/common/GlobalResult.java @@ -2,9 +2,9 @@ package com.example.demo.common; /** * @Description: 自定义响应数据结构 - * 这个类是提供给门户,ios,安卓,微信商城用的 - * 门户接受此类数据后需要使用本类的方法转换成对于的数据类型格式(类,或者list) - * 其他自行处理 + * + * + * * 200:表示成功 * 500:表示错误,错误信息在msg字段中 * 501:bean验证错误,不管多少个错误都以map形式返回 diff --git a/代码/最新/demo/src/main/java/com/example/demo/common/util/FormatResponseUtil.java b/src/demo/src/main/java/com/example/demo/common/util/FormatResponseUtil.java similarity index 100% rename from 代码/最新/demo/src/main/java/com/example/demo/common/util/FormatResponseUtil.java rename to src/demo/src/main/java/com/example/demo/common/util/FormatResponseUtil.java diff --git a/代码/最新/demo/src/main/java/com/example/demo/common/util/ResponseResult.java b/src/demo/src/main/java/com/example/demo/common/util/ResponseResult.java similarity index 100% rename from 代码/最新/demo/src/main/java/com/example/demo/common/util/ResponseResult.java rename to src/demo/src/main/java/com/example/demo/common/util/ResponseResult.java diff --git a/src/demo/src/main/java/com/example/demo/controller/ControllerText.java b/src/demo/src/main/java/com/example/demo/controller/ControllerText.java deleted file mode 100644 index 0b9de03..0000000 --- a/src/demo/src/main/java/com/example/demo/controller/ControllerText.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.example.demo.controller; - - -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.tags.Tags; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.jdbc.core.JdbcTemplate; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -@RestController -@SpringBootApplication -@Tag(name ="你的接口",description = "test") -public class ControllerText { - @Operation(summary = "获取用户列表",description = "test") - @RequestMapping("getUser") - - public Map getUser(){ - System.out.println("微信小程序正在调用。。。"); - Map map = new HashMap(); - List list = new ArrayList(); - list.add("zhangsan"); - list.add("lisi"); - list.add("wanger"); - list.add("mazi"); - map.put("list",list); - System.out.println("微信小程序调用完成。。。"); - return map; - } - @Operation(summary = "获取用户表",description = "test") - @RequestMapping("getWord") - public Map getText(String word){ - Map map = new HashMap(); - String message = "我能力有限,不要为难我"; - if ("后来".equals(word)) { - message="正在热映的后来的我们是刘若英的处女作。"; - }else if("微信小程序".equals(word)){ - message= "想获取更多微信小程序相关知识,请更多的阅读微信官方文档,还有其他更多微信开发相关的内容,学无止境。"; - }else if("cauc".equals(word)){ - message="yes"; - } - map.put("message", message); - return map; - } - - @Autowired - JdbcTemplate jct; - @Operation(summary = "取用户列表",description = "test") - @GetMapping("userslist") - public List> userlist(){ - String sql = "select * from user"; - List> map = jct.queryForList(sql); - System.out.println("调用sql"); - return map; - } - - - -} 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 d91bb84..9d5b48e 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 @@ -3,16 +3,15 @@ package com.example.demo.controller; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.example.demo.common.HttpGetUtil; +import com.example.demo.domain.Rcode; import com.example.demo.domain.User; +import com.example.demo.mapper.RcodeMapper; import com.example.demo.mapper.UserMapper; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.jdbc.core.JdbcTemplate; -import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; -import javax.management.Query; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.UnsupportedEncodingException; @@ -55,25 +54,13 @@ public class Demmo { String skey = UUID.randomUUID().toString(); if (user == null) { // 用户信息入库 -// String nickName = rawDataJson.getString("nickName"); -// String avatarUrl = rawDataJson.getString("avatarUrl"); -// String gender = rawDataJson.getString("gender"); -// String city = rawDataJson.getString("city"); -// String country = rawDataJson.getString("country"); -// String province = rawDataJson.getString("province"); - user = new User(); user.setOpenId(openid); user.setSkey(skey); user.setCreateTime(new Date()); user.setLastVisitTime(new Date()); user.setSessionKey(sessionKey); -// user.setCity(city); -// user.setProvince(province); -// user.setCountry(country); -// user.setAvatarUrl(avatarUrl); -// user.setGender(Integer.parseInt(gender)); -// user.setNickName(nickName); + this.userMapper.insert(user); } else { @@ -83,17 +70,18 @@ public class Demmo { user.setSkey(skey); this.userMapper.updateById(user); } + User user2 = this.userMapper.selectById(openid); Map skeymap = new HashMap(); - skeymap.put("skey",skey); - - return skeymap; + skeymap.put("skey", skey); + skeymap.put("power", user2.getPower()); + return skeymap; } + @RequestMapping("/atbind") @Operation(summary = "用户绑定接口") - public void atbind(@RequestParam(value = "studentnumber",required = true) String studentnumber, - @RequestParam(value = "name",required = true) String name, - @RequestParam(value = "skey",required = true) String skey) - { + public void atbind(@RequestParam(value = "studentnumber", required = true) String studentnumber, + @RequestParam(value = "name", required = true) String name, + @RequestParam(value = "skey", required = true) String skey) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.like("skey", skey); User user = this.userMapper.selectOne(queryWrapper); @@ -104,4 +92,41 @@ public class Demmo { } + @Autowired + RcodeMapper rcodeMapper; + + @RequestMapping("/getrcode") + @Operation(summary = "获取验证码") + public String getrcode(@RequestParam(value = "skey", required = true) String skey) { + Rcode rcode = this.rcodeMapper.selectById(skey); + String code = ""; + if (rcode == null) { + rcode = new Rcode(); + rcode.setSkey(skey); + code = rcode.createCode(); + this.rcodeMapper.insert(rcode); + } else { + code = rcode.createCode(); + rcode.setCode(code); + this.rcodeMapper.updateById(rcode); + } + return code; + } + + /** + * 用户登录接口(现阶段使用) + * 采用微信小程序获取验证码登录 + * + * @auth:kirito + */ + @RequestMapping("/webblogin") + @Operation(summary = "登录") + public void weblogin(@RequestParam(value = "code") String code) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like("code", code); + Rcode authrcode = this.rcodeMapper.selectOne(queryWrapper); + String skey = authrcode.getSkey(); + System.out.println(skey); + } + } 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 0b7c083..af18697 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,10 +1,17 @@ package com.example.demo.controller; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.example.demo.common.HttpGetUtil; +import com.example.demo.domain.Rcode; +import com.example.demo.domain.User; +import com.example.demo.mapper.RcodeMapper; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import org.apache.commons.codec.binary.Base64; import org.apache.tomcat.util.http.ResponseUtil; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; @@ -25,6 +32,7 @@ import java.util.Objects; @Controller @RequestMapping("/web") +@Tag(name = "web端") public class Webcontroller { @RequestMapping("/dashboard") public String login() { @@ -39,6 +47,7 @@ public class Webcontroller { /** * 获取qrcode * issue: 小程序未上线,无法使用获取二维码接口。 + * 此接口未启用,后续小程序上线可以启用替换验证码登录 * * @return */ @@ -46,17 +55,17 @@ public class Webcontroller { 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"; + String getAccessTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx08c675f6ba5b2cdc&secret=0c28388c09ff373d391fe66d085dd39d"; JSONObject tokenResult = restTemplate.getForObject(getAccessTokenUrl, JSONObject.class); assert tokenResult != null; String accessToken = tokenResult.getString("access_token"); - + //System.out.println(accessToken); //然后调用微信官方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); + //createQrParam.put("scene", scene); + //createQrParam.put("page", page); PrintWriter out = null; @@ -106,6 +115,7 @@ public class Webcontroller { } } } + String base64Code = new String(Objects.requireNonNull(Base64.encodeBase64(data))); //Base64转byte[]数组 System.out.println(base64Code); @@ -127,8 +137,29 @@ public class Webcontroller { ex.printStackTrace(); } } - return ResponseUtil.class; + return null; } + + /** + * 用户登录接口(现阶段使用) + * 采用微信小程序获取验证码登录 + * + * @auth:kirito + */ + @Autowired + RcodeMapper rcodeMapper; + + @RequestMapping("/login") + @Operation(summary = "登录") + public void weblogin(@RequestParam(value = "code") String code) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.like("code", code); + Rcode authrcode = this.rcodeMapper.selectOne(queryWrapper); + String skey = authrcode.getSkey(); + + } + + } diff --git a/代码/最新/demo/src/main/java/com/example/demo/controller/taskController.java b/src/demo/src/main/java/com/example/demo/controller/taskController.java similarity index 100% rename from 代码/最新/demo/src/main/java/com/example/demo/controller/taskController.java rename to src/demo/src/main/java/com/example/demo/controller/taskController.java diff --git a/src/demo/src/main/java/com/example/demo/domain/Rcode.java b/src/demo/src/main/java/com/example/demo/domain/Rcode.java new file mode 100644 index 0000000..76e467e --- /dev/null +++ b/src/demo/src/main/java/com/example/demo/domain/Rcode.java @@ -0,0 +1,61 @@ +package com.example.demo.domain; + +import java.util.Random; + +public class Rcode { + private String code; + private String skey; + + public Rcode() { + } + + public Rcode(String code, String skey) { + this.code = code; + this.skey = skey; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getSkey() { + return skey; + } + + public void setSkey(String skey) { + this.skey = skey; + } + + public String createCode() { + //定义字符串记录 + String code = ""; + Random r = new Random(); + //for 循环5次,依次生成随机字符 + for (int i = 0; i < 5; i++) { + int type = r.nextInt(3);//0 1 2 + switch (type) { + case 0: + //大写字符(A 65-Z 65+25) + char ch = (char) (r.nextInt(26) + 65); + code += ch; + break; + case 1: + //小写字符(a 97-z 97+25) + char ch1 = (char) (r.nextInt(26) + 97); + code += ch1; + break; + case 2: + //数字字符 + code += r.nextInt(10);//0-9 + break; + } + } + this.code = code; + return code; + + } +} diff --git a/代码/最新/demo/src/main/java/com/example/demo/domain/Task.java b/src/demo/src/main/java/com/example/demo/domain/Task.java similarity index 100% rename from 代码/最新/demo/src/main/java/com/example/demo/domain/Task.java rename to src/demo/src/main/java/com/example/demo/domain/Task.java diff --git a/src/demo/src/main/java/com/example/demo/domain/Taskson.java b/src/demo/src/main/java/com/example/demo/domain/Taskson.java index 34bcdd3..f3d4a8a 100644 --- a/src/demo/src/main/java/com/example/demo/domain/Taskson.java +++ b/src/demo/src/main/java/com/example/demo/domain/Taskson.java @@ -72,6 +72,11 @@ public class Taskson extends Wrapper { return null; } + @Override + public void clear() { + + } + /** * SQL 片段 */ diff --git a/src/demo/src/main/java/com/example/demo/domain/User.java b/src/demo/src/main/java/com/example/demo/domain/User.java index 2b623bc..24d4f4c 100644 --- a/src/demo/src/main/java/com/example/demo/domain/User.java +++ b/src/demo/src/main/java/com/example/demo/domain/User.java @@ -12,19 +12,17 @@ import org.springframework.format.annotation.DateTimeFormat; import java.util.Date; /** - * - * * */ @Data @TableName("user") -public class User extends Wrapper { +public class User extends Wrapper { private static final long serialVersionUID = 1L; /** * open_id */ - @TableId(value = "open_id",type = IdType.INPUT) + @TableId(value = "open_id", type = IdType.INPUT) private String openId; /** * skey @@ -108,6 +106,11 @@ public class User extends Wrapper { return null; } + @Override + public void clear() { + + } + @Override public String getSqlSegment() { return null; diff --git a/src/demo/src/main/java/com/example/demo/mapper/RcodeMapper.java b/src/demo/src/main/java/com/example/demo/mapper/RcodeMapper.java new file mode 100644 index 0000000..18a47aa --- /dev/null +++ b/src/demo/src/main/java/com/example/demo/mapper/RcodeMapper.java @@ -0,0 +1,10 @@ +package com.example.demo.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.example.demo.domain.Rcode; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface RcodeMapper extends BaseMapper { + +} diff --git a/代码/最新/demo/src/main/java/com/example/demo/mapper/TaskMapper.java b/src/demo/src/main/java/com/example/demo/mapper/TaskMapper.java similarity index 100% rename from 代码/最新/demo/src/main/java/com/example/demo/mapper/TaskMapper.java rename to src/demo/src/main/java/com/example/demo/mapper/TaskMapper.java diff --git a/代码/最新/demo/src/main/java/com/example/demo/mapper/xml/TaskMapper.xml b/src/demo/src/main/java/com/example/demo/mapper/xml/TaskMapper.xml similarity index 100% rename from 代码/最新/demo/src/main/java/com/example/demo/mapper/xml/TaskMapper.xml rename to src/demo/src/main/java/com/example/demo/mapper/xml/TaskMapper.xml diff --git a/代码/最新/demo/src/main/java/com/example/demo/service/ITaskService.java b/src/demo/src/main/java/com/example/demo/service/ITaskService.java similarity index 100% rename from 代码/最新/demo/src/main/java/com/example/demo/service/ITaskService.java rename to src/demo/src/main/java/com/example/demo/service/ITaskService.java diff --git a/代码/最新/demo/src/main/java/com/example/demo/service/impl/TaskServiceImpl.java b/src/demo/src/main/java/com/example/demo/service/impl/TaskServiceImpl.java similarity index 100% rename from 代码/最新/demo/src/main/java/com/example/demo/service/impl/TaskServiceImpl.java rename to src/demo/src/main/java/com/example/demo/service/impl/TaskServiceImpl.java diff --git a/wxlogin.sql b/wxlogin.sql new file mode 100644 index 0000000..0a7cb6c --- /dev/null +++ b/wxlogin.sql @@ -0,0 +1,77 @@ +/* + Navicat Premium Data Transfer + + Source Server : 1 + Source Server Type : MySQL + Source Server Version : 50719 + Source Host : localhost:3306 + Source Schema : wxlogin + + Target Server Type : MySQL + Target Server Version : 50719 + File Encoding : 65001 + + Date: 11/11/2022 17:02:08 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for task +-- ---------------------------- +DROP TABLE IF EXISTS `task`; +CREATE TABLE `task` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `property` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '0' COMMENT '内容', + `stuid` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `deadtime` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '0', + `status` int(11) NULL DEFAULT 0, + `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间戳', + `last_time` datetime NULL DEFAULT NULL COMMENT '最后修改时间戳', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `name`(`name`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for taskson +-- ---------------------------- +DROP TABLE IF EXISTS `taskson`; +CREATE TABLE `taskson` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `task_id` int(11) NOT NULL, + `studentnumber` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `finishtime` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + `filepath` varchar(256) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE, + INDEX `f_key sutdentnumber`(`studentnumber`) USING BTREE, + INDEX `f_keytaski_id`(`task_id`) USING BTREE, + CONSTRAINT `f_key sutdentnumber` FOREIGN KEY (`studentnumber`) REFERENCES `user` (`student_number`) ON DELETE RESTRICT ON UPDATE RESTRICT, + CONSTRAINT `f_keytaski_id` FOREIGN KEY (`task_id`) REFERENCES `task` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT +) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for user +-- ---------------------------- +DROP TABLE IF EXISTS `user`; +CREATE TABLE `user` ( + `open_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'open_id', + `skey` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'skey', + `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `last_visit_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后登录时间', + `session_key` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'session_key', + `city` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '市', + `province` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '省', + `country` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '国', + `avatar_url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '头像', + `gender` tinyint(11) NULL DEFAULT NULL COMMENT '性别', + `nick_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '网名', + `student_number` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '学号', + `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '姓名', + `power` int(1) NULL DEFAULT 0 COMMENT '管理员权限', + PRIMARY KEY (`open_id`) USING BTREE, + INDEX `Student_Number`(`student_number`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '微信用户信息' ROW_FORMAT = DYNAMIC; + +SET FOREIGN_KEY_CHECKS = 1;