发表于: 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优先级写接口实现
三.遇到的问题
暂无
四,收获
以上
五.项目进度情况
有延期风险
评论