159 lines
7.3 KiB
Python
159 lines
7.3 KiB
Python
import json
|
|
import logging
|
|
from datetime import datetime, timedelta
|
|
|
|
from odoo import http, fields
|
|
from odoo.http import request, Response
|
|
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
|
|
class YuThonPhone(http.Controller):
|
|
|
|
# 登录接口
|
|
@http.route('/phone/login/v1', type='http', auth="public", csrf=False, cors='*')
|
|
def ro_base_user_login_v1(self, **kw):
|
|
"""
|
|
手机端登录
|
|
当前未考虑承租方情况
|
|
"""
|
|
_logger.info("-----/phone/login/v1---接口收到响应-------")
|
|
login = kw.get('login')
|
|
password = kw.get('password')
|
|
try:
|
|
# 验证当前数据库中的用户和密码是否存在,如果存在是当前登录用户
|
|
uid = request.session.authenticate(request.env.cr.dbname, login, password)
|
|
except Exception as e:
|
|
_logger.info(f"接口登录失败: {e}")
|
|
# 如果不存在验证其他角色,是否为承租方
|
|
# property_tenant_information = request.env['property.tenant.information'].sudo().search([('phone', '=', login)])
|
|
# if not property_tenant_information:
|
|
# return_data = {'data': {}, 'code': 401, 'message': '用户名或密码错误'}
|
|
# else:
|
|
# return_data = {'data': {'name': property_tenant_information.name, 'id': property_tenant_information.id,
|
|
# 'phone': property_tenant_information.phone,
|
|
# 'access': ['物业账单']}, 'code': 200, 'message': '用户名或密码错误'}
|
|
# return json.dumps(return_data)
|
|
user_id = request.env['res.users'].sudo().browse(uid)
|
|
employee_id = user_id.with_company(user_id.company_id.id).employee_id
|
|
applet_security_setting_ids = request.env['applet.security'].search(
|
|
[('employee_id', '=', employee_id.id)]).applet_security_setting_ids
|
|
access_list = [access.name for access in applet_security_setting_ids]
|
|
_logger.info(f"当前登录用户{user_id.name},权限组{access_list}---")
|
|
company_list = []
|
|
for company in user_id.company_ids:
|
|
company_dict = {
|
|
'state': 1,
|
|
'company_id': company.id,
|
|
'company_name': company.name,
|
|
}
|
|
company_list.append(company_dict)
|
|
data = {
|
|
'name': employee_id.name,
|
|
'id': user_id.id,
|
|
'access': access_list,
|
|
'phone': employee_id.mobile_phone,
|
|
'company_data': company_list,
|
|
}
|
|
return json.dumps({'data': data, 'code': 200, 'message': ''})
|
|
|
|
# 我的
|
|
@http.route('/phone/myself', type='http', auth="none", csrf=False, cors='*')
|
|
def phone_myself(self, **kw):
|
|
"""
|
|
手机端--我的
|
|
"""
|
|
_logger.info("-----/phone/myself---接口收到响应-------")
|
|
employee_id = request.env['hr.employee'].sudo().search([('user_id.id', '=', kw.get('user_id'))])
|
|
data = {
|
|
'name': employee_id.name,
|
|
'employee_id': employee_id.id,
|
|
'company_id': employee_id.company_id.name,
|
|
# 'image': employee_id.image_128, # 后面改成url
|
|
'mobile_phone': employee_id.mobile_phone,
|
|
'department_id': employee_id.department_id.name,
|
|
'job_id': employee_id.job_id.name,
|
|
'entry_date': fields.Date.to_string(employee_id.entry_date) if employee_id.entry_date else '',
|
|
'company_old': employee_id.company_old if employee_id.company_old else '',
|
|
}
|
|
return json.dumps({'data': data, 'code': 200, 'message': ''})
|
|
|
|
@http.route('/phone/base', type='http', auth="none", csrf=False, cors='*')
|
|
def phone_base(self, **kw):
|
|
company_id = kw.get('company_id')
|
|
employee_id = request.env['hr.employee'].sudo().search([('user_id.id', '=', kw.get('user_id'))])
|
|
|
|
@http.route('/phone/base/self', type='http', auth="none", csrf=False, cors='*')
|
|
def phone_base_self(self, **kw):
|
|
user_id = request.env['res.users'].sudo().browse(kw.get('employee'))
|
|
employee_id = user_id.with_company(user_id.company_id.id).employee_id
|
|
applet_security_setting_ids = request.env['applet.security'].sudo().search([('employee_id', '=', employee_id.id)]).applet_security_setting_ids
|
|
task_ids = request.env['yuthon.will.task'].sudo().search([('users_ids', 'in', [user_id])])
|
|
data = [{
|
|
'日程': len(task_ids),
|
|
}]
|
|
_logger.info(f'{data}-------------------/phone/base/self------------收到请求')
|
|
return json.dumps({'data': data, 'code': 200, 'message': ''})
|
|
|
|
@http.route('/phone/base/test', type='http', auth="none", csrf=False, cors='*')
|
|
def test_phone_base(self, **kw):
|
|
data = {
|
|
'name': kw.get('name'),
|
|
'age': kw.get('age'),
|
|
'sex': kw.get('sex'),
|
|
}
|
|
return json.dumps({'data': data, 'code': 200, 'message': ''})
|
|
|
|
# 抽签项目列表接口
|
|
@http.route('/phone/lottery/list', type='http', auth="none", csrf=False, cors='*')
|
|
def phone_lottery_list(self):
|
|
lottery_records = request.env['phone.lottery'].sudo().search([])
|
|
data_list = []
|
|
for record in lottery_records:
|
|
data_list.append({
|
|
'id': record.id,
|
|
'name': record.name,
|
|
})
|
|
return json.dumps({'data': data_list, 'code': 200, 'message': ''})
|
|
|
|
@http.route('/phone/lottery/detail', type='http', auth="none", csrf=False, cors='*')
|
|
def phone_lottery_detail(self, **kw):
|
|
lottery_record = request.env['phone.lottery'].sudo().search([('id', '=', kw.get('id'))])
|
|
data_list = []
|
|
# data_list.append({'emp_sum': len(lottery_record.employee_ids)})
|
|
for record in lottery_record.employee_ids:
|
|
data_list.append({
|
|
'emp_id': record.id,
|
|
'name': record.name,
|
|
'department_id': record.department_id.name
|
|
})
|
|
return json.dumps({'data': data_list, 'code': 200, 'message': ''})
|
|
|
|
# 创建抽签结果接口
|
|
@http.route('/phone/lottery/result', type='http', auth="none", csrf=False, cors='*')
|
|
def phone_lottery_result(self, **kw):
|
|
emp_id = request.env['hr.employee'].sudo().search([('id', '=', int(kw.get('emp_id')))])
|
|
lottery_id = request.env['phone.lottery'].sudo().search([('id', '=', int(kw.get('lottery_id')))])
|
|
now = datetime.now()
|
|
utc8 = now + timedelta(hours=8)
|
|
result_str = f'{emp_id.name}-{emp_id.department_id.name}-{utc8.strftime("%Y-%m-%d %H:%M:%S")}'
|
|
if outcome := lottery_id.outcome:
|
|
lottery_id.outcome = f'{outcome}{result_str}\n'
|
|
else:
|
|
lottery_id.outcome = f'{result_str}\n'
|
|
return json.dumps({'code': 200, 'message': 'ok'})
|
|
|
|
@http.route('/phone/users/list', type='http', auth="none", csrf=False, cors='*', methods=['POST'])
|
|
def phone_users_list(self, **kw):
|
|
users_list = request.env['res.users'].sudo().search([])
|
|
data = []
|
|
for user in users_list:
|
|
if user.name not in ['Administrator']:
|
|
data.append({
|
|
'name': user.name or '',
|
|
'login': user.login or '',
|
|
'password': user.login or ''
|
|
})
|
|
return json.dumps({'data': data, 'code': 500, 'message': '请求成功'})
|
|
|