发表于: 2017-10-15 22:03:30

3 634


一.今天完成的主要事情

1.学习了接口编写需要注意的基本事项

     首先将入参打印出来,如果没有其他的参数,打印接口路径以及一道横线

     接着根据接口文档,判断参数是否为空,参数的值是否正确,如果不正确,返回错误提示和相应的错误码

     参数正确,继续逻辑代码的编写,每一次查询数据库之后都要打印结果,如果是List,则打印list长度;如果查出来的数据在后续中还要继续使用(比如IDList),则要判断是否为空,确定不为空之后再去执行后续的操作.

     不要使用大段大段的Trycatch,trycatch尽量只包裹住最关键的部分

2.编写了三个接口

三个接口分别是查询产品列表接口,查询产品详情接口,查询查询内容接口

这三个接口是实现需求优先级最高的story所需的接口,而且正好相对简单,逻辑代码不是非常复杂.

以下是查询产品列表接口代码

/**
* 14.查询产品列表
*
* @param recommended
* @param productStatus
* @return
* @throws ServiceException
* @throws ServiceDaoException
*/

@RequestMapping(value = "/a/product/list ", method = RequestMethod.GET)
public String getProductList(HttpServletRequest request,
HttpServletResponse response, ModelMap model, Integer page,
Integer size, Integer recommended, Integer productStatus) throws Exception {

log.info("getProductList() parameters :" + "recommended: " + recommended +
", productStatus: " + productStatus);

if (page == null) {
page = 1;
}
if (size == null) {
size = 10;
}
int start = (page - 1) * size;
if (start < 0) {
start = 0;
}
log.info("page: " + page + ", size: " + size);

if (DataUtils.isNullOrEmpty(recommended) || DataUtils.isNullOrEmpty(productStatus)) {
log.info("Parameters recommended and productStatus can not be NULL");
model.addAttribute("code", -1000);
return "/common/failure";
}
if (recommended > 1 || recommended < 0) {
log.info("Error parameter value. Error recommended : " + recommended);
model.addAttribute("code", -1001);
return "/common/failure";
}
if (productStatus > 1 || productStatus < 0) {
log.info("Error parameter value. Error productStatus " + productStatus);
model.addAttribute("code", -1001);
return "/common/failure";
}

List<Long> productIds;
List<Product> products = null;
Integer total;
try {
//recommended为1,代表查询的是精品推荐产品,如果为0,则代表查询所有产品(包括精品推荐产品)
       if (recommended == 1) {
productIds = productService.getProductIdsByRecommendedAndStatusOrderByLevel(
recommended, productStatus, start, size);
total = productService.countProductIdsByRecommendedAndStatusOrderByLevel(recommended, productStatus);
} else {
productIds = productService.getProductIdsByStatusOrderByLevel(productStatus, start, size);
total = productService.countProductIdsByStatusOrderByLevel(productStatus);
}
log.info("get countProductIdsByRecommendedAndStatusOrderByLevel size is " + productIds.size());
log.info("get product count is " + total);

if (CollectionUtils.isNotEmpty(productIds)){
products = productService.getObjectsByIds(productIds);
log.info("get product data is " + products.size());
}

model.addAttribute("code", 0);
model.addAttribute("size", size);
model.addAttribute("total", total);
model.addAttribute("productList", products);

} catch (Throwable t) {
t.printStackTrace();
log.error(t.getMessage());
log.error("get product list error, page is: " + page + " , size is: " + size);
model.addAttribute("code", -1);
}

return "/polyFinance-business-service/product/json/productListJson";
}

该接口POSTMAN测试结果为:

这只是正常情况,异常情况也有处理...

二.明天计划完成的事情

1.继续按照story优先级写接口实现

三.遇到的问题

暂无

四,收获

以上

五.项目进度情况

有延期风险



返回列表 返回列表
评论

    分享到