当前位置:   article > 正文

基于微信小程序的校园约拍小程序_基于微信小程序校园约拍系统的设计与实现

基于微信小程序校园约拍系统的设计与实现

文末联系获取源码

开发语言:Java

框架:ssm

JDK版本:JDK1.8

服务器:tomcat7

数据库:mysql 5.7/8.0

数据库工具:Navicat11

开发软件:eclipse/myeclipse/idea

Maven包:Maven3.3.9

浏览器:谷歌浏览器

小程序框架:uniapp

小程序开发软件:HBuilder X

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

一、前言介绍  

 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本校园约拍微信小程序就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此校园约拍微信小程序利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL 数据库进行程序开发。校园约拍微信小程序管理员可以管理商家和用户信息,可以管理商品类型信息,查看我的订单,我的照片,评价反馈灯信息。商家和用户都可以注册登录,商家主要发布商品信息,对商品信息上下架,用户主要对商家发布的信息预约,经过商家审核后就会生成订单,可以对商家发布的照片进行评价。校园约拍微信小程序的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全间题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。

二、系统功能结构设计

在分析并得出使用者对程序的功能要求时,就可以进行程序设计了。如图展示的就是管理员功能结构图。 

三、微信小程序功能实现

3.1首页

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

3.2用户预约商品

如图显示的就是用户预约页面,用户登录后可以选择商品进行预约操作。 

3.3商品管理管理

如图显示的就是商品信息管理页面,商家可以对商品信息进行添加,删除,修改,查询操作。 

3.4我的

我的里面主要是可以进行退出,点击小齿轮就可以选择退出当前账户

四、管理员后台功能实现

4.1用户管理 

如图显示的就是用户管理页面,此页面提供给管理员的功能有:对用户信息进行查询,添加,删除以及批量删除操作。 

4.2商家管理

如图显示的就是商家管理页面,管理员可以对商家信息进行添加,修改,删除,查询操作。 

4.3商品类型管理 

如图显示的就是商品类型管理页面,管理员可以对商品类型信息进行添加,修改,删除,查询操作。 

4.4摄影资讯管理 

如图显示的就是摄影资讯管理页面,管理员可以对摄影资讯进行添加修改删除查询操作。 

五、部分核心代码

5.1登录系统主要代码

  1. form.on('submit(login)', function(data) {
  2. data = data.field;
  3. if (vue.roles.length!=1) {
  4. if (!data.role) {
  5. layer.msg('请选择登录用户类型', {
  6. time: 2000,
  7. icon: 5
  8. });
  9. return false;
  10. }
  11. } else {
  12. data.role = vue.roles[0].tableName;
  13. }
  14. http.request(data.role + '/login', 'get', data, function(res) {
  15. layer.msg('登录成功', {
  16. time: 2000,
  17. icon: 6
  18. });
  19. // 登录凭证
  20. localStorage.setItem('Token', res.token);
  21. var roleName = "";
  22. if(typeof(jquery('#role:checked').attr('title')) == "undefined") {
  23. roleName = vue.roles[0].roleName;
  24. } else {
  25. roleName = jquery('#role:checked').attr('title');
  26. }
  27. localStorage.setItem('role', roleName);
  28. // 当前登录用户角色
  29. localStorage.setItem('userTable', data.role);
  30. localStorage.setItem('sessionTable', data.role);
  31. // 用户名称
  32. localStorage.setItem('adminName', data.username);
  33. http.request(data.role + '/session', 'get', {}, function(res) {
  34. // 用户id
  35. localStorage.setItem('userid', res.data.id);
  36. if(res.data.vip) {
  37. localStorage.setItem('vip', res.data.vip);
  38. }
  39. // 路径访问设置
  40. window.location.href = '../../index.html';
  41. })
  42. });
  43. return false
  44. });
  45. });
  46. /**
  47. * 跳转登录
  48. * @param {Object} tablename
  49. */
  50. function registerClick(tablename) {
  51. window.location.href = '../' + tablename + '/register.html?tablename=' + tablename;
  52. }

5.2用户注册主要代码

  1. */
  2. @IgnoreAuth
  3. @RequestMapping("/register")
  4. public R register(@RequestBody YonghuEntity yonghu){
  5. //ValidatorUtils.validateEntity(yonghu);
  6. YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", yonghu.getYonghuming()));
  7. if(user!=null) {
  8. return R.error("注册用户已存在");
  9. }
  10. Long uId = new Date().getTime();
  11. yonghu.setId(uId);
  12. yonghuService.insert(yonghu);
  13. return R.ok();
  14. }

 5.3小程序端首页主要代码

  1. methods: {
  2. jump(url) {
  3. if (this.queryIndex == 0) {
  4. localStorage.setItem('indexQueryCondition', document.getElementById("dianyingxinxidianyingmingcheng").value);
  5. }
  6. jump(url)
  7. },
  8. queryChange(event) {
  9. this.queryIndex = event.target.value;
  10. if (this.queryIndex == 0) {
  11. this.dianyingxinxidianyingmingcheng = this.queryList[event.target.value].queryName;
  12. }
  13. }
  14. }
  15. });
  16. layui.use(['layer', 'form', 'element', 'carousel', 'http', 'jquery'], function() {
  17. var layer = layui.layer;
  18. var element = layui.element;
  19. var form = layui.form;
  20. var carousel = layui.carousel;
  21. var http = layui.http;
  22. var jquery = layui.jquery;
  23. vue.baseurl=http.baseurl;
  24. // 获取轮播图 数据
  25. http.request('config/list', 'get', {
  26. page: 1,
  27. limit: 5
  28. }, function(res) {
  29. if (res.data.list.length > 0) {
  30. let swiperList = [];
  31. res.data.list.forEach(element => {
  32. if (element.value != null) {
  33. swiperList.push({
  34. img: http.baseurl + element.value
  35. });
  36. }
  37. });
  38. vue.swiperList = swiperList;
  39. vue.$nextTick(() => {
  40. carousel.render({
  41. elem: '#test1',
  42. width: '89.6%',
  43. height: '500px',
  44. arrow: 'hover',
  45. anim: 'default',
  46. autoplay: 'true',
  47. interval: '3000',
  48. indicator: 'inside'
  49. });
  50. })
  51. // vue.$nextTick(()=>{
  52. // window.xznSlide();
  53. // });
  54. }
  55. });
  56. http.request('news/list', 'get', {
  57. page: 1,
  58. order: 'desc'
  59. }, function(res) {
  60. var newsList = res.data.list;
  61. for(var i = 0; i<newsList.length; i++) {
  62. let d = newsList[i].addtime.split(' ')
  63. d = d[0].split('-')
  64. newsList[i].year = d[0]
  65. newsList[i].month = d[1] + '-' + d[2]
  66. }
  67. vue.newsList = newsList;
  68. if (newsList.length > 0 && newsList.length <= 2) {
  69. vue.leftNewsList = res.data.list
  70. } else {
  71. var leftNewsList = []
  72. for (let i = 0; i <= 2; i++) {
  73. leftNewsList.push(newsList[i]);
  74. }
  75. vue.leftNewsList = leftNewsList
  76. }
  77. if (newsList.length > 2 && newsList.length <= 8) {
  78. var rightNewsList = []
  79. for (let i = 3; i <= newsList.length; i++) {
  80. rightNewsList.push(newsList[i]);
  81. }
  82. vue.rightNewsList = rightNewsList
  83. }
  84. let flag = 10;
  85. let options = {"navigation":{"nextEl":".swiper-button-next","prevEl":".swiper-button-prev"},"slidesPerView":5,"loop":true,"spaceBetween":20,"autoplay":{"delay":3000,"disableOnInteraction":false}}
  86. options.pagination = {el:'null'}
  87. if(flag == 3) {
  88. vue.$nextTick(() => {
  89. new Swiper('#newsnews', options)
  90. })
  91. }
  92. if(flag == 6) {
  93. let sixSwiper = {
  94. loop: true,
  95. speed: 2500,
  96. slidesPerView: 3,
  97. spaceBetween: 10,
  98. centeredSlides: true,
  99. watchSlidesProgress: true,
  100. autoplay: {
  101. delay: 0,
  102. stopOnLastSlide: false,
  103. disableOnInteraction: false
  104. }
  105. }
  106. vue.$nextTick(() => {
  107. new Swiper('#new-list-6', sixSwiper)
  108. })
  109. }
  110. });
  111. // 获取推荐信息
  112. var autoSortUrl = "dianyingxinxi/autoSort";
  113. if(localStorage.getItem('userid')!=null) {
  114. autoSortUrl = "dianyingxinxi/autoSort2";
  115. }
  116. http.request(autoSortUrl, 'get', {
  117. page: 1,
  118. limit: 3 * 1
  119. }, function(res) {
  120. vue.dianyingxinxiRecommend = res.data.list
  121. let flag = 1;
  122. let options = {"navigation":{"nextEl":".swiper-button-next","prevEl":".swiper-button-prev"},"slidesPerView":5,"loop":true,"spaceBetween":20,"autoplay":{"delay":3000,"disableOnInteraction":false}}
  123. options.pagination = {el:'null'}
  124. if(flag == 3) {
  125. vue.$nextTick(() => {
  126. new Swiper('#recommenddianyingxinxi', options)
  127. })
  128. }
  129. if(flag == 5) {
  130. vue.$nextTick(() => {
  131. var swiper = new Swiper('#recommend-five-swiperdianyingxinxi', {
  132. loop: true,
  133. speed: 500,
  134. slidesPerView: 5,
  135. spaceBetween: 10,
  136. autoplay: {"delay":3000,"disableOnInteraction":false},
  137. centeredSlides: true,
  138. watchSlidesProgress: true,
  139. on: {
  140. setTranslate: function() {
  141. slides = this.slides
  142. for (i = 0; i < slides.length; i++) {
  143. slide = slides.eq(i)
  144. progress = slides[i].progress
  145. // slide.html(progress.toFixed(2)); //看清楚progress是怎么变化的
  146. slide.css({
  147. 'opacity': '',
  148. 'background': ''
  149. });
  150. slide.transform(''); //清除样式
  151. slide.transform('scale(' + (1.5 - Math.abs(progress) / 4) + ')');
  152. }
  153. },
  154. setTransition: function(transition) {
  155. for (var i = 0; i < this.slides.length; i++) {
  156. var slide = this.slides.eq(i)
  157. slide.transition(transition);
  158. }
  159. },
  160. },
  161. navigation: {"nextEl":".swiper-button-next","prevEl":".swiper-button-prev"},
  162. pagination: {"el":".swiper-pagination","clickable":true},
  163. });
  164. })
  165. }
  166. });
  167. });

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/171680?site
推荐阅读
相关标签
  

闽ICP备14008679号