133 lines
5.9 KiB
Python
133 lines
5.9 KiB
Python
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': '没有查询到数据'})
|