发表于: 2017-12-21 22:01:14
1 549
一.今天完成的主要事情
1.按照计划编写查询报名学员接口
接口代码如下:
@RequestMapping(value = "/a/u/enrollment/list", method = RequestMethod.GET)
public String getEnrollmentList(HttpServletRequest request, HttpServletResponse response, ModelMap model, Integer page,
Integer size, Long startTime, Long endTime, Integer type, Integer status, String platform,
Long schoolId) throws Exception {
//打印入参并计算page和start的值
log.info("Interface GET /a/u/enrollment/list,Method getEnrollmentList() parameters, page: " + page +
", size: " + size + ", startTime: " + startTime + ", endTime: " + endTime + ", type: " + type +
", status: " + status + ", platform: " + platform + ", schoolId: " + schoolId);
if (page == null) {
page = 1;
}
if (size == null) {
size = 10;
}
int start = (page - 1) * size;
if (start < 0) {
start = 0;
}
//校验参数
if (DataUtils.isNullOrEmpty(platform)) {
log.info("Parameter platform can not be null, platform: " + platform);
model.addAttribute("code", -1000);
return "/common/failure";
}
if (!platform.equals("school") && !platform.equals("center")) {
log.info("Error value of parameter platform, platform: " + platform);
model.addAttribute("code", -1001);
return "/common/failure";
}
if (platform.equals("school") && DataUtils.isNullOrEmpty(schoolId)) {
log.info("Parameter schoolId can not be null when platform=school, platform: " + platform +
", schoolId: " + schoolId);
model.addAttribute("code", -1001);
return "/common/failure";
}
if (DataUtils.isNotNullOrEmpty(type) && (type < 0 || type > 1)) {
log.info("Error value of parameter type, type: " + type);
model.addAttribute("code", -1001);
return "/common/failure";
}
if (DataUtils.isNotNullOrEmpty(status) && (status < 0 || status > 1)) {
log.info("Error value of parameter status, status: " + status);
model.addAttribute("code", -1001);
return "/common/failure";
}
try {
//创建动态查询条件,根据条件查询数据,包括IdList,ObjectList和total
List<Long> schoolIdList = new ArrayList<>();
if (platform.equals("school")) {
schoolIdList.add(schoolId);
}
Map<String, Object> queryEnrollmentDetailMap = DynamicUtil.getEnrollmentDetailParams(startTime,
endTime, type, platform, status, schoolIdList, false);
log.info("query enrollment_detail map: " + queryEnrollmentDetailMap);
List<Long> enrollmentDetailIdList = enrollmentDetailService.getIdsByDynamicCondition(EnrollmentDetail.class,
queryEnrollmentDetailMap, start, size);
log.info("get enrollmentDetail id list, list is: " + enrollmentDetailIdList);
List<EnrollmentDetail> enrollmentDetailList = null;
Long total = 0L;
if (CollectionUtils.isNotEmpty(enrollmentDetailIdList)) {
enrollmentDetailList = enrollmentDetailService.getObjectsByIds(enrollmentDetailIdList);
log.info("get enrollmentDetail data list, list size is: " + enrollmentDetailList.size());
Map<String, Object> countEnrollmentDetailMap = DynamicUtil.getEnrollmentDetailParams(startTime,
endTime, type, platform, status, schoolIdList, true);
log.info("count enrollment_detail map: " + countEnrollmentDetailMap);
total = enrollmentDetailService.getIdsByDynamicCondition(EnrollmentDetail.class,
countEnrollmentDetailMap, 0, Integer.MAX_VALUE).get(0);
log.info("get enrollmentDetail data total, total is: " + total);
}
if (platform.equals("center")) {
model.addAttribute("enrollmentDetailListCenter", enrollmentDetailList);
} else {
model.addAttribute("enrollmentDetailListSchool", enrollmentDetailList);
}
model.addAttribute("code", 0);
model.addAttribute("size", size);
model.addAttribute("total", total);
return "yi-nucleus-service/enrollmentDetail/json/enrollmentlListJson";
} catch (Throwable t) {
log.error(t.getMessage());
log.error("Method getEnrollmentList() error, page is: " + page + ", size is: " + size);
model.addAttribute("code", -1);
return "/common/failure";
}
}
接口的实现逻辑基本和之前的接口相同,现在需要思考的是如何对代码进行重构和优化,初步思路是获取page,size的部分可以抽象成为一个方法,校验参数可以抽象出来,其他的逻辑部分,如果有好几个接口用到的业务部分相同,也可以抽象出来,但目前的问题是校验参数每个接口基本都有,但是参数的个数和类型都不相同,直接抽象成为一个公共方法可能会有些困难,目前暂定先每个接口独自抽象,然后继续学习java面向对象的基础知识,比如反射,泛型等,后续再尝试继续优化.
2.编写更新报名学员接口
@RequestMapping(value = "/a/u/enrollment/{id}", method = RequestMethod.PUT)
public String updateEnrollmentDetail(HttpServletRequest request, HttpServletResponse response, ModelMap model,
@PathVariable Long id) throws Exception {
//打印入参
log.info("Interface PUT /a/u/enrollment/{id},Method updateEnrollmentDetail() parameter id: " + id);
//校验入参
//根据Id找到这条记录
try {
EnrollmentDetail enrollmentDetail = enrollmentDetailService.getObjectById(id);
if (DataUtils.isNullOrEmpty(enrollmentDetail)) {
log.info("Can not find enrollmentDetail Object by id, id is : " + id);
model.addAttribute("code", -1001);
return "/common/failure";
}
log.info("get enrollmentDetail object by id, id is : " + enrollmentDetail.getId());
enrollmentDetail.setStatus(0);
/*String managerIdStr = CookieUtil.getKeyIdentity(request, CookieUtil.UserID);
Long managerId = Long.parseLong(managerIdStr);
enrollmentDetail.setUpdateBy(managerId);*/
enrollmentDetailService.update(enrollmentDetail);
log.info("update enrollmentDetail status success, status is: " + enrollmentDetail.getStatus());
model.addAttribute("code", 0);
return "/common/success";
} catch (Throwable t) {
log.error(t.getMessage());
log.error("Method updateEnrollmentDetail() failed, id is : " + id);
model.addAttribute("code", -1);
return "/common/failed";
}
}
这个接口没什么说的,比较简单
二.明天计划完成的主要是事情
按照计划继续完成所属模块的接口
三.遇到的问题
暂无
四,收获
以上
五.项目进度情况
暂无延期风险
评论