发表于: 2017-10-26 21:20:13

1 677


一.今天完成的主要事情

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

感觉还是有一些危险,很有可能还要延期


返回列表 返回列表
评论

    分享到