Commit 85135b12 authored by 于桐's avatar 于桐

Merge branch 'tencent-slave' into add-log

* tencent-slave:
  主从库分离时,不能在同一线程内切换,写操作出错
  将容易存在写操作的从库查询服务copy一份
  测试腾讯云环境从库查询
parents fb71a7fc dcdb7bc5
......@@ -443,7 +443,7 @@ public class UserController implements IBaseController {
result.put("avatar", userAttached.getAvatar());
result.put("nick", userAttached.getNick());
}
UserDetail userDetail = userDetailService.findByUserId(userId);
UserDetail userDetail = userDetailService.findSlaveByUserId(userId);
if (userDetail != null) {
result.put("name", userDetail.getName());
result.put("sex", Optional.ofNullable(userDetail.getGender()).orElse(cn.quantgroup.xyqb.model.Gender.UNKNOWN).ordinal() + "");
......
......@@ -408,7 +408,7 @@ public class InnerController implements IBaseController {
@RequestMapping("/user_detail/search/phone")
@ApiOperation(httpMethod = "POST", value = "查询用户详情")
public JsonResult findUserDetailByPhone(String phoneNo) {
UserDetail userDetail = userDetailService.findByPhoneNo(phoneNo);
UserDetail userDetail = userDetailService.findSlaveByPhoneNo(phoneNo);
if (userDetail != null) {
return JsonResult.buildSuccessResult(null, UserDetailRet.getUserDetail(userDetail));
}
......
......@@ -12,11 +12,14 @@ import java.util.List;
*/
public interface IUserDetailService {
UserDetail findByUserId(Long userId);
UserDetail findSlaveByUserId(Long userId);
UserDetail saveUserDetail(UserDetail userDetail) throws DataIntegrityViolationException;
UserDetail findByPhoneNo(String phoneNo);
UserDetail findSlaveByPhoneNo(String phoneNo);
void updateUserQq(Long userId, String qq);
void updateUserEmail(Long userId, String email);
......
......@@ -25,6 +25,8 @@ public interface IUserService {
User findByPhoneInDb(String phone);
User findSlaveByPhoneInDb(String phone);
User findByUuidInDb(String uuid);
/**
......
package cn.quantgroup.xyqb.service.user.impl;
import cn.quantgroup.tech.db.DSType;
import cn.quantgroup.tech.db.TargetDataSource;
import cn.quantgroup.xyqb.entity.UserAttached;
import cn.quantgroup.xyqb.repository.IUserAttachedRepository;
import cn.quantgroup.xyqb.service.user.UserCenterService;
......@@ -28,10 +30,11 @@ public class UserCenterServiceImpl implements UserCenterService {
private IUserAttachedRepository userAttachedRepository;
@Override
@TargetDataSource(type = DSType.SLAVE)//查询从库
// @Cacheable(value = "userAttachedCache", key = "'xyqbUserAttached' + #userId", unless = "#result == null", cacheManager = "cacheManager")
public UserAttached searchUserAttachedByUserId(long userId) {
return userAttachedRepository.findByUserId(userId);
}
}
@Override
public List<UserAttached> searchUserAttachedListByUserId(List<Long> userIds) {
......
package cn.quantgroup.xyqb.service.user.impl;
import cn.quantgroup.tech.db.DSType;
import cn.quantgroup.tech.db.TargetDataSource;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.entity.UserDetail;
......@@ -59,6 +61,17 @@ public class UserDetailServiceImpl implements IUserDetailService {
userDetail.setEmail(AddressFilter.getEmail(userDetail.getPhoneNo(), userDetail.getEmail()));
return userDetail;
}
@Override
@TargetDataSource(type = DSType.SLAVE)//查询从库
public UserDetail findSlaveByUserId(Long userId) {
UserDetail userDetail = userDetailRepository.findByUserId(userId);
if (null == userDetail) {
return userDetail;
}
userDetail.setEmail(AddressFilter.getEmail(userDetail.getPhoneNo(), userDetail.getEmail()));
return userDetail;
}
@Override
public UserDetail saveUserDetail(UserDetail userDetail) throws DataIntegrityViolationException {
......@@ -77,6 +90,12 @@ public class UserDetailServiceImpl implements IUserDetailService {
return userDetailRepository.findByPhoneNo(phoneNo);
}
@Override
@TargetDataSource(type = DSType.SLAVE)//查询从库
public UserDetail findSlaveByPhoneNo(String phoneNo) {
return userDetailRepository.findByPhoneNo(phoneNo);
}
@Override
public void updateUserQq(Long userId, String qq) {
userDetailRepository.updateUserQq(qq, userId);
......
package cn.quantgroup.xyqb.service.user.impl;
import cn.quantgroup.tech.db.DSType;
import cn.quantgroup.tech.db.TargetDataSource;
import cn.quantgroup.user.enums.BizType;
import cn.quantgroup.user.enums.IncomeRangeEnum;
import cn.quantgroup.xyqb.Constants;
......@@ -100,6 +102,14 @@ public class UserServiceImpl implements IUserService, IBaseController {
}
@Override
@TargetDataSource(type = DSType.SLAVE)//查询从库
// @Cacheable(value = "usercache", key = "'xyqbuser' + #phone", unless = "#result == null", cacheManager = "cacheManager")
public User findSlaveByPhoneInDb(String phone) {
return userRepository.findByPhoneNo(phone);
}
@Override
@TargetDataSource(type = DSType.SLAVE)//查询从库
public Map<Long, String> findPhoneByIdsInDb(List<Long> userIds) {
if (CollectionUtils.isEmpty(userIds)) {
return Maps.newHashMap();
......
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