Commit f67547da authored by 于桐's avatar 于桐

Merge branch 'master' into data-upload

* master:
  调整日志打印,增加耗时区间
  主从库分离时,不能在同一线程内切换,写操作出错
  将容易存在写操作的从库查询服务copy一份
  日志长度还原
  测试腾讯云环境从库查询
  增加返回日志结果长度
parents 65db26d3 85135b12
...@@ -55,13 +55,23 @@ public class LogCallHttpAspect { ...@@ -55,13 +55,23 @@ public class LogCallHttpAspect {
hasException = true; hasException = true;
throw e; throw e;
} finally { } finally {
Stopwatch stop = stopwatch.stop(); long elapsed = stopwatch.stop().elapsed(TimeUnit.MILLISECONDS);
long elapsed = stop.elapsed(TimeUnit.MILLISECONDS);
String resultStr = result == null ? "" : objectMapper.writeValueAsString(result); String resultStr = result == null ? "" : objectMapper.writeValueAsString(result);
resultStr = resultStr.length() < 500 ? resultStr : resultStr.substring(0, 500); resultStr = resultStr.length() < 500 ? resultStr : resultStr.substring(0, 500);
log.info("[httpRequestLog],url:[{}],remoteIP:[{}],args:[{}],duration:[{}],exception:[{}],result:[{}]", log.info("[httpRequestLog],url:[{}],duration:[{}],[耗时区间]{},remoteIP:[{}],args:[{}],exception:[{}],result:[{}]",
request.getRequestURL(), remoteIP, args, elapsed, hasException, resultStr); request.getRequestURL(), elapsed, slowlyTag(elapsed), remoteIP, args, hasException, resultStr);
} }
return result; return result;
} }
private String slowlyTag(long elapsed) {
Long second = elapsed / 1000L;
String outTimeFormat = "[outTime_%s]";
StringBuffer sb = new StringBuffer();
// 3秒步长
for (int outTime = 3; outTime <= second; outTime ++) {
sb.append(String.format(outTimeFormat, outTime));
}
return sb.toString();
}
} }
...@@ -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() + "");
......
...@@ -59,6 +59,8 @@ import cn.quantgroup.xyqb.util.PasswordUtil; ...@@ -59,6 +59,8 @@ import cn.quantgroup.xyqb.util.PasswordUtil;
import cn.quantgroup.xyqb.util.ValidationUtil; import cn.quantgroup.xyqb.util.ValidationUtil;
import cn.quantgroup.xyqb.util.encrypt.Md5Util; import cn.quantgroup.xyqb.util.encrypt.Md5Util;
import cn.quantgroup.xyqb.validator.ChineseName; import cn.quantgroup.xyqb.validator.ChineseName;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.TypeReference;
import com.google.common.base.MoreObjects; import com.google.common.base.MoreObjects;
...@@ -406,7 +408,7 @@ public class InnerController implements IBaseController { ...@@ -406,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));
} }
...@@ -833,6 +835,7 @@ public class InnerController implements IBaseController { ...@@ -833,6 +835,7 @@ public class InnerController implements IBaseController {
} }
Address address = addressService.findByUserId(user.getId()); Address address = addressService.findByUserId(user.getId());
if (!Objects.isNull(address)) { if (!Objects.isNull(address)) {
log.info("[findUserAssociationModelByUser]获取用户地址address:{}", JSON.toJSONString(address));
bean.putAddressList(Collections.singletonList(address)); bean.putAddressList(Collections.singletonList(address));
} }
List<Contact> contacts = contactService.findByUserIdAndBizType(user.getId(), BizType.CASH, true); List<Contact> contacts = contactService.findByUserIdAndBizType(user.getId(), BizType.CASH, true);
......
...@@ -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