From b53d4e4ec9d5b189af077f39306d64be285fa794 Mon Sep 17 00:00:00 2001 From: pengyuthon Date: Sat, 28 Feb 2026 09:37:42 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A4=90=E9=A5=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_catering/controllers/__init__.py | 1 + yuthon_catering/controllers/restaurant.py | 65 +++++++++++++++++++++++ yuthon_catering/models/yuthon_catering.py | 4 ++ 3 files changed, 70 insertions(+) create mode 100644 yuthon_catering/controllers/restaurant.py diff --git a/yuthon_catering/controllers/__init__.py b/yuthon_catering/controllers/__init__.py index 153a9e31e..07fdfbba2 100644 --- a/yuthon_catering/controllers/__init__.py +++ b/yuthon_catering/controllers/__init__.py @@ -1,2 +1,3 @@ # -*- coding: utf-8 -*- from . import controllers +from . import restaurant diff --git a/yuthon_catering/controllers/restaurant.py b/yuthon_catering/controllers/restaurant.py new file mode 100644 index 000000000..2a676696e --- /dev/null +++ b/yuthon_catering/controllers/restaurant.py @@ -0,0 +1,65 @@ +import json +import logging +from datetime import date +from odoo.tools import DEFAULT_SERVER_DATE_FORMAT as DATE_FORMAT +from odoo.http import request, Controller, route + +_logger = logging.getLogger(__name__) + + +class RestaurantController(Controller): + + @route('/phone/restaurant/menus', methods=['POST'], type='http', auth="none", csrf=False, cors='*') + def get_menus(self, **kwargs): + menu_date = kwargs.get('menu_date', date.today()) + Menu = request.env['yuthon.menu.setting'].sudo() + + record = Menu.search([('menu_date', '=', menu_date)], limit=1, order='id desc') + result = {} + if record: + result = { + 'id': record.id, + 'menu_date': record.menu_date.strftime(DATE_FORMAT) if record.menu_date else '', + 'breakfast': ','.join(record.breakfast_ids.mapped('name')) if record.breakfast_ids else '', + 'lunch': ','.join(record.lunch_ids.mapped('name')) if record.lunch_ids else '', + 'remark': record.remake or '' + } + + return json.dumps({'data': result, 'code': 200, 'message': ''}) + + @route('/phone/restaurant/collect_catering', methods=['POST'], type='http', auth="none", csrf=False, cors='*') + def collect_catering(self, **kwargs): + user_id = int(kwargs.get('user_id')) + user = request.env['res.users'].sudo().browse(user_id).exists() + employee = request.env['hr.employee'].sudo().search([('user_id', '=', user_id)]) + Catering = request.env['yuthon.catering'].with_user(user) + + record = Catering.create({ + 'date': date.today(), + 'employee_id': employee.id, + 'breakfast': kwargs.get('breakfast') == 'true', + 'lunch': kwargs.get('lunch') == 'true', + 'menu_day_id': kwargs.get('menu_id') + }) + if record: + return json.dumps({'data': record.id, 'code': 200, 'message': '提交成功'}) + return json.dumps({'data': '', 'code': 500, 'message': '提交失败'}) + + @route('/phone/restaurant/get_catering', methods=['POST'], type='http', auth="none", csrf=False, cors='*') + def get_catering(self, **kwargs): + user_id = int(kwargs.get('user_id')) + menu_date = kwargs.get('menu_date', date.today()) + menu_id = kwargs.get('menu_id') + + if not user_id or not menu_date or not menu_id: + return json.dumps({'data': '', 'code': 500, 'message': '请求失败'}) + + employee = request.env['hr.employee'].sudo().search([('user_id', '=', user_id)]) + catering = request.env['yuthon.catering'].sudo().search([ + ('employee_id', '=', employee.id), + ('date', '=', menu_date), + ('menu_day_id', '=', menu_id), + ]) + if catering: + return json.dumps({'data': catering.id, 'code': 200, 'message': ''}) + return json.dumps({'data': '', 'code': 200, 'message': ''}) diff --git a/yuthon_catering/models/yuthon_catering.py b/yuthon_catering/models/yuthon_catering.py index 26a1d586e..328175718 100644 --- a/yuthon_catering/models/yuthon_catering.py +++ b/yuthon_catering/models/yuthon_catering.py @@ -14,6 +14,10 @@ class YuthonCatering(models.Model): menu_day_id = fields.Many2one('yuthon.menu.setting', string='菜单') amount = fields.Float(string='结算费用') note = fields.Text(string='备注') + state = fields.Selection([ + ('unconfirmed', '未确认'), + ('confirmed', '已确认'), + ], default='unconfirmed', string='状态') def catering_task(self): conf_records = self.env['yuthon.catering.conf'].search([])