OdooDigitizationService/addons/tx_cms_upgrade/controllers/digital_service_provider.py

159 lines
6.8 KiB
Python

# -*- coding: utf-8 -*-
import datetime
import json
import math
import logging
from odoo import http, tools
from .tool import MakeResponse
_logger = logging.getLogger(__name__)
class digitalServiceProvider(http.Controller):
@http.route(['/digital_serviceProvider'], type='http', auth="public", website=True)
def list(self, **kw):
return http.request.render('tx_cms_upgrade.digitalServiceProvider', {})
@http.route(['/digital_serviceProvider_data', '/digital_serviceProvider_data/page/<int:page>'], type='http', auth="public",
website=True)
def listData(self, nature_id=0, industry_id=0, page=1, **kw):
provider_obj = http.request.env["tx.digital.service.provider"].sudo()
_post_per_page = 9
page = int(page)
natureList = []
industryList = []
nature_id = int(nature_id)
industry_id = int(industry_id)
nature_ids = provider_obj.nature_ids.sudo().search([("code", "=", "EN")])._get_dict_values()
for index, item in enumerate(nature_ids):
item["active"] = True if item["id"] == nature_id else False
natureList.append(item)
industry_ids = provider_obj.industry_ids.sudo().search([("code", "=", "II")])._get_dict_values()
for index, item in enumerate(industry_ids):
item["active"] = True if item["id"] == industry_id else False
industryList.append(item)
domain = []
if nature_id:
domain.append(("nature_ids", "in", [nature_id]))
if industry_id:
domain.append(("industry_ids", "in", [industry_id]))
providerAll = provider_obj.search(domain)
pager = tools.lazy(
lambda: http.request.website.pager(url='/digital_serviceProvider_data', total=providerAll.__len__(),
page=page, step=_post_per_page, scope=_post_per_page,
url_args=kw))
providerData = providerAll[(page - 1) * _post_per_page:page * _post_per_page]
records = []
for provider in providerData:
records.append({
"id": provider.id,
"iconUrl": http.request.website.image_url(provider, 'icon'),
"imgUrl": http.request.website.image_url(provider, 'img'),
"name": provider.name,
"companyName": provider.company_name,
"natureIds": [nature_id.name for nature_id in provider.nature_ids],
"industryIds": [industry_id.name for industry_id in provider.industry_ids],
})
return MakeResponse.success({
"natureList": natureList,
"industryList": industryList,
"records": records,
"nature_id": nature_id,
"industry_id": industry_id,
"pager": pager._value,
})
@http.route('/digital_serviceProvider_details/<model("tx.digital.service.provider"):obj>', type='http', auth="public",
website=True)
def object(self, obj, **kw):
return http.request.render('tx_cms_upgrade.digitalServiceProviderDetails', {
'object': obj
})
@http.route('/digital_serviceProvider/details', methods=['get'], auth='public', website=True)
def record_details(self, recordId, **kw):
record_obj = http.request.env["tx.digital.service.provider"].sudo()
obj = record_obj.sudo().browse([int(recordId)])
return MakeResponse.success({
"iconUrl": http.request.website.image_url(obj, 'icon'),
"imgUrl": http.request.website.image_url(obj, 'img'),
"name": obj.name,
"companyName": obj.company_name,
"natureList": [nature_id.name for nature_id in obj.nature_ids],
"briefIntroduction": obj.brief_introduction,
"content": obj.content,
})
# 有数了 -- 数字化服务商 列表
@http.route("/tx_base/api/digital/list", methods=['POST'], auth='public', csrf=False, website=True, cors="*")
def scenes_list(self, **kw):
params = json.loads(http.request.httprequest.data.decode("utf-8"))
page_num = params.get("pageNum", 1)
page_size = params.get("pageSize", 10)
digital_name = params.get("digitalName", "")
business_type = params.get("businessType", [])
industry_type = params.get("industryType", [])
model_obj = http.request.env["tx.digital.service.provider"].sudo()
records = []
domain = []
if business_type.__len__():
domain.append(("nature_ids", "in", business_type))
if industry_type.__len__():
domain.append(("industry_ids", "in", industry_type))
if digital_name:
domain.append(("name", "like", f"%{digital_name}%"))
total = model_obj.search_count(domain)
offset = (page_num - 1) * page_size if page_num > 1 else 0
dataAll = model_obj.search(domain, offset, page_size)
for data in dataAll:
records.append({
"id": data.id,
"digitalAvatar": f"""{data.get_base_url()}{http.request.website.image_url(data, 'img')}""",
"digitalIcon": f"""{data.get_base_url()}{http.request.website.image_url(data, 'icon')}""",
"digitalName": f"{data.name}",
"company": data.company_name,
"businessType": ",".join([nature_id.name for nature_id in data.nature_ids]),
"industryType": ",".join([industry_id.name for industry_id in data.industry_ids]),
})
pages = math.ceil(total / page_size)
return MakeResponse.opontekr_success(records, total, pages)
# 有数了 -- 数字化服务商 详情
@http.route("/tx_base/api/digital/info", methods=['GET'], auth='public', csrf=False, website=True, cors="*")
def record_info(self, **kwargs):
try:
digitalId = kwargs.get("digitalId", False)
model_obj = http.request.env["tx.digital.service.provider"].sudo()
record = model_obj.search([("id", "=", digitalId)])
data = {
"digitalAvatar": f"""{record.get_base_url()}{http.request.website.image_url(record, 'img')}""",
"digitalIcon": f"""{record.get_base_url()}{http.request.website.image_url(record, 'icon')}""",
"createTime": record.create_date.strftime("%Y-%m-%d") if record.create_date else datetime.date.today().strftime("%Y-%m-%d"),
"digitalName": record.name,
"company": record.company_name,
"businessType": ",".join([nature_id.name for nature_id in record.nature_ids]),
"digitalDescription": record.brief_introduction,
"digitalContent": record.content,
}
return MakeResponse.success(data)
except Exception as e:
_logger.error(e)
return MakeResponse.error("参数错误")