发表于: 2018-03-08 19:30:27

1 784


今天完成的事情:

1.编写静默注册逻辑

//新华美育静默注册
@RequestMapping(value = "/a/xinhuameiyu", method = RequestMethod.GET)
public void xinHuaMeiYuQuietRegister(ModelMap model,HttpServletRequest request,HttpServletResponse response,
                                    String token) {
   registerLog.info("/a/xinhuameiyu GET ,the parameter is token" + token);

   Map<String, String> parameterMap;
   User xinHuaMeiYuUser = new User();
   UserOpenidRelation xinHuaMeiYuUserOpenidRelation = new UserOpenidRelation();
   Long existUserOpenidRelationId;
   Long existUserId = null;
   Long finalUserId;

   try {
       //参数校验
       if (null == token) {
           registerLog.error("参数缺失:token");
           //todo 重定向至无引导登录页面
           response.sendRedirect("");
           return;
       }


       parameterMap = CooperatorUtil.decodeParameter(token);
       String username = parameterMap.get("username");
       String name = parameterMap.get("name");
       String mobile = parameterMap.get("mobile");
       String client = parameterMap.get("client");


       //username为新华美育用户唯一标识符,不能为空;client为识别跳转向PC端或H5页面根据,不能为空
       if (null == username || null == client) {
           //todo 转向引导登录接口
       }

       //若用户-openid关系表中已存在数据(已经过静默注册)则直接跳转至登录接口
       existUserOpenidRelationId = userOpenidRelationService.getUserOpenidRelationIdByOpenidAndType(username, "xinhuameiyu");
       if (null != existUserOpenidRelationId) {
           //todo 跳转至登录接口
           response.sendRedirect("http://dev.pc.academy.ptteng.com/redirect/xinhuameiyu?token=" + token);
           return;
       }


       xinHuaMeiYuUser.setAlias(username);
       xinHuaMeiYuUserOpenidRelation.setType("xinhuameiyu");
       xinHuaMeiYuUserOpenidRelation.setOpenid(username);

       //若参数存在手机号码,则设置手机号码
       if (StringUtils.isNotBlank(mobile)) {
           xinHuaMeiYuUser.setMobile(mobile);
           //若用户表中存在相同手机号码,则用户表只更新一个“name”字段
           existUserId = userService.getUserIdByMobile(mobile);
           if (DataUtils.isNotNullOrEmpty(existUserId)) {
               xinHuaMeiYuUser = userService.getObjectById(existUserId);
           }
       }

       //若name不为空,则更新进用户表中的name字段
       if (StringUtils.isNotBlank(name)) {
           xinHuaMeiYuUser.setName(name);
       }


       if (null == existUserId) {
           finalUserId = userService.insert(xinHuaMeiYuUser);
           registerLog.info("insert the new xinhuameiyu user,the id is :" + finalUserId);
       } else {
           finalUserId = existUserId;
           Boolean success = userService.update(xinHuaMeiYuUser);
           registerLog.info("update exist user, is success:" + success);
       }


       xinHuaMeiYuUserOpenidRelation.setUid(finalUserId);
       Long insertUserOpenidRelation = userOpenidRelationService.insert(xinHuaMeiYuUserOpenidRelation);
       registerLog.info("insert xinhuameiyu userOpenidRelation success , the id userOpenidRelation id is:" + insertUserOpenidRelation);

       response.sendRedirect("http://dev.pc.academy.ptteng.com/redirect/xinhuameiyu?token=" + token);
   } catch (Throwable t) {
       t.getStackTrace();
       userLog.error(t.getMessage());
       userLog.error("get xinhuameiyu user list error");
       model.addAttribute("code", -100000);
   }
}


写完的时候到11点,然后和新华美育交接了下,发现有些事情没和我们说,如下面第二点所示,注册的逻辑先停下来了



2..需求变更

今天新华美育这边说需要有两种,一种是带用户信息过来的,一种是不带用户信息的

但是翻看之前的记录并没有说过,后面和PM交流了下,他也没有和其他人员说过

他说他打电话说过……然而没有人和我说这件事情

PM也说之前是不知道的


现在要变更/新增需求:

①无参数过来的新华美育用户要引导注册,以便标识为新华美育用户,这需要前端的配合

②既然可以注册了,那就一定可以使用账号密码登录,那么之前说的不需要绑定绑定手机/邮箱是不成立了,并且之前如果没有手机和邮箱的话是不能登录的,要更改现有绑定、注册逻辑


3.编写订单查询逻辑

public static Map<String, Object> getXinHuaMeiYuUserList(String username,String mobile,Integer minOrderNumber,Integer maxOrderNumber,
                                                        Integer minOrderMoney,Integer maxOrderMoney,boolean count) {
   Map<String, Object> params = new HashMap<>();


   params.put("@table", " (SELECT\n" +
           "\t\t\tuser.id,COALESCE(SUM(lesson.price),0) AS lesson_money,COALESCE(SUM(user_member_relation.price),0) as member_money,COUNT(lesson.price) AS lesson_order_number,COUNT(user_member_relation.price) as member_order_number,\n" +
           "\t\t\tuser.mobile as mobile,academy_user.user_openid_relation.openid as username,academy_user.user_openid_relation.type as type\n" +
           "\t\tFROM\n" +
           "\t\tacademy_user.user\n" +
           "LEFT JOIN academy_user.uesr_course_relation ON user.id = uesr_course_relation.uid\n" +
           "LEFT JOIN academy_course.lesson ON uesr_course_relation.target_id = lesson.id \n" +
           "LEFT JOIN academy_user.user_member_relation ON user.id = user_member_relation.uid\n" +
           "LEFT JOIN academy_user.user_openid_relation ON user.id = user_openid_relation.uid  #这里可以写上openid = “xinhuameiyu”\n" +
           "\n" +
           "GROUP BY user.id)t ");


   if (StringUtils.isNotBlank(username)) {
       params.put("username & like", " '%" + username + "%' ");
   }

   if (StringUtils.isNotBlank(mobile)) {
       params.put(" mobile & like ", " '%" + mobile + "%'");
   }

   if (DataUtils.isNotNullOrEmpty(minOrderNumber)) {
       params.put("(lesson_order_number+member_order_number)+0 & >= ", " '" + minOrderNumber + "' ");
   }

   if (DataUtils.isNotNullOrEmpty(minOrderNumber)) {
       params.put("(lesson_order_number+member_order_number)+0 & <= ", " '" + maxOrderNumber + "' ");
   }

   if (DataUtils.isNotNullOrEmpty(minOrderMoney)) {
       params.put("(lesson_money+member_money)+0 & >= ", " '" + minOrderMoney + "' ");
   }

   if (DataUtils.isNotNullOrEmpty(maxOrderMoney)) {
       params.put("(lesson_money+member_money)+0 & <= ", " '" + maxOrderMoney + "' ");
   }

   params.put("t.type", " 'xinhuameiyu' ");

   if (count) {
       params.put("@query", " count(t.id) ");
   } else {
       params.put("@query", " t.id ");
   }




   return params;
}


发现之前写的SQL逻辑有点问题,遂改之

测试类:


生成结果:


使用左联结和子查询生成新表:

至此,多表联查已经进入熟练阶段




明天计划的事情:

完成后台4个接口

对应story:后台合作机构管理-用户统计


遇到的问题:

需求变更,前台接口无法继续编写



收获:

以上


进度:

项目开始时间:2018.03.03

方案评审时间:2018.03.05

预计demo时间:2018.03.12

延期风险:有

原因:需求变更

story进度:

进行中:【后台合作机构管理-用户统计】   【对接新华美育



返回列表 返回列表
评论

    分享到