kirito 1.0.0

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

@ -7,7 +7,7 @@ import org.springframework.context.annotation.ComponentScan;
@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")
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;
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.common.GlobalResult;
import com.example.demo.mapper.RcodeMapper;
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.tags.Tag;
import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.UnsupportedEncodingException;
import java.util.*;
/**
*
*/
@Tag(name = "用户接口",description = "用户登录,")
@Controller
@Tag(name = "真·用户接口", description = "用户登录,")
@RestController
public class UserController {
@RequestMapping("/index")
public String first() {
return "index";
}
@Autowired
private UserMapper userMapper;
/**
*
*
*
* @param request
* @param response
* @param code
* @return
* @throws UnsupportedEncodingException
* @auth:kirito
*/
@PostMapping("wx/login")
@Operation(summary = "微信登录接口")
@ResponseBody
public GlobalResult user_login(@RequestParam(value = "code", required = false) String code,
@RequestParam(value = "rawData", required = false) String rawData,
@RequestParam(value = "signature", required = false) String signature,
@RequestParam(value = "encrypteData", required = false) String encrypteData,
@RequestParam(value = "iv", required = false) String iv) {
// 用户非敏感信息rawData
// 签名signature
JSONObject rawDataJson = JSON.parseObject(rawData);
// 1.接收小程序发送的code
// 2.开发者服务器 登录凭证校验接口 appi + appsecret + code
JSONObject SessionKeyOpenId = WechatUtil.getSessionKeyOrOpenId(code);
// 3.接收微信接口服务 获取返回的参数
String openid = SessionKeyOpenId.getString("openid");
String sessionKey = SessionKeyOpenId.getString("session_key");
@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");
// 4.校验签名 小程序发送的签名signature与服务器端生成的签名signature2 = sha1(rawData + sessionKey)
String signature2 = DigestUtils.sha1Hex(rawData + sessionKey);
// if (!signature.equals(signature2)) {
// return GlobalResult.build(500, "签名校验失败", null);
// }
// 5.根据返回的User实体类判断用户是否是新用户是的话将用户信息存到数据库不是的话更新最新登录时间
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) {
// 用户信息入库
// 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 {
@ -88,11 +81,80 @@ public class UserController {
user.setSkey(skey);
this.userMapper.updateById(user);
}
//encrypteData比rowData多了appid和openid
//JSONObject userInfo = WechatUtil.getUserInfo(encrypteData, sessionKey, iv);
//6. 把新的skey返回给小程序
GlobalResult result = GlobalResult.build(200, null, skey);
return result;
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;
}
/**
*
*
* @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,10 +11,12 @@ import org.springframework.web.bind.annotation.*;
@RestController
@Tag(name = "WXL")
@RequestMapping("/task")
public class taskController {
@Autowired(required = false)
TaskServiceImpl taskService;
@Autowired
public TaskServiceImpl taskService;
@Operation(summary = "获取任务信息")
@GetMapping("/taskList")
public ResponseResult queryAll() {

@ -2,6 +2,7 @@ package com.example.demo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.demo.domain.Task;
import org.apache.ibatis.annotations.Mapper;
/**
* <p>
@ -11,6 +12,7 @@ import com.example.demo.domain.Task;
* @author huang
* @since 2022-03-27
*/
@Mapper
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.service.ITaskService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;
import java.util.Date;
@ -22,6 +23,7 @@ import java.util.List;
*
*/
@Service
public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements ITaskService {
@Autowired(required = false)

Loading…
Cancel
Save