| | |
| | | |
| | | import cn.hutool.core.util.IdUtil; |
| | | import com.alibaba.fastjson2.JSONObject; |
| | | import com.oying.modules.rider.domain.RiderInfo; |
| | | import com.oying.modules.rider.service.RiderInfoService; |
| | | import com.oying.modules.security.config.CaptchaConfig; |
| | | import com.oying.modules.security.config.LoginProperties; |
| | | import com.oying.modules.security.config.SecurityProperties; |
| | |
| | | private final WeiXinService weiXinService; |
| | | private final UserService userService; |
| | | private final DictDetailService dictDetailService; |
| | | private final RiderInfoService riderInfoService; |
| | | |
| | | @Log("账号密码登录") |
| | | @ApiOperation("账号密码登录") |
| | |
| | | user1.setRoles(roles); |
| | | } |
| | | |
| | | @Log("骑手小程序:微信授权登录") |
| | | @ApiOperation("骑手小程序:微信授权登录") |
| | | @AnonymousPostMapping(value = "/rider/login/weixin") |
| | | public ResponseEntity<Object> riderLoginWeixin(@Validated @RequestBody AuthUserWeixinDto authUser, HttpServletRequest request) throws Exception { |
| | | JSONObject jsonObject; |
| | | switch (authUser.getType()) { |
| | | case OLD: |
| | | jsonObject = weiXinService.code2SessionRider(authUser.getCode()); |
| | | String openid = jsonObject.getString("openid"); |
| | | User userDto = userService.findByRiderOpenId(openid); |
| | | if (userDto == null) { |
| | | return ResponseEntity.ok(R.success(openid)); |
| | | } |
| | | authUser.setUsername(userDto.getUsername()); |
| | | break; |
| | | case NEW: |
| | | jsonObject = weiXinService.getRiderPhoneNumber(authUser.getCode()); |
| | | String phone = jsonObject.getJSONObject("phone_info").getString("purePhoneNumber"); |
| | | User user1 = userService.findByName(phone); |
| | | if (user1 == null) { |
| | | //创建用户 |
| | | User user = new User(); |
| | | user.setUsername(phone); |
| | | user.setNickName("OYING-" + phone); |
| | | user.setUserType(ConstantsKey.BUYER); |
| | | user.setPhone(phone); |
| | | user.setGender("男"); |
| | | user.setEnabled(true); |
| | | getRole(user); |
| | | user.setPassword(passwordEncoder.encode(phone.substring(phone.length() - 6))); |
| | | user.setRiderOpenId(authUser.getUsername()); |
| | | userService.create(user); |
| | | } else { |
| | | if (user1.getUserType().equals(ConstantsKey.BUYER)) { |
| | | if (user1.getRoles() == null) { |
| | | getRole(user1); |
| | | } |
| | | } |
| | | user1.setRiderOpenId(authUser.getUsername()); |
| | | // userService.update(user1); |
| | | userService.updateRiderOpenId(user1); |
| | | } |
| | | authUser.setUsername(phone); |
| | | break; |
| | | default: |
| | | throw new BadRequestException("登录类型错误"); |
| | | |
| | | } |
| | | // 获取用户信息 |
| | | JwtUserDto jwtUser = userDetailsService.loadUserByUsername(authUser.getUsername()); |
| | | // 查询骑手信息 |
| | | RiderInfo riderInfo = riderInfoService.getRiderSourceInfo(jwtUser.getUser().getId()); |
| | | Authentication authentication = new UsernamePasswordAuthenticationToken(jwtUser, null, jwtUser.getAuthorities()); |
| | | SecurityContextHolder.getContext().setAuthentication(authentication); |
| | | // 生成令牌 |
| | | String token = tokenProvider.createToken(jwtUser); |
| | | // 返回 token 与 用户信息 |
| | | Map<String, Object> authInfo = new HashMap<String, Object>(2) {{ |
| | | put("token", properties.getTokenStartWith() + token); |
| | | put("user", jwtUser); |
| | | put("rider", riderInfo); |
| | | }}; |
| | | if (loginProperties.isSingleLogin()) { |
| | | // 踢掉之前已经登录的token |
| | | onlineUserService.kickOutForUsername(authUser.getUsername()); |
| | | } |
| | | // 保存在线信息 |
| | | onlineUserService.save(jwtUser, token, request); |
| | | // 返回登录信息 |
| | | return ResponseEntity.ok(R.success(authInfo)); |
| | | } |
| | | |
| | | @ApiOperation("临时授权") |
| | | @AnonymousGetMapping(value = "/token") |
| | | public ResponseEntity<Object> loginTest(@RequestParam String username, HttpServletRequest request) { |