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 { ...@@ -443,7 +443,7 @@ public class UserController implements IBaseController {
result.put("avatar", userAttached.getAvatar()); result.put("avatar", userAttached.getAvatar());
result.put("nick", userAttached.getNick()); result.put("nick", userAttached.getNick());
} }
UserDetail userDetail = userDetailService.findByUserId(userId); UserDetail userDetail = userDetailService.findSlaveByUserId(userId);
if (userDetail != null) { if (userDetail != null) {
result.put("name", userDetail.getName()); result.put("name", userDetail.getName());
result.put("sex", Optional.ofNullable(userDetail.getGender()).orElse(cn.quantgroup.xyqb.model.Gender.UNKNOWN).ordinal() + ""); result.put("sex", Optional.ofNullable(userDetail.getGender()).orElse(cn.quantgroup.xyqb.model.Gender.UNKNOWN).ordinal() + "");
......
...@@ -408,7 +408,7 @@ public class InnerController implements IBaseController { ...@@ -408,7 +408,7 @@ public class InnerController implements IBaseController {
@RequestMapping("/user_detail/search/phone") @RequestMapping("/user_detail/search/phone")
@ApiOperation(httpMethod = "POST", value = "查询用户详情") @ApiOperation(httpMethod = "POST", value = "查询用户详情")
public JsonResult findUserDetailByPhone(String phoneNo) { public JsonResult findUserDetailByPhone(String phoneNo) {
UserDetail userDetail = userDetailService.findByPhoneNo(phoneNo); UserDetail userDetail = userDetailService.findSlaveByPhoneNo(phoneNo);
if (userDetail != null) { if (userDetail != null) {
return JsonResult.buildSuccessResult(null, UserDetailRet.getUserDetail(userDetail)); return JsonResult.buildSuccessResult(null, UserDetailRet.getUserDetail(userDetail));
} }
......
...@@ -12,11 +12,14 @@ import java.util.List; ...@@ -12,11 +12,14 @@ import java.util.List;
*/ */
public interface IUserDetailService { public interface IUserDetailService {
UserDetail findByUserId(Long userId); UserDetail findByUserId(Long userId);
UserDetail findSlaveByUserId(Long userId);
UserDetail saveUserDetail(UserDetail userDetail) throws DataIntegrityViolationException; UserDetail saveUserDetail(UserDetail userDetail) throws DataIntegrityViolationException;
UserDetail findByPhoneNo(String phoneNo); UserDetail findByPhoneNo(String phoneNo);
UserDetail findSlaveByPhoneNo(String phoneNo);
void updateUserQq(Long userId, String qq); void updateUserQq(Long userId, String qq);
void updateUserEmail(Long userId, String email); void updateUserEmail(Long userId, String email);
......
...@@ -25,6 +25,8 @@ public interface IUserService { ...@@ -25,6 +25,8 @@ public interface IUserService {
User findByPhoneInDb(String phone); User findByPhoneInDb(String phone);
User findSlaveByPhoneInDb(String phone);
User findByUuidInDb(String uuid); User findByUuidInDb(String uuid);
/** /**
......
package cn.quantgroup.xyqb.service.user.impl; 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.entity.UserAttached;
import cn.quantgroup.xyqb.repository.IUserAttachedRepository; import cn.quantgroup.xyqb.repository.IUserAttachedRepository;
import cn.quantgroup.xyqb.service.user.UserCenterService; import cn.quantgroup.xyqb.service.user.UserCenterService;
...@@ -28,6 +30,7 @@ public class UserCenterServiceImpl implements UserCenterService { ...@@ -28,6 +30,7 @@ public class UserCenterServiceImpl implements UserCenterService {
private IUserAttachedRepository userAttachedRepository; private IUserAttachedRepository userAttachedRepository;
@Override @Override
@TargetDataSource(type = DSType.SLAVE)//查询从库
// @Cacheable(value = "userAttachedCache", key = "'xyqbUserAttached' + #userId", unless = "#result == null", cacheManager = "cacheManager") // @Cacheable(value = "userAttachedCache", key = "'xyqbUserAttached' + #userId", unless = "#result == null", cacheManager = "cacheManager")
public UserAttached searchUserAttachedByUserId(long userId) { public UserAttached searchUserAttachedByUserId(long userId) {
return userAttachedRepository.findByUserId(userId); return userAttachedRepository.findByUserId(userId);
......
package cn.quantgroup.xyqb.service.user.impl; 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.Constants;
import cn.quantgroup.xyqb.entity.User; import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.entity.UserDetail; import cn.quantgroup.xyqb.entity.UserDetail;
...@@ -60,6 +62,17 @@ public class UserDetailServiceImpl implements IUserDetailService { ...@@ -60,6 +62,17 @@ public class UserDetailServiceImpl implements IUserDetailService {
return userDetail; 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 @Override
public UserDetail saveUserDetail(UserDetail userDetail) throws DataIntegrityViolationException { public UserDetail saveUserDetail(UserDetail userDetail) throws DataIntegrityViolationException {
String idNo = userDetail.getIdNo(); String idNo = userDetail.getIdNo();
...@@ -77,6 +90,12 @@ public class UserDetailServiceImpl implements IUserDetailService { ...@@ -77,6 +90,12 @@ public class UserDetailServiceImpl implements IUserDetailService {
return userDetailRepository.findByPhoneNo(phoneNo); return userDetailRepository.findByPhoneNo(phoneNo);
} }
@Override
@TargetDataSource(type = DSType.SLAVE)//查询从库
public UserDetail findSlaveByPhoneNo(String phoneNo) {
return userDetailRepository.findByPhoneNo(phoneNo);
}
@Override @Override
public void updateUserQq(Long userId, String qq) { public void updateUserQq(Long userId, String qq) {
userDetailRepository.updateUserQq(qq, userId); userDetailRepository.updateUserQq(qq, userId);
......
package cn.quantgroup.xyqb.service.user.impl; 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.BizType;
import cn.quantgroup.user.enums.IncomeRangeEnum; import cn.quantgroup.user.enums.IncomeRangeEnum;
import cn.quantgroup.xyqb.Constants; import cn.quantgroup.xyqb.Constants;
...@@ -100,6 +102,14 @@ public class UserServiceImpl implements IUserService, IBaseController { ...@@ -100,6 +102,14 @@ public class UserServiceImpl implements IUserService, IBaseController {
} }
@Override @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) { public Map<Long, String> findPhoneByIdsInDb(List<Long> userIds) {
if (CollectionUtils.isEmpty(userIds)) { if (CollectionUtils.isEmpty(userIds)) {
return Maps.newHashMap(); 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