diff --git a/app/global_func.py b/app/global_func.py index 086a441..7bfd364 100644 --- a/app/global_func.py +++ b/app/global_func.py @@ -4,8 +4,8 @@ CMS全局函数 — 注册到ServerEnv供.dspy和.ui调用 from ahserver.serverenv import ServerEnv def get_module_dbname(mname): - """所有模块共享sage数据库""" - return 'sage' + """CMS应用统一使用ocai_cms数据库""" + return 'ocai_cms' def UiWindow(title, icon, content, cheight=10, cwidth=15): return { diff --git a/entcms/entcms/init.py b/entcms/entcms/init.py index c1b6171..693c76f 100644 --- a/entcms/entcms/init.py +++ b/entcms/entcms/init.py @@ -10,7 +10,7 @@ from sqlor.dbpools import DBPools MODULE_NAME = "entcms" MODULE_VERSION = "1.0.0" -DBNAME = "entcms" +DBNAME = "ocai_cms" # ===== CMS Content CRUD ===== diff --git a/wwwroot/api/category_options.dspy b/wwwroot/api/category_options.dspy index c4b8f0e..31de727 100644 --- a/wwwroot/api/category_options.dspy +++ b/wwwroot/api/category_options.dspy @@ -1,15 +1,13 @@ -import json -from appPublic.uniqueID import getID config = getConfig('.') DBPools(config.databases) dbname = get_module_dbname('entcms') -sor = DBPools().sqlorContext(dbname) +async with db.sqlorContext(dbname) as sor: -content_type = params_kw.get('content_type', None) -ns = {'sort': 'sort_order asc'} -if content_type: - ns['content_type'] = content_type -rows = await sor.R('cms_categories', ns) -options = [{'value': r['id'], 'text': r['name']} for r in rows] -print(json.dumps({'status': 'ok', 'data': {'options': options}}, ensure_ascii=False)) + content_type = params_kw.get('content_type', None) + ns = {'sort': 'sort_order asc'} + if content_type: + ns['content_type'] = content_type + rows = await sor.R('cms_categories', ns) + options = [{'value': r['id'], 'text': r['name']} for r in rows] + return {'status': 'ok', 'data': {'options': options}} diff --git a/wwwroot/api/cms_categories_create.dspy b/wwwroot/api/cms_categories_create.dspy index 2eb64f5..179f49c 100644 --- a/wwwroot/api/cms_categories_create.dspy +++ b/wwwroot/api/cms_categories_create.dspy @@ -1,36 +1,34 @@ -import json -from appPublic.uniqueID import getID config = getConfig('.') DBPools(config.databases) dbname = get_module_dbname('entcms') -sor = DBPools().sqlorContext(dbname) +async with db.sqlorContext(dbname) as sor: -data = {'id': getID()} + data = {'id': getID()} -v = params_kw.get('org_id', None) -if v is not None: - data['org_id'] = v + v = params_kw.get('org_id', None) + if v is not None: + data['org_id'] = v -v = params_kw.get('name', None) -if v is not None: - data['name'] = v + v = params_kw.get('name', None) + if v is not None: + data['name'] = v -v = params_kw.get('parent_id', None) -if v is not None: - data['parent_id'] = v + v = params_kw.get('parent_id', None) + if v is not None: + data['parent_id'] = v -v = params_kw.get('content_type', None) -if v is not None: - data['content_type'] = v + v = params_kw.get('content_type', None) + if v is not None: + data['content_type'] = v -v = params_kw.get('description', None) -if v is not None: - data['description'] = v + v = params_kw.get('description', None) + if v is not None: + data['description'] = v -v = params_kw.get('sort_order', None) -if v is not None: - data['sort_order'] = v + v = params_kw.get('sort_order', None) + if v is not None: + data['sort_order'] = v -await sor.C('cms_categories', data) -print(json.dumps({'widgettype': 'Message', 'options': {'text': '创建成功', 'messagetype': 'success'}}, ensure_ascii=False)) + await sor.C('cms_categories', data) + return {'widgettype': 'Message', 'options': {'text': '创建成功', 'messagetype': 'success'}} diff --git a/wwwroot/api/cms_categories_delete.dspy b/wwwroot/api/cms_categories_delete.dspy index 96fa018..a289324 100644 --- a/wwwroot/api/cms_categories_delete.dspy +++ b/wwwroot/api/cms_categories_delete.dspy @@ -1,14 +1,11 @@ -import json -from appPublic.uniqueID import getID config = getConfig('.') DBPools(config.databases) dbname = get_module_dbname('entcms') -sor = DBPools().sqlorContext(dbname) +async with db.sqlorContext(dbname) as sor: -_id = params_kw.get('id', '') -if not _id: - print(json.dumps({'widgettype': 'Message', 'options': {'text': '缺少ID', 'messagetype': 'error'}}, ensure_ascii=False)) - return -await sor.D('cms_categories', {'id': _id}) -print(json.dumps({'widgettype': 'Message', 'options': {'text': '删除成功', 'messagetype': 'success'}}, ensure_ascii=False)) + _id = params_kw.get('id', '') + if not _id: + return {'widgettype': 'Message', 'options': {'text': '缺少ID', 'messagetype': 'error'}} + await sor.D('cms_categories', {'id': _id}) + return {'widgettype': 'Message', 'options': {'text': '删除成功', 'messagetype': 'success'}} diff --git a/wwwroot/api/cms_categories_list.dspy b/wwwroot/api/cms_categories_list.dspy index dde93a7..4ad13c9 100644 --- a/wwwroot/api/cms_categories_list.dspy +++ b/wwwroot/api/cms_categories_list.dspy @@ -1,32 +1,30 @@ -import json -from appPublic.uniqueID import getID config = getConfig('.') DBPools(config.databases) dbname = get_module_dbname('entcms') -sor = DBPools().sqlorContext(dbname) +async with db.sqlorContext(dbname) as sor: -ns = {'sort': 'sort_order asc'} + ns = {'sort': 'sort_order asc'} -# data_filter support -filter_json = params_kw.get('data_filter', None) -if filter_json: - from sqlor.filter import DBFilter - try: - filter_def = json.loads(filter_json) if isinstance(filter_json, str) else filter_json - dbf = DBFilter(filter_def) - conds = dbf.gen(params_kw) - ns.update(conds) - ns.update(dbf.consts) - except Exception: - pass + # data_filter support + filter_json = params_kw.get('data_filter', None) + if filter_json: + from sqlor.filter import DBFilter + try: + filter_def = json.loads(filter_json) if isinstance(filter_json, str) else filter_json + dbf = DBFilter(filter_def) + conds = dbf.gen(params_kw) + ns.update(conds) + ns.update(dbf.consts) + except Exception: + pass -# Manual filter params + # Manual filter params -_content_type = params_kw.get('content_type', None) -if _content_type: - ns['content_type'] = _content_type + _content_type = params_kw.get('content_type', None) + if _content_type: + ns['content_type'] = _content_type -rows = await sor.R('cms_categories', ns) -total = len(rows) -print(json.dumps({'status': 'ok', 'rows': rows, 'total': total}, ensure_ascii=False)) + rows = await sor.R('cms_categories', ns) + total = len(rows) + return {'status': 'ok', 'rows': rows, 'total': total} diff --git a/wwwroot/api/cms_categories_update.dspy b/wwwroot/api/cms_categories_update.dspy index f69ca9b..11e494c 100644 --- a/wwwroot/api/cms_categories_update.dspy +++ b/wwwroot/api/cms_categories_update.dspy @@ -1,39 +1,36 @@ -import json -from appPublic.uniqueID import getID config = getConfig('.') DBPools(config.databases) dbname = get_module_dbname('entcms') -sor = DBPools().sqlorContext(dbname) +async with db.sqlorContext(dbname) as sor: -data = {'id': params_kw.get('id', '')} -if not data['id']: - print(json.dumps({'widgettype': 'Message', 'options': {'text': '缺少ID', 'messagetype': 'error'}}, ensure_ascii=False)) - return + data = {'id': params_kw.get('id', '')} + if not data['id']: + return {'widgettype': 'Message', 'options': {'text': '缺少ID', 'messagetype': 'error'}} -v = params_kw.get('org_id', None) -if v is not None: - data['org_id'] = v + v = params_kw.get('org_id', None) + if v is not None: + data['org_id'] = v -v = params_kw.get('name', None) -if v is not None: - data['name'] = v + v = params_kw.get('name', None) + if v is not None: + data['name'] = v -v = params_kw.get('parent_id', None) -if v is not None: - data['parent_id'] = v + v = params_kw.get('parent_id', None) + if v is not None: + data['parent_id'] = v -v = params_kw.get('content_type', None) -if v is not None: - data['content_type'] = v + v = params_kw.get('content_type', None) + if v is not None: + data['content_type'] = v -v = params_kw.get('description', None) -if v is not None: - data['description'] = v + v = params_kw.get('description', None) + if v is not None: + data['description'] = v -v = params_kw.get('sort_order', None) -if v is not None: - data['sort_order'] = v + v = params_kw.get('sort_order', None) + if v is not None: + data['sort_order'] = v -await sor.U('cms_categories', data) -print(json.dumps({'widgettype': 'Message', 'options': {'text': '更新成功', 'messagetype': 'success'}}, ensure_ascii=False)) + await sor.U('cms_categories', data) + return {'widgettype': 'Message', 'options': {'text': '更新成功', 'messagetype': 'success'}} diff --git a/wwwroot/api/cms_content_create.dspy b/wwwroot/api/cms_content_create.dspy index a6e90f7..e4b1a6a 100644 --- a/wwwroot/api/cms_content_create.dspy +++ b/wwwroot/api/cms_content_create.dspy @@ -1,60 +1,58 @@ -import json -from appPublic.uniqueID import getID config = getConfig('.') DBPools(config.databases) dbname = get_module_dbname('entcms') -sor = DBPools().sqlorContext(dbname) +async with db.sqlorContext(dbname) as sor: -data = {'id': getID()} + data = {'id': getID()} -v = params_kw.get('org_id', None) -if v is not None: - data['org_id'] = v + v = params_kw.get('org_id', None) + if v is not None: + data['org_id'] = v -v = params_kw.get('content_type', None) -if v is not None: - data['content_type'] = v + v = params_kw.get('content_type', None) + if v is not None: + data['content_type'] = v -v = params_kw.get('category_id', None) -if v is not None: - data['category_id'] = v + v = params_kw.get('category_id', None) + if v is not None: + data['category_id'] = v -v = params_kw.get('title', None) -if v is not None: - data['title'] = v + v = params_kw.get('title', None) + if v is not None: + data['title'] = v -v = params_kw.get('subtitle', None) -if v is not None: - data['subtitle'] = v + v = params_kw.get('subtitle', None) + if v is not None: + data['subtitle'] = v -v = params_kw.get('summary_text', None) -if v is not None: - data['summary_text'] = v + v = params_kw.get('summary_text', None) + if v is not None: + data['summary_text'] = v -v = params_kw.get('body', None) -if v is not None: - data['body'] = v + v = params_kw.get('body', None) + if v is not None: + data['body'] = v -v = params_kw.get('image_url', None) -if v is not None: - data['image_url'] = v + v = params_kw.get('image_url', None) + if v is not None: + data['image_url'] = v -v = params_kw.get('tags', None) -if v is not None: - data['tags'] = v + v = params_kw.get('tags', None) + if v is not None: + data['tags'] = v -v = params_kw.get('sort_order', None) -if v is not None: - data['sort_order'] = v + v = params_kw.get('sort_order', None) + if v is not None: + data['sort_order'] = v -v = params_kw.get('status', None) -if v is not None: - data['status'] = v + v = params_kw.get('status', None) + if v is not None: + data['status'] = v -v = params_kw.get('extra_json', None) -if v is not None: - data['extra_json'] = v + v = params_kw.get('extra_json', None) + if v is not None: + data['extra_json'] = v -await sor.C('cms_content', data) -print(json.dumps({'widgettype': 'Message', 'options': {'text': '创建成功', 'messagetype': 'success'}}, ensure_ascii=False)) + await sor.C('cms_content', data) + return {'widgettype': 'Message', 'options': {'text': '创建成功', 'messagetype': 'success'}} diff --git a/wwwroot/api/cms_content_delete.dspy b/wwwroot/api/cms_content_delete.dspy index d122bee..bfb5ff0 100644 --- a/wwwroot/api/cms_content_delete.dspy +++ b/wwwroot/api/cms_content_delete.dspy @@ -1,14 +1,11 @@ -import json -from appPublic.uniqueID import getID config = getConfig('.') DBPools(config.databases) dbname = get_module_dbname('entcms') -sor = DBPools().sqlorContext(dbname) +async with db.sqlorContext(dbname) as sor: -_id = params_kw.get('id', '') -if not _id: - print(json.dumps({'widgettype': 'Message', 'options': {'text': '缺少ID', 'messagetype': 'error'}}, ensure_ascii=False)) - return -await sor.D('cms_content', {'id': _id}) -print(json.dumps({'widgettype': 'Message', 'options': {'text': '删除成功', 'messagetype': 'success'}}, ensure_ascii=False)) + _id = params_kw.get('id', '') + if not _id: + return {'widgettype': 'Message', 'options': {'text': '缺少ID', 'messagetype': 'error'}} + await sor.D('cms_content', {'id': _id}) + return {'widgettype': 'Message', 'options': {'text': '删除成功', 'messagetype': 'success'}} diff --git a/wwwroot/api/cms_content_list.dspy b/wwwroot/api/cms_content_list.dspy index 25de280..21c7dbc 100644 --- a/wwwroot/api/cms_content_list.dspy +++ b/wwwroot/api/cms_content_list.dspy @@ -1,36 +1,34 @@ -import json -from appPublic.uniqueID import getID config = getConfig('.') DBPools(config.databases) dbname = get_module_dbname('entcms') -sor = DBPools().sqlorContext(dbname) +async with db.sqlorContext(dbname) as sor: -ns = {'sort': 'sort_order asc, created_at desc'} + ns = {'sort': 'sort_order asc, created_at desc'} -# data_filter support -filter_json = params_kw.get('data_filter', None) -if filter_json: - from sqlor.filter import DBFilter - try: - filter_def = json.loads(filter_json) if isinstance(filter_json, str) else filter_json - dbf = DBFilter(filter_def) - conds = dbf.gen(params_kw) - ns.update(conds) - ns.update(dbf.consts) - except Exception: - pass + # data_filter support + filter_json = params_kw.get('data_filter', None) + if filter_json: + from sqlor.filter import DBFilter + try: + filter_def = json.loads(filter_json) if isinstance(filter_json, str) else filter_json + dbf = DBFilter(filter_def) + conds = dbf.gen(params_kw) + ns.update(conds) + ns.update(dbf.consts) + except Exception: + pass -# Manual filter params + # Manual filter params -_content_type = params_kw.get('content_type', None) -if _content_type: - ns['content_type'] = _content_type + _content_type = params_kw.get('content_type', None) + if _content_type: + ns['content_type'] = _content_type -_status = params_kw.get('status', None) -if _status: - ns['status'] = _status + _status = params_kw.get('status', None) + if _status: + ns['status'] = _status -rows = await sor.R('cms_content', ns) -total = len(rows) -print(json.dumps({'status': 'ok', 'rows': rows, 'total': total}, ensure_ascii=False)) + rows = await sor.R('cms_content', ns) + total = len(rows) + return {'status': 'ok', 'rows': rows, 'total': total} diff --git a/wwwroot/api/cms_content_update.dspy b/wwwroot/api/cms_content_update.dspy index 204f018..31c7f7d 100644 --- a/wwwroot/api/cms_content_update.dspy +++ b/wwwroot/api/cms_content_update.dspy @@ -1,71 +1,68 @@ -import json -from appPublic.uniqueID import getID config = getConfig('.') DBPools(config.databases) dbname = get_module_dbname('entcms') -sor = DBPools().sqlorContext(dbname) +async with db.sqlorContext(dbname) as sor: -data = {'id': params_kw.get('id', '')} -if not data['id']: - print(json.dumps({'widgettype': 'Message', 'options': {'text': '缺少ID', 'messagetype': 'error'}}, ensure_ascii=False)) - return + data = {'id': params_kw.get('id', '')} + if not data['id']: + return {'widgettype': 'Message', 'options': {'text': '缺少ID', 'messagetype': 'error'}} -v = params_kw.get('org_id', None) -if v is not None: - data['org_id'] = v + v = params_kw.get('org_id', None) + if v is not None: + data['org_id'] = v -v = params_kw.get('content_type', None) -if v is not None: - data['content_type'] = v + v = params_kw.get('content_type', None) + if v is not None: + data['content_type'] = v -v = params_kw.get('category_id', None) -if v is not None: - data['category_id'] = v + v = params_kw.get('category_id', None) + if v is not None: + data['category_id'] = v -v = params_kw.get('title', None) -if v is not None: - data['title'] = v + v = params_kw.get('title', None) + if v is not None: + data['title'] = v -v = params_kw.get('subtitle', None) -if v is not None: - data['subtitle'] = v + v = params_kw.get('subtitle', None) + if v is not None: + data['subtitle'] = v -v = params_kw.get('summary_text', None) -if v is not None: - data['summary_text'] = v + v = params_kw.get('summary_text', None) + if v is not None: + data['summary_text'] = v -v = params_kw.get('body', None) -if v is not None: - data['body'] = v + v = params_kw.get('body', None) + if v is not None: + data['body'] = v -v = params_kw.get('image_url', None) -if v is not None: - data['image_url'] = v + v = params_kw.get('image_url', None) + if v is not None: + data['image_url'] = v -v = params_kw.get('tags', None) -if v is not None: - data['tags'] = v + v = params_kw.get('tags', None) + if v is not None: + data['tags'] = v -v = params_kw.get('sort_order', None) -if v is not None: - data['sort_order'] = v + v = params_kw.get('sort_order', None) + if v is not None: + data['sort_order'] = v -v = params_kw.get('status', None) -if v is not None: - data['status'] = v + v = params_kw.get('status', None) + if v is not None: + data['status'] = v -v = params_kw.get('extra_json', None) -if v is not None: - data['extra_json'] = v + v = params_kw.get('extra_json', None) + if v is not None: + data['extra_json'] = v -v = params_kw.get('approval_id', None) -if v is not None: - data['approval_id'] = v + v = params_kw.get('approval_id', None) + if v is not None: + data['approval_id'] = v -v = params_kw.get('published_at', None) -if v is not None: - data['published_at'] = v + v = params_kw.get('published_at', None) + if v is not None: + data['published_at'] = v -await sor.U('cms_content', data) -print(json.dumps({'widgettype': 'Message', 'options': {'text': '更新成功', 'messagetype': 'success'}}, ensure_ascii=False)) + await sor.U('cms_content', data) + return {'widgettype': 'Message', 'options': {'text': '更新成功', 'messagetype': 'success'}} diff --git a/wwwroot/api/cms_leads_create.dspy b/wwwroot/api/cms_leads_create.dspy index 7b8071b..6d2a3e2 100644 --- a/wwwroot/api/cms_leads_create.dspy +++ b/wwwroot/api/cms_leads_create.dspy @@ -1,68 +1,66 @@ -import json -from appPublic.uniqueID import getID config = getConfig('.') DBPools(config.databases) dbname = get_module_dbname('entcms') -sor = DBPools().sqlorContext(dbname) +async with db.sqlorContext(dbname) as sor: -data = {'id': getID()} + data = {'id': getID()} -v = params_kw.get('org_id', None) -if v is not None: - data['org_id'] = v + v = params_kw.get('org_id', None) + if v is not None: + data['org_id'] = v -v = params_kw.get('source', None) -if v is not None: - data['source'] = v + v = params_kw.get('source', None) + if v is not None: + data['source'] = v -v = params_kw.get('name', None) -if v is not None: - data['name'] = v + v = params_kw.get('name', None) + if v is not None: + data['name'] = v -v = params_kw.get('company', None) -if v is not None: - data['company'] = v + v = params_kw.get('company', None) + if v is not None: + data['company'] = v -v = params_kw.get('phone', None) -if v is not None: - data['phone'] = v + v = params_kw.get('phone', None) + if v is not None: + data['phone'] = v -v = params_kw.get('email', None) -if v is not None: - data['email'] = v + v = params_kw.get('email', None) + if v is not None: + data['email'] = v -v = params_kw.get('industry', None) -if v is not None: - data['industry'] = v + v = params_kw.get('industry', None) + if v is not None: + data['industry'] = v -v = params_kw.get('region', None) -if v is not None: - data['region'] = v + v = params_kw.get('region', None) + if v is not None: + data['region'] = v -v = params_kw.get('interest_products', None) -if v is not None: - data['interest_products'] = v + v = params_kw.get('interest_products', None) + if v is not None: + data['interest_products'] = v -v = params_kw.get('message', None) -if v is not None: - data['message'] = v + v = params_kw.get('message', None) + if v is not None: + data['message'] = v -v = params_kw.get('raw_text', None) -if v is not None: - data['raw_text'] = v + v = params_kw.get('raw_text', None) + if v is not None: + data['raw_text'] = v -v = params_kw.get('status', None) -if v is not None: - data['status'] = v + v = params_kw.get('status', None) + if v is not None: + data['status'] = v -v = params_kw.get('assigned_to', None) -if v is not None: - data['assigned_to'] = v + v = params_kw.get('assigned_to', None) + if v is not None: + data['assigned_to'] = v -v = params_kw.get('notes', None) -if v is not None: - data['notes'] = v + v = params_kw.get('notes', None) + if v is not None: + data['notes'] = v -await sor.C('cms_leads', data) -print(json.dumps({'widgettype': 'Message', 'options': {'text': '创建成功', 'messagetype': 'success'}}, ensure_ascii=False)) + await sor.C('cms_leads', data) + return {'widgettype': 'Message', 'options': {'text': '创建成功', 'messagetype': 'success'}} diff --git a/wwwroot/api/cms_leads_delete.dspy b/wwwroot/api/cms_leads_delete.dspy index 649de95..05eaeb5 100644 --- a/wwwroot/api/cms_leads_delete.dspy +++ b/wwwroot/api/cms_leads_delete.dspy @@ -1,14 +1,11 @@ -import json -from appPublic.uniqueID import getID config = getConfig('.') DBPools(config.databases) dbname = get_module_dbname('entcms') -sor = DBPools().sqlorContext(dbname) +async with db.sqlorContext(dbname) as sor: -_id = params_kw.get('id', '') -if not _id: - print(json.dumps({'widgettype': 'Message', 'options': {'text': '缺少ID', 'messagetype': 'error'}}, ensure_ascii=False)) - return -await sor.D('cms_leads', {'id': _id}) -print(json.dumps({'widgettype': 'Message', 'options': {'text': '删除成功', 'messagetype': 'success'}}, ensure_ascii=False)) + _id = params_kw.get('id', '') + if not _id: + return {'widgettype': 'Message', 'options': {'text': '缺少ID', 'messagetype': 'error'}} + await sor.D('cms_leads', {'id': _id}) + return {'widgettype': 'Message', 'options': {'text': '删除成功', 'messagetype': 'success'}} diff --git a/wwwroot/api/cms_leads_list.dspy b/wwwroot/api/cms_leads_list.dspy index d394b07..2d3a956 100644 --- a/wwwroot/api/cms_leads_list.dspy +++ b/wwwroot/api/cms_leads_list.dspy @@ -1,36 +1,34 @@ -import json -from appPublic.uniqueID import getID config = getConfig('.') DBPools(config.databases) dbname = get_module_dbname('entcms') -sor = DBPools().sqlorContext(dbname) +async with db.sqlorContext(dbname) as sor: -ns = {'sort': 'created_at desc'} + ns = {'sort': 'created_at desc'} -# data_filter support -filter_json = params_kw.get('data_filter', None) -if filter_json: - from sqlor.filter import DBFilter - try: - filter_def = json.loads(filter_json) if isinstance(filter_json, str) else filter_json - dbf = DBFilter(filter_def) - conds = dbf.gen(params_kw) - ns.update(conds) - ns.update(dbf.consts) - except Exception: - pass + # data_filter support + filter_json = params_kw.get('data_filter', None) + if filter_json: + from sqlor.filter import DBFilter + try: + filter_def = json.loads(filter_json) if isinstance(filter_json, str) else filter_json + dbf = DBFilter(filter_def) + conds = dbf.gen(params_kw) + ns.update(conds) + ns.update(dbf.consts) + except Exception: + pass -# Manual filter params + # Manual filter params -_status = params_kw.get('status', None) -if _status: - ns['status'] = _status + _status = params_kw.get('status', None) + if _status: + ns['status'] = _status -_source = params_kw.get('source', None) -if _source: - ns['source'] = _source + _source = params_kw.get('source', None) + if _source: + ns['source'] = _source -rows = await sor.R('cms_leads', ns) -total = len(rows) -print(json.dumps({'status': 'ok', 'rows': rows, 'total': total}, ensure_ascii=False)) + rows = await sor.R('cms_leads', ns) + total = len(rows) + return {'status': 'ok', 'rows': rows, 'total': total} diff --git a/wwwroot/api/cms_leads_update.dspy b/wwwroot/api/cms_leads_update.dspy index 496bb61..9c674cf 100644 --- a/wwwroot/api/cms_leads_update.dspy +++ b/wwwroot/api/cms_leads_update.dspy @@ -1,71 +1,68 @@ -import json -from appPublic.uniqueID import getID config = getConfig('.') DBPools(config.databases) dbname = get_module_dbname('entcms') -sor = DBPools().sqlorContext(dbname) +async with db.sqlorContext(dbname) as sor: -data = {'id': params_kw.get('id', '')} -if not data['id']: - print(json.dumps({'widgettype': 'Message', 'options': {'text': '缺少ID', 'messagetype': 'error'}}, ensure_ascii=False)) - return + data = {'id': params_kw.get('id', '')} + if not data['id']: + return {'widgettype': 'Message', 'options': {'text': '缺少ID', 'messagetype': 'error'}} -v = params_kw.get('org_id', None) -if v is not None: - data['org_id'] = v + v = params_kw.get('org_id', None) + if v is not None: + data['org_id'] = v -v = params_kw.get('source', None) -if v is not None: - data['source'] = v + v = params_kw.get('source', None) + if v is not None: + data['source'] = v -v = params_kw.get('name', None) -if v is not None: - data['name'] = v + v = params_kw.get('name', None) + if v is not None: + data['name'] = v -v = params_kw.get('company', None) -if v is not None: - data['company'] = v + v = params_kw.get('company', None) + if v is not None: + data['company'] = v -v = params_kw.get('phone', None) -if v is not None: - data['phone'] = v + v = params_kw.get('phone', None) + if v is not None: + data['phone'] = v -v = params_kw.get('email', None) -if v is not None: - data['email'] = v + v = params_kw.get('email', None) + if v is not None: + data['email'] = v -v = params_kw.get('industry', None) -if v is not None: - data['industry'] = v + v = params_kw.get('industry', None) + if v is not None: + data['industry'] = v -v = params_kw.get('region', None) -if v is not None: - data['region'] = v + v = params_kw.get('region', None) + if v is not None: + data['region'] = v -v = params_kw.get('interest_products', None) -if v is not None: - data['interest_products'] = v + v = params_kw.get('interest_products', None) + if v is not None: + data['interest_products'] = v -v = params_kw.get('message', None) -if v is not None: - data['message'] = v + v = params_kw.get('message', None) + if v is not None: + data['message'] = v -v = params_kw.get('raw_text', None) -if v is not None: - data['raw_text'] = v + v = params_kw.get('raw_text', None) + if v is not None: + data['raw_text'] = v -v = params_kw.get('status', None) -if v is not None: - data['status'] = v + v = params_kw.get('status', None) + if v is not None: + data['status'] = v -v = params_kw.get('assigned_to', None) -if v is not None: - data['assigned_to'] = v + v = params_kw.get('assigned_to', None) + if v is not None: + data['assigned_to'] = v -v = params_kw.get('notes', None) -if v is not None: - data['notes'] = v + v = params_kw.get('notes', None) + if v is not None: + data['notes'] = v -await sor.U('cms_leads', data) -print(json.dumps({'widgettype': 'Message', 'options': {'text': '更新成功', 'messagetype': 'success'}}, ensure_ascii=False)) + await sor.U('cms_leads', data) + return {'widgettype': 'Message', 'options': {'text': '更新成功', 'messagetype': 'success'}} diff --git a/wwwroot/api/cms_sections_create.dspy b/wwwroot/api/cms_sections_create.dspy index 0aeab2f..72301f3 100644 --- a/wwwroot/api/cms_sections_create.dspy +++ b/wwwroot/api/cms_sections_create.dspy @@ -1,44 +1,42 @@ -import json -from appPublic.uniqueID import getID config = getConfig('.') DBPools(config.databases) dbname = get_module_dbname('entcms') -sor = DBPools().sqlorContext(dbname) +async with db.sqlorContext(dbname) as sor: -data = {'id': getID()} -v = params_kw.get('org_id', None) -if v is not None: - data['org_id'] = v -v = params_kw.get('section_key', None) -if v is not None: - data['section_key'] = v -v = params_kw.get('title', None) -if v is not None: - data['title'] = v -v = params_kw.get('subtitle', None) -if v is not None: - data['subtitle'] = v -v = params_kw.get('section_type', None) -if v is not None: - data['section_type'] = v -v = params_kw.get('content_type', None) -if v is not None: - data['content_type'] = v -v = params_kw.get('sort_order', None) -if v is not None: - data['sort_order'] = v -v = params_kw.get('is_visible', None) -if v is not None: - data['is_visible'] = v -v = params_kw.get('display_config', None) -if v is not None: - data['display_config'] = v -v = params_kw.get('style_config', None) -if v is not None: - data['style_config'] = v -v = params_kw.get('static_content', None) -if v is not None: - data['static_content'] = v -await sor.C('cms_sections', data) -print(json.dumps({'widgettype': 'Message', 'options': {'text': '创建成功', 'messagetype': 'success'}}, ensure_ascii=False)) + data = {'id': getID()} + v = params_kw.get('org_id', None) + if v is not None: + data['org_id'] = v + v = params_kw.get('section_key', None) + if v is not None: + data['section_key'] = v + v = params_kw.get('title', None) + if v is not None: + data['title'] = v + v = params_kw.get('subtitle', None) + if v is not None: + data['subtitle'] = v + v = params_kw.get('section_type', None) + if v is not None: + data['section_type'] = v + v = params_kw.get('content_type', None) + if v is not None: + data['content_type'] = v + v = params_kw.get('sort_order', None) + if v is not None: + data['sort_order'] = v + v = params_kw.get('is_visible', None) + if v is not None: + data['is_visible'] = v + v = params_kw.get('display_config', None) + if v is not None: + data['display_config'] = v + v = params_kw.get('style_config', None) + if v is not None: + data['style_config'] = v + v = params_kw.get('static_content', None) + if v is not None: + data['static_content'] = v + await sor.C('cms_sections', data) + return {'widgettype': 'Message', 'options': {'text': '创建成功', 'messagetype': 'success'}} diff --git a/wwwroot/api/cms_sections_delete.dspy b/wwwroot/api/cms_sections_delete.dspy index 430a2eb..d80e9fd 100644 --- a/wwwroot/api/cms_sections_delete.dspy +++ b/wwwroot/api/cms_sections_delete.dspy @@ -1,14 +1,11 @@ -import json -from appPublic.uniqueID import getID config = getConfig('.') DBPools(config.databases) dbname = get_module_dbname('entcms') -sor = DBPools().sqlorContext(dbname) +async with db.sqlorContext(dbname) as sor: -_id = params_kw.get('id', '') -if not _id: - print(json.dumps({'widgettype': 'Message', 'options': {'text': '缺少ID', 'messagetype': 'error'}}, ensure_ascii=False)) - return -await sor.D('cms_sections', {'id': _id}) -print(json.dumps({'widgettype': 'Message', 'options': {'text': '删除成功', 'messagetype': 'success'}}, ensure_ascii=False)) + _id = params_kw.get('id', '') + if not _id: + return {'widgettype': 'Message', 'options': {'text': '缺少ID', 'messagetype': 'error'}} + await sor.D('cms_sections', {'id': _id}) + return {'widgettype': 'Message', 'options': {'text': '删除成功', 'messagetype': 'success'}} diff --git a/wwwroot/api/cms_sections_list.dspy b/wwwroot/api/cms_sections_list.dspy index 7862860..2a6b324 100644 --- a/wwwroot/api/cms_sections_list.dspy +++ b/wwwroot/api/cms_sections_list.dspy @@ -1,22 +1,20 @@ -import json -from appPublic.uniqueID import getID config = getConfig('.') DBPools(config.databases) dbname = get_module_dbname('entcms') -sor = DBPools().sqlorContext(dbname) +async with db.sqlorContext(dbname) as sor: -ns = {'sort': 'sort_order asc'} -filter_json = params_kw.get('data_filter', None) -if filter_json: - from sqlor.filter import DBFilter - try: - filter_def = json.loads(filter_json) if isinstance(filter_json, str) else filter_json - dbf = DBFilter(filter_def) - conds = dbf.gen(params_kw) - ns.update(conds) - ns.update(dbf.consts) - except Exception: - pass -rows = await sor.R('cms_sections', ns) -print(json.dumps({'status': 'ok', 'rows': rows, 'total': len(rows)}, ensure_ascii=False)) + ns = {'sort': 'sort_order asc'} + filter_json = params_kw.get('data_filter', None) + if filter_json: + from sqlor.filter import DBFilter + try: + filter_def = json.loads(filter_json) if isinstance(filter_json, str) else filter_json + dbf = DBFilter(filter_def) + conds = dbf.gen(params_kw) + ns.update(conds) + ns.update(dbf.consts) + except Exception: + pass + rows = await sor.R('cms_sections', ns) + return {'status': 'ok', 'rows': rows, 'total': len(rows)} diff --git a/wwwroot/api/cms_sections_update.dspy b/wwwroot/api/cms_sections_update.dspy index 1e55095..f851b30 100644 --- a/wwwroot/api/cms_sections_update.dspy +++ b/wwwroot/api/cms_sections_update.dspy @@ -1,47 +1,44 @@ -import json -from appPublic.uniqueID import getID config = getConfig('.') DBPools(config.databases) dbname = get_module_dbname('entcms') -sor = DBPools().sqlorContext(dbname) +async with db.sqlorContext(dbname) as sor: -data = {'id': params_kw.get('id', '')} -if not data['id']: - print(json.dumps({'widgettype': 'Message', 'options': {'text': '缺少ID', 'messagetype': 'error'}}, ensure_ascii=False)) - return -v = params_kw.get('org_id', None) -if v is not None: - data['org_id'] = v -v = params_kw.get('section_key', None) -if v is not None: - data['section_key'] = v -v = params_kw.get('title', None) -if v is not None: - data['title'] = v -v = params_kw.get('subtitle', None) -if v is not None: - data['subtitle'] = v -v = params_kw.get('section_type', None) -if v is not None: - data['section_type'] = v -v = params_kw.get('content_type', None) -if v is not None: - data['content_type'] = v -v = params_kw.get('sort_order', None) -if v is not None: - data['sort_order'] = v -v = params_kw.get('is_visible', None) -if v is not None: - data['is_visible'] = v -v = params_kw.get('display_config', None) -if v is not None: - data['display_config'] = v -v = params_kw.get('style_config', None) -if v is not None: - data['style_config'] = v -v = params_kw.get('static_content', None) -if v is not None: - data['static_content'] = v -await sor.U('cms_sections', data) -print(json.dumps({'widgettype': 'Message', 'options': {'text': '更新成功', 'messagetype': 'success'}}, ensure_ascii=False)) + data = {'id': params_kw.get('id', '')} + if not data['id']: + return {'widgettype': 'Message', 'options': {'text': '缺少ID', 'messagetype': 'error'}} + v = params_kw.get('org_id', None) + if v is not None: + data['org_id'] = v + v = params_kw.get('section_key', None) + if v is not None: + data['section_key'] = v + v = params_kw.get('title', None) + if v is not None: + data['title'] = v + v = params_kw.get('subtitle', None) + if v is not None: + data['subtitle'] = v + v = params_kw.get('section_type', None) + if v is not None: + data['section_type'] = v + v = params_kw.get('content_type', None) + if v is not None: + data['content_type'] = v + v = params_kw.get('sort_order', None) + if v is not None: + data['sort_order'] = v + v = params_kw.get('is_visible', None) + if v is not None: + data['is_visible'] = v + v = params_kw.get('display_config', None) + if v is not None: + data['display_config'] = v + v = params_kw.get('style_config', None) + if v is not None: + data['style_config'] = v + v = params_kw.get('static_content', None) + if v is not None: + data['static_content'] = v + await sor.U('cms_sections', data) + return {'widgettype': 'Message', 'options': {'text': '更新成功', 'messagetype': 'success'}} diff --git a/wwwroot/api/cms_site_config_create.dspy b/wwwroot/api/cms_site_config_create.dspy index 897fc17..f2ed286 100644 --- a/wwwroot/api/cms_site_config_create.dspy +++ b/wwwroot/api/cms_site_config_create.dspy @@ -1,36 +1,34 @@ -import json -from appPublic.uniqueID import getID config = getConfig('.') DBPools(config.databases) dbname = get_module_dbname('entcms') -sor = DBPools().sqlorContext(dbname) +async with db.sqlorContext(dbname) as sor: -data = {'id': getID()} + data = {'id': getID()} -v = params_kw.get('org_id', None) -if v is not None: - data['org_id'] = v + v = params_kw.get('org_id', None) + if v is not None: + data['org_id'] = v -v = params_kw.get('config_group', None) -if v is not None: - data['config_group'] = v + v = params_kw.get('config_group', None) + if v is not None: + data['config_group'] = v -v = params_kw.get('config_key', None) -if v is not None: - data['config_key'] = v + v = params_kw.get('config_key', None) + if v is not None: + data['config_key'] = v -v = params_kw.get('config_value', None) -if v is not None: - data['config_value'] = v + v = params_kw.get('config_value', None) + if v is not None: + data['config_value'] = v -v = params_kw.get('config_type', None) -if v is not None: - data['config_type'] = v + v = params_kw.get('config_type', None) + if v is not None: + data['config_type'] = v -v = params_kw.get('sort_order', None) -if v is not None: - data['sort_order'] = v + v = params_kw.get('sort_order', None) + if v is not None: + data['sort_order'] = v -await sor.C('cms_site_config', data) -print(json.dumps({'widgettype': 'Message', 'options': {'text': '创建成功', 'messagetype': 'success'}}, ensure_ascii=False)) + await sor.C('cms_site_config', data) + return {'widgettype': 'Message', 'options': {'text': '创建成功', 'messagetype': 'success'}} diff --git a/wwwroot/api/cms_site_config_delete.dspy b/wwwroot/api/cms_site_config_delete.dspy index 4f77371..926aff8 100644 --- a/wwwroot/api/cms_site_config_delete.dspy +++ b/wwwroot/api/cms_site_config_delete.dspy @@ -1,14 +1,11 @@ -import json -from appPublic.uniqueID import getID config = getConfig('.') DBPools(config.databases) dbname = get_module_dbname('entcms') -sor = DBPools().sqlorContext(dbname) +async with db.sqlorContext(dbname) as sor: -_id = params_kw.get('id', '') -if not _id: - print(json.dumps({'widgettype': 'Message', 'options': {'text': '缺少ID', 'messagetype': 'error'}}, ensure_ascii=False)) - return -await sor.D('cms_site_config', {'id': _id}) -print(json.dumps({'widgettype': 'Message', 'options': {'text': '删除成功', 'messagetype': 'success'}}, ensure_ascii=False)) + _id = params_kw.get('id', '') + if not _id: + return {'widgettype': 'Message', 'options': {'text': '缺少ID', 'messagetype': 'error'}} + await sor.D('cms_site_config', {'id': _id}) + return {'widgettype': 'Message', 'options': {'text': '删除成功', 'messagetype': 'success'}} diff --git a/wwwroot/api/cms_site_config_list.dspy b/wwwroot/api/cms_site_config_list.dspy index 8ea29ab..b4c35da 100644 --- a/wwwroot/api/cms_site_config_list.dspy +++ b/wwwroot/api/cms_site_config_list.dspy @@ -1,32 +1,30 @@ -import json -from appPublic.uniqueID import getID config = getConfig('.') DBPools(config.databases) dbname = get_module_dbname('entcms') -sor = DBPools().sqlorContext(dbname) +async with db.sqlorContext(dbname) as sor: -ns = {'sort': 'config_group asc, sort_order asc'} + ns = {'sort': 'config_group asc, sort_order asc'} -# data_filter support -filter_json = params_kw.get('data_filter', None) -if filter_json: - from sqlor.filter import DBFilter - try: - filter_def = json.loads(filter_json) if isinstance(filter_json, str) else filter_json - dbf = DBFilter(filter_def) - conds = dbf.gen(params_kw) - ns.update(conds) - ns.update(dbf.consts) - except Exception: - pass + # data_filter support + filter_json = params_kw.get('data_filter', None) + if filter_json: + from sqlor.filter import DBFilter + try: + filter_def = json.loads(filter_json) if isinstance(filter_json, str) else filter_json + dbf = DBFilter(filter_def) + conds = dbf.gen(params_kw) + ns.update(conds) + ns.update(dbf.consts) + except Exception: + pass -# Manual filter params + # Manual filter params -_config_group = params_kw.get('config_group', None) -if _config_group: - ns['config_group'] = _config_group + _config_group = params_kw.get('config_group', None) + if _config_group: + ns['config_group'] = _config_group -rows = await sor.R('cms_site_config', ns) -total = len(rows) -print(json.dumps({'status': 'ok', 'rows': rows, 'total': total}, ensure_ascii=False)) + rows = await sor.R('cms_site_config', ns) + total = len(rows) + return {'status': 'ok', 'rows': rows, 'total': total} diff --git a/wwwroot/api/cms_site_config_update.dspy b/wwwroot/api/cms_site_config_update.dspy index b273c47..639dafe 100644 --- a/wwwroot/api/cms_site_config_update.dspy +++ b/wwwroot/api/cms_site_config_update.dspy @@ -1,39 +1,36 @@ -import json -from appPublic.uniqueID import getID config = getConfig('.') DBPools(config.databases) dbname = get_module_dbname('entcms') -sor = DBPools().sqlorContext(dbname) +async with db.sqlorContext(dbname) as sor: -data = {'id': params_kw.get('id', '')} -if not data['id']: - print(json.dumps({'widgettype': 'Message', 'options': {'text': '缺少ID', 'messagetype': 'error'}}, ensure_ascii=False)) - return + data = {'id': params_kw.get('id', '')} + if not data['id']: + return {'widgettype': 'Message', 'options': {'text': '缺少ID', 'messagetype': 'error'}} -v = params_kw.get('org_id', None) -if v is not None: - data['org_id'] = v + v = params_kw.get('org_id', None) + if v is not None: + data['org_id'] = v -v = params_kw.get('config_group', None) -if v is not None: - data['config_group'] = v + v = params_kw.get('config_group', None) + if v is not None: + data['config_group'] = v -v = params_kw.get('config_key', None) -if v is not None: - data['config_key'] = v + v = params_kw.get('config_key', None) + if v is not None: + data['config_key'] = v -v = params_kw.get('config_value', None) -if v is not None: - data['config_value'] = v + v = params_kw.get('config_value', None) + if v is not None: + data['config_value'] = v -v = params_kw.get('config_type', None) -if v is not None: - data['config_type'] = v + v = params_kw.get('config_type', None) + if v is not None: + data['config_type'] = v -v = params_kw.get('sort_order', None) -if v is not None: - data['sort_order'] = v + v = params_kw.get('sort_order', None) + if v is not None: + data['sort_order'] = v -await sor.U('cms_site_config', data) -print(json.dumps({'widgettype': 'Message', 'options': {'text': '更新成功', 'messagetype': 'success'}}, ensure_ascii=False)) + await sor.U('cms_site_config', data) + return {'widgettype': 'Message', 'options': {'text': '更新成功', 'messagetype': 'success'}} diff --git a/wwwroot/api/get_config.dspy b/wwwroot/api/get_config.dspy index 5dc0410..310dcf1 100644 --- a/wwwroot/api/get_config.dspy +++ b/wwwroot/api/get_config.dspy @@ -1,20 +1,18 @@ -import json -from appPublic.uniqueID import getID config = getConfig('.') DBPools(config.databases) dbname = get_module_dbname('entcms') -sor = DBPools().sqlorContext(dbname) +async with db.sqlorContext(dbname) as sor: -group = params_kw.get('group', None) -ns = {'sort': 'sort_order asc'} -if group: - ns['config_group'] = group -rows = await sor.R('cms_site_config', ns) -result = {} -for r in rows: - g = r.get('config_group', '') - if g not in result: - result[g] = {} - result[g][r.get('config_key', '')] = r.get('config_value', '') -print(json.dumps({'status': 'ok', 'data': result}, ensure_ascii=False)) + group = params_kw.get('group', None) + ns = {'sort': 'sort_order asc'} + if group: + ns['config_group'] = group + rows = await sor.R('cms_site_config', ns) + result = {} + for r in rows: + g = r.get('config_group', '') + if g not in result: + result[g] = {} + result[g][r.get('config_key', '')] = r.get('config_value', '') + return {'status': 'ok', 'data': result} diff --git a/wwwroot/api/get_content_detail.dspy b/wwwroot/api/get_content_detail.dspy index 65555dd..e906d9e 100644 --- a/wwwroot/api/get_content_detail.dspy +++ b/wwwroot/api/get_content_detail.dspy @@ -1,18 +1,16 @@ -import json -from appPublic.uniqueID import getID config = getConfig('.') DBPools(config.databases) dbname = get_module_dbname('entcms') -sor = DBPools().sqlorContext(dbname) +async with db.sqlorContext(dbname) as sor: -_id = params_kw.get('id', '') -if not _id: - print(json.dumps({'status': 'error', 'message': '缺少ID'}, ensure_ascii=False)) -else: - ns = {'id': _id} - rows = await sor.R('cms_content', ns) - if rows: - print(json.dumps({'status': 'ok', 'data': rows[0]}, ensure_ascii=False)) + _id = params_kw.get('id', '') + if not _id: + return {'status': 'error', 'message': '缺少ID'} else: - print(json.dumps({'status': 'error', 'message': '内容不存在'}, ensure_ascii=False)) + ns = {'id': _id} + rows = await sor.R('cms_content', ns) + if rows: + return {'status': 'ok', 'data': rows[0]} + else: + return {'status': 'error', 'message': '内容不存在'} diff --git a/wwwroot/api/get_published_content.dspy b/wwwroot/api/get_published_content.dspy index 1bb08f6..0fc70da 100644 --- a/wwwroot/api/get_published_content.dspy +++ b/wwwroot/api/get_published_content.dspy @@ -1,17 +1,15 @@ -import json -from appPublic.uniqueID import getID config = getConfig('.') DBPools(config.databases) dbname = get_module_dbname('entcms') -sor = DBPools().sqlorContext(dbname) +async with db.sqlorContext(dbname) as sor: -content_type = params_kw.get('content_type', None) -limit = int(params_kw.get('limit', '10')) -ns = {'status': 'published', 'sort': 'sort_order asc, published_at desc'} -if content_type: - ns['content_type'] = content_type -rows = await sor.R('cms_content', ns) -if limit: - rows = rows[:limit] -print(json.dumps({'status': 'ok', 'rows': rows, 'total': len(rows)}, ensure_ascii=False)) + content_type = params_kw.get('content_type', None) + limit = int(params_kw.get('limit', '10')) + ns = {'status': 'published', 'sort': 'sort_order asc, published_at desc'} + if content_type: + ns['content_type'] = content_type + rows = await sor.R('cms_content', ns) + if limit: + rows = rows[:limit] + return {'status': 'ok', 'rows': rows, 'total': len(rows)} diff --git a/wwwroot/api/get_sections.dspy b/wwwroot/api/get_sections.dspy index 6711189..9650681 100644 --- a/wwwroot/api/get_sections.dspy +++ b/wwwroot/api/get_sections.dspy @@ -1,20 +1,18 @@ -import json -from appPublic.uniqueID import getID config = getConfig('.') DBPools(config.databases) dbname = get_module_dbname('entcms') -sor = DBPools().sqlorContext(dbname) +async with db.sqlorContext(dbname) as sor: -ns = {'is_visible': '1', 'sort': 'sort_order asc'} -rows = await sor.R('cms_sections', ns) -# Parse JSON fields -for r in rows: - for field in ['display_config', 'style_config', 'static_content']: - v = r.get(field, None) - if v and isinstance(v, str): - try: - r[field] = json.loads(v) - except: - pass -print(json.dumps({'status': 'ok', 'rows': rows, 'total': len(rows)}, ensure_ascii=False)) + ns = {'is_visible': '1', 'sort': 'sort_order asc'} + rows = await sor.R('cms_sections', ns) + # Parse JSON fields + for r in rows: + for field in ['display_config', 'style_config', 'static_content']: + v = r.get(field, None) + if v and isinstance(v, str): + try: + r[field] = json.loads(v) + except: + pass + return {'status': 'ok', 'rows': rows, 'total': len(rows)} diff --git a/wwwroot/api/submit_content_approval.dspy b/wwwroot/api/submit_content_approval.dspy index cdc7021..99f999e 100644 --- a/wwwroot/api/submit_content_approval.dspy +++ b/wwwroot/api/submit_content_approval.dspy @@ -1,28 +1,26 @@ -import json -from appPublic.uniqueID import getID config = getConfig('.') DBPools(config.databases) dbname = get_module_dbname('entcms') -sor = DBPools().sqlorContext(dbname) +async with db.sqlorContext(dbname) as sor: -content_id = params_kw.get('content_id', '') -if not content_id: - print(json.dumps({'widgettype': 'Message', 'options': {'text': '缺少内容ID', 'messagetype': 'error'}}, ensure_ascii=False)) -else: - # Update status to pending - await sor.U('cms_content', {'id': content_id, 'status': 'pending'}) - - # Try to call dingdingflow - try: - from dingdingflow.init import submit_approval - user_id = await get_user() - ns_detail = {'id': content_id} - rows = await sor.R('cms_content', ns_detail) - title = rows[0].get('title', '内容审批') if rows else '内容审批' - result = await submit_approval('content_publish', content_id, title, user_id) - if result and result.get('approval_id'): - await sor.U('cms_content', {'id': content_id, 'approval_id': result['approval_id']}) - print(json.dumps({'widgettype': 'Message', 'options': {'text': '已提交审批', 'messagetype': 'success'}}, ensure_ascii=False)) - except ImportError: - print(json.dumps({'widgettype': 'Message', 'options': {'text': '审批模块未安装,状态已改为待审批', 'messagetype': 'warning'}}, ensure_ascii=False)) + content_id = params_kw.get('content_id', '') + if not content_id: + return {'widgettype': 'Message', 'options': {'text': '缺少内容ID', 'messagetype': 'error'}} + else: + # Update status to pending + await sor.U('cms_content', {'id': content_id, 'status': 'pending'}) + + # Try to call dingdingflow + try: + from dingdingflow.init import submit_approval + user_id = await get_user() + ns_detail = {'id': content_id} + rows = await sor.R('cms_content', ns_detail) + title = rows[0].get('title', '内容审批') if rows else '内容审批' + result = await submit_approval('content_publish', content_id, title, user_id) + if result and result.get('approval_id'): + await sor.U('cms_content', {'id': content_id, 'approval_id': result['approval_id']}) + return {'widgettype': 'Message', 'options': {'text': '已提交审批', 'messagetype': 'success'}} + except ImportError: + return {'widgettype': 'Message', 'options': {'text': '审批模块未安装,状态已改为待审批', 'messagetype': 'warning'}} diff --git a/wwwroot/api/submit_lead.dspy b/wwwroot/api/submit_lead.dspy index c3daf08..8345433 100644 --- a/wwwroot/api/submit_lead.dspy +++ b/wwwroot/api/submit_lead.dspy @@ -1,25 +1,22 @@ -import json -from appPublic.uniqueID import getID - config = getConfig('.') DBPools(config.databases) dbname = get_module_dbname('entcms') -sor = DBPools().sqlorContext(dbname) +async with db.sqlorContext(dbname) as sor: -data = { - 'id': getID(), - 'source': 'website', - 'status': 'new', - 'org_id': '0' -} -for field in ['name', 'company', 'phone', 'email', 'industry', 'region', - 'interest_products', 'message']: - v = params_kw.get(field, None) - if v is not None: - data[field] = v + data = { + 'id': getID(), + 'source': 'website', + 'status': 'new', + 'org_id': '0' + } + for field in ['name', 'company', 'phone', 'email', 'industry', 'region', + 'interest_products', 'message']: + v = params_kw.get(field, None) + if v is not None: + data[field] = v -await sor.C('cms_leads', data) -print(json.dumps({ - 'widgettype': 'Message', - 'options': {'text': '感谢您的留言,我们会尽快联系您!', 'messagetype': 'success'} -}, ensure_ascii=False)) + await sor.C('cms_leads', data) + return { + 'widgettype': 'Message', + 'options': {'text': '感谢您的留言,我们会尽快联系您!', 'messagetype': 'success'} + } diff --git a/wwwroot/dingdingflow/api/dd_approval_configs_create.dspy b/wwwroot/dingdingflow/api/dd_approval_configs_create.dspy index c026e14..170f84d 100644 --- a/wwwroot/dingdingflow/api/dd_approval_configs_create.dspy +++ b/wwwroot/dingdingflow/api/dd_approval_configs_create.dspy @@ -1,7 +1,3 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -"""dd_approval_configs create API""" - result = {'widgettype': 'Message', 'options': {'title': 'Error', 'message': 'Invalid request', 'type': 'error'}} try: @@ -12,9 +8,9 @@ try: if not biz_type: result['options'] = {'title': 'Error', 'message': 'biz_type is required', 'type': 'error'} else: - new_id = uuid() + new_id = getID() org_id = (await get_userorgid()) or '0' - now_str = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + now_str = datetime.now().strftime('%Y-%m-%d %H:%M:%S') dbname = get_module_dbname('dingdingflow') async with DBPools().sqlorContext(dbname) as sor: @@ -38,4 +34,4 @@ try: except Exception as e: result['options'] = {'title': 'Error', 'message': f'创建失败: {str(e)}', 'type': 'error'} -return json.dumps(result, ensure_ascii=False) +return result diff --git a/wwwroot/dingdingflow/api/dd_approval_configs_delete.dspy b/wwwroot/dingdingflow/api/dd_approval_configs_delete.dspy index 6742780..c943f00 100644 --- a/wwwroot/dingdingflow/api/dd_approval_configs_delete.dspy +++ b/wwwroot/dingdingflow/api/dd_approval_configs_delete.dspy @@ -1,7 +1,3 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -"""dd_approval_configs delete API""" - result = {'widgettype': 'Message', 'options': {'title': 'Error', 'message': 'Invalid request', 'type': 'error'}} try: @@ -17,4 +13,4 @@ try: except Exception as e: result['options'] = {'title': 'Error', 'message': f'删除失败: {str(e)}', 'type': 'error'} -return json.dumps(result, ensure_ascii=False) +return result diff --git a/wwwroot/dingdingflow/api/dd_approval_configs_list.dspy b/wwwroot/dingdingflow/api/dd_approval_configs_list.dspy index 59ced83..e608a4d 100644 --- a/wwwroot/dingdingflow/api/dd_approval_configs_list.dspy +++ b/wwwroot/dingdingflow/api/dd_approval_configs_list.dspy @@ -1,7 +1,3 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -"""dd_approval_configs list API""" - result = {'success': False, 'rows': [], 'total': 0} try: @@ -55,4 +51,4 @@ try: except Exception as e: result['error'] = str(e) -return json.dumps(result, ensure_ascii=False, default=str) +return result diff --git a/wwwroot/dingdingflow/api/dd_approval_configs_update.dspy b/wwwroot/dingdingflow/api/dd_approval_configs_update.dspy index 972ebe6..fe5eca8 100644 --- a/wwwroot/dingdingflow/api/dd_approval_configs_update.dspy +++ b/wwwroot/dingdingflow/api/dd_approval_configs_update.dspy @@ -1,7 +1,3 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -"""dd_approval_configs update API""" - result = {'widgettype': 'Message', 'options': {'title': 'Error', 'message': 'Invalid request', 'type': 'error'}} try: @@ -21,7 +17,7 @@ try: update_ns[field] = val # Always update updated_at - now_str = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + now_str = datetime.now().strftime('%Y-%m-%d %H:%M:%S') update_fields.append("updated_at=${updated_at}$") update_ns['updated_at'] = now_str @@ -33,4 +29,4 @@ try: except Exception as e: result['options'] = {'title': 'Error', 'message': f'更新失败: {str(e)}', 'type': 'error'} -return json.dumps(result, ensure_ascii=False) +return result diff --git a/wwwroot/dingdingflow/api/dd_approvals_create.dspy b/wwwroot/dingdingflow/api/dd_approvals_create.dspy index 4b9572f..cc6807b 100644 --- a/wwwroot/dingdingflow/api/dd_approvals_create.dspy +++ b/wwwroot/dingdingflow/api/dd_approvals_create.dspy @@ -1,7 +1,3 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -"""dd_approvals create API""" - result = {'widgettype': 'Message', 'options': {'title': 'Error', 'message': 'Invalid request', 'type': 'error'}} try: @@ -13,9 +9,9 @@ try: if not biz_type or not title: result['options'] = {'title': 'Error', 'message': 'biz_type and title are required', 'type': 'error'} else: - new_id = uuid() + new_id = getID() org_id = (await get_userorgid()) or '0' - now_str = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + now_str = datetime.now().strftime('%Y-%m-%d %H:%M:%S') dbname = get_module_dbname('dingdingflow') async with DBPools().sqlorContext(dbname) as sor: @@ -40,4 +36,4 @@ try: except Exception as e: result['options'] = {'title': 'Error', 'message': f'创建失败: {str(e)}', 'type': 'error'} -return json.dumps(result, ensure_ascii=False) +return result diff --git a/wwwroot/dingdingflow/api/dd_approvals_delete.dspy b/wwwroot/dingdingflow/api/dd_approvals_delete.dspy index b4d517c..bbb198e 100644 --- a/wwwroot/dingdingflow/api/dd_approvals_delete.dspy +++ b/wwwroot/dingdingflow/api/dd_approvals_delete.dspy @@ -1,7 +1,3 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -"""dd_approvals delete API""" - result = {'widgettype': 'Message', 'options': {'title': 'Error', 'message': 'Invalid request', 'type': 'error'}} try: @@ -17,4 +13,4 @@ try: except Exception as e: result['options'] = {'title': 'Error', 'message': f'删除失败: {str(e)}', 'type': 'error'} -return json.dumps(result, ensure_ascii=False) +return result diff --git a/wwwroot/dingdingflow/api/dd_approvals_list.dspy b/wwwroot/dingdingflow/api/dd_approvals_list.dspy index 62db08a..5c2eed7 100644 --- a/wwwroot/dingdingflow/api/dd_approvals_list.dspy +++ b/wwwroot/dingdingflow/api/dd_approvals_list.dspy @@ -1,7 +1,3 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -"""dd_approvals list API with data_filter support""" - result = {'success': False, 'rows': [], 'total': 0} try: @@ -73,4 +69,4 @@ try: except Exception as e: result['error'] = str(e) -return json.dumps(result, ensure_ascii=False, default=str) +return result diff --git a/wwwroot/dingdingflow/api/dd_approvals_update.dspy b/wwwroot/dingdingflow/api/dd_approvals_update.dspy index 86dbf4d..bb0b27d 100644 --- a/wwwroot/dingdingflow/api/dd_approvals_update.dspy +++ b/wwwroot/dingdingflow/api/dd_approvals_update.dspy @@ -1,7 +1,3 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -"""dd_approvals update API""" - result = {'widgettype': 'Message', 'options': {'title': 'Error', 'message': 'Invalid request', 'type': 'error'}} try: @@ -33,4 +29,4 @@ try: except Exception as e: result['options'] = {'title': 'Error', 'message': f'更新失败: {str(e)}', 'type': 'error'} -return json.dumps(result, ensure_ascii=False) +return result diff --git a/wwwroot/dingdingflow/api/dingtalk_callback.dspy b/wwwroot/dingdingflow/api/dingtalk_callback.dspy index 8199368..67e8559 100644 --- a/wwwroot/dingdingflow/api/dingtalk_callback.dspy +++ b/wwwroot/dingdingflow/api/dingtalk_callback.dspy @@ -1,20 +1,3 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -""" -DingTalk webhook callback endpoint. -PUBLIC endpoint (any permission) - DingTalk servers call this when approval status changes. - -Expected POST body: -{ - "processInstanceId": "xxx", - "processCode": "xxx", - "type": "bpms_instance_change", - "result": "agree" / "refuse", - "staffId": "xxx", - "remark": "optional comment" -} -""" - result = {'success': False, 'message': 'Invalid callback'} try: @@ -59,4 +42,4 @@ try: except Exception as e: result = {'success': False, 'message': f'Callback processing error: {str(e)}'} -return json.dumps(result, ensure_ascii=False, default=str) +return result diff --git a/wwwroot/dingdingflow/api/submit_approval.dspy b/wwwroot/dingdingflow/api/submit_approval.dspy index b97d47b..80c7616 100644 --- a/wwwroot/dingdingflow/api/submit_approval.dspy +++ b/wwwroot/dingdingflow/api/submit_approval.dspy @@ -1,10 +1,3 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -""" -Submit approval API - triggered by entcms when content needs approval. -Creates a dd_approvals record and calls DingTalk API to start the approval process. -""" - result = {'success': False, 'message': 'Invalid request'} try: @@ -22,7 +15,7 @@ try: else: # Use current user as applicant if not specified if not applicant_id: - applicant_id = get_user() or '' + applicant_id = (await get_user()) or '' org_id = (await get_userorgid()) or '0' @@ -33,4 +26,4 @@ try: except Exception as e: result = {'success': False, 'message': f'提交审批失败: {str(e)}'} -return json.dumps(result, ensure_ascii=False, default=str) +return result