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 from .decorators import exception_handle _logger = logging.getLogger(__name__) class RestaurantController(Controller): @route('/phone/restaurant/menu_days', methods=['POST'], type='http', auth="none", csrf=False, cors='*') @exception_handle def get_menu_days(self, **kwargs): year = int(kwargs.get('year', date.today().year)) Menu = request.env['yuthon.menu.setting'].sudo() first_day = date(year, 1, 1) last_day = date(year, 12, 31) records = Menu.search([('menu_date', '<=', last_day), ('menu_date', '>=', first_day)], order='menu_date asc') result = [] if records: for record in records: result.append(record.menu_date.strftime(DATE_FORMAT)) return json.dumps({'data': result, 'code': 200, 'message': ''}) @route('/phone/restaurant/menus', methods=['POST'], type='http', auth="none", csrf=False, cors='*') @exception_handle 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='*') @exception_handle def collect_catering(self, **kwargs): user_id = int(kwargs.get('user_id')) employee = request.env['hr.employee'].sudo().search([('id', '=', user_id)]) _logger.info(f'---当前获取数据--{user_id}---') _logger.info(f'---当前获取数据--{employee.id}---{employee.name}') menu_date = kwargs.get('menu_date', date.today()) existing_record = request.env['yuthon.catering'].search([ ('date', '=', menu_date), ('employee_id', '=', employee.id) ], limit=1) if not existing_record: record = request.env['yuthon.catering'].create({ 'date': menu_date, 'employee_id': employee.id, 'breakfast': kwargs.get('breakfast') == 'true', 'lunch': kwargs.get('lunch') == 'true', 'menu_day_id': kwargs.get('menu_id'), 'state': 'confirmed' }) catering_data = { 'id': record.id, 'user_id': employee.user_id.id, 'menu_id': record.menu_day_id.id, 'breakfast': record.breakfast, 'lunch': record.lunch, 'state': record.state } return json.dumps({'data': catering_data, 'code': 200, 'message': '提交成功'}) return json.dumps({'data': '', 'code': 500, 'message': '提交失败'}) @route('/phone/restaurant/update_catering', methods=['POST'], type='http', auth="none", csrf=False, cors='*') @exception_handle def update_catering(self, **kwargs): user_id = int(kwargs.get('user_id')) catering_id = int(kwargs.get('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).browse(catering_id).exists() if not catering: return json.dumps({'data': '', 'code': 500, 'message': '修改失败,记录不存在'}) catering.write({ 'employee_id': employee.id, 'breakfast': kwargs.get('breakfast') == 'true', 'lunch': kwargs.get('lunch') == 'true', 'menu_day_id': kwargs.get('menu_id'), 'state': 'modifying' }) catering_data = { 'id': catering.id, 'user_id': employee.user_id.id, 'menu_id': catering.menu_day_id.id, 'breakfast': catering.breakfast, 'lunch': catering.lunch, 'state': catering.state } return json.dumps({'data': catering_data, 'code': 200, 'message': '修改成功'}) @route('/phone/restaurant/get_catering', methods=['POST'], type='http', auth="none", csrf=False, cors='*') @exception_handle def get_catering(self, **kwargs): user_id = int(kwargs.get('user_id')) menu_date = kwargs.get('menu_date', date.today()) menu_id = int(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), ], limit=1, order='id desc') if catering: catering_data = { 'id': catering.id, 'user_id': employee.user_id.id, 'menu_id': catering.menu_day_id.id, 'breakfast': catering.breakfast, 'lunch': catering.lunch, 'state': catering.state } return json.dumps({'data': catering_data, 'code': 200, 'message': ''}) return json.dumps({'data': '', 'code': 200, 'message': '没有查询到数据'})