美文网首页
分布式架构项目(下)

分布式架构项目(下)

作者: 极速魔法 | 来源:发表于2020-11-01 13:08 被阅读0次

    课程模块

    登录和登出

    // 当刷新页面,组件创建成功之后,立刻检测本地储存中是否存在用户对象 
    this.userDTO=JSON.parse(localStorage.getItem("user")); if(this.userDTO != null) { 
        this.isLogin = true; // 已登录 
    }
    ...
    this.isLogin = true; // 更新登录状态 
    // 将登录成功 的对象信息保存到本地储存中
    localStorage.setItem("user", JSON.stringify(this.userDTO));
    

    课程详情

    // 将课程对象传递到课程详情组件 
    this.$router.push({ name: "Course", params: { course: item } });
    
    // 路由获得参数
    this.$route.params.course
    

    章节状态

    1. 用户是否登录 isLogin
      1. 没有登录,第一张前两节,显示试看;
      2. 第三节开始 显示加锁;
      3. 其余章加锁
    2. 已登录,查询当前用户所有购买的课程,当前课程是否在用户购买的课程中
      1. 已登录,没有购买,第一张前两节显示 试看;
      2. 第三节开始 显示加锁;
      3. 其余章加锁
    3. 已登录,已购买,显示播放;其余章显示播放

    点击播放视频

    1. 课程信息中查找即将播放课时视频的地址
    for (let i = 0; i < this.course.courseSections.length; i++) {
      let section = this.course.courseSections[i];
    
      for (let j = 0; j < section.courseLessons.length; j++) {
        let lesson = section.courseLessons[j]; // 每节课
    
        if (lesson.courseMedia != null) {
          if (this.lessonid == lesson.courseMedia.lessonId) {
            console.log("视频地址:" + lesson.courseMedia.fileEdk);
            //2.将小节视频的地址 赋值 给播放器,进行播放
            this.myvideo.src = lesson.courseMedia.fileEdk;
            return;
          }
        }
      }
    }
    

    留言模块

    点赞后的样式

    // 用字符串查找 取代 遍历数组,判断当前用户是否在 点赞的用户列表中
    JSON.stringify(comment.favoriteRecords).indexOf( user.content.id ) >= 0"
    

    保存留言中文乱码

    web层乱码

    username = new String( username.getBytes("ISO-8859-1"),"UTF-8" );
    

    保存数据库乱码

    jdbc:mysql://193.112.27.27:3306/edu?serverTimezone=GMT&amp;useUnicode=true&amp;characterEncoding=UTF-8"
    

    用户模块

    微信登录

    OAuth协议

    OAuth与密码区别

    • 令牌是短期的
    • 令牌可以数据所有者被撤销
    • 令牌有权限范围

    token字符串转为对象

    Token token = JSON.parseObject(tokenString,Token.class);

    二维码在谷歌浏览器bug

    iframe 未添加sandbox 属性

    d.sandbox = "allow-scripts allow-top-navigation allow-same-origin"), // 允许多种请求
    

    订单模块

    微信支付

    // 待dom更新之后再用二维码渲染其内容 
    this.$nextTick(function(){ this.createCode(); // 直接调用会报错:TypeError: Cannot read property 'appendChild' of null });
    
    // 生成二维码 
    createCode(){ // QRCode(存放二维码的dom元素id,二维码的属性参数) 
    let qrcode = new QRCode('qrcode',{ 
        width:200, // 二维码的宽度
        height:200, // 二维码的高度 
        text:"我爱你中国" // 二维码中包含的信息 
        }); 
    }
    

    支付流程

    1. 编写商户信息,写入map中
    2. 生成数字签名,商户信息转成xml格式
    3. xml数据post请求发送给微信支付平台,生成订单
    4. 微信支付平台返回xml格式数据,将响应转换成map返回给前端,生成支付二维码
    5. 检查支付状态
      1. 编写商户信息
      2. 生成数字签名

    相关文章

      网友评论

          本文标题:分布式架构项目(下)

          本文链接:https://www.haomeiwen.com/subject/kcwyvktx.html