微信小程序结合后台数据管理实现商品数据的动态展示、维护

微信小程序给我们提供了一个很好的开发平台,可以用于展现各种数据和实现丰富的功能,本篇随笔介绍微信小程序结合后台数据管理实现商品数据的动态展示、维护,介绍如何实现商品数据在后台管理系统中的维护管理,并通过小程序的请求Web API 平台获取JSON数据在小程序界面上进行动态展示。

1、整体性的架构设计

我们整体性的架构设计,包含一个Web管理后台、一个Web API统一接口层、当然还有数据库什么,另外还有一个小程序客户端。整个架构体系还是以我之前随笔介绍的《整合微信小程序的Web API接口层的架构设计》内容为蓝本

整个体系以Web API为主提供服务,同时后台管理系统通过各种界面维护着数据的增删改等基础管理工作。

Web API的分层,我们可以通过下图来了解具体的分层结构。

Web API 是一个统一的出口,因此会整合很多Web API控制器,以提供所有业务的接口,因此对Web API 控制器的管理就显得很重要,这里建议引入Area区域进行管理控制器类,这种各个模块就能够很好分门别类的进行管理了。

如下图所示是我们的Web API项目的控制器Area区域分类,把微信公众号、企业号、小程序、基础框架、第三方接口、CRM等内容进行不同的划分。

而后台管理系统,我们通过下面的来了解整体功能,整个后台管理系统使用了Bootstrap的框架进行前端处理。

各种账号的维护如下所示。

2、后台管理系统的数据维护

前面介绍了,后台管理和Web API层是分开的,它们的数据最终都是集中在一个数据库上,实现我们所要的数据集中化管理。

我们言归正题,介绍如何实现商品数据的后台管理,数据数据我们分为几种类型,方便在前端界面展示。

商品编辑界面包括对基础信息的修改、封面和Banner图片的维护、以及商品多个展示图片、商品详细介绍的内容维护,如下界面所示。

除了商品的封面图片以及Banne图片外,我们在小程序的商品详细界面里面,需要在顶端展示多个可以滚动的图片效果,那么我们需要维护商品的图片,如下界面所示。

当然商品的详细信息需要一个富文本的编辑器来进行图片文字的编辑处理,如下界面所示。

HTML图文的编辑,我们这里是用SummerNote插件来进行处理,这个控件的使用非常方便,另外通过修改onImageUpload回调函数,可以实现图片的随时上传处理。

        function initEditor() {
            $('#Note').summernote({
                lang: 'zh-CN',       // default: 'en-US'
                height: 600,         // set editor height
                minHeight: null,    // set minimum height of editor
                maxHeight: null,    // set maximum height of editor
                focus: true,         // set focus to editable area after initializing summe
                callbacks: {
                    onImageUpload: function (files) { //the onImageUpload API
                        img = sendFile(files[0]);
                    }
                }
            });
        }
        //提交文件到服务器处理
        function sendFile(file) {
            data = new FormData();
            data.append("file", file);
            //增加额外的参数
            data.append("folder", '商品信息');
            data.append("guid", $("#ID").val());

            $.ajax({
                data: data,
                type: "POST",
                url: "/FileUpload/Upload",
                cache: false,
                contentType: false,
                processData: false,
                success: function (json) {
                    var data = $.parseJSON(json);
                    var url = data.urls[0];
                    $("#Note").summernote('insertImage', url, 'image name'); // the insertImage API
                }
            });
        }

3、小程序整合Web API接口实现数据展示

上面介绍了管理后台的数据维护,我们就是基于上面的数据模型,在小程序上实现商品数据的展示的。

下图是小程序的商品展示首图,其中包括了顶部Banner栏目、中间的商品分类、底部的商品信息展示几部分。

其中Banner栏目的是一个swiper界面组件,商品类型使用了scroll-view来展示,而商品信息则是使用普通的View处理即可。

 整个界面的视图部分代码如下所示。

<!--pages/product/index.wxml-->
<!--1px = 750/320 = 2.34rpx;-->
<view class="container">
   <view class="swiper-container">
        <swiper class="swiper_box"
                    autoplay="{{autoplay}}" interval="{{interval}}" duration="{{duration}}" bindchange="swiperchange">
            <block wx:for="{{banners}}">
                <swiper-item>
                    <image bindtap="tapBanner" data-id="{{item.ID}}" src="{{item.Banner}}" class="slide-image" width="750rpx" height="562.5rpx"/>
                </swiper-item>
            </block>
        </swiper>
        <view class="dots">
            <block wx:for="{{banners}}" wx:key="unique">
                <view class="dot{{index == swiperCurrent ? ' active' : ''}}"></view>
            </block>
        </view>
   </view>

    <view class="type-container">
        <scroll-view class="type-navbar" scroll-x="true" style="width: 100%">
            <view class="type-box" wx:for-items="{{categories}}">
                <view id="{{item.id}}" class="type-navbar-item {{activeCategoryId == item.id ? 'type-item-on' : ''}}" bindtap="tabClick">
                    {{item.name}}
                </view>
            </view>
        </scroll-view>
    </view>
    <view class="goods-container">
        <view class="goods-box" wx:for-items="{{goods}}" wx:key="{{index}}" bindtap="toDetailsTap" data-id="{{item.ID}}">
           <view class="img-box">
              <image src="{{item.Picture}}" class="image"/>
           </view>
           <view class="goods-title">{{item.ProductName}}</view>
        </view>
    </view>
    <view hidden="{{loadingMoreHidden ? true : false}}" class="no-more-goods">没有更多啦</view>
</view>

其中小程序的数据是通过后台的JS文件实现数据的加载绑定的。

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    var that = this;

    this.getCategorys();
    this.getTopBanners();
    this.getGoodsList(0);
  },

其中上面的几个函数就是分别通过Web API来获取对应的JSON数据的,函数代码如下所示。

 //获取顶部Banner的数据
  getTopBanners : function() {
    //获取产品列表
    var url = config.product_api;//'http://localhost:27206/api/Framework/Product/list'
    var data ={
      status : 1, //推荐
      pageindex : 1,
      pagesize: 10
    }
    app.utils.get(url, data).then(res=> {
      this.setData({
        banners : res.list
      })
    });
  },
  //获取商品类型
  getCategorys : function() {
    var url = config.category_api;//'http://localhost:27206/api/Framework/Product/GetProductType'
    app.utils.get(url, {}).then(res=> {
      var that = this;
      var categories = [{id:0, name:"全部"}];
      for(var i=0;i<res.length;i++){
        categories.push(res[i]);
      }
      that.setData({
        categories:categories,
        activeCategoryId:0
      });
    });
  },
  //获取商品列表
  getGoodsList: function (categoryId) {
    if (categoryId == 0) {
      categoryId = "";
    }
    this.setData({
      goods: [],
      loadingMoreHidden: true
    });
    //获取产品列表
    var url = config.product_api;//'http://localhost:27206/api/Framework/Product/list'
    var data = {
      type: categoryId,
      status: '', //所有状态
      pageindex: 1,
      pagesize: 50
    }
    app.utils.get(url, data).then(res => {
      this.setData({
        goods: res.list,
        loadingMoreHidden: false,
      })
    });
  },

如果你对上面请求数据的代码

    app.utils.get(url, data).then(res=> {
      this.setData({
        banners : res.list
      })
    });

有疑问,你可以参考我的随笔《在微信小程序的JS脚本中使用Promise来优化函数处理》了解Promise插件的使用过程,这里通过引入Promise以及JS的模块化方式,可以直接重用这些通用的JS函数,

而详细部分内容,则是需要滚动展示商品的多个图片,另外还需要展示详细的HTML内容,HTML内容的展示使用富文本转化插件wxParse即可实现,这部分在随笔《在微信小程序中使用富文本转化插件wxParse》有详细的使用介绍。

商品详细内容的视图代码如下所示。

<import src="../../utils/wxParse/wxParse.wxml" />
<view class="container">
   <view class="swiper-container">
        <swiper class="swiper_box"
            autoplay="{{autoplay}}" interval="{{interval}}" duration="{{duration}}" bindchange="swiperchange">
            <block wx:for="{{goodsDetail.pics}}">
                <swiper-item>
                    <image src="{{item.pic}}" class="slide-image" width="355" height="150"/>
                </swiper-item>
            </block>
        </swiper>
        <view class="dots">
            <block wx:for="{{goodsDetail.pics}}" wx:key="unique">
                <view class="dot{{index == swiperCurrent ? ' active' : ''}}"></view>
            </block>
        </view>
   </view>
   <view class="goods-info">
        <view class="goods-title">{{goodsDetail.ProductName}}</view>
        <view class="goods-price" hidden="true">¥ {{goodsDetail.Price}}</view>
        <view class="goods-text">{{goodsDetail.Description}}</view>
   </view>
    <view class="goods-des-info">
        <view class="label-title">商品介绍</view>
        <view class="goods-text">
            <template is="wxParse" data="{{wxParseData:article.nodes}}"/>
         </view>
    </view>

</view>

其中后台的JS主要负责详细信息的获取和绑定工作。

  onLoad: function (e) {
    var that = this;

    //获取商品详细信息
    var url = config.product_detail_api;//'http://localhost:27206/api/Framework/Product/getdetail';
    var data = {id: e.id};
    app.utils.get(url, data).then(res => {
        console.log(res);
        that.data.goodsDetail = res;
        that.setData({
          goodsDetail:res
        });
        WxParse.wxParse('article', 'html', res.Note, that, 5);
    });
  },

最后来段视频了解下整体性的功能展示。

本文转自博客园伍华聪的博客,原文链接:微信小程序结合后台数据管理实现商品数据的动态展示、维护,如需转载请自行联系原博主。

时间: 2024-10-24 11:50:22

微信小程序结合后台数据管理实现商品数据的动态展示、维护的相关文章

C#开发微信门户及应用(47) - 整合Web API、微信后台管理及前端微信小程序的应用方案

在微信开发中,我一直强调需要建立一个比较统一的Web API接口体系,以便实现数据的集中化,这样我们在常规的Web业务系统,Winform业务系统.微信应用.微信小程序.APP等方面,都可以直接调用基于JSON数据格式的Web API接口,在我之前的几篇随笔中,对这方面都有一定的介绍,本篇继续这个主题,细致深入的阐述如何在接口和源码的基础上整合Web API.微信后台管理及前端微信小程序的应用方案. 1.基于Web API的微信开发框架 首先我们各个业务模块,都应该围绕着Web API进行展开,

微信小程序云端增强 SDK接入

[引自第九程序的博客]一.XpmJS 是啥 XpmJS可以链接任何云端资源,为小程序.移动应用提供云资源通道和后端能力.降低开发门槛,提升小程序的开发效率.无需编写后端代码,即可实现用户登录.WebSocket 通信.微信支付.云端数据表格.文件存储等功能.虽然 PHP 是最好的编程语言, 但是使用 XpmJS 后, 无需学习包括 PHP 在内的任何后端语言,用 Javascript 即可搞定一切,NodeJS 也不用! 二.为啥 XpmJS 从代码结构上看 XpmJS 更优雅!因为使用了 Pr

微信小程序-详解微信登陆、微信支付、模板消息_javascript技巧

微信公众平台近日悄然开始内测微信小程序(微信公众号)功能,引来无数开发者和普通用户关注,微信支付的能力,是随着小程序的发布一并推出的,具有介绍如下: wx.login(OBJECT) 调用接口获取登录凭证(code)进而换取用户登录态信息,包括用户的唯一标识(openid) 及本次登录的 会话密钥(session_key).用户数据的加解密通讯需要依赖会话密钥完成. OBJECT参数说明: success返回参数说明: 示例代码: //app.js App({ onLaunch: functio

即速应用:2017微信小程序变现能力及消费用户洞察报告

根据小程序近期卓越的市场表现,创业者可能要重新思考小程序的真正价值. 在小程序公测一周年之际,即速应用对外宣布,在其平台上制作并且成功上线的小程序,已经突破了2万款.这些小程序主要集中在零售电商.餐饮.休闲娱乐.教育.旅游等行业领域.同时,即速应用还发布了一份<小程序变现能力及消费用户洞察数据报告>.报告显示,小程序经过将近一年的时间发展,变现能力已经凸显,其中零售电商和餐饮行业两大领域的小程序月流水环比增长在8月时均已超过60%.此外从报告中还可以看出,小程序已经基本渗透到微信活跃用户人群中

微信小程序适合应用到哪些场景?

微信小程序未来运用场景非常多,有一个场景很有意思,就是点菜. 去吃饭的人在一个微信群里,扔一个点菜的小程序到群里,虽然大家各自还在路上,但是已经可以开始点菜,订桌了. 以前点菜的app很多,但是都没法像这个这么简单好用. 因为,人们的即时沟通就是在微信,微信群里. 往人群里扔有用的小工具,那么大家随手使用小工具就是自然而然的事情(小程序).为了使用某工具还得把人往别处拉,拉不动的,累s了(app).小程序还有哪些运用场景呢?听听朋友们是怎么说的 ※ 智慧酒店服务管理系统行业 ※小程序可以应用的场

微信小程序第一手实践分享

本文讲的是微信小程序第一手实践分享,今天是微信小程序正式上线的第一天,从小程序公布.内测到今天,市面上对于小程序众说纷纭,小程序的到来给我们(微信开发)带来了什么,仅仅是又多了一种推广渠道吗?又或者是真的像外界说的那样它将取代APP?今天就和大家分享我个人对小程序的理解以及开发过程中的一些体会. 一.如何理解小程序 张小龙是基于他对未来服务场景--所见即所得的信息交互过程提出的小程序,他认为微信新形式的服务不应当只是停留在原有公众号订阅.推送的基础上:而应当更类似于APP支持一些扩展开发的能力但

移动开发之微信小程序——资料集合

本文转载自:知乎 有需要下载的客官可可以点击知乎去下载相关资料 一:官方地址集合:1:官方工具:https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html?t=14764346784612:简易教程:https://mp.weixin.qq.com/debug/wxadoc/dev/?t=14764346775993:设计指南:https://mp.weixin.qq.com/debug/wxadoc/design/index

天河微信小程序入门:阿里云tomcat免费配置https

天河君在第一时间通过了微信小程序验证,开启了我的微信小程序之旅.因为天河君之前是一名后端狗,对前端不是很了解,所以几乎可以认为是从零开始学做微信小程序.也希望有志在微信小程序方向做点事情的朋友能够和我一起,共同进步,以致千里. 上一次是天河君在通过验证之后,兴奋的立即上手,在手机上跑了一回微信小程序.冷静下来后,天河发现,之前的很多demo在手机上都用不了,因为公测后得到了appId,结果导致无法与后台通讯,appId和后台的服务器域名是绑定的.没有后台的小程序是不完整的,于是天河开始着手打通前

上线两个月,微信小程序给那些用身体支持它的人带来了什么?

刚过了尝鲜期就被唱衰,究竟是小程序的尴尬还是围观群众的尴尬? 1 月 9 日,微信小程序上线.从上线之初的刷爆朋友圈到被尝鲜用户打入冷宫,从一夜之间小程序微信讨论群暴增到群活跃度明显下降,似乎创意不是很多,也没找到盈利方式,成为了大家对小程序的普遍感受. 据艾瑞咨询 2 月 10 日发布的<2017 年中国网民针对微信小程序使用与开发状况调查报告>,有 42.1% 的用户添加了 6-10 个小程序,体验后选择继续使用的用户占调查用户的 11.5% ,选择继续开发小程序的应用开发者占 9.2%,