Commit c3267062 authored by shiyu's avatar shiyu

用户接口修改

parent 7356469d
......@@ -57,4 +57,10 @@ public class UserRequestDto implements Entity {
private String remark;
/**
* 玩物得志登录后token
*/
private String token;
}
package com.wwdz.ch.db.impl;
import com.alibaba.dubbo.config.annotation.Reference;
import com.wwdz.ch.db.dao.UserDao;
import com.wwdz.ch.db.domain.User;
import com.wwdz.ch.db.domain.UserExample;
import com.wwdz.ch.db.mapper.UserMapper;
import com.wwdz.mall.common.vo.response.CloudServerResponse;
import com.wwdz.user.api.service.user.UserReadService;
import com.wwdz.user.api.service.user.UserWriteService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import java.util.Date;
import org.springframework.util.CollectionUtils;
import java.util.List;
@Repository
......@@ -16,34 +19,59 @@ public class UserDaoImpl implements UserDao {
@Autowired
private UserMapper userMapper;
@Reference
UserReadService userReadService;
@Reference
UserWriteService userWriteService;
@Override
public User queryByOid(String openId) {
UserExample example = new UserExample();
example.createCriteria().andWeixinOpenidEqualTo(openId).andDeletedEqualTo(false);
return userMapper.selectOneByExample(example);
CloudServerResponse<com.wwdz.user.api.model.user.User> cloudServerResponse = userReadService.getUserByOpenIdOrUnionId(null, openId);
if (cloudServerResponse.getCode() != 1001) {
return new User();
}
com.wwdz.user.api.model.user.User wUser = cloudServerResponse.getResult();
return User.of(wUser);
}
@Override
public User queryByMobile(String mobile) {
UserExample example = new UserExample();
example.or().andMobileEqualTo(mobile).andDeletedEqualTo(false);
return userMapper.selectOneByExample(example);
CloudServerResponse<com.wwdz.user.api.model.user.User> cloudServerResponse = userReadService.getByPhone(mobile);
if (cloudServerResponse.getCode() != 1001) {
return new User();
}
com.wwdz.user.api.model.user.User wUser = cloudServerResponse.getResult();
return User.of(wUser);
}
@Override
public User queryById(Long id) {
UserExample example = new UserExample();
example.or().andIdEqualTo(id).andDeletedEqualTo(false);
return userMapper.selectOneByExample(example);
CloudServerResponse<com.wwdz.user.api.model.user.User> cloudServerResponse = userReadService.getUserIsNotDelete(id);
if (cloudServerResponse.getCode() != 1001) {
return new User();
}
com.wwdz.user.api.model.user.User wUser = cloudServerResponse.getResult();
return User.of(wUser);
}
@Override
public boolean isExistedByNickname(Long userId, String nickname) {
UserExample example = new UserExample();
CloudServerResponse<List<com.wwdz.user.api.model.user.User>> cloudServerResponse = userReadService.getUsersByUnick(nickname);
List<com.wwdz.user.api.model.user.User> list = cloudServerResponse.getResult();
if (CollectionUtils.isEmpty(list)) {
return false;
}
long count = list.stream().filter(u->u.getUserId() != userId).count();
return count > 0;
/* UserExample example = new UserExample();
example.or().andIdNotEqualTo(userId).andNicknameEqualTo(nickname).andDeletedEqualTo(false);
return userMapper.countByExample(example) > 0;
return userMapper.countByExample(example) > 0;*/
}
@Deprecated
@Override
public boolean isExistedByWechatId(Long userId, String wechatId) {
UserExample example = new UserExample();
......@@ -53,14 +81,15 @@ public class UserDaoImpl implements UserDao {
@Override
public long insert(User user) {
userMapper.insert(user);
return user.getId();
com.wwdz.user.api.model.user.User wuser = User.convertToWWDZUser(user);
CloudServerResponse<Long> cloudServerResponse = userWriteService.add(wuser);
return cloudServerResponse.getResult();
}
@Override
public int updateById(User user) {
user.setUpdateTime(new Date());
return userMapper.updateByPrimaryKeySelective(user);
CloudServerResponse<Integer> cloudServerResponse = userWriteService.updateByUserId(User.convertToWWDZUser(user));
return cloudServerResponse.getResult();
}
@Override
......
......@@ -120,6 +120,7 @@ public class UserServiceImpl implements UserService {
@Override
public Result regCaptcha(UserRequestDto dto) {
try {
......@@ -193,6 +194,26 @@ public class UserServiceImpl implements UserService {
}
}
@Override
public Result finishLogin(UserRequestDto dto, HttpServletRequest request) {
Map<String, Object> result = new HashMap<>();
// 先登出其他
userTokenManager.removeToken(dto.getUserId());
String token = dto.getToken();
// 获取token
UserToken userToken = userTokenManager.generateToken(dto.getUserId(), token);
userToken.setSessionKey(UUID.randomUUID().toString().replace("-", ""));
result.put("token", dto.getToken());
result.put("tokenExpire", userToken.getExpireTime().toString());
User user = userDao.queryById(dto.getUserId());
// 缓存用户信息
String userKey = MessageFormat.format(CacheCodeConstants.USER_INFO_KEY, user.getId());
redisUtil.set(userKey, user, 2 * 60 * 60);
return Result.success(result);
}
@Transactional
@Override
public Result login(UserRequestDto dto, HttpServletRequest request) {
......@@ -592,7 +613,7 @@ public class UserServiceImpl implements UserService {
userTokenManager.removeToken(user.getId());
// 获取token
UserToken userToken = userTokenManager.generateToken(user.getId());
UserToken userToken = userTokenManager.generateToken(user.getId(), null);
userToken.setSessionKey(UUID.randomUUID().toString().replace("-", ""));
result.put("token", userToken.getToken());
result.put("tokenExpire", userToken.getExpireTime().toString());
......
......@@ -72,7 +72,7 @@ public class UserTokenManager {
return StringUtils.equals(token, idToken);
}
public UserToken generateToken(Long id) {
public UserToken generateToken(Long id, String token) {
UserToken userToken = null;
// userToken = idMap.get(id);
......@@ -81,7 +81,6 @@ public class UserTokenManager {
// idMap.remove(id);
// }
String token = CharUtil.getRandomString(32);
String key = TOKEN_PREFIX + token;
while (null != redisUtil.get(key)) {
token = CharUtil.getRandomString(32);
......@@ -103,6 +102,39 @@ public class UserTokenManager {
return userToken;
}
/*public UserToken generateToken(Long id) {
UserToken userToken = null;
// userToken = idMap.get(id);
// if(userToken != null) {
// tokenMap.remove(userToken.getToken());
// idMap.remove(id);
// }
String token = CharUtil.getRandomString(32);
String key = TOKEN_PREFIX + token;
while (null != redisUtil.get(key)) {
token = CharUtil.getRandomString(32);
key = TOKEN_PREFIX + token;
}
LocalDateTime update = LocalDateTime.now();
LocalDateTime expire = update.plusDays(1);
userToken = new UserToken();
userToken.setToken(token);
userToken.setUpdateTime(update);
userToken.setExpireTime(expire);
userToken.setUserId(id);
String data = gson.toJson(userToken);
redisUtil.set(key, data, SURVIVAL_TIME);
String idKey = TOKEN_ID_PREFIX + id;
redisUtil.set(idKey, data, SURVIVAL_TIME);
return userToken;
}*/
public String getSessionKey(Long userId) {
String idKey = TOKEN_ID_PREFIX + userId;
Object data = redisUtil.get(idKey);
......
......@@ -23,6 +23,17 @@ public interface UserService {
*/
Result loginByMobile(UserRequestDto dto, HttpServletRequest request);
/**
* 调用玩物得志登录接口成功后通知
*
* @param dto
* @param request
* @return
*/
Result finishLogin(UserRequestDto dto, HttpServletRequest request);
/**
* 快捷登录
*
......
......@@ -37,6 +37,17 @@ public class WxUserController {
private InviteRecordService inviteRecordService;
@ApiOperation(value = "调用玩物得志登录接口成功后通知")
@PostMapping("/finishLogin")
public Result finishLogin(@RequestBody UserRequestDto dto, HttpServletRequest request) {
logger.info("【请求开始】调用玩物得志登录接口成功后通知,请求参数:{}", JSON.toJSONString(dto));
return userService.finishLogin(dto, request);
}
@ApiOperation(value = "快捷登录")
@PostMapping("/login")
public Result login(@RequestBody UserRequestDto dto, HttpServletRequest request) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment