基于微信小程序的数码商城程序设计与实现(后台PHP+Mysql)

目 录
摘 要 I
ABSTRACT II
一、前言 1
1.1 研究的背景、目的和意义 1
1.2 国内外文献综述 2
1.3 研究的主要内容 3
二、系统相关技术研究 5
2.1 微信小程序 5
2.2 ThinkPHP 5 框架 7
2.3 RESTFul API 8
2.4 微信支付技术 10
2.5 MySQL数据库 12
三、需求分析与可行性研究 14
3.1 市场定位分析 14
3.2 可行性分析 14
3.3 需求目标 15
3.3.1 概述 15
3.3.2 商城整体说明 15
四、系统解决方案 17
4.1 设计方案的论证 17
4.1.1 设计方案的选择 17
4.1.2 工具的选择 17
4.2 设计方案的说明 18
4.2.1 系统总体描述 18
4.2.2 系统角色类型 18
4.2.3 系统规划 20
4.2.4 预期目的 20
4.2.5 技术要求 21
五、系统详细设计 22
5.1 系统模块架构 22
5.2 系统功能说明 22
5.2.1 系统登录模块 22
5.2.2 数码商城设置模块 23
5.2.3 数码商城内容更改模块 25
5.2.4 数码商城管理员模块 26
5.2.5 基本商城功能模块 27
5.3 数据字典 28
六、系统实现 31
6.1 模块实现的理论基础 31
6.2 系统登录模块的实现 31
6.3 设置数码商城信息模块的实现 31
6.4 数码商城选货模块的实现 39
6.4.1 选货模块 39
6.4.2 选货后编辑及提交模块 40
6.5 管理员审核模块 43
七、系统测试 45
7.1 概述 45
7.2 系统测试用例 45
7.3 测试总结 47
总 结 48
致 谢 49
参考文献 50
数码商城是一种新的消费模式,采用线上线下结合的消费模式,线下消费,线上付款。对于线下,其形式是:放一个数码商城到学生,这个数码商城归的人所共享,数码商城运营商放固定数量的商品进数码商城,用户消费的时候,直接拿数码商城里的东西,然后往数码商城里丢钱,自己找零,数码商城运营商定期去维护数码商城里的商品,是一种只适用于大数码商城园的高自觉、高素质人群的消费模式。
而这次我的开发任务是,将这个模式转移到线上,对用户而言,在用户端数码商城模块就相当于自己的一个“收藏夹”,用户可以定义这个“收藏夹”里放什么东西,后台商家收到用户的自定义信息之后,将会上门把客户选择的商品放进数码商城里,这个过程是免费的,因为用户还没有产生真正的消费。在线下,实体纸箱数码商城就是用户可以随时消费的“寝室超市”,其消费流程很简单,从数码商城里拿东西,在“收藏夹”(线上数码商城模块)快速找到商品进行线上付款,一切基于诚信。
微信已经通过它的大数据改变了当下的广告营销市场[7],而且因为它的轻量化和跨平台化,所以没有选择APP开发,避开了开发攻坚,安卓IOS双平台同步,软件推广三大难题,在电子商务发展的过程中,微信是一个很好的营销平台[8]。
整个商城是基于微擎版人人商城的二次开发,我的开发任务就是对人人商城进行数据库和代码逻辑分析,然后完成数码商城的功能开发以及数码商城数据库和人人商城数据库的融合,相当于在一块打了地基的土地上盖房子,本文转载自http://www.biyezuopin.vip/onews.asp?id=11098用成熟的底层写自己的逻辑模块。
这次选用的数据库是Mysql,利用HTML+JS+CSS技术完成前端页面的设计开发,用PHP+AJAX技术完成后台逻辑功能的实现[13]。系统一共有五大模块,其详细实现方法见以下各小节。

// app.js
App({
  d: {
    hostUrl: 'https://tao.leiang-ele.com/index.php',
    hostImg: 'http://img.ynjmzb.net',
    hostVideo: 'http://zhubaotong-file.oss-cn-beijing.aliyuncs.com',
    userId: 1,
    appId:"",
    appKey:"",
    ceshiUrl:'https://tao.leiang-ele.com/index.php',
  },
  onLaunch: function () {
    //调用API从本地缓存中获取数据
    var logs = wx.getStorageSync('logs') || []
    logs.unshift(Date.now())
    wx.setStorageSync('logs', logs);

    //login
    this.getUserInfo();
  },
  getUserInfo:function(cb){
    var that = this
    if(this.globalData.userInfo){
      typeof cb == "function" && cb(this.globalData.userInfo)
    }else{
      //调用登录接口
      wx.login({
        success: function (res) {
      
          var code = res.code;
        
          //get wx user simple info
          wx.getUserInfo({
            success: function (res) {
              that.globalData.userInfo = res.userInfo
              typeof cb == "function" && cb(that.globalData.userInfo);
              //get user sessionKey
              //get sessionKey
              that.getUserSessionKey(code);
            }
          });
        }
      });
    }
  },

  getUserSessionKey:function(code){
    //用户的订单状态
    var that = this;
    wx.request({
      url: that.d.ceshiUrl + '/Api/Login/getsessionkey',
      method:'post',
      data: {
        code: code
      },
      header: {
        'Content-Type':  'application/x-www-form-urlencoded'
      },
      success: function (res) {
        //--init data        
        var data = res.data;
        if(data.status==0){
          wx.showToast({
            title: data.err,
            duration: 2000
          });
          return false;
        }

        that.globalData.userInfo['sessionId'] = data.session_key;
        that.globalData.userInfo['openid'] = data.openid;
        that.onLoginUser();
      },
      fail:function(e){
        wx.showToast({
          title: '网络异常!err:getsessionkeys',
          duration: 2000
        });
      },
    });
  },
  onLoginUser:function(){
    var that = this;
    var user = that.globalData.userInfo;
    wx.request({
      url: that.d.ceshiUrl + '/Api/Login/authlogin',
      method:'post',
      data: {
        SessionId: user.sessionId,
        gender:user.gender,
        NickName: user.nickName,
        HeadUrl: user.avatarUrl,
        openid:user.openid
      },
      header: {
        'Content-Type':  'application/x-www-form-urlencoded'
      },
      success: function (res) {
        //--init data        
        var data = res.data.arr;
        var status = res.data.status;
        if(status!=1){
          wx.showToast({
            title: res.data.err,
            duration: 3000
          });
          return false;
        }
        that.globalData.userInfo['id'] = data.ID;
        that.globalData.userInfo['NickName'] = data.NickName;
        that.globalData.userInfo['HeadUrl'] = data.HeadUrl;
        var userId = data.ID;
        if (!userId){
          wx.showToast({
            title: '登录失败!',
            duration: 3000
          });
          return false;
        }
        that.d.userId = userId;
      },
      fail:function(e){
        wx.showToast({
          title: '网络异常!err:authlogin',
          duration: 2000
        });
      },
    });
  },
  getOrBindTelPhone:function(returnUrl){
    var user = this.globalData.userInfo;
    if(!user.tel){
      wx.navigateTo({
        url: 'pages/binding/binding'
      });
    }
  },

 globalData:{
    userInfo:null
  },

  onPullDownRefresh: function (){
    wx.stopPullDownRefresh();
  }

});






在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值