| | |
| | | import org.ruoyi.common.core.domain.dto.RoleDTO; |
| | | import org.ruoyi.common.core.domain.model.LoginUser; |
| | | import org.ruoyi.common.core.domain.model.VisitorLoginBody; |
| | | import org.ruoyi.common.core.domain.model.VisitorLoginUser; |
| | | import org.ruoyi.common.core.enums.*; |
| | | import org.ruoyi.common.core.exception.user.CaptchaException; |
| | | import org.ruoyi.common.core.exception.user.CaptchaExpireException; |
| | | import org.ruoyi.common.core.exception.user.UserException; |
| | | import org.ruoyi.common.core.service.ConfigService; |
| | | import org.ruoyi.common.core.utils.*; |
| | | import org.ruoyi.common.log.event.LogininforEvent; |
| | | import org.ruoyi.common.redis.utils.RedisUtils; |
| | |
| | | import org.ruoyi.common.tenant.exception.TenantException; |
| | | import org.ruoyi.common.tenant.helper.TenantHelper; |
| | | import org.ruoyi.system.domain.SysUser; |
| | | import org.ruoyi.system.domain.bo.SysUserBo; |
| | | import org.ruoyi.system.domain.vo.LoginVo; |
| | | |
| | | import org.ruoyi.system.domain.vo.SysTenantVo; |
| | | import org.ruoyi.system.domain.vo.SysUserVo; |
| | | import org.ruoyi.system.mapper.SysUserMapper; |
| | |
| | | import java.time.Duration; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.UUID; |
| | | import java.util.function.Supplier; |
| | | |
| | | /** |
| | |
| | | private final WxMaService wxMaService; |
| | | private final ISysPermissionService permissionService; |
| | | private final ISysTenantService tenantService; |
| | | private final ISysUserService userService; |
| | | private final ConfigService configService; |
| | | |
| | | @Value("${user.password.maxRetryCount}") |
| | | private Integer maxRetryCount; |
| | |
| | | private Integer lockTime; |
| | | |
| | | /** |
| | | * 获取微信 |
| | | * 获取微信code |
| | | * @param xcxCode 获取xcxCode |
| | | */ |
| | | public String getOpenidFromCode(String xcxCode) { |
| | |
| | | return StpUtil.getTokenValue(); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 游客登录 |
| | | * 微信小程序登录 |
| | | * |
| | | * @param loginBody |
| | | * @return String |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | public LoginVo mpLogin(String openid) { |
| | | // 使用 openid 查询绑定用户 如未绑定用户 则根据业务自行处理 例如 创建默认用户 |
| | | SysUserVo user = userService.selectUserByOpenId(openid); |
| | | VisitorLoginUser loginUser = new VisitorLoginUser(); |
| | | if (ObjectUtil.isNull(user)) { |
| | | SysUserBo sysUser = new SysUserBo(); |
| | | // 改为自增 |
| | | String name = "用户" + UUID.randomUUID().toString().replace("-", ""); |
| | | // 设置默认用户名 |
| | | sysUser.setUserName(name); |
| | | // 设置默认昵称 |
| | | sysUser.setNickName(name); |
| | | // 设置默认密码 |
| | | sysUser.setPassword(BCrypt.hashpw("123456")); |
| | | // 设置微信openId |
| | | sysUser.setOpenId(openid); |
| | | String configValue = configService.getConfigValue("mail", "amount"); |
| | | // 设置默认余额 |
| | | sysUser.setUserBalance(NumberUtils.toDouble(configValue, 1)); |
| | | // 注册用户,设置默认租户为0 |
| | | SysUser registerUser = userService.registerUser(sysUser, "0"); |
| | | |
| | | // 构建登录用户信息 |
| | | loginUser.setTenantId("0"); |
| | | loginUser.setUserId(registerUser.getUserId()); |
| | | loginUser.setUsername(registerUser.getUserName()); |
| | | loginUser.setUserType(UserType.APP_USER.getUserType()); |
| | | loginUser.setOpenid(openid); |
| | | loginUser.setNickName(registerUser.getNickName()); |
| | | |
| | | } else { |
| | | // 此处可根据登录用户的数据不同 自行创建 loginUser |
| | | loginUser.setTenantId(user.getTenantId()); |
| | | loginUser.setUserId(user.getUserId()); |
| | | loginUser.setUsername(user.getUserName()); |
| | | loginUser.setUserType(user.getUserType()); |
| | | loginUser.setNickName(user.getNickName()); |
| | | loginUser.setAvatar(user.getWxAvatar()); |
| | | loginUser.setOpenid(openid); |
| | | } |
| | | // 生成token |
| | | LoginHelper.loginByDevice(loginUser, DeviceType.XCX); |
| | | recordLogininfor(loginUser.getTenantId(), loginUser.getUsername(), Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")); |
| | | LoginVo loginVo = new LoginVo(); |
| | | // 生成令牌 |
| | | loginVo.setToken(StpUtil.getTokenValue()); |
| | | loginVo.setUserInfo(loginUser); |
| | | return loginVo; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 退出登录 |