Exemplo n.º 1
0
def print_my_orders(my_order):
    return template.myorder.format(
        Meal.get(my_order.mealId).name,
        my_order.studentName,
        my_order.studentId,
        my_order.birthday,
        Canteen.get(my_order.canteenId).name,
        my_order.token)
Exemplo n.º 2
0
    def POST(self):
        data = web.input(
            req="",
            studentId="",
            studentName="",
            birthday="",
            phone="",
            sex="",
            location="",
            canteen="",
            package="",
            message=""
        )

        if data.req == 'canteen':
            web.header('Content-Type', 'application/json')
            try:
                canteens = Canteen.getAll(location=data.location)
                result = [dict(cid=item.id, name=item.name) for item in canteens]
                return json.dumps(result)
            except Exception:
                return '{}'

        elif data.req == 'package':
            web.header('Content-Type', 'application/json')
            try:
                meals = Meal.getAll(canteenId=data.canteen, active=1)
                result = [dict(id=item.id, name=item.name) for item in meals]
                return json.dumps(result)
            except Exception:
                return '{}'

        elif data.req == 'submit':
            # 验证数据有效性
            web.header('Content-Type', 'application/json')

            status = self.checkMatch(data.studentId, data.studentName)
            if status == -3:
                return json.dumps({'errinfo': "抱歉,系统出现错误."})
            elif status == -2:
                return json.dumps({'errinfo': "姓名不能为空"})
            elif status == -1:
                return json.dumps({'errinfo': "学号不能为空"})
            elif status == 0:
                return json.dumps({'errinfo': "学号与姓名不匹配!"})
            elif status == 2:
                return json.dumps({'errinfo': "您的账户被锁定,请检查是否您是否有未完成的订单!"})
            elif status == 3:  # 先注册
                User(dict(
                    studentId=data.studentId,
                    studentName=data.studentName,
                    sex=self.getSexId(data.sex),
                    birthday=data.birthday,
                    phone=data.phone,
                    shortMessage=data.message,
                    lastOrderTime="0000-00-00",
                    addTime=web.SQLLiteral("NOW()"),
                    isLock=False
                )).insert();

            # 检查 餐品是否有效是否有效
            meal = Meal.get(data.package)
            if meal == None or str(meal.canteenId) != str(data.canteen):
                return json.dumps({'errinfo': "请不要伪造请求"})

            # 检查订餐日期是否有效
            if not re.match(r'^\d{4}-\d{2}-\d{2}$', data.birthday):
                return json.dumps({'errinfo': '请输入正确的日期, 如 1990-10-01'})
            max_deltatime = datetime.timedelta(days=7)
            min_deltatime = datetime.timedelta(days=0)
            order_time = datetime.datetime.strptime(data.birthday, "%Y-%m-%d")
            now = datetime.datetime.now()

            # 提前 1 - 7 天订餐
            if order_time > now + max_deltatime or order_time < now + min_deltatime:
                return json.dumps({'errinfo': '请提前1-7天订餐!'})

            # 获取领餐人信息
            user = User.getBy(studentId=data.studentId, studentName=data.studentName)
            if user.lastOrderTime:
                last_order_time = datetime.datetime.strptime(str(user.lastOrderTime), "%Y-%m-%d")
                deltatime = datetime.timedelta(days=300)
                # 判断订餐间隔
                if last_order_time + deltatime > datetime.datetime.now():
                    return json.dumps({'errinfo': "订餐时间间隔过短, 一年内只能免费订餐一次!"})

            # 获取订餐人(当前操作者信息)
            adder = User.getBy(studentId=self.session.sid)

            Order(dict(userId=adder.id,
                       canteenId=data.canteen,
                       mealId=data.package,
                       studentId=data.studentId,
                       studentName=data.studentName,
                       phone=data.phone,
                       sex=self.getSexId(data.sex),
                       birthday=data.birthday,
                       token=self.generateToken(),
                       wish=data.message,
                       addTime=web.SQLLiteral("NOW()"),
                       isActive=True
                       )).insert()
            user.isLock = 1
            user.update()
            return json.dumps({'successinfo': "添加成功!"})

        else:
            raise web.Forbidden()