Commit f67547da authored by 于桐's avatar 于桐

Merge branch 'master' into data-upload

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