0


基于微信小程序的校园二手交易平台小程序

文末联系获取源码

开发语言:Java

框架:ssm

JDK版本:JDK1.8

服务器:tomcat7

数据库:mysql 5.7/8.0

数据库工具:Navicat11

开发软件:eclipse/myeclipse/idea

Maven包:Maven3.3.9

浏览器:谷歌浏览器

小程序框架:uniapp

小程序开发软件:HBuilder X

小程序运行软件:微信开发者

一、前言介绍

社会发展日新月异,用计算机应用实现数据管理功能已经算是很完善的了,但是随着移动互联网的到来,处理信息不再受制于地理位置的限制,处理信息及时高效,备受人们的喜爱。所以各大互联网厂商都瞄准移动互联网这个潮流进行各大布局,经过多年的大浪淘沙,各种移动操作系统的不断面世,而目前市场占有率最高的就是微信小程序,

本次开发一套微信小程序的校园二手物品交易平台,有管理员和学生两个角色。管理员可以在后台管理个人中心,学生管理,商品分类管理,商品信息管理,购买信息管理,出售信息管理,交流论坛,系统管理。学生可以注册登录,发布和购买商品,还可以收藏商品和在交流论坛发帖。微信小程序的校园二手物品交易平台服务端用Java开发的网站后台,接收并且处理微信小程序端传入的json数据,数据库用到了MySQL数据库作为数据的存储。这样就让用户用着方便快捷,都通过同一个后台进行业务处理,而后台又可以根据并发量做好部署,用硬件和软件进行协作,满足于数据的交互式处理,让用户的数据存储更安全,得到数据更方便。

二、系统结构

在管理员功能模块确定下来的基础上,对管理员各个功能进行设计,确定管理员功能的详细模块。绘制的管理员功能结构见下图。

三、微信小程序功能实现

3.1首页

微信小程序输入正确的账号密码后就会默认进入首页显示界面。首页主要有轮播图,搜索框,以及下面的导航为主要组成部分。

3.2交流论坛

学生点击交流论坛可以看到交流论坛界面,有搜索栏,可以随便点击某个交流论坛进行查看。

3.3出售信息

学生登录可以在出售信息界面看到新增按钮,可以点击按钮发布出售信息。

3.4我的

我的里面主要是可以进行退出,点击小齿轮就可以选择退出当前账户,也可以点击我的收藏管理,可以看到自己收藏的所有信息。

四、管理员后台功能实现

4.1学生管理

此页面让管理员管理学生数据,管理员可以对学生信息进行添加,修改,删除,查询操作。

4.2商品信息管理

此页面让管理员管理商品信息数据,商品信息管理页面见下图。此页面主要实现商品信息方面信息的新增,查询和刷新操作。

4.3商品分类

此页面显示商品分类信息,商品分类页面见下图。此页面主要让管理员对商品分类进行查询,添加,修改,删除操作。

4.4交流论坛

此页面显示交流论坛信息。交流论坛页面见下图。管理员可以在此界面对交流论坛进行添加,修改,查询,删除等操作。

五、部分核心代码

5.1登录系统主要代码

form.on('submit(login)', function(data) {
                data = data.field;
                if (vue.roles.length!=1) {
                    if (!data.role) {
                layer.msg('请选择登录用户类型', {
                time: 2000,
                icon: 5
                });
                return false;
            }
                } else {
                        data.role = vue.roles[0].tableName;
                }
                http.request(data.role + '/login', 'get', data, function(res) {
                    layer.msg('登录成功', {
                        time: 2000,
                        icon: 6
                    });
                    // 登录凭证
                    localStorage.setItem('Token', res.token);
                    var roleName = "";
                    if(typeof(jquery('#role:checked').attr('title')) == "undefined") {
                        roleName = vue.roles[0].roleName;
                    } else {
                        roleName = jquery('#role:checked').attr('title');
                    }
                    localStorage.setItem('role', roleName);
                    // 当前登录用户角色
                    localStorage.setItem('userTable', data.role);
                    localStorage.setItem('sessionTable', data.role);
                    // 用户名称
                    localStorage.setItem('adminName', data.username);
                    http.request(data.role + '/session', 'get', {}, function(res) {
                        // 用户id
                        localStorage.setItem('userid', res.data.id);
                if(res.data.vip) {
                localStorage.setItem('vip', res.data.vip);
                }
                        // 路径访问设置
                        window.location.href = '../../index.html';
                    })
                    
                });
                return false
            });

        });

        /**
         * 跳转登录
         * @param {Object} tablename
         */
        function registerClick(tablename) {
            window.location.href = '../' + tablename + '/register.html?tablename=' + tablename;
        }

5.2用户注册主要代码

*/
    @IgnoreAuth
    @RequestMapping("/register")
    public R register(@RequestBody YonghuEntity yonghu){
        //ValidatorUtils.validateEntity(yonghu);
        YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", yonghu.getYonghuming()));
        if(user!=null) {
            return R.error("注册用户已存在");
        }
        Long uId = new Date().getTime();
        yonghu.setId(uId);
        yonghuService.insert(yonghu);
        return R.ok();
    }

5.3小程序端首页主要代码

methods: {
        jump(url) {
        if (this.queryIndex == 0) {
            localStorage.setItem('indexQueryCondition', document.getElementById("dianyingxinxidianyingmingcheng").value);
        }
              jump(url)
        },
    queryChange(event) {
        this.queryIndex = event.target.value;
        if (this.queryIndex == 0) {
            this.dianyingxinxidianyingmingcheng = this.queryList[event.target.value].queryName;
        }
    }
      }
    });

    layui.use(['layer', 'form', 'element', 'carousel', 'http', 'jquery'], function() {
        var layer = layui.layer;
        var element = layui.element;
        var form = layui.form;
        var carousel = layui.carousel;
        var http = layui.http;
        var jquery = layui.jquery;
    vue.baseurl=http.baseurl;
      // 获取轮播图 数据
      http.request('config/list', 'get', {
        page: 1,
        limit: 5
      }, function(res) {
        if (res.data.list.length > 0) {
          let swiperList = [];
          res.data.list.forEach(element => {
            if (element.value != null) {
              swiperList.push({
                img: http.baseurl + element.value
              });
            }
          });

          vue.swiperList = swiperList;

          vue.$nextTick(() => {
            carousel.render({
                elem: '#test1',
                width: '89.6%',
                height: '500px',
                arrow: 'hover',
                anim: 'default',
                autoplay: 'true',
                interval: '3000',
                indicator: 'inside'
            });

          })

          // vue.$nextTick(()=>{
          //   window.xznSlide();
          // });
        }
      });

  
      http.request('news/list', 'get', {
        page: 1,
        order: 'desc'
      }, function(res) {
        var newsList = res.data.list;
        for(var i = 0; i<newsList.length; i++) {
            let d = newsList[i].addtime.split(' ')
            d = d[0].split('-')
            newsList[i].year = d[0]
            newsList[i].month = d[1] + '-' + d[2]
        }
        
        vue.newsList = newsList;
        if (newsList.length > 0 && newsList.length <= 2) {
          vue.leftNewsList = res.data.list
        } else {
          var leftNewsList = []
          for (let i = 0; i <= 2; i++) {
            leftNewsList.push(newsList[i]);
          }
          vue.leftNewsList = leftNewsList
        }
        if (newsList.length > 2 && newsList.length <= 8) {
          var rightNewsList = []
          for (let i = 3; i <= newsList.length; i++) {
            rightNewsList.push(newsList[i]);
          }
          vue.rightNewsList = rightNewsList
        }

        let flag = 10;
        let options = {"navigation":{"nextEl":".swiper-button-next","prevEl":".swiper-button-prev"},"slidesPerView":5,"loop":true,"spaceBetween":20,"autoplay":{"delay":3000,"disableOnInteraction":false}}
        options.pagination = {el:'null'}
        if(flag == 3) {
            vue.$nextTick(() => {
                new Swiper('#newsnews', options)
            })
        }
        
        if(flag == 6) {
            let sixSwiper = {
                loop: true,
                speed: 2500,
                slidesPerView: 3,
                spaceBetween: 10,
                centeredSlides: true,
                watchSlidesProgress: true,
                autoplay: {
                  delay: 0,
                  stopOnLastSlide: false,
                  disableOnInteraction: false
                }
            }
            
            vue.$nextTick(() => {
                new Swiper('#new-list-6', sixSwiper)
            })
        }
      });

      // 获取推荐信息
      var autoSortUrl = "dianyingxinxi/autoSort";
      if(localStorage.getItem('userid')!=null) {
          autoSortUrl = "dianyingxinxi/autoSort2";
      }
      http.request(autoSortUrl, 'get', {
        page: 1,
    limit: 3 * 1
        }, function(res) {
            vue.dianyingxinxiRecommend = res.data.list
            let flag = 1;
            let options = {"navigation":{"nextEl":".swiper-button-next","prevEl":".swiper-button-prev"},"slidesPerView":5,"loop":true,"spaceBetween":20,"autoplay":{"delay":3000,"disableOnInteraction":false}}
            options.pagination = {el:'null'}
            if(flag == 3) {
                vue.$nextTick(() => {
                        new Swiper('#recommenddianyingxinxi', options)
                })
            }
            
        
            if(flag == 5) {
                vue.$nextTick(() => {
                    var swiper = new Swiper('#recommend-five-swiperdianyingxinxi', {
                        loop: true,
                        speed: 500,
                        slidesPerView: 5,
                        spaceBetween: 10,
                        autoplay: {"delay":3000,"disableOnInteraction":false},
                        centeredSlides: true,
                        watchSlidesProgress: true,
                        on: {
                            setTranslate: function() {
                                slides = this.slides
                                for (i = 0; i < slides.length; i++) {
                                    slide = slides.eq(i)
                                    progress = slides[i].progress
                                    // slide.html(progress.toFixed(2)); //看清楚progress是怎么变化的
                                    slide.css({
                                        'opacity': '',
                                        'background': ''
                                    });
                                    slide.transform(''); //清除样式
                    
                                    slide.transform('scale(' + (1.5 - Math.abs(progress) / 4) + ')');
                                }
                            },
                            setTransition: function(transition) {
                                for (var i = 0; i < this.slides.length; i++) {
                                    var slide = this.slides.eq(i)
                                    slide.transition(transition);
                                }
                            },
                        },
                        navigation: {"nextEl":".swiper-button-next","prevEl":".swiper-button-prev"},
                        pagination: {"el":".swiper-pagination","clickable":true},
                    });
                })
            }
        });

  });

本文转载自: https://blog.csdn.net/qq_61827376/article/details/129644889
版权归原作者 一点素材 所有, 如有侵权,请联系我们删除。

“基于微信小程序的校园二手交易平台小程序”的评论:

还没有评论