Procházet zdrojové kódy

'jscode登录接口'

Althars123 před 4 roky
rodič
revize
a3a8eeb3e3
17 změnil soubory, kde provedl 204 přidání a 140 odebrání
  1. 3 12
      zzjs-admin/src/main/java/com/miaxis/app/controller/user/UserInfoController.java
  2. 6 16
      zzjs-admin/src/main/java/com/miaxis/app/controller/wechat/WxController.java
  3. 34 48
      zzjs-admin/src/main/java/com/miaxis/system/controller/system/SysLoginController.java
  4. 0 8
      zzjs-admin/src/test/java/com/miaxis/test/NormalTest.java
  5. 13 0
      zzjs-common/src/main/java/com/miaxis/common/core/domain/entity/UserInfo.java
  6. 1 1
      zzjs-common/src/main/java/com/miaxis/common/enums/StudentLoginTypeEnum.java
  7. 88 0
      zzjs-common/src/main/java/com/miaxis/common/utils/RandomNameUtils.java
  8. 7 0
      zzjs-framework/pom.xml
  9. 2 5
      zzjs-framework/src/main/java/com/miaxis/framework/config/SecurityConfig.java
  10. 4 4
      zzjs-framework/src/main/java/com/miaxis/framework/security/provider/OpenIdAuthenticationProvider.java
  11. 3 7
      zzjs-framework/src/main/java/com/miaxis/framework/security/token/OpenIdAuthenticationToken.java
  12. 8 11
      zzjs-framework/src/main/java/com/miaxis/framework/web/service/SysLoginService.java
  13. 17 16
      zzjs-framework/src/main/java/com/miaxis/framework/web/service/UserDetailsServiceImpl.java
  14. 3 1
      zzjs-system/src/main/java/com/miaxis/system/mapper/SysUserMapper.java
  15. 5 5
      zzjs-system/src/main/java/com/miaxis/system/service/ISysUserService.java
  16. 4 4
      zzjs-system/src/main/java/com/miaxis/system/service/impl/SysUserServiceImpl.java
  17. 6 2
      zzjs-system/src/main/resources/mapper/system/SysUserMapper.xml

+ 3 - 12
zzjs-admin/src/main/java/com/miaxis/app/controller/user/UserInfoController.java

@@ -1,28 +1,19 @@
 package com.miaxis.app.controller.user;
 
-import com.miaxis.file.vo.FileVo;
-import com.miaxis.user.dto.UserDto;
-import com.miaxis.user.service.IUserInfoService;
-import com.miaxis.user.vo.UserVo;
-import com.miaxis.common.aliyunOSS.AliyunConfig;
-import com.miaxis.common.aliyunOSS.AliyunUpload;
 import com.miaxis.common.constant.Constants;
 import com.miaxis.common.core.controller.BaseController;
 import com.miaxis.common.core.domain.Response;
 import com.miaxis.common.core.domain.entity.SysUser;
 import com.miaxis.common.core.domain.entity.UserInfo;
 import com.miaxis.common.core.page.ResponsePageInfo;
-import com.miaxis.common.enums.PictureTypeEnum;
-import com.miaxis.common.exception.CustomException;
 import com.miaxis.common.utils.SecurityUtils;
+import com.miaxis.user.dto.UserDto;
+import com.miaxis.user.service.IUserInfoService;
+import com.miaxis.user.vo.UserVo;
 import io.swagger.annotations.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
 
-import java.io.IOException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
 import java.util.List;
 
 /**

+ 6 - 16
zzjs-admin/src/main/java/com/miaxis/app/controller/wechat/WxController.java

@@ -11,6 +11,7 @@ import com.miaxis.common.core.domain.entity.UserInfo;
 import com.miaxis.common.core.page.ResponsePageInfo;
 import com.miaxis.common.enums.PictureTypeEnum;
 import com.miaxis.common.exception.CustomException;
+import com.miaxis.common.utils.RandomNameUtils;
 import com.miaxis.common.utils.SecurityUtils;
 import com.miaxis.feign.dto.WxResult;
 import com.miaxis.feign.service.IWxService;
@@ -43,6 +44,9 @@ public class WxController extends BaseController{
     @Autowired
     private IWxService wxService;
 
+    @Autowired
+    private IUserInfoService userInfoService;
+
     @Value("${app.appid}")
     private String appid;
 
@@ -50,23 +54,9 @@ public class WxController extends BaseController{
     private String secret;
 
 
-    /**
-     * 根据电话获取用户信息详细信息
-     */
-    @GetMapping(value = "/openid")
-    @ApiOperation("获取用户openid")
-    public Response<String> getInfo(String jscode){
-        String result = wxService.getWxInfo(appid, secret, jscode,"authorization_code");
-        JSONObject jsonString = JSONObject.parseObject(result);
-        WxResult wxResult = JSONObject.toJavaObject(jsonString, WxResult.class);
-        if (wxResult.getErrcode() == 0){
-            return Response.success(wxResult.getOpenid()) ;
-        }
-        else{
-            return Response.error(500,wxResult.getErrmsg());
-        }
 
-    }
+
+
 
 
 }

+ 34 - 48
zzjs-admin/src/main/java/com/miaxis/system/controller/system/SysLoginController.java

@@ -1,16 +1,18 @@
 package com.miaxis.system.controller.system;
 
-import com.miaxis.sms.ISmsService;
-import com.miaxis.sms.domain.SmsParameter;
+import com.alibaba.fastjson.JSONObject;
 import com.miaxis.common.core.domain.Response;
 import com.miaxis.common.core.domain.entity.SysMenu;
 import com.miaxis.common.core.domain.entity.SysUser;
+import com.miaxis.common.core.domain.entity.UserInfo;
 import com.miaxis.common.core.domain.model.LoginBody;
-import com.miaxis.common.core.domain.model.LoginBodyMobleCode;
 import com.miaxis.common.core.domain.model.LoginBodyNoCode;
 import com.miaxis.common.core.domain.model.LoginUser;
 import com.miaxis.common.enums.StudentLoginTypeEnum;
+import com.miaxis.common.utils.RandomNameUtils;
 import com.miaxis.common.utils.ServletUtils;
+import com.miaxis.feign.dto.WxResult;
+import com.miaxis.feign.service.IWxService;
 import com.miaxis.framework.web.service.SysLoginService;
 import com.miaxis.framework.web.service.SysPermissionService;
 import com.miaxis.framework.web.service.TokenService;
@@ -18,11 +20,11 @@ import com.miaxis.system.dto.common.RouterDTO;
 import com.miaxis.system.dto.system.TokenDTO;
 import com.miaxis.system.dto.system.UserInfoDTO;
 import com.miaxis.system.service.ISysMenuService;
+import com.miaxis.user.service.IUserInfoService;
 import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -53,7 +55,16 @@ public class SysLoginController
     private TokenService tokenService;
 
     @Autowired
-    private ISmsService smsService;
+    private IWxService wxService;
+
+    @Autowired
+    private IUserInfoService userInfoService;
+
+    @Value("${app.appid}")
+    private String appid;
+
+    @Value("${app.secret}")
+    private String secret;
 
     /**
      * 登录方法 (含验证码)
@@ -87,56 +98,31 @@ public class SysLoginController
         return Response.success(tokenDTO);
     }
 
-
     /**
-     * 学员用户名密码登录方法
+     * 用户 jscode登录
      *
-     * @param loginBodyNoCode 登录信息
-     * @return 结果
      */
-    @PostMapping("/login/studentpassword")
-    @ApiOperation("学员用户名密码登录")
-    public Response<TokenDTO> loginStudentpassword(@RequestBody LoginBodyNoCode loginBodyNoCode)
-    {   TokenDTO tokenDTO = new TokenDTO();
+    @PostMapping("/login/jscode")
+    @ApiOperation("用户jscode登录")
+    public Response<String> getInfo(String jscode){
+        String result = wxService.getWxInfo(appid, secret, jscode,"authorization_code");
+        JSONObject jsonString = JSONObject.parseObject(result);
+        WxResult wxResult = JSONObject.toJavaObject(jsonString, WxResult.class);
+        TokenDTO tokenDTO = new TokenDTO();
         // 生成令牌
-        String token = loginService.login(loginBodyNoCode.getUsername(), loginBodyNoCode.getPassword(), StudentLoginTypeEnum.PASSWORDLOGIN.getCode());
-        tokenDTO.setToken(token);
-        return Response.success(tokenDTO);
-    }
-
+        if (wxResult.getOpenid() != null){
 
+            // 生成令牌
+            String token = loginService.login(wxResult.getOpenid(),null, StudentLoginTypeEnum.OPENID_LOGIN.getCode());
+            return Response.success(wxResult.getOpenid()) ;
+        }
+        else{
+            return Response.error(500,wxResult.getErrmsg());
+        }
 
-    /**
-     * 学员用户名密码登录方法
-     *
-     * @return 结果
-     */
-    @PostMapping("/login/studentMobileCode")
-    @ApiOperation("获取学员手机验证码")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "mobile",value = "学员手机验证码" ,dataType = "int", paramType = "query", required = false)
-    })
-    public Response studentMobileCode(String mobile) {
-        SmsParameter smsParameter = new SmsParameter();
-        smsParameter.setPhone(mobile);
-        smsParameter.setType("login");
-        return smsService.sendVerificationCode(smsParameter);
-    }
-    /**
-     * 学员用户名密码登录方法
-     *
-     * @return 结果
-     */
-    @PostMapping("/login/studentMobile")
-    @ApiOperation("学员手机验证码登录")
-    public Response<TokenDTO> loginStudentmobile(@RequestBody LoginBodyMobleCode loginBodyMobleCode)
-    {   TokenDTO tokenDTO = new TokenDTO();
-        // 生成令牌
-        String token = loginService.login(loginBodyMobleCode.getMobile(), loginBodyMobleCode.getCode(),StudentLoginTypeEnum.MOBILELOGIN.getCode());
-        tokenDTO.setToken(token);
-        return Response.success(tokenDTO);
     }
 
+
     /**
      * 获取用户信息
      *

+ 0 - 8
zzjs-admin/src/test/java/com/miaxis/test/NormalTest.java

@@ -13,14 +13,6 @@ import java.io.File;
 @RunWith(SpringRunner.class)
 public class NormalTest {
 
-    public static String qgptHttpTopServerPath = "http://114.55.58.112:8085/top/";
-    public static String qgptHttpServerPath = "http://115.29.171.186:8085/";
-    public static final String file_stuimg = "stuimg";//学员头像
-    /** 接口服务器:Imageup (文件资料信息上传) */
-    public static final String httpServer_Imageup = "imageup";
-
-
-
 
     @Test
     public void test1() throws Exception {

+ 13 - 0
zzjs-common/src/main/java/com/miaxis/common/core/domain/entity/UserInfo.java

@@ -85,6 +85,19 @@ public class UserInfo extends BaseBusinessEntity{
     @ApiModelProperty(value = "微信号码")
     private String wechar;
 
+    /** 小程序头像地址 */
+    @Excel(name = "小程序头像地址")
+    @TableField("head_image")
+    @ApiModelProperty(value = "小程序头像地址")
+    private String headImage;
+
+    /** 小程序昵称 */
+    @Excel(name = "小程序昵称")
+    @TableField("nick_name")
+    @ApiModelProperty(value = "小程序昵称")
+    private String nickName;
+
+
     /** 微信openid */
     @Excel(name = "微信openid")
     @TableField("openid")

+ 1 - 1
zzjs-common/src/main/java/com/miaxis/common/enums/StudentLoginTypeEnum.java

@@ -7,7 +7,7 @@ package com.miaxis.common.enums;
  */
 public enum StudentLoginTypeEnum
 {
-    PASSWORDLOGIN("1", "密码登录"), MOBILELOGIN("2", "手机验证码登录");
+   OPENID_LOGIN("1", "openid登录");
 
     private final String code;
     private final String info;

+ 88 - 0
zzjs-common/src/main/java/com/miaxis/common/utils/RandomNameUtils.java

@@ -0,0 +1,88 @@
+package com.miaxis.common.utils;
+
+import java.util.Random;
+
+/**
+ * 昵称随机
+ *
+ * @author miaxis
+ */
+public class RandomNameUtils
+{
+    private static String adjective[] = {
+            "一样的", "喜欢的", "美丽的", "一定的", "原来的", "美好的", "开心的", "可能的", "可爱的",
+            "明白的", "所有的", "后来的", "重要的", "经常的", "自然的", "真正的", "害怕的", "空中的",
+            "红色的", "痛苦的", "干净的", "辛苦的", "精彩的", "欢乐的", "进步的", "影响的", "黄色的",
+            "亲爱的", "根本的", "完美的", "金黄的", "聪明的", "清新的", "迷人的", "光明的", "共同的",
+            "直接的", "真实的", "听说的", "用心的", "飞快的", "雪白的", "着急的", "乐观的", "主要的",
+            "鲜艳的", "冰冷的", "细心的", "奇妙的", "水平的", "动人的", "大量的", "无知的", "礼貌的",
+            "暖和的", "深情的", "正常的", "平淡的", "光亮的", "落后的", "大方的", "老大的", "刻苦的",
+            "晴朗的", "专业的", "永久的", "大气的", "知己的", "刚好的", "相对的", "平和的", "友好的",
+            "广大的", "秀丽的", "日常的", "高级的", "相同的", "笔直的", "安定的", "知足的", "结实的",
+            "许久的", "听话的", "知名的", "闷热的", "众多的", "拥挤的", "天生的", "迷你的", "老实的",
+            "友爱的", "原始的", "可笑的", "合格的", "公共的", "大红的", "得力的", "洁净的", "暗淡的",
+            "鲜红的", "桃红的", "吓人的", "多余的", "秀美的", "繁忙的", "冰凉的", "热心的", "空旷的",
+            "冷清的", "公开的", "冷淡的", "齐全的", "草绿的", "能干的", "发火的", "可心的", "业余的",
+            "空心的", "凉快的", "长远的", "土黄的", "和好的", "合法的", "明净的", "过时的", "低下的",
+            "不快的", "低级的", "中用的", "不定的", "公办的", "用功的", "少许的", "忙乱的", "日用的",
+            "要紧的", "少见的", "非分的", "怕人的", "大忙的", "幸福的", "特别的", "未来的", "伟大的",
+            "困难的", "伤心的", "实在的", "现实的", "丰富的", "同样的", "巨大的", "耐心的", "优秀的",
+            "亲切的", "讨厌的", "严厉的", "积极的", "整齐的", "环保的"};
+
+    private static String[] noun = {
+            "生活", "一起", "不是", "人们", "今天", "孩子", "心里", "奶奶", "眼睛",
+            "学校", "原来", "爷爷", "地方", "过去", "事情", "以后", "可能", "晚上",
+            "里面", "才能", "知识", "故事", "多少", "比赛", "冬天", "所有", "样子",
+            "成绩", "后来", "以前", "童年", "问题", "日子", "活动", "公园", "作文",
+            "旁边", "下午", "自然", "房间", "空气", "笑容", "明天", "风景", "音乐",
+            "岁月", "文化", "生气", "机会", "身影", "天气", "空中", "红色", "书包",
+            "今年", "汽车", "早晨", "道路", "认识", "办法", "精彩",
+            "中午", "礼物", "星星", "习惯", "树木", "女儿", "友谊", "夜晚", "意义",
+            "家长", "耳朵", "家人", "门口", "班级", "人间", "厨房", "风雨", "影响",
+            "过年", "电话", "黄色", "种子", "广场", "清晨", "根本", "故乡", "笑脸",
+            "水面", "思想", "伙伴", "美景", "照片", "水果", "彩虹", "刚才", "月光",
+            "先生", "鲜花", "灯光", "感情", "亲人", "语言", "爱心", "光明", "左右",
+            "新年", "角落", "青蛙", "电影", "行为", "阳台", "用心", "题目", "天地",
+            "动力", "花园", "诗人", "树林", "雨伞", "去年", "少女", "乡村", "对手",
+            "上午", "分别", "活力", "作用", "古代", "公主", "力气", "从前", "作品",
+            "空间", "黑夜", "说明", "青年", "面包", "往事", "大小", "司机",
+            "中心", "对面", "心头", "嘴角", "家门", "书本", "雪人", "笑话",
+            "云朵", "早饭", "右手", "水平", "行人", "乐园", "花草", "人才", "左手",
+            "目的", "课文", "优点", "灰尘", "年代", "沙子", "小说", "儿女", "明星",
+            "难题", "本子", "水珠", "彩色", "路灯", "把握", "房屋", "心愿", "左边",
+            "新闻", "早点", "市场", "雨点", "细雨", "书房", "毛巾", "画家", "元旦",
+            "绿豆", "本领", "起点", "青菜", "土豆", "总结", "礼貌", "右边", "窗帘",
+            "萝卜", "深情", "楼房", "对话", "面条", "北方", "木头", "商店", "疑问",
+            "后果", "现场", "诗词", "光亮", "白菜", "男子", "风格", "大道", "梦乡",
+            "姐妹", "毛衣", "园丁", "两边", "大风", "乡下", "广播", "规定", "围巾",
+            "意见", "大方", "头脑", "老大", "成语", "专业", "背景", "大衣", "黄豆",
+            "高手", "叶片", "过往", "选手", "奶油", "时空", "大气", "借口", "抹布",
+            "画笔", "山羊", "晚会", "拖鞋", "手心", "手工", "明年", "手术", "火苗",
+            "知己", "价格", "树苗", "主意", "摇篮", "对比", "胖子", "专家", "年级",
+            "落日", "东风", "屋子", "创意", "报道", "下巴", "面子", "迷宫", "雪山",
+            "友好", "烟雾", "西方", "姨妈", "问号", "年轮", "居民", "选手", "奶油",
+            "时空", "大气", "借口", "抹布", "画笔", "山羊", "晚会", "拖鞋", "手心",
+            "手工", "明年", "手术", "火苗", "知己", "价格", "树苗", "主意", "摇篮",
+            "对比", "胖子", "专家", "年级", "落日", "东风", "屋子", "创意", "报道",
+            "下巴", "面子", "迷宫", "雪山", "友好", "烟雾", "西方", "姨妈", "问号",
+            "年轮", "居民", "选手", "奶油", "时空", "大气", "借口", "抹布", "画笔",
+            "山羊", "晚会", "拖鞋", "手心", "手工", "明年", "手术", "火苗", "知己",
+            "价格", "树苗", "主意", "摇篮", "对比", "胖子", "专家", "年级", "落日",
+            "东风", "屋子", "创意", "报道", "下巴", "面子", "迷宫", "雪山", "友好",
+            "烟雾", "西方", "姨妈", "问号", "年轮", "居民"};
+
+    /**
+     * 生成随机昵称
+     *
+     * @return
+     */
+    public static String generateName() {
+        int adjLen= adjective.length;
+        int nLen= noun.length;
+        StringBuffer sb = new StringBuffer();
+        Random random = new Random();
+        sb.append(adjective[random.nextInt(adjLen)]);
+        sb.append(noun[random.nextInt(nLen)]);
+        return sb.toString();
+    }
+}

+ 7 - 0
zzjs-framework/pom.xml

@@ -77,6 +77,13 @@
             <artifactId>zzjs-system</artifactId>
         </dependency>
 
+        <!-- 系统模块-->
+        <!--<dependency>-->
+            <!--<groupId>com.miaxis</groupId>-->
+            <!--<artifactId>zzjs-service</artifactId>-->
+            <!--<version>1.0.1</version>-->
+        <!--</dependency>-->
+
     </dependencies>
 
 </project>

+ 2 - 5
zzjs-framework/src/main/java/com/miaxis/framework/config/SecurityConfig.java

@@ -3,12 +3,11 @@ package com.miaxis.framework.config;
 import com.miaxis.framework.security.filter.JwtAuthenticationTokenFilter;
 import com.miaxis.framework.security.handle.AuthenticationEntryPointImpl;
 import com.miaxis.framework.security.handle.LogoutSuccessHandlerImpl;
-import com.miaxis.framework.security.provider.MobileCodeAuthenticationProvider;
+import com.miaxis.framework.security.provider.OpenIdAuthenticationProvider;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Bean;
 import org.springframework.http.HttpMethod;
 import org.springframework.security.authentication.AuthenticationManager;
-import org.springframework.security.authentication.ProviderManager;
 import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
 import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
 import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
@@ -21,8 +20,6 @@ import org.springframework.security.web.authentication.UsernamePasswordAuthentic
 import org.springframework.security.web.authentication.logout.LogoutFilter;
 import org.springframework.web.filter.CorsFilter;
 
-import java.util.Arrays;
-
 /**
  * spring security配置
  *
@@ -152,7 +149,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
     protected void configure(AuthenticationManagerBuilder auth) throws Exception
     {
         DaoAuthenticationProvider daoAuthenticationProvider = new DaoAuthenticationProvider();
-        MobileCodeAuthenticationProvider mobileCodeAuthenticationProvider = new MobileCodeAuthenticationProvider();
+        OpenIdAuthenticationProvider mobileCodeAuthenticationProvider = new OpenIdAuthenticationProvider();
 //        daoAuthenticationProvider.setUserDetailsService(userDetailsService);
         mobileCodeAuthenticationProvider.setUserDetailsService(userDetailsService);
         //ProviderManager providerManager = new ProviderManager(Arrays.asList(mobileCodeAuthenticationProvider,daoAuthenticationProvider));

+ 4 - 4
zzjs-framework/src/main/java/com/miaxis/framework/security/provider/MobileCodeAuthenticationProvider.java → zzjs-framework/src/main/java/com/miaxis/framework/security/provider/OpenIdAuthenticationProvider.java

@@ -1,7 +1,7 @@
 package com.miaxis.framework.security.provider;
 
 
-import com.miaxis.framework.security.token.MoblieCodeAuthenticationToken;
+import com.miaxis.framework.security.token.OpenIdAuthenticationToken;
 import lombok.Data;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.security.authentication.AuthenticationProvider;
@@ -16,7 +16,7 @@ import org.springframework.security.core.userdetails.UserDetailsService;
  */
 @Log4j2
 @Data
-public class MobileCodeAuthenticationProvider implements  AuthenticationProvider {
+public class OpenIdAuthenticationProvider implements  AuthenticationProvider {
 
     private UserDetailsService userDetailsService;
     /**
@@ -28,13 +28,13 @@ public class MobileCodeAuthenticationProvider implements  AuthenticationProvider
     @Override
     public Authentication authenticate(Authentication authentication) throws AuthenticationException {
         UserDetails userDetails = userDetailsService.loadUserByUsername((String) authentication.getPrincipal());
-        MoblieCodeAuthenticationToken moblieCodeAuthenticationToken = new MoblieCodeAuthenticationToken(userDetails,userDetails.getAuthorities());
+        OpenIdAuthenticationToken moblieCodeAuthenticationToken = new OpenIdAuthenticationToken(userDetails,userDetails.getAuthorities());
         moblieCodeAuthenticationToken.setDetails(moblieCodeAuthenticationToken);
         return moblieCodeAuthenticationToken;
     }
 
     @Override
     public boolean supports(Class<?> authentication) {
-        return MoblieCodeAuthenticationToken.class.isAssignableFrom(authentication);
+        return OpenIdAuthenticationToken.class.isAssignableFrom(authentication);
     }
 }

+ 3 - 7
zzjs-framework/src/main/java/com/miaxis/framework/security/token/MoblieCodeAuthenticationToken.java → zzjs-framework/src/main/java/com/miaxis/framework/security/token/OpenIdAuthenticationToken.java

@@ -25,7 +25,7 @@ import java.util.Collection;
 /**
  * @author chenjian
  */
-public class MoblieCodeAuthenticationToken extends AbstractAuthenticationToken {
+public class OpenIdAuthenticationToken extends AbstractAuthenticationToken {
 
 	private static final long serialVersionUID = SpringSecurityCoreVersion.SERIAL_VERSION_UID;
 
@@ -44,22 +44,18 @@ public class MoblieCodeAuthenticationToken extends AbstractAuthenticationToken {
 	 * will return <code>false</code>.
 	 *
 	 */
-	public MoblieCodeAuthenticationToken(Object principal) {
+	public OpenIdAuthenticationToken(Object principal) {
 		super(null);
 		this.principal = principal;
 		setAuthenticated(false);
 	}
 
 	/**
-	 * This constructor should only be used by <code>AuthenticationManager</code> or
-	 * <code>AuthenticationProvider</code> implementations that are satisfied with
-	 * producing a trusted (i.e. {@link #isAuthenticated()} = <code>true</code>)
-	 * authentication token.
 	 *
 	 * @param principal
 	 * @param authorities
 	 */
-	public MoblieCodeAuthenticationToken(Object principal, Collection<? extends GrantedAuthority> authorities) {
+	public OpenIdAuthenticationToken(Object principal, Collection<? extends GrantedAuthority> authorities) {
 		super(authorities);
 		this.principal = principal;
 		super.setAuthenticated(true); // must use super, as we override

+ 8 - 11
zzjs-framework/src/main/java/com/miaxis/framework/web/service/SysLoginService.java

@@ -14,7 +14,7 @@ import com.miaxis.common.utils.ServletUtils;
 import com.miaxis.common.utils.StringUtils;
 import com.miaxis.framework.manager.AsyncManager;
 import com.miaxis.framework.manager.factory.AsyncFactory;
-import com.miaxis.framework.security.token.MoblieCodeAuthenticationToken;
+import com.miaxis.framework.security.token.OpenIdAuthenticationToken;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.security.authentication.AuthenticationManager;
@@ -39,9 +39,6 @@ public class SysLoginService
     @Resource
     private AuthenticationManager authenticationManager;
 
-//    @Resource
-//    private ProviderManager providerManager;
-
 
     @Autowired
     private RedisCache redisCache;
@@ -87,10 +84,12 @@ public class SysLoginService
     }
 
 
+
+
     /**
      * 学员登录验证
      *
-     * @param principal 主体  可以是用户名或者电话号码
+     * @param principal 主体  可以是用户名,电话号码,openid
      * @param credential 密码或者验证码
      * @param loginType 登录类型 1 学员用户名密码登录 2 学员手机验证码登录
      * @return 结果
@@ -99,12 +98,8 @@ public class SysLoginService
 
         ServletUtils.getRequest().setAttribute("loginType",loginType);
         // 用户验证
-        if (StudentLoginTypeEnum.PASSWORDLOGIN.getCode().equals(loginType)){
-            return authenticate(principal,new UsernamePasswordAuthenticationToken(principal, credential));
-        } else if (StudentLoginTypeEnum.MOBILELOGIN.getCode().equals(loginType)){
-            //验证码是否正确
-           validateCode(principal,credential);
-            return authenticate(principal,new MoblieCodeAuthenticationToken(principal));
+        if (StudentLoginTypeEnum.OPENID_LOGIN.getCode().equals(loginType)){
+            return authenticate(principal,new OpenIdAuthenticationToken(principal));
         }
         else{
             throw new CustomException("loginType参数错误");
@@ -154,4 +149,6 @@ public class SysLoginService
         return tokenService.createToken(loginUser);
 
     }
+
+
 }

+ 17 - 16
zzjs-framework/src/main/java/com/miaxis/framework/web/service/UserDetailsServiceImpl.java

@@ -7,6 +7,7 @@ import com.miaxis.common.enums.StudentLoginTypeEnum;
 import com.miaxis.common.enums.UserStatusEnum;
 import com.miaxis.common.exception.BaseException;
 import com.miaxis.common.exception.CustomException;
+import com.miaxis.common.utils.RandomNameUtils;
 import com.miaxis.common.utils.ServletUtils;
 import com.miaxis.common.utils.StringUtils;
 import com.miaxis.system.service.ISysUserService;
@@ -31,42 +32,42 @@ public class UserDetailsServiceImpl implements UserDetailsService
     @Autowired
     private ISysUserService userService;
 
-//    @Autowired
-//    private IUserInfoService studentService;
 
     @Autowired
     private SysPermissionService permissionService;
 
     @Override
-    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
+    public UserDetails loadUserByUsername(String identification) throws UsernameNotFoundException {
         //获取登录类型
         String loginType = (String) ServletUtils.getRequest().getAttribute("loginType");
         if (StringUtils.isEmpty(loginType)){
-            SysUser user = userService.selectUserByUserName(username);
+            SysUser user = userService.selectUserByUserName(identification);
             if (StringUtils.isNull(user))
             {
-                log.info("登录用户:{} 不存在.", username);
-                throw new UsernameNotFoundException("登录用户:" + username + " 不存在");
+                log.info("登录用户:{} 不存在.", identification);
+                throw new UsernameNotFoundException("登录用户:" + identification + " 不存在");
             }
             else if (UserStatusEnum.DELETED.getCode().equals(user.getDelFlag()))
             {
-                log.info("登录用户:{} 已被删除.", username);
-                throw new BaseException("对不起,您的账号:" + username + " 已被删除");
+                log.info("登录用户:{} 已被删除.", identification);
+                throw new BaseException("对不起,您的账号:" + identification + " 已被删除");
             }
             else if (UserStatusEnum.DISABLE.getCode().equals(user.getStatus()))
             {
-                log.info("登录用户:{} 已被停用.", username);
-                throw new BaseException("对不起,您的账号:" + username + " 已停用");
+                log.info("登录用户:{} 已被停用.", identification);
+                throw new BaseException("对不起,您的账号:" + identification + " 已停用");
             }
             return createLoginUser(user);
-        } else if (StudentLoginTypeEnum.PASSWORDLOGIN.getCode().equals(loginType)||StudentLoginTypeEnum.MOBILELOGIN.getCode().equals(loginType)){
+        } else if (StudentLoginTypeEnum.OPENID_LOGIN.getCode().equals(loginType)){
             {
-                UserInfo student = userService.getStudentByMobile(username);
-                if (StringUtils.isNull(student)) {
-                    log.info("登录学员用户电话:{} 不存在.", username);
-                    throw new UsernameNotFoundException("该账户不存在");
+                UserInfo userInfo = userService.getStudentByOpenId(identification);
+                if (userInfo == null) {
+                    userInfo.setHeadImage("http://image.jppt.com.cn/zzjs/2021-03-10/others/1615365365814.png");
+                    userInfo.setNickName(RandomNameUtils.generateName());
+                    userInfo.setOpenid(identification);
+                    userService.saveUserInfo(userInfo);
                 }
-                return createLoginUser(student);
+                return createLoginUser(userInfo);
             }
         } else{
             throw new CustomException("登录类型不存在");

+ 3 - 1
zzjs-system/src/main/java/com/miaxis/system/mapper/SysUserMapper.java

@@ -111,7 +111,9 @@ public interface SysUserMapper
      */
     public SysUser checkEmailUnique(String email);
 
-    UserInfo getStudentByMobile(String moblie);
+    UserInfo getStudentByOpenId(String openId);
 
     UserInfo getStudentByName(String username);
+
+    void saveUserInfo(UserInfo userInfo);
 }

+ 5 - 5
zzjs-system/src/main/java/com/miaxis/system/service/ISysUserService.java

@@ -166,14 +166,14 @@ public interface ISysUserService
      */
     public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName);
 
-    /**
-     * 通过学员电话查询轩辕信息
+    /*
      *
-     * @param moblie 学员电话
+     * @param
      * @return
      */
 
-    UserInfo getStudentByMobile(String moblie);
+    UserInfo getStudentByOpenId(String openId);
+
 
-    UserInfo getStudentByName(String username);
+    void saveUserInfo(UserInfo userInfo);
 }

+ 4 - 4
zzjs-system/src/main/java/com/miaxis/system/service/impl/SysUserServiceImpl.java

@@ -454,12 +454,12 @@ public class SysUserServiceImpl implements ISysUserService
     }
 
     @Override
-    public UserInfo getStudentByMobile(String moblie) {
-        return userMapper.getStudentByMobile(moblie);
+    public UserInfo getStudentByOpenId(String openId) {
+        return userMapper.getStudentByOpenId(openId);
     }
 
     @Override
-    public UserInfo getStudentByName(String username) {
-        return userMapper.getStudentByName(username);
+    public void saveUserInfo(UserInfo userInfo) {
+        userMapper.saveUserInfo(userInfo);
     }
 }

+ 6 - 2
zzjs-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -90,14 +90,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		where u.user_name = #{userName}
 	</select>
 
-	<select id="getStudentByMobile" parameterType="String" resultType="com.miaxis.common.core.domain.entity.UserInfo">
+	<select id="getStudentByOpenId" parameterType="String" resultType="com.miaxis.common.core.domain.entity.UserInfo">
 		select * from user_info
-		where phone = #{phone}
+		where openid = #{openid}
 	</select>
 	<select id="getStudentByName" parameterType="String" resultType="com.miaxis.common.core.domain.entity.UserInfo">
 		select * from user_info
 		where name = #{name}
 	</select>
+	<insert id="saveUserInfo" parameterType="com.miaxis.common.core.domain.entity.UserInfo" >
+		insert user_info (head_image,nick_name,openid) values #{dto.headImage},#{dto.nickName},#{dto.nickName}
+		where name = #{name}
+	</insert>