kirito 1.0.0

wangh_branch
王壕 3 years ago
parent 415b87ee77
commit 1be5703c90

@ -7,7 +7,7 @@ import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication @SpringBootApplication
@ComponentScan(basePackages = {"com.example.demo.controller" ,"com.example.demo.config"}) @ComponentScan(basePackages = {"com.example.demo.controller", "com.example.demo.config", "com.example.demo.service.impl"})
@MapperScan("com.example.demo.mapper") @MapperScan("com.example.demo.mapper")
public class DemoApplication { public class DemoApplication {

@ -0,0 +1,33 @@
package com.example.demo.config.config;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.example.demo.domain.Task;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
@Component
public class BaseEntityMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
// 创建时间自动填充
if (metaObject.hasSetter(Task.CREATE_TIME) && ObjectUtil.isNull(getFieldValByName(Task.CREATE_TIME, metaObject))) {
this.strictInsertFill(metaObject, Task.CREATE_TIME, LocalDateTime.class, LocalDateTime.now());
}
}
@Override
public void updateFill(MetaObject metaObject) {
//修改时间自动填充
if (metaObject.hasSetter(Task.MODIFIED_TIME) && ObjectUtil.isNull(getFieldValByName(Task.MODIFIED_TIME, metaObject))) {
this.strictUpdateFill(metaObject, Task.MODIFIED_TIME, LocalDateTime.class, LocalDateTime.now());
}
}
}

@ -0,0 +1,27 @@
package com.example.demo.config.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* MybatisPlus
*
* @author huang
* @since 2022-03-18
*/
@Configuration
public class MybatisPlusConfig {
/**
*
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}

@ -0,0 +1,19 @@
package com.example.demo.config.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* Web
*
* @author huang
* @since 2022-03-18
*/
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("login/login");
}
}

@ -1,132 +0,0 @@
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.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.UnsupportedEncodingException;
import java.util.*;
@Tag(name = "真·用户接口",description = "用户登录,")
@RestController
public class Demmo {
@RequestMapping("/index")
public String first(){
return "index";
}
@Autowired
private UserMapper userMapper;
@GetMapping("atlogin")
@Operation(summary = "真·微信登录接口")
public Map getOpenId( HttpServletRequest request,
HttpServletResponse response,
@RequestParam(value = "code", required = false) String code) throws UnsupportedEncodingException {
response.setContentType("text/html");
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
Map params = new HashMap();
params.put("appid", "wx954296403ec15396");
params.put("secret", "3317b29d14270cebb8f4e3521506f285");
params.put("js_code", code);
params.put("grant_type", "authorization_code");
System.out.println(params);
String result = HttpGetUtil.httpRequestToString(
"https://api.weixin.qq.com/sns/jscode2session", params, "GET");
JSONObject jsonObject = JSONObject.parseObject(result);
String openid = jsonObject.get("openid").toString();
System.out.println("得到的openid为:"+openid);
String sessionKey=jsonObject.get("session_key").toString();
User user = this.userMapper.selectById(openid);
// uuid生成唯一key用于维护微信小程序用户与服务端的会话
String skey = UUID.randomUUID().toString();
if (user == null) {
// 用户信息入库
user = new User();
user.setOpenId(openid);
user.setSkey(skey);
user.setCreateTime(new Date());
user.setLastVisitTime(new Date());
user.setSessionKey(sessionKey);
this.userMapper.insert(user);
} else {
// 已存在,更新用户登录时间
user.setLastVisitTime(new Date());
// 重新设置会话skey
user.setSkey(skey);
this.userMapper.updateById(user);
}
User user2 = this.userMapper.selectById(openid);
Map<String, Object> skeymap = new HashMap<String, Object>();
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) {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like("skey", skey);
User user = this.userMapper.selectOne(queryWrapper);
user.setStudentNumber(studentnumber);
user.setName(name);
this.userMapper.updateById(user);
System.out.println(user);
}
@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<Rcode> queryWrapper = new QueryWrapper<>();
queryWrapper.like("code", code);
Rcode authrcode = this.rcodeMapper.selectOne(queryWrapper);
String skey = authrcode.getSkey();
System.out.println(skey);
}
}

@ -1,84 +1,77 @@
package com.example.demo.controller; 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.domain.User;
import com.example.demo.common.GlobalResult; import com.example.demo.mapper.RcodeMapper;
import com.example.demo.mapper.UserMapper; import com.example.demo.mapper.UserMapper;
import com.example.demo.common.WechatUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.Date; import javax.servlet.http.HttpServletRequest;
import java.util.UUID; import javax.servlet.http.HttpServletResponse;
import java.io.UnsupportedEncodingException;
import java.util.*;
/** @Tag(name = "真·用户接口", description = "用户登录,")
* @RestController
*/
@Tag(name = "用户接口",description = "用户登录,")
@Controller
public class UserController { public class UserController {
@RequestMapping("/index")
public String first() {
return "index";
}
@Autowired @Autowired
private UserMapper userMapper; private UserMapper userMapper;
/** /**
* *
*
* @param request
* @param response
* @param code
* @return
* @throws UnsupportedEncodingException
* @auth:kirito
*/ */
@PostMapping("wx/login") @GetMapping("atlogin")
@Operation(summary = "微信登录接口") @Operation(summary = "真·微信登录接口")
@ResponseBody public Map getOpenId(HttpServletRequest request,
public GlobalResult user_login(@RequestParam(value = "code", required = false) String code, HttpServletResponse response,
@RequestParam(value = "rawData", required = false) String rawData, @RequestParam(value = "code", required = false) String code) throws UnsupportedEncodingException {
@RequestParam(value = "signature", required = false) String signature, response.setContentType("text/html");
@RequestParam(value = "encrypteData", required = false) String encrypteData, request.setCharacterEncoding("UTF-8");
@RequestParam(value = "iv", required = false) String iv) { response.setCharacterEncoding("UTF-8");
// 用户非敏感信息rawData Map params = new HashMap();
// 签名signature params.put("appid", "wx954296403ec15396");
JSONObject rawDataJson = JSON.parseObject(rawData); params.put("secret", "3317b29d14270cebb8f4e3521506f285");
// 1.接收小程序发送的code params.put("js_code", code);
// 2.开发者服务器 登录凭证校验接口 appi + appsecret + code params.put("grant_type", "authorization_code");
JSONObject SessionKeyOpenId = WechatUtil.getSessionKeyOrOpenId(code);
// 3.接收微信接口服务 获取返回的参数 System.out.println(params);
String openid = SessionKeyOpenId.getString("openid"); String result = HttpGetUtil.httpRequestToString(
String sessionKey = SessionKeyOpenId.getString("session_key"); "https://api.weixin.qq.com/sns/jscode2session", params, "GET");
JSONObject jsonObject = JSONObject.parseObject(result);
// 4.校验签名 小程序发送的签名signature与服务器端生成的签名signature2 = sha1(rawData + sessionKey) String openid = jsonObject.get("openid").toString();
String signature2 = DigestUtils.sha1Hex(rawData + sessionKey); System.out.println("得到的openid为:" + openid);
// if (!signature.equals(signature2)) { String sessionKey = jsonObject.get("session_key").toString();
// return GlobalResult.build(500, "签名校验失败", null);
// }
// 5.根据返回的User实体类判断用户是否是新用户是的话将用户信息存到数据库不是的话更新最新登录时间
User user = this.userMapper.selectById(openid); User user = this.userMapper.selectById(openid);
// uuid生成唯一key用于维护微信小程序用户与服务端的会话 // uuid生成唯一key用于维护微信小程序用户与服务端的会话
String skey = UUID.randomUUID().toString(); String skey = UUID.randomUUID().toString();
if (user == null) { 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 = new User();
user.setOpenId(openid); user.setOpenId(openid);
user.setSkey(skey); user.setSkey(skey);
user.setCreateTime(new Date()); user.setCreateTime(new Date());
user.setLastVisitTime(new Date()); user.setLastVisitTime(new Date());
user.setSessionKey(sessionKey); 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); this.userMapper.insert(user);
} else { } else {
@ -88,11 +81,80 @@ public class UserController {
user.setSkey(skey); user.setSkey(skey);
this.userMapper.updateById(user); this.userMapper.updateById(user);
} }
//encrypteData比rowData多了appid和openid User user2 = this.userMapper.selectById(openid);
//JSONObject userInfo = WechatUtil.getUserInfo(encrypteData, sessionKey, iv); Map<String, Object> skeymap = new HashMap<String, Object>();
//6. 把新的skey返回给小程序 skeymap.put("skey", skey);
GlobalResult result = GlobalResult.build(200, null, skey); skeymap.put("power", user2.getPower());
return result; return skeymap;
}
/**
*
*
* @param studentnumber
* @param name
* @param skey
* @authkirito
* @date2022/10/20
*/
@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) {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like("skey", skey);
User user = this.userMapper.selectOne(queryWrapper);
user.setStudentNumber(studentnumber);
user.setName(name);
this.userMapper.updateById(user);
System.out.println(user);
}
@Autowired
RcodeMapper rcodeMapper;
/**
*
*
* @param skey
* @return code
* @auth:kirito
* @date:2022/11/12
*/
@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<Rcode> queryWrapper = new QueryWrapper<>();
queryWrapper.like("code", code);
Rcode authrcode = this.rcodeMapper.selectOne(queryWrapper);
String skey = authrcode.getSkey();
System.out.println(skey);
} }
} }

@ -11,18 +11,20 @@ import org.springframework.web.bind.annotation.*;
@RestController @RestController
@Tag(name = "WXL") @Tag(name = "WXL")
@RequestMapping("/task") @RequestMapping("/task")
public class taskController { public class taskController {
@Autowired(required = false) @Autowired
TaskServiceImpl taskService; public TaskServiceImpl taskService;
@Operation(summary = "获取任务信息") @Operation(summary = "获取任务信息")
@GetMapping("/taskList") @GetMapping("/taskList")
public ResponseResult queryAll(){ public ResponseResult queryAll() {
return FormatResponseUtil.formatResponse(taskService.queryAll()); return FormatResponseUtil.formatResponse(taskService.queryAll());
} }
@PostMapping("/addTask") @PostMapping("/addTask")
public ResponseResult addTask(@RequestBody Task task){ public ResponseResult addTask(@RequestBody Task task) {
return FormatResponseUtil.formatResponse(taskService.save(task)); return FormatResponseUtil.formatResponse(taskService.save(task));
} }

@ -2,6 +2,7 @@ package com.example.demo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.demo.domain.Task; import com.example.demo.domain.Task;
import org.apache.ibatis.annotations.Mapper;
/** /**
* <p> * <p>
@ -11,6 +12,7 @@ import com.example.demo.domain.Task;
* @author huang * @author huang
* @since 2022-03-27 * @since 2022-03-27
*/ */
@Mapper
public interface TaskMapper extends BaseMapper<Task> { public interface TaskMapper extends BaseMapper<Task> {
} }

@ -10,6 +10,7 @@ import com.example.demo.domain.Task;
import com.example.demo.mapper.TaskMapper; import com.example.demo.mapper.TaskMapper;
import com.example.demo.service.ITaskService; import com.example.demo.service.ITaskService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Date; import java.util.Date;
@ -22,6 +23,7 @@ import java.util.List;
* *
*/ */
@Service @Service
public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements ITaskService { public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements ITaskService {
@Autowired(required = false) @Autowired(required = false)

Loading…
Cancel
Save