Browse Source

im login

master
tangmingyou 4 years ago
parent
commit
37bf9db8ad
  1. 24
      doc/db/so-im.chnr.json
  2. 8
      im-common/src/main/java/net/sopod/soim/common/constant/Consts.java
  3. 17
      im-common/src/main/java/net/sopod/soim/common/constant/LogicConsts.java
  4. 5
      im-das-api/im-das-user-api/src/main/java/net/sopod/soim/das/user/api/model/entity/ImUser.java
  5. 2
      im-das-api/im-das-user-api/src/main/java/net/sopod/soim/das/user/api/service/UserDasService.java
  6. 6
      im-das/im-das-user/src/main/java/net/sopod/soim/das/user/service/UserDasServiceImpl.java
  7. 2
      im-das/im-das-user/src/main/resources/application.yml
  8. 6
      im-entry-http/src/main/java/net/sopod/soim/entry/http/controller/AuthController.java
  9. 14
      im-service-api/im-logic-user-api/src/main/java/net/sopod/soim/logic/user/auth/model/ImAuth.java
  10. 18
      im-service-api/im-logic-user-api/src/main/java/net/sopod/soim/logic/user/auth/service/AuthService.java
  11. 2
      im-service-api/im-logic-user-api/src/main/java/net/sopod/soim/logic/user/auth/service/UserAuthService.java
  12. 2
      im-service-api/im-router-api/src/main/java/net/sopod/soim/router/api/service/AuthStoreService.java
  13. 2
      im-service/im-logic-user/src/main/java/net/sopod/soim/logic/user/LogicUserApplication.java
  14. 23
      im-service/im-logic-user/src/main/java/net/sopod/soim/logic/user/config/AuthConfig.java
  15. 29
      im-service/im-logic-user/src/main/java/net/sopod/soim/logic/user/service/UserAuthServiceImpl.java
  16. 2
      im-service/im-router/src/main/java/net/sopod/soim/router/service/AuthStoreServiceImpl.java

24
doc/db/so-im.chnr.json

@ -4,7 +4,7 @@
"avatar": "", "avatar": "",
"version": "3.5.7", "version": "3.5.7",
"createdTime": "2022-3-7 15:11:08", "createdTime": "2022-3-7 15:11:08",
"updatedTime": "2022-4-14 16:00:46", "updatedTime": "2022-4-20 23:20:02",
"profile": { "profile": {
"default": { "default": {
"db": "8FE7C65E-40EB-41B6-B60E-79063AFF6273", "db": "8FE7C65E-40EB-41B6-B60E-79063AFF6273",
@ -1026,7 +1026,27 @@
} }
], ],
"correlations": [], "correlations": [],
"indexes": [] "indexes": [
{
"defKey": "idx_account_status",
"defName": null,
"unique": false,
"comment": "",
"fields": [
{
"fieldDefKey": "BB5539DD-5A96-4729-AF84-205D99479F51",
"ascOrDesc": "A",
"id": "C8BEC04D-D87C-45DE-97C5-D03C3B7A2EB9"
},
{
"fieldDefKey": "ED141994-B3F8-42C8-96AE-91244E115A35",
"ascOrDesc": "A",
"id": "FF7AA195-A640-4E60-B12D-6DDDD562C758"
}
],
"id": "359FE803-740A-4200-A215-525BED9E9761"
}
]
}, },
{ {
"id": "E79C9C4C-FFC3-44BB-BD98-4F44F528B4B8", "id": "E79C9C4C-FFC3-44BB-BD98-4F44F528B4B8",

8
im-common/src/main/java/net/sopod/soim/common/constant/Consts.java

@ -1,11 +1,11 @@
package net.sopod.soim.common.constant; package net.sopod.soim.common.constant;
public class Consts { public interface Consts {
public static int KB = 1024; int KB = 1024;
public static int MB = KB * KB; int MB = KB * KB;
public static int GB = KB * MB; int GB = KB * MB;
} }

17
im-common/src/main/java/net/sopod/soim/common/constant/LogicConsts.java

@ -0,0 +1,17 @@
package net.sopod.soim.common.constant;
/**
* LogicConsts
*
* @author tmy
* @date 2022-04-20 22:19
*/
public interface LogicConsts {
Integer STATUS_NORMAL = 1;
Integer STATUS_DISABLED = 2;
Integer STATUS_DELETED = 3;
}

5
im-das-api/im-das-user-api/src/main/java/net/sopod/soim/das/user/api/model/entity/ImUser.java

@ -8,6 +8,7 @@ import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import net.sopod.soim.das.user.api.config.LogicTables; import net.sopod.soim.das.user.api.config.LogicTables;
import java.io.Serializable;
import java.util.Date; import java.util.Date;
/** /**
@ -19,7 +20,9 @@ import java.util.Date;
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
@TableName(LogicTables.IM_USER) @TableName(LogicTables.IM_USER)
public class ImUser { public class ImUser implements Serializable {
private static final long serialVersionUID = -5647990265689699268L;
/** id */ /** id */
@TableId(value = "id", type= IdType.INPUT) @TableId(value = "id", type= IdType.INPUT)

2
im-das-api/im-das-user-api/src/main/java/net/sopod/soim/das/user/api/service/UserDasService.java

@ -12,6 +12,6 @@ public interface UserDasService {
ImUser getUserById(Long id); ImUser getUserById(Long id);
ImUser getUserByAccount(String account); ImUser getNormalUserByAccount(String account);
} }

6
im-das/im-das-user/src/main/java/net/sopod/soim/das/user/service/UserDasServiceImpl.java

@ -3,6 +3,7 @@ package net.sopod.soim.das.user.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import net.sopod.soim.common.constant.LogicConsts;
import net.sopod.soim.das.user.api.model.entity.ImUser; import net.sopod.soim.das.user.api.model.entity.ImUser;
import net.sopod.soim.das.user.api.service.UserDasService; import net.sopod.soim.das.user.api.service.UserDasService;
import net.sopod.soim.das.user.dao.UserMapper; import net.sopod.soim.das.user.dao.UserMapper;
@ -26,9 +27,10 @@ public class UserDasServiceImpl implements UserDasService {
} }
@Override @Override
public ImUser getUserByAccount(String account) { public ImUser getNormalUserByAccount(String account) {
LambdaQueryWrapper<ImUser> accountQuery = new QueryWrapper<ImUser>().lambda() LambdaQueryWrapper<ImUser> accountQuery = new QueryWrapper<ImUser>().lambda()
.eq(ImUser::getAccount, account); .eq(ImUser::getAccount, account)
.eq(ImUser::getStatus, LogicConsts.STATUS_NORMAL);
return userMapper.selectOne(accountQuery); return userMapper.selectOne(accountQuery);
} }

2
im-das/im-das-user/src/main/resources/application.yml

@ -16,6 +16,8 @@ dubbo:
group: im-user group: im-user
protocol: protocol:
port: 3011 port: 3011
consumer:
check: false
mybatis-plus: mybatis-plus:
mapper-locations: classpath:mapper/*.xml mapper-locations: classpath:mapper/*.xml

6
im-entry-http/src/main/java/net/sopod/soim/entry/http/controller/AuthController.java

@ -2,7 +2,7 @@ package net.sopod.soim.entry.http.controller;
import net.sopod.soim.entry.http.model.ao.PwdAuthAO; import net.sopod.soim.entry.http.model.ao.PwdAuthAO;
import net.sopod.soim.logic.user.auth.model.ImAuth; import net.sopod.soim.logic.user.auth.model.ImAuth;
import net.sopod.soim.logic.user.service.UserAuthService; import net.sopod.soim.logic.user.auth.service.UserAuthService;
import org.apache.dubbo.config.annotation.DubboReference; import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
@ -24,9 +24,7 @@ public class AuthController {
@PostMapping("/pwdAuth") @PostMapping("/pwdAuth")
public ImAuth pwdAuth(@RequestBody PwdAuthAO authAO) { public ImAuth pwdAuth(@RequestBody PwdAuthAO authAO) {
ImAuth imAuth = userAuthService.pwdAuth(authAO.getAccount(), authAO.getPassword()); return userAuthService.pwdAuth(authAO.getAccount(), authAO.getPassword());
String accessToken = imAuth.getAccessToken();
return imAuth;
} }
} }

14
im-service-api/im-logic-user-api/src/main/java/net/sopod/soim/logic/user/auth/model/ImAuth.java

@ -1,6 +1,9 @@
package net.sopod.soim.logic.user.auth.model; package net.sopod.soim.logic.user.auth.model;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
/** /**
* LoginParam * LoginParam
@ -9,10 +12,17 @@ import lombok.Data;
* @date 2022-03-31 21:06 * @date 2022-03-31 21:06
*/ */
@Data @Data
public class ImAuth { @Accessors(chain = true)
public class ImAuth implements Serializable {
private static final long serialVersionUID = 879498316013292363L;
private String accessToken; private boolean success;
private String authToken;
private long expireMs; private long expireMs;
private String message;
} }

18
im-service-api/im-logic-user-api/src/main/java/net/sopod/soim/logic/user/auth/service/AuthService.java

@ -1,18 +0,0 @@
package net.sopod.soim.logic.user.auth.service;
import net.sopod.soim.logic.user.auth.model.ImAuth;
/**
* AuthService
*
* @author tmy
* @date 2022-03-31 21:03
*/
public interface AuthService {
/**
* 登录请求
*/
void login(ImAuth imAuth);
}

2
im-service-api/im-logic-user-api/src/main/java/net/sopod/soim/logic/user/service/UserAuthService.java → im-service-api/im-logic-user-api/src/main/java/net/sopod/soim/logic/user/auth/service/UserAuthService.java

@ -1,4 +1,4 @@
package net.sopod.soim.logic.user.service; package net.sopod.soim.logic.user.auth.service;
import net.sopod.soim.logic.user.auth.model.ImAuth; import net.sopod.soim.logic.user.auth.model.ImAuth;

2
im-service-api/im-router-api/src/main/java/net/sopod/soim/router/api/service/AuthStoreService.java

@ -10,6 +10,6 @@ import net.sopod.soim.router.api.model.CacheRes;
*/ */
public interface AuthStoreService { public interface AuthStoreService {
CacheRes cacheToken(Long userId, String token); CacheRes storageToken(Long userId, String token, Long expireMs);
} }

2
im-service/im-logic-user/src/main/java/net/sopod/soim/logic/user/LogicUserApplication.java

@ -3,6 +3,7 @@ package net.sopod.soim.logic.user;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo; import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
/** /**
* UserMain * UserMain
@ -11,6 +12,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
* @date 2022-03-26 01:41 * @date 2022-03-26 01:41
*/ */
@EnableDubbo(scanBasePackages = {"net.sopod.soim.logic.user.service"}) @EnableDubbo(scanBasePackages = {"net.sopod.soim.logic.user.service"})
@EnableConfigurationProperties
@SpringBootApplication @SpringBootApplication
public class LogicUserApplication { public class LogicUserApplication {

23
im-service/im-logic-user/src/main/java/net/sopod/soim/logic/user/config/AuthConfig.java

@ -0,0 +1,23 @@
package net.sopod.soim.logic.user.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
/**
* AuthConfig
*
* @author tmy
* @date 2022-04-20 22:29
*/
@Component
@ConfigurationProperties(prefix = "auth")
@Data
public class AuthConfig {
/** 登录token过期时间(秒) */
private Integer authTokenExpire = 3 * 60;
}

29
im-service/im-logic-user/src/main/java/net/sopod/soim/logic/user/service/UserAuthServiceImpl.java

@ -1,12 +1,20 @@
package net.sopod.soim.logic.user.service; package net.sopod.soim.logic.user.service;
import net.sopod.soim.common.util.ImClock;
import net.sopod.soim.common.util.StringUtil;
import net.sopod.soim.common.util.TokenUtil;
import net.sopod.soim.das.user.api.model.entity.ImUser; import net.sopod.soim.das.user.api.model.entity.ImUser;
import net.sopod.soim.das.user.api.service.UserDasService; import net.sopod.soim.das.user.api.service.UserDasService;
import net.sopod.soim.logic.user.auth.model.ImAuth; import net.sopod.soim.logic.user.auth.model.ImAuth;
import net.sopod.soim.logic.user.auth.service.UserAuthService;
import net.sopod.soim.logic.user.config.AuthConfig;
import org.apache.dubbo.config.annotation.DubboReference; import org.apache.dubbo.config.annotation.DubboReference;
import org.apache.dubbo.config.annotation.DubboService; import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.util.StringUtils;
import java.util.concurrent.CompletableFuture; import javax.annotation.Resource;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
/** /**
* AuthServiceImpl * AuthServiceImpl
@ -20,14 +28,25 @@ public class UserAuthServiceImpl implements UserAuthService {
@DubboReference @DubboReference
private UserDasService userDasService; private UserDasService userDasService;
@Resource
private AuthConfig authConfig;
@Override @Override
public ImAuth pwdAuth(String account, String password) { public ImAuth pwdAuth(String account, String password) {
ImUser imUser = userDasService.getUserByAccount(account); ImUser imUser = userDasService.getNormalUserByAccount(account);
if (imUser == null) { if (imUser == null) {
return null; return new ImAuth().setSuccess(false).setMessage("账号不存在");
}
if (StringUtils.isEmpty(imUser.getPassword())
|| !Objects.equals(imUser.getPassword(), password)) {
return new ImAuth().setSuccess(false).setMessage("密码有误");
} }
// TODO status, String token = TokenUtil.genToken(imUser.getId());
return null; return new ImAuth()
.setSuccess(true)
.setAuthToken(token)
.setExpireMs(ImClock.millis()
+ TimeUnit.SECONDS.toMillis(authConfig.getAuthTokenExpire()));
} }
} }

2
im-service/im-router/src/main/java/net/sopod/soim/router/service/AuthStoreServiceImpl.java

@ -23,7 +23,7 @@ public class AuthStoreServiceImpl implements AuthStoreService {
} }
@Override @Override
public CacheRes cacheToken(Long userId, String token) { public CacheRes storageToken(Long userId, String token, Long expireMs) {
// 从内存中获取 // 从内存中获取
tokenStore.put(userId, token); tokenStore.put(userId, token);

Loading…
Cancel
Save