diff --git a/src/main/java/com/quinn/common/QuinnConstant.java b/src/main/java/com/quinn/common/QuinnConstant.java
index ef9e26b..9d2fa60 100644
--- a/src/main/java/com/quinn/common/QuinnConstant.java
+++ b/src/main/java/com/quinn/common/QuinnConstant.java
@@ -2,6 +2,8 @@ package com.quinn.common;
public interface QuinnConstant {
+ String APP_STR = "quInn";
+
String LINK_SUFFIX = ".";
String LINK_URL = "/";
diff --git a/src/main/java/com/quinn/config/SecurityConfig.java b/src/main/java/com/quinn/config/SecurityConfig.java
index 8da59da..21c1b7a 100644
--- a/src/main/java/com/quinn/config/SecurityConfig.java
+++ b/src/main/java/com/quinn/config/SecurityConfig.java
@@ -10,6 +10,7 @@ import org.springframework.security.config.annotation.web.configuration.EnableWe
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
@@ -18,6 +19,9 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
UserServiceImpl userService;
+ @Autowired
+ WxTokenFilter wxTokenFilter;
+
//请求授权验证
@Override
protected void configure(HttpSecurity http) throws Exception {
@@ -39,7 +43,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
.antMatchers("/blog/**").authenticated()
.antMatchers("/source/**").authenticated()
.antMatchers("/user/**").authenticated()
- .antMatchers("/wx/**").authenticated()
+ .antMatchers("/wx/**").permitAll()
.antMatchers("/*").authenticated();
// 登录配置
@@ -55,6 +59,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
http.headers().frameOptions().disable(); // 图片跨域
http.csrf().disable();//关闭csrf功能:跨站请求伪造,默认只能通过post方式提交logout请求
http.logout().logoutSuccessUrl("/");
+ http.addFilterBefore(wxTokenFilter, UsernamePasswordAuthenticationFilter.class);
//拦截后使用https 8443 可以装tomcat证书使用
// http.requiresChannel().anyRequest().requiresSecure();
diff --git a/src/main/java/com/quinn/config/WxTokenFilter.java b/src/main/java/com/quinn/config/WxTokenFilter.java
new file mode 100644
index 0000000..9450eea
--- /dev/null
+++ b/src/main/java/com/quinn/config/WxTokenFilter.java
@@ -0,0 +1,29 @@
+package com.quinn.config;
+
+import com.quinn.utils.SecurityUtil;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.FilterChain;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpFilter;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.rmi.RemoteException;
+
+@Component
+public class WxTokenFilter extends HttpFilter {
+
+ private final String TOKEN = "access_token";
+
+ @Override
+ protected void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException {
+ if (request.getRequestURI().startsWith("/wx/")){
+ String token = request.getParameter(TOKEN);
+// if (!SecurityUtil.checkToken(token)){
+// throw new RemoteException("token检验失败");
+// }
+ }
+ chain.doFilter(request,response);
+ }
+}
diff --git a/src/main/java/com/quinn/controller/WxController.java b/src/main/java/com/quinn/controller/WxController.java
deleted file mode 100644
index fc36acc..0000000
--- a/src/main/java/com/quinn/controller/WxController.java
+++ /dev/null
@@ -1,110 +0,0 @@
-package com.quinn.controller;
-
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.quinn.common.EmailType;
-import com.quinn.dto.req.QueryTaskListReq;
-import com.quinn.dto.req.SearchPage;
-import com.quinn.dto.req.SendCode;
-import com.quinn.dto.res.AboutDTO;
-import com.quinn.dto.res.ResponseDTO;
-import com.quinn.intergration.SendBMail;
-import com.quinn.pojo.About;
-import com.quinn.pojo.Invite;
-import com.quinn.service.AboutService;
-import com.quinn.service.InviteService;
-import com.quinn.utils.QuinnUtils;
-import com.quinn.vo.MyPageParam;
-import org.springframework.util.CollectionUtils;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- *
- * 前端控制器
- *
- *
- * @author limqsh
- * @since 2022-05-01
- */
-@RestController("/wx")
-public class WxController extends BaseModelController {
-
- @Resource
- AboutService aboutService;
- @Resource
- InviteService inviteService;
- @Resource
- SendBMail sendBMail;
-
- @PostMapping("about/us")
- public ResponseDTO userIndexBlog(SearchPage searchPage){
- Page pageParam = new Page<>(searchPage.getPage(), searchPage.getPageSize());
- aboutService.page(pageParam,new QueryWrapper().orderByDesc("gmt_create"));
- // 结果
- List sayList = pageParam.getRecords();
- List aboutDTOS = new ArrayList<>();
- if (!CollectionUtils.isEmpty(sayList)){
- sayList.forEach(x->{
- AboutDTO aboutDTO = new AboutDTO();
- aboutDTO.setId(x.getId());
- aboutDTO.setTitle(x.getTitle());
- aboutDTO.setContent(x.getContent());
- aboutDTO.setGmtCreate(QuinnUtils.getViewStrFromDate(x.getGmtCreate()));
- aboutDTOS.add(aboutDTO);
- });
- }
- MyPageParam myPageParam = new MyPageParam(searchPage.getPage(),searchPage.getPageSize());
- myPageParam.setTotal((int) pageParam.getTotal());
- return ResponseDTO.ok().setPage(myPageParam).setData(aboutDTOS);
- }
-
- @PostMapping("send/register/code")
- public ResponseDTO sendCode(SendCode sendCode){
- Invite email = inviteService.getOne(new QueryWrapper().eq("apply_email", sendCode.getEmail()));
- if (email != null){
- return ResponseDTO.ok().setData("该邮箱已经获取过注册码");
- }
- String code = inviteService.getCode();
- Invite invite = new Invite();
- invite.setUid(QuinnUtils.getUuid());
- invite.setApplyEmail(sendCode.getEmail());
- invite.setCode(code);
- invite.setGmtCreate(QuinnUtils.getTime());
- inviteService.save(invite);
- boolean sendFlag = sendBMail.sendOneParamMail(EmailType.REGISTER,code, sendCode.getEmail());
- if (!sendFlag){
- return ResponseDTO.ok().setData("发送失败,请确认邮箱是否正确!");
- }
- return ResponseDTO.ok().setData("success");
- }
-
- @PostMapping("about/us")
- public ResponseDTO queryTask(QueryTaskListReq queryTaskListReq){
- Page pageParam = new Page<>(queryTaskListReq.getPage(), queryTaskListReq.getPageSize());
- aboutService.page(pageParam,new QueryWrapper().orderByDesc("gmt_create"));
- // 结果
- List sayList = pageParam.getRecords();
- List aboutDTOS = new ArrayList<>();
- if (!CollectionUtils.isEmpty(sayList)){
- sayList.forEach(x->{
- AboutDTO aboutDTO = new AboutDTO();
- aboutDTO.setId(x.getId());
- aboutDTO.setTitle(x.getTitle());
- aboutDTO.setContent(x.getContent());
- aboutDTO.setGmtCreate(QuinnUtils.getViewStrFromDate(x.getGmtCreate()));
- aboutDTOS.add(aboutDTO);
- });
- }
- MyPageParam myPageParam = new MyPageParam(queryTaskListReq.getPage(),queryTaskListReq.getPageSize());
- myPageParam.setTotal((int) pageParam.getTotal());
- return ResponseDTO.ok().setPage(myPageParam).setData(aboutDTOS);
- }
-
-}
-
diff --git a/src/main/java/com/quinn/controller/wx/WxSettingsController.java b/src/main/java/com/quinn/controller/wx/WxSettingsController.java
new file mode 100644
index 0000000..120b7f5
--- /dev/null
+++ b/src/main/java/com/quinn/controller/wx/WxSettingsController.java
@@ -0,0 +1,35 @@
+package com.quinn.controller.wx;
+
+import com.quinn.dto.req.SearchPage;
+import com.quinn.dto.res.ResponseDTO;
+import com.quinn.service.AccountCheckService;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author limqsh
+ * @since 2022-05-01
+ */
+@RestController
+@RequestMapping("/wx")
+public class WxSettingsController {
+
+ @Resource
+ private AccountCheckService accountCheckService;
+
+ @PostMapping("user/login")
+ public ResponseDTO userIndexBlog(SearchPage searchPage){
+ ResponseDTO result = ResponseDTO.ok();
+ result.setData(accountCheckService.getUserId("openid"));
+ return result;
+ }
+
+}
+
diff --git a/src/main/java/com/quinn/dto/req/BaseReq.java b/src/main/java/com/quinn/dto/req/BaseReq.java
index 7e76f07..94ca534 100644
--- a/src/main/java/com/quinn/dto/req/BaseReq.java
+++ b/src/main/java/com/quinn/dto/req/BaseReq.java
@@ -7,6 +7,6 @@ import java.io.Serializable;
@Data
public class BaseReq implements Serializable {
- private String userToken;
+ private String access_token;
}
diff --git a/src/main/java/com/quinn/dto/req/QueryTaskListReq.java b/src/main/java/com/quinn/dto/req/QueryTaskListReq.java
deleted file mode 100644
index 53ea949..0000000
--- a/src/main/java/com/quinn/dto/req/QueryTaskListReq.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.quinn.dto.req;
-
-import com.quinn.common.TaskType;
-import lombok.Data;
-
-@Data
-public class QueryTaskListReq extends SearchPage {
-
- private TaskType taskType;
-
-}
diff --git a/src/main/java/com/quinn/dto/req/SendCode.java b/src/main/java/com/quinn/dto/req/SendCode.java
deleted file mode 100644
index 59bfaf0..0000000
--- a/src/main/java/com/quinn/dto/req/SendCode.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.quinn.dto.req;
-
-import lombok.Data;
-
-import java.io.Serializable;
-
-@Data
-public class SendCode implements Serializable {
-
- String email;
-
-}
diff --git a/src/main/java/com/quinn/dto/res/AboutDTO.java b/src/main/java/com/quinn/dto/res/AboutDTO.java
deleted file mode 100644
index 2e2d2f5..0000000
--- a/src/main/java/com/quinn/dto/res/AboutDTO.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.quinn.dto.res;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- *
- *
- *
- *
- * @author limqsh
- * @since 2022-05-01
- */
-@Data
-public class AboutDTO implements Serializable {
-
- private String id;
-
- private String title;
-
- private String content;
-
- private String gmtCreate;
-
-
-}
diff --git a/src/main/java/com/quinn/generator/CodeGenerator.java b/src/main/java/com/quinn/generator/CodeGenerator.java
index 0faf131..b3b1a7b 100644
--- a/src/main/java/com/quinn/generator/CodeGenerator.java
+++ b/src/main/java/com/quinn/generator/CodeGenerator.java
@@ -51,7 +51,7 @@ public class CodeGenerator {
// 5、策略配置
StrategyConfig strategy = new StrategyConfig();
- strategy.setInclude("qn_user_message");//设置要映射的表名
+ strategy.setInclude("qn_user");//设置要映射的表名
strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略
strategy.setTablePrefix("qn_");//设置表前缀不生成
diff --git a/src/main/java/com/quinn/mapper/UserMapper.java b/src/main/java/com/quinn/mapper/UserMapper.java
index c1c532f..a4a8617 100644
--- a/src/main/java/com/quinn/mapper/UserMapper.java
+++ b/src/main/java/com/quinn/mapper/UserMapper.java
@@ -9,8 +9,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*
*
* @author limqsh
- * @since 2020-06-28
+ * @since 2023-01-30
*/
public interface UserMapper extends BaseMapper {
+ String getUserByOpenid(String openid);
+
}
diff --git a/src/main/java/com/quinn/mapper/xml/UserMapper.xml b/src/main/java/com/quinn/mapper/xml/UserMapper.xml
index d888600..1376eff 100644
--- a/src/main/java/com/quinn/mapper/xml/UserMapper.xml
+++ b/src/main/java/com/quinn/mapper/xml/UserMapper.xml
@@ -2,4 +2,8 @@
+
+
diff --git a/src/main/java/com/quinn/pojo/User.java b/src/main/java/com/quinn/pojo/User.java
index 12d698d..8014ffa 100644
--- a/src/main/java/com/quinn/pojo/User.java
+++ b/src/main/java/com/quinn/pojo/User.java
@@ -17,7 +17,7 @@ import lombok.experimental.Accessors;
*
*
* @author limqsh
- * @since 2020-06-28
+ * @since 2023-01-30
*/
@Data
@EqualsAndHashCode(callSuper = false)
@@ -35,7 +35,7 @@ public class User implements Serializable {
@ApiModelProperty(value = "用户编号")
private String uid;
- @ApiModelProperty(value = "角色")
+ @ApiModelProperty(value = "角色编号")
private String role;
@ApiModelProperty(value = "用户名")
@@ -47,14 +47,17 @@ public class User implements Serializable {
@ApiModelProperty(value = "头像")
private String avatar;
- @ApiModelProperty(value = "重置密码钥匙")
- private String resetKey;
-
@ApiModelProperty(value = "登录时间")
private Date loginDate;
@ApiModelProperty(value = "创建时间")
private Date gmtCreate;
+ @ApiModelProperty(value = "重置密码钥匙")
+ private String resetKey;
+
+ @ApiModelProperty(value = "微信ID")
+ private String openid;
+
}
diff --git a/src/main/java/com/quinn/service/AccountCheckService.java b/src/main/java/com/quinn/service/AccountCheckService.java
new file mode 100644
index 0000000..19061de
--- /dev/null
+++ b/src/main/java/com/quinn/service/AccountCheckService.java
@@ -0,0 +1,15 @@
+package com.quinn.service;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author limqsh
+ * @since 2020-06-28
+ */
+public interface AccountCheckService {
+
+ String getUserId(String openid);
+
+}
diff --git a/src/main/java/com/quinn/service/UserService.java b/src/main/java/com/quinn/service/UserService.java
index 46a5376..9fc576a 100644
--- a/src/main/java/com/quinn/service/UserService.java
+++ b/src/main/java/com/quinn/service/UserService.java
@@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
*
*
* @author limqsh
- * @since 2020-06-28
+ * @since 2023-01-30
*/
public interface UserService extends IService {
diff --git a/src/main/java/com/quinn/service/impl/AccountCheckServiceImpl.java b/src/main/java/com/quinn/service/impl/AccountCheckServiceImpl.java
new file mode 100644
index 0000000..ec08d2b
--- /dev/null
+++ b/src/main/java/com/quinn/service/impl/AccountCheckServiceImpl.java
@@ -0,0 +1,42 @@
+package com.quinn.service.impl;
+
+import com.quinn.common.RoleType;
+import com.quinn.intergration.AttrIcon;
+import com.quinn.mapper.UserMapper;
+import com.quinn.pojo.User;
+import com.quinn.service.AccountCheckService;
+import com.quinn.utils.QuinnUtils;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.stereotype.Component;
+import org.springframework.util.StringUtils;
+
+import javax.annotation.Resource;
+@Component
+public class AccountCheckServiceImpl implements AccountCheckService {
+
+ @Resource
+ UserMapper userMapper;
+
+ @Override
+ public String getUserId(String openid) {
+ String uid = userMapper.getUserByOpenid(openid);
+ if (StringUtils.isEmpty(uid)){
+ // 没有这个用户,需要构建用户对象
+ User user = new User();
+ uid = QuinnUtils.getUuid();
+ user.setUid(uid); // 用户唯一id
+ user.setRole(RoleType.NORMAL.name());
+ user.setUsername(uid);
+ // 密码加密
+ String bCryptPassword = new BCryptPasswordEncoder().encode("123456");
+ user.setAvatar(AttrIcon.INSTANCE.generateImgUrl("123456"));
+ user.setPassword(bCryptPassword);
+ user.setGmtCreate(QuinnUtils.getTime());
+ user.setLoginDate(QuinnUtils.getTime());
+ user.setOpenid(openid);
+ // 保存对象!
+ userMapper.insert(user);
+ }
+ return uid;
+ }
+}
diff --git a/src/main/java/com/quinn/utils/QuinnUtils.java b/src/main/java/com/quinn/utils/QuinnUtils.java
index b0ace33..c54a27c 100644
--- a/src/main/java/com/quinn/utils/QuinnUtils.java
+++ b/src/main/java/com/quinn/utils/QuinnUtils.java
@@ -1,6 +1,10 @@
package com.quinn.utils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import java.sql.Timestamp;
+import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
@@ -9,7 +13,10 @@ import java.util.UUID;
public class QuinnUtils {
+ private static final Logger log = LoggerFactory.getLogger(QuinnUtils.class);
+
private static final String ALLCHAR = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
+ private final static SimpleDateFormat sdfm = new SimpleDateFormat( "yyyyMMddHHmmss");
private final static SimpleDateFormat sdf = new SimpleDateFormat( "yyyyMMdd");
private final static SimpleDateFormat sdfv = new SimpleDateFormat( "yyyy-MM-dd");
@@ -25,6 +32,10 @@ public class QuinnUtils {
return sdf.format(date);
}
+ public static String getTokenDate (Date date) {
+ return sdfm.format(date);
+ }
+
public static String getViewStrFromDate(Date date){
return sdfv.format(date);
}
@@ -78,4 +89,18 @@ public class QuinnUtils {
}
}
+ //计算两个时间相差的秒数
+ public static long diffSeconds(String startTime, String endTime) {
+ SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
+ long diff = 0;
+ try {
+ long eTime = df.parse(endTime).getTime();
+ long sTime = df.parse(startTime).getTime();
+ diff = (eTime - sTime) / 1000;
+ }catch (ParseException e) {
+ log.error("解析token日期失败");
+ }
+ return diff;
+ }
+
}
diff --git a/src/main/java/com/quinn/utils/SecurityUtil.java b/src/main/java/com/quinn/utils/SecurityUtil.java
new file mode 100644
index 0000000..2027983
--- /dev/null
+++ b/src/main/java/com/quinn/utils/SecurityUtil.java
@@ -0,0 +1,53 @@
+package com.quinn.utils;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * AES加密解密
+ */
+public class SecurityUtil {
+
+ private final static Map match = new HashMap();
+
+ static {
+// const map = ['E','q','u','i','n','W','A','b','C','d']
+ match.put('E','0');
+ match.put('q','1');
+ match.put('u','2');
+ match.put('i','3');
+ match.put('n','4');
+ match.put('W','5');
+ match.put('A','6');
+ match.put('b','7');
+ match.put('C','8');
+ match.put('d','9');
+ }
+
+ public static boolean checkToken(String token) {
+ String tokenDate = QuinnUtils.getTokenDate(new Date());
+ String year = tokenDate.substring(0, 4);
+ Pattern pattern = Pattern.compile("\\d+");//创建匹配数字字符的模式
+ Matcher matcher = pattern.matcher(token);
+ matcher.find();
+ int start = matcher.start();
+ String indent = token.substring(0,start) + token.substring(start+2);
+ indent = indent.replaceAll("f","");
+ indent = indent.replaceAll("g","");
+ indent = indent.replaceAll("h","");
+ indent = indent.replaceAll("j","");
+ indent = indent.replaceAll("k","");
+ indent = indent.replaceAll("l","");
+ char[] chars = indent.toCharArray();
+ StringBuffer sb = new StringBuffer();
+ for (char aChar : chars) {
+ Character character = match.get(aChar);
+ sb.append(character);
+ }
+ long l = QuinnUtils.diffSeconds(year + sb.toString(), tokenDate);
+ return l < 30;
+ }
+}