写点什么

从 0 到 100:基于微信小程序的羽毛球馆预约系统的开发笔记

作者:CC同学
  • 2022 年 3 月 29 日
  • 本文字数:2329 字

    阅读完需:约 8 分钟

背景 

 

  羽毛球馆预订小程序,是一款专门为羽毛球馆从业者设计的小程序平台, 包括本店动态,运动常识,场地预约等功能。 可以随时查看当天场地的预约数量,随时掌握自己场地的经营情况。 对于羽毛球爱好者来说,可以实时查看场地数据,一目了然查看还有多少场地可以预定, 按自己的时段安排来合理打球时间。

  该系统基于 MVC 架构,采用基于微信小程序平台开发 无需下载安装 APP。


功能 

 


数据库 

  


技术难点  

在小程序中使用抛出异常机制能让代码结构更加的简洁,减少很多的逻辑判断,并且能够得到出错时的详细错误信息,可说是好处多多,今天

要说的就是在小程序的 js 中抛出(throw)异常。js 中可以抛出任何类型的异常,比如数字、字符串甚至布尔值,例如:

<script>    try {        throw 'error';        throw 123;        throw false;    }    catch (e) {        alert(e);    }</script>
复制代码

当然,像大多数的面向对象语言中有内置的 Exception 类一样,js 中也有内置的异常类: Error ,

我们可以自定义异常类并继承 Error 基类

/** * Notes: 应用异常处理类  * Date: 2020-09-05 04:00:00 * Version : CCMiniCloud Framework Ver 2.0.1  

const appCode = require('./app_code.js');
class AppError extends Error { constructor(message, code = appCode.LOGIC) { super(message); this.name = 'AppError'; this.code = code; } }
module.exports = AppError;
复制代码

错误代码定义:

/** * Notes: 错误代码定义 * Ver : CCMiniCloud Framework 2.0.1  * Date: 2020-09-05 04:00:00 * Version : CCMiniCloud Framework Ver 2.0.1   */module.exports = {    SUCC: 200,    SVR: 500, //服务器错误      LOGIC: 1600, //逻辑错误     DATA: 1301, // 数据校验错误     HEADER: 1302, // header 校验错误      NOT_USER: 1303, // 用户不存在    USER_EXCEPTION: 1304, // 用户异常     MUST_LOGIN: 1305, //需要登录     USER_CHECK: 1306, //用户审核中        ADMIN_ERROR: 2001 //管理员错误}
复制代码

小程序中应用:

// 取得openid    const cloud = cloudBase.getCloud();    const wxContext = cloud.getWXContext();    let r = '';
try {
if (!util.isDefined(event.router)) { console.error('Router Not Defined'); return handlerSvrErr(); }
r = event.router.toLowerCase();
// 路由不存在 if (!util.isDefined(router[r])) { console.error('Router [' + r + '] Is Not Exist'); return handlerSvrErr(); }
let routerArr = router[r].split('@');
let controllerName = routerArr[0]; let actionName = routerArr[1]; let token = event.token || ''; let params = event.params;
console.log(''); console.log(''); let time = timeUtil.time('Y-M-D h:m:s'); console.log('+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++'); console.log('[' + time + '][Request][Route=' + r + '], Controller=[' + controllerName + '], Action=[' + actionName + '], Token=[' + token + '], ###IN DATA=\r\n', JSON.stringify(params, null, 4));

let openId = wxContext.OPENID;
if (!openId) { console.error('OPENID is unfined'); if (config.TEST_MODE) openId = config.TEST_TOKEN_ID; else return handlerSvrErr(); }
// 引入逻辑controller controllerName = controllerName.toLowerCase().replace('controller', '').trim(); const ControllerClass = require('controller/' + controllerName + '_controller.js'); const controller = new ControllerClass(openId, params, r, token);
// 调用方法 let result = await controller[actionName]();
// 返回值处理 if (!result) result = handlerSucc(r); // 无数据返回 else result = handlerData(result, r); // 有数据返回
console.log('------'); time = timeUtil.time('Y-M-D h:m:s'); console.log('[' + time + '][Response][Route=' + r + '], ###OUT DATA=', result); console.log('+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++'); console.log(''); console.log('');
return result;

} catch (ex) { const log = cloud.logger();
if (ex.name == 'AppError') { log.warn({ router: r, errCode: ex.code, errMsg: ex.message }); // 自定义error处理 return handlerAppErr(ex.message, ex.code); } else { console.log(ex); log.error({ router: r, errCode: ex.code, errMsg: ex.message, errStack: ex.stack });
// 系统error return handlerSvrErr(); } }
复制代码


UI 设计 

 





后台界面设计  





https://gitee.com/wang-xiaocao/EpYumao

用户头像

CC同学

关注

CC同学的小程序开发笔记 2021.06.13 加入

大鹅厂的小小程序媛,vx: cclinux0730

评论

发布
暂无评论
从0到100:基于微信小程序的羽毛球馆预约系统的开发笔记_CC同学_InfoQ写作平台