发表于: 2017-10-26 21:20:13
1 679
一.今天完成的主要事情
1.完成查看用户详情接口
接口代码如下:
/**
* @Description: 查询用户详情接口
* @param: id 用户ID
* @param: type 调用时机
* @return: 返回相应的jsp页面
* @throws: Exception
* @author: zhangxin
* @Date: 2017-10-26
*/
@RequestMapping(value = "/a/u/user/{id}", method = RequestMethod.GET)
public String getUser(HttpServletRequest request,
HttpServletResponse response, ModelMap model, @PathVariable Long id,
Integer type)
throws Exception {
log.info("getUser() parameters : id : " + id + "type : " + type);
Integer validateResult = UserUtil.validateParameterOfGetUser(type);
if (validateResult < 0){
model.addAttribute("code", validateResult);
return "/common/failure";
}
User user = new User();
UserBankRelation userBankRelation;
Bank bank;
try {
//获取用户对象
User userData = userService.getObjectById(id);
if (DataUtils.isNullOrEmpty(userData)) {
log.info("Couldn't find user data by id, id is :" + id);
model.addAttribute("code", -2000);
return "/common/failure";
}
log.info("get user data, userId is:" + user.getId());
Long defaultCardId = userData.getDefaultCardId();
log.info("get field defaultCardId from user, defaultCardId is: " + defaultCardId);
//如果用户没有默认的银行卡,则相应信息为NULL
if (defaultCardId < 0) {
userBankRelation = null;
bank = null;
} else {
//获取用户银行关联表对象
userBankRelation = userBankRelationService.getObjectById(defaultCardId);
log.info("get userBankRelation data, userBankRelationId is :" + userBankRelation.getId());
if (DataUtils.isNullOrEmpty(userBankRelation)) {
log.info("Couldn't find userBankRelation by userBankRelationId, userBankRelationId is :"
+ defaultCardId);
model.addAttribute("code", -4);
return "/common/failure";
}
//获取银行对象
Long bankId = userBankRelation.getBankId();
log.info("get field bankId from userBankRelation, bankId is:" + bankId);
bank = bankService.getObjectById(bankId);
if (DataUtils.isNullOrEmpty(bank)) {
log.info("Couldn't find bank by bankId, bankId is :" + bankId);
model.addAttribute("code", -4);
return "/common/failure";
}
log.info("get bank data, bankId is :" + bank.getId());
}
//根据不同类型返回不同数据
user.setId(userData.getId());
user.setVerification(userData.getVerification());
user.setMessageChecked(userData.getMessageChecked());
if (type >= 1) {
user.setName(userData.getName());
user.setCellphone(userData.getCellphone());
user.setAsset(userData.getAsset());
user.setAccumulatedIncome(userData.getAccumulatedIncome());
if (type == 2) {
user.setUserSerialNumber(userData.getUserSerialNumber());
user.setIDNo(userData.getIDNo());
user.setAddress(userData.getAddress());
user.setEmail(userData.getEmail());
}
}
model.addAttribute("user", user);
model.addAttribute("userBankRelation", userBankRelation);
model.addAttribute("bank", bank);
model.addAttribute("code", 0);
} catch (Throwable t) {
t.printStackTrace();
log.error(t.getMessage());
log.error("get user error,id is " + id);
model.addAttribute("code", -1);
}
return "/polyFinance-pub-service/user/json/userDetailJson";
}
2.完成第一次重构,主要对功能类中方法的命名,文档注释的要素,以及日志的打印进行重构,功能类的命名仿照dao层的实现类
比如:一个方法的功能是验证接口中的参数,那么该类方法的命名统一为validateParametersOf接口名,如:
validateParametersOfGetContentList
文档注释按照java开发规范补充了一些要素,具体可以查看以上代码
日志的打印做了进一步的优化,如果是一个对象,不打印整个对象,而是只打印该对象的id,如图
3.对接口初步进行压测
测试的标准通过询问金超,得知测试的标准是20个线程,1秒内启动,循环25次,整体90%Line要求要在200ms内,TPS吞吐量要在100以上
对照该标准,对查询银行列表接口进行测试
测试出数据为:
吞吐量达标,但是90%Line不达标
明天再继续优化一下吧
二.明天计划完成的事情
1.对各个接口进行测试
2.继续对代码进行重构,这次重构主要针对用常量代替数字,对于一些可能常用的要修改的参数放在配置文件中
三.遇到的问题
测试不达标,可是这个接口已经是比较简单的接口了,接口实现的功能就是获取10个ID,然后通过IDList获取对象,然后用Jsp页面返回,实在不知道继续该如何优化了,明天再研究研究吧
四.收获
以上
五.项目进度情况
接口写完了,接下来要重构代码,测试接口,codereview
感觉还是有一些危险,很有可能还要延期
评论