diff --git a/yuthon_base/__manifest__.py b/yuthon_base/__manifest__.py
index ff8205825..c7ff83e86 100644
--- a/yuthon_base/__manifest__.py
+++ b/yuthon_base/__manifest__.py
@@ -12,6 +12,7 @@
'views/ir_cron_act_views.xml',
'views/yuthon_timed_tasks_views.xml',
'views/yuthon_timed_tasks_views.xml',
+ 'views/yuthon_phone_lotter.xml',
'views/menu.xml',
],
'assets': {
diff --git a/yuthon_base/controllers/phone.py b/yuthon_base/controllers/phone.py
index 61012342f..1182ffedf 100644
--- a/yuthon_base/controllers/phone.py
+++ b/yuthon_base/controllers/phone.py
@@ -1,7 +1,7 @@
import json
+from odoo import http, fields
from odoo.http import request, Response
import logging
-from odoo import http, fields
_logger = logging.getLogger(__name__)
@@ -100,3 +100,68 @@ class YuThonPhone(http.Controller):
'sex': kw.get('sex'),
}
return json.dumps({'data': data, 'code': 200, 'message': ''})
+
+ # 抽签项目列表接口
+ @http.route('/phone/lottery/list', type='http', auth="none", csrf=False, cors='*', methods=['GET'])
+ def lottery_list(self, **kw):
+ """
+ 获取抽签项目列表
+ 返回:id、项目名称、人员列表、人数
+ """
+ try:
+ lottery_records = request.env['phone.lottery'].sudo().search([])
+ data_list = []
+ for record in lottery_records:
+ employee_list = [{
+ 'id': emp.id,
+ 'name': emp.name,
+ } for emp in record.employee_ids]
+
+ data_list.append({
+ 'id': record.id,
+ 'name': record.name,
+ 'employees': employee_list,
+ 'employee_count': len(record.employee_ids),
+ })
+
+ return json.dumps({'data': data_list, 'code': 200, 'message': ''})
+ except Exception as e:
+ _logger.error(f"获取抽签项目列表失败: {e}")
+ return json.dumps({'data': [], 'code': 500, 'message': str(e)})
+
+ # 创建抽签结果接口
+ @http.route('/phone/lottery/result', type='http', auth="none", csrf=False, cors='*', methods=['POST'])
+ def lottery_create_result(self, **kw):
+ """
+ 创建抽签结果
+ 参数:lottery_id (项目ID), result (结果文本)
+ """
+
+ lottery_id = kw.get('lottery_id')
+ result = kw.get('result')
+
+ if not lottery_id:
+ return json.dumps({'data': {}, 'code': 400, 'message': '缺少项目ID参数'})
+
+ if not result:
+ return json.dumps({'data': {}, 'code': 400, 'message': '缺少结果参数'})
+
+ try:
+ lottery_record = request.env['phone.lottery'].sudo().browse(int(lottery_id))
+ if not lottery_record.exists():
+ return json.dumps({'data': {}, 'code': 404, 'message': '项目不存在'})
+
+ # 更新结果
+ lottery_record.write({'outcome': result})
+
+ return json.dumps({
+ 'data': {
+ 'id': lottery_record.id,
+ 'name': lottery_record.name,
+ 'outcome': lottery_record.outcome,
+ },
+ 'code': 200,
+ 'message': '结果保存成功'
+ })
+ except Exception as e:
+ return json.dumps({'data': {}, 'code': 500, 'message': str(e)})
diff --git a/yuthon_base/models/__init__.py b/yuthon_base/models/__init__.py
index 38ec55d94..b39548246 100644
--- a/yuthon_base/models/__init__.py
+++ b/yuthon_base/models/__init__.py
@@ -4,4 +4,5 @@ from . import system_version
from . import fields_piyin
from . import ir_cron_act
from . import yuthon_timed_tasks
-# from . import res_partner
\ No newline at end of file
+from . import yuthon_phone_lottery
+from . import res_partner
\ No newline at end of file
diff --git a/yuthon_base/models/yuthon_phone_lottery.py b/yuthon_base/models/yuthon_phone_lottery.py
new file mode 100644
index 000000000..f69325f13
--- /dev/null
+++ b/yuthon_base/models/yuthon_phone_lottery.py
@@ -0,0 +1,11 @@
+from odoo import models, fields, api, _
+
+class PhoneLottery(models.Model):
+ _name = 'phone.lottery'
+ _description = '手机抽签配置'
+ _order = 'sequence, id'
+
+ sequence = fields.Integer(string="序号", default=10)
+ name = fields.Char(string="项目名称")
+ employee_ids = fields.Many2many('hr.employee', string='人员范围')
+ outcome = fields.Text(string="结果")
\ No newline at end of file
diff --git a/yuthon_base/security/ir.model.access.csv b/yuthon_base/security/ir.model.access.csv
index cc8505a56..6489e8400 100644
--- a/yuthon_base/security/ir.model.access.csv
+++ b/yuthon_base/security/ir.model.access.csv
@@ -2,4 +2,5 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_system_version,system_version,model_system_version,base.group_system,1,1,1,1
access_ir_cron_type,ir.cron.type,model_ir_cron_type,base.group_system,1,1,1,1
access_yuthon_timed_tasks,yuthon.timed.tasks,model_yuthon_timed_tasks,base.group_system,1,1,1,1
-access_users_home_batch_wizard,access_users_home_batch_wizard,model_users_home_batch_wizard,base.group_user,1,1,1,1
\ No newline at end of file
+access_users_home_batch_wizard,access_users_home_batch_wizard,model_users_home_batch_wizard,base.group_user,1,1,1,1
+access_phone_lottery,phone.lottery,model_phone_lottery,base.group_user,1,1,1,1
\ No newline at end of file
diff --git a/yuthon_base/views/menu.xml b/yuthon_base/views/menu.xml
index 1c7da27fb..61740d213 100644
--- a/yuthon_base/views/menu.xml
+++ b/yuthon_base/views/menu.xml
@@ -28,4 +28,9 @@
parent="cron_type_menu_root"
action="base.reports_action"
sequence="5"/>
+
\ No newline at end of file
diff --git a/yuthon_base/views/yuthon_phone_lotter.xml b/yuthon_base/views/yuthon_phone_lotter.xml
new file mode 100644
index 000000000..602e206bd
--- /dev/null
+++ b/yuthon_base/views/yuthon_phone_lotter.xml
@@ -0,0 +1,21 @@
+
+
+
+ yuthon.lottery.tree
+ phone.lottery
+
+
+
+
+
+
+
+
+
+
+ 手机抽签配置
+ phone.lottery
+ tree
+
+
+
\ No newline at end of file