自己公司业务逻辑,仅做个记录备份方便查阅

后端数据表结构

  • 学生表 : ID 、 学生名字 、 家长名字 、 购买课时 、 购买金额 、 date
  • 老师表 :ID 、 老师名字 、 老师手机号(唯一的) 、 学生ID 、 date
  • 余额表 : ID 、 剩余课时 、 剩余金额 、 学生ID、 date
  • 消耗明细表 :ID 、 学生名字 、 家长名字 、 单次消耗课时 、 单次消耗金额 、 当前剩余课时 、 当前剩余金额 、 上课老师

后台管理逻辑思维:

  1. 超级管理员登录后台,首先输入学生信息(学生名字 家长名字 购买课时 购买金额) 。点击提交,跳转到学生列表页。ps:列表页请求 三个表聚合查询后的json数据 ,默认 剩余课时、剩余金额 是没有填写的,默认显示未填写(判断条件 v-if=”xxx.length == 0“),默认 上课老师 页是没有指派的,默认显示未指派(判断条件 v-if=”xxx.length == 0“)
  1. 点击学生列表后面的指派老师,提示先完善余额表。
    2-1 点击 剩余金额,弹出弹窗(`该弹窗为子组件,学生ID由父组件传入`)
        完善一下余额表(`请求余额表的添加接口`)点击确定收回弹窗。
  1. 如果余额表已完善则不提示弹窗直接跳转到指派老师页面,学生列表页会带过来学生ID,根据学生ID指派老师完善老师表。点击确定跳转到学生列表页。ps:这个时候,第 1 步中提到的默认显示未填写和未指派的地方,正常显示其内容。
  1. 再次点击指派老师,可实现不同老师教一个学生。也可以在学生列表页,点击老师取消指派。teacher数组长度就会减1,后台设置最少指派一位老师,只剩一个老师的时候不可取消。( 这时候就实现了动态控制前端老师看到学生信息的权限)
    数据结构为 :
    image.png
接口写法:
router.get("/teacher/over", (req, res) => {
    Order.aggregate([{
        $lookup: {
            from: "overs", 
            localField: "_id",
            foreignField: "order_id",
            as: "over"
        }
    },
    {
        $lookup: {
            from: "teachers", 
            localField: "_id",
            foreignField: "order_id",
            as: "teacher"
        }
    },
    {
        $project: {
            "_id": 1,
            "bodyName": 1,
            "parentName": 1,
            "buyTime": 1,
            "buyPrice": 1,
            "date": 1,
            "over": {
                "_id": 1,
                "overTime": 1,
                "overPrice": 1,
                "date": 1,
                "order_id":1
            },
            "teacher":{
                "_id":1,
                "teacher":1,
                "phone":1,
                "date": 1,
                "order_id":1
            }
        }
    }
    ], (err, allmsg) => {
        res.json(allmsg)
    })
})

前端(老师端)逻辑思维:

  1. 老师根据自己唯一手机号登录,后端返回老师唯一手机号(指派老师的时候后台预设了老师的手机号)。
  1. 前端根据后端返回的手机号作为参数请求接口,接口格式为:[http://localhost:5000/api/teachers/${phone}]
  1. 后端返回数据格式为:( 三个表聚合查询并用到 $match
    image.png
接口写法:
//前端用于区分孩子信息的接口
router.post("/teachers/:phone", (req, res) => {

    Teacher.aggregate([{
        $lookup: {
            from: "orders", 
            localField: "order_id",
            foreignField: "_id",
            as: "order"
        }
    },
    {
        $lookup: {
            from: "overs", 
            localField: "order_id",
            foreignField: "order_id",
            as: "over"
        }
    },
    {
        $match:{
            phone: req.params.phone
        }
    },
    {
        $project: {
            "_id": 1,
            "teacher": 1,
            "order_id": 1,
            "phone": 1,
            "date": 1,
            "over": {
                "_id": 1,
                "overTime": 1,
                "overPrice": 1,
                "date": 1,
            },
            "order":{
                "_id":1,
                "bodyName":1,
                "parentName":1,
                "buyTime":1,
                "buyPrice":1,
                "date": 1,
            }
        }
    }
    ], (err, allmsg) => {
        res.json(allmsg)
    })
});
  1. 这样就可以实现不同老师看到自己上课的学生,其他学生信息看不到。
  1. 把学生信息渲染到页面,点击学生进入学生详情页面,前端设置两个input选择框,每次上完课老师选择消耗课时和消耗金额,自动计算出当前剩余课时和当前剩余金额。然后把 当前剩余课时、当前剩余金额 当作参数传入到后端,去更新余额表。(与此同时,后台学生列表页 就实现了动态的余额信息
  1. 把拿到的消耗课时、消耗金额、当前剩余课时、当前剩余金额、学生姓名、家长姓名 当作参数传入到后端,插入到数据库,消耗明细表就可以多一条数据。( 这时候后台就可以渲染出来消耗明细,加一个导出功能就可以实现表格导出
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,179评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,229评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,032评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,533评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,531评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,539评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,916评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,813评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,568评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,654评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,354评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,918评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,152评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,852评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,378评论 2 342

推荐阅读更多精彩内容