This commit is contained in:
ping 2025-08-18 13:30:09 +08:00
parent 4ab2a5462f
commit 783e61b12a
6 changed files with 78 additions and 13 deletions

View File

@ -0,0 +1,36 @@
async def homepage_product_category(ns={}):
if not ns.get('publish_type'):
return {
'status': False,
'msg': '请传递产品类型'
}
publish_type = ns.get('publish_type')
domain_name = ns.get('url_link').split("//")[1].split("/")[0]
if 'localhost' in domain_name:
domain_name = 'dev.opencomputing.cn'
db = DBPools()
async with db.sqlorContext('kboss') as sor:
# 读取user_publish_product产品
user_publish_product_sql = """SELECT DISTINCT(product_category) FROM user_publish_product WHERE domain_name = '%s' AND first_page = '1' AND audit_status = 'approved' AND listing_status = 'listing' AND del_flg = '0' AND publish_type = '%s' ORDER BY create_at DESC;""" % (domain_name, publish_type)
user_publish_product_result = await sor.sqlExe(user_publish_product_sql, {})
if not user_publish_product_result:
return {
'status': False,
'msg': '没有找到匹配的产品'
}
user_publish_product_ids = [item['product_category'].split(",")[0] for item in user_publish_product_result]
# 读取user_publish_product_category产品类别
user_publish_product_category_sql = """SELECT * FROM user_publish_product_category WHERE domain_name = '%s' AND del_flg = '0' ORDER BY priority ASC;""" % domain_name
user_publish_product_category_result = await sor.sqlExe(user_publish_product_category_sql, {})
result = [item for item in user_publish_product_category_result if str(item['id']) in user_publish_product_ids]
return {
'status': True,
'msg': 'success',
'data': result
}
ret = await homepage_product_category(params_kw)
return ret

View File

@ -91,6 +91,7 @@ async def publish_product_add(ns={}):
if user_role != '客户': if user_role != '客户':
ns['status'] = '1' ns['status'] = '1'
ns_dic['audit_status'] = 'approved' ns_dic['audit_status'] = 'approved'
ns_dic['listing_status'] = 'listing'
ns_dic['first_page'] = '1' ns_dic['first_page'] = '1'
try: try:
await sor.C('user_publish_product', ns_dic) await sor.C('user_publish_product', ns_dic)

View File

@ -36,6 +36,8 @@ async def publish_product_search(ns={}):
""" """
offset = ns.get('offset') offset = ns.get('offset')
manager_self = ns.get('manager_self') manager_self = ns.get('manager_self')
to_excel = ns.get('to_excel')
if ns.get('userid'): if ns.get('userid'):
userid = ns.get('userid') userid = ns.get('userid')
@ -141,17 +143,34 @@ async def publish_product_search(ns={}):
res['img'] = 'https://' + domain_name + '/idfile?path=' + res['img'] res['img'] = 'https://' + domain_name + '/idfile?path=' + res['img']
else: else:
res['img'] = None res['img'] = None
return {
'status': True, # 读取产品类别表 轮询匹配result中的所有类别
'msg': 'Requirements retrieved successfully', product_category_list = await sor.R('user_publish_product_category', {'del_flg': '0'})
'data': { for res in result:
"id": uuid(), for product_category in product_category_list:
"total_count": total_count, if product_category['id'] == res['product_category'].split(",")[0]:
"page_size": page_size, res['category_name'] = product_category['product_category']
"current_page": current_page_param, break
"product_list": result
if to_excel == '1':
res = await publish_product_to_excel({'result_from_search': result})
return {
'status': True,
'msg': 'search to excel success',
'data': res['data']
}
else:
return {
'status': True,
'msg': 'Requirements retrieved successfully',
'data': {
"id": uuid(),
"total_count": total_count,
"page_size": page_size,
"current_page": current_page_param,
"product_list": result
}
} }
}
except Exception as e: except Exception as e:
return { return {
'status': False, 'status': False,

View File

@ -44,8 +44,12 @@ async def publish_product_search_detail(ns={}):
# 如果用户角色是运营并且from='b' product_list中的phone_number和email做加星号处理 # 如果用户角色是运营并且from='b' product_list中的phone_number和email做加星号处理
product_list = await sor.R('user_publish_product', {'id': ns.get('id'), 'del_flg': '0'}) product_list = await sor.R('user_publish_product', {'id': ns.get('id'), 'del_flg': '0'})
product_category = await sor.R('user_publish_product_category', {'id': product_list[0]['product_category'].split(',')[0]})
product_list[0]['product_category'] = product_category[0]['product_category']
if user_role == '运营' and ns.get('from') == 'b': if user_role == '运营' and ns.get('from') == 'b':
pass pass
elif orgid == product_list[0]['orgid']:
pass
else: else:
for product in product_list: for product in product_list:
if product.get('phone_number'): if product.get('phone_number'):

View File

@ -20,8 +20,12 @@ async def publish_product_search_first_page(ns={}):
async with db.sqlorContext('kboss') as sor: async with db.sqlorContext('kboss') as sor:
try: try:
ns['del_flg'] = '0' ns['del_flg'] = '0'
if to_page == 'first_page': # 如果是首页并且有产品分类
count_sql = """SELECT COUNT(*) AS total_count FROM user_publish_product WHERE domain_name = '%s' AND first_page = '1' AND audit_status = 'approved' AND del_flg = '0' AND publish_type = '%s' ORDER BY create_at DESC;""" % (domain_name, publish_type) if to_page == 'first_page' and product_category:
count_sql = """SELECT COUNT(*) AS total_count FROM user_publish_product WHERE domain_name = '%s' AND first_page = '1' AND audit_status = 'approved' AND listing_status = 'listing' AND del_flg = '0' AND publish_type = '%s' AND product_category LIKE '%%%%%s%%%%' ORDER BY create_at DESC;""" % (domain_name, publish_type, product_category)
find_sql = """SELECT upp.* FROM user_publish_product AS upp INNER JOIN user_publish_product_category AS uppc ON upp.product_category LIKE uppc.id WHERE upp.domain_name = '%s' AND upp.first_page = '1' AND upp.audit_status = 'approved' AND listing_status = 'listing' AND upp.product_category LIKE '%%%%%s%%%%' AND upp.del_flg = '0' AND upp.publish_type = '%s' ORDER BY uppc.priority ASC, upp.create_at DESC LIMIT %s OFFSET %s;""" % (domain_name, product_category, publish_type, page_size, current_page)
elif to_page == 'first_page':
count_sql = """SELECT COUNT(*) AS total_count FROM user_publish_product WHERE domain_name = '%s' AND first_page = '1' AND audit_status = 'approved' AND listing_status = 'listing' AND del_flg = '0' AND publish_type = '%s' ORDER BY create_at DESC;""" % (domain_name, publish_type)
find_sql = """SELECT upp.* FROM user_publish_product AS upp INNER JOIN user_publish_product_category AS uppc ON upp.product_category LIKE uppc.id WHERE upp.domain_name = '%s' AND upp.first_page = '1' AND upp.audit_status = 'approved' AND upp.del_flg = '0' AND upp.publish_type = '%s' ORDER BY uppc.priority ASC, upp.create_at DESC LIMIT %s OFFSET %s;""" % (domain_name, publish_type, page_size, current_page) find_sql = """SELECT upp.* FROM user_publish_product AS upp INNER JOIN user_publish_product_category AS uppc ON upp.product_category LIKE uppc.id WHERE upp.domain_name = '%s' AND upp.first_page = '1' AND upp.audit_status = 'approved' AND upp.del_flg = '0' AND upp.publish_type = '%s' ORDER BY uppc.priority ASC, upp.create_at DESC LIMIT %s OFFSET %s;""" % (domain_name, publish_type, page_size, current_page)
elif to_page == 'square' and product_category: elif to_page == 'square' and product_category:
count_sql = """SELECT COUNT(*) AS total_count FROM user_publish_product WHERE domain_name = '%s' AND product_category LIKE """ % domain_name + """'%%""" + product_category + """%%'""" + """ AND audit_status = 'approved' AND del_flg = '0' AND publish_type = '%s' ORDER BY create_at DESC;""" % publish_type count_sql = """SELECT COUNT(*) AS total_count FROM user_publish_product WHERE domain_name = '%s' AND product_category LIKE """ % domain_name + """'%%""" + product_category + """%%'""" + """ AND audit_status = 'approved' AND del_flg = '0' AND publish_type = '%s' ORDER BY create_at DESC;""" % publish_type

View File

@ -68,10 +68,11 @@ async def publish_product_update(ns={}):
# 非客户角色编辑客户的产品 # 非客户角色编辑客户的产品
if user_role != '客户' and ns.get('orgid') != orgid: if user_role != '客户' and ns.get('orgid') != orgid:
# 非客户角色审核客户的产品 # 非客户角色审核客户的产品
# 如果是待审状态 更新审核状态为通过 上架状态为上架 # 如果是待审状态 更新审核状态为通过 上架状态为上架 清空驳回原因
if ns.get('audit_status') == 'approved': if ns.get('audit_status') == 'approved':
ns_dic['audit_status'] = 'approved' ns_dic['audit_status'] = 'approved'
ns_dic['listing_status'] = 'listing' ns_dic['listing_status'] = 'listing'
ns_dic['reject_reason'] = None
# 如果是上架商品 更新publish_time为当前时间 # 如果是上架商品 更新publish_time为当前时间
if ns.get('listing_status') == 'listing': if ns.get('listing_status') == 'listing':
ns_dic['publish_time'] = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') ns_dic['publish_time'] = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')