发表于: 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";

        }

    }

这个接口没什么说的,比较简单

二.明天计划完成的主要是事情

按照计划继续完成所属模块的接口

三.遇到的问题

暂无

四,收获

以上

五.项目进度情况

暂无延期风险


返回列表 返回列表
评论

    分享到