From 00790ad84e5837a83fad060734cbe0977d32ad91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BC=97=E4=BA=A7-=E7=8E=8B=E5=9D=A4?= Date: Mon, 4 Aug 2025 02:21:00 +0800 Subject: [PATCH] upbyhf --- c5_ciyon.sql | 267 ++++++++++++++++++++++++++------ web/admin/ap/api.html | 223 ++++++++++++++++++++++++++ web/admin/ap/api.php | 244 +++++++++++++++++++++++++++++ web/admin/ap/transfer.html | 101 ++++++++++++ web/admin/ap/transfer.php | 155 ++++++++++++++++++ web/admin/common.go | 2 +- web/admin/common.js | 9 +- web/admin/common.php | 6 +- web/admin/demo/index.html | 32 ---- web/admin/demo/index_fb.html | 96 ++++++++++++ web/admin/index.html | 29 +++- web/admin/index.php | 19 ++- web/admin/login.html | 10 +- web/admin/login.php | 2 +- web/admin/rigger/debug_user.go | 6 +- web/admin/rigger/debug_user.php | 6 +- web/admin/rigger/logfile.php | 6 +- web/admin/rigger/menu.go | 10 +- web/admin/rigger/menu.php | 10 +- web/admin/rigger/mock.go | 4 +- web/admin/rigger/mock.html | 19 ++- web/admin/rigger/mock.php | 21 +-- web/admin/rigger/power.go | 4 +- web/admin/rigger/power.php | 4 +- web/admin/welcome.html | 3 +- web/ambap/login.php | 6 +- web/api/test1.php | 12 ++ web/api/v1.php | 2 +- web/api/v1_test.php | 2 +- web/jscss/ciy.js | 44 +++--- web/jscss/ciycmp2.js | 34 +++- web/jscss/ciytable.js | 2 +- web/z/index.php | 34 +++- 33 files changed, 1251 insertions(+), 173 deletions(-) create mode 100644 web/admin/ap/api.html create mode 100644 web/admin/ap/api.php create mode 100644 web/admin/ap/transfer.html create mode 100644 web/admin/ap/transfer.php create mode 100644 web/admin/demo/index_fb.html create mode 100644 web/api/test1.php diff --git a/c5_ciyon.sql b/c5_ciyon.sql index d9ba632..d1dbca4 100644 --- a/c5_ciyon.sql +++ b/c5_ciyon.sql @@ -1,6 +1,19 @@ SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; +-- ---------------------------- +-- Table structure for ap_api +-- ---------------------------- +DROP TABLE IF EXISTS `ap_api`; +CREATE TABLE `ap_api` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '|appid|', + `apisecret` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT ',appkey', + `ips` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '白名单IP,BR', + `addtimes` bigint(20) NOT NULL COMMENT '创建时间,DATE', + `pubkey` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '|公钥证书|', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 215696 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'API授权管理' ROW_FORMAT = Dynamic; + -- ---------------------------- -- Table structure for ap_art_post -- ---------------------------- @@ -302,6 +315,26 @@ CREATE TABLE `ap_pnt_track` ( -- ---------------------------- INSERT INTO `ap_pnt_track` VALUES (1, '登录签到', 2, 2, 10, 1738132278); +-- ---------------------------- +-- Table structure for ap_transfer +-- ---------------------------- +DROP TABLE IF EXISTS `ap_transfer`; +CREATE TABLE `ap_transfer` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '|流水号|', + `orderstatus` int(11) NOT NULL COMMENT '|交易状态|,CATA,orderstatus', + `amount` bigint(20) NOT NULL COMMENT '金额|,CNY', + `addtimes` bigint(20) NOT NULL COMMENT '创建时间,DATE', + `uptimes` bigint(20) NOT NULL COMMENT '完成时间,DATE', + `apiid` int(11) NOT NULL COMMENT 'APIID', + `thirdno` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '调用方单号', + `notifyurl` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '回调地址', + `signature` varchar(600) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT ',签名', + `retimes` bigint(20) NOT NULL COMMENT '回调时间,DATE', + `nexttimes` bigint(20) NOT NULL COMMENT '下次回调时间,DATE', + PRIMARY KEY (`id`) USING BTREE, + INDEX `mo`(`orderstatus`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 54390876 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '交易单' ROW_FORMAT = Dynamic; + -- ---------------------------- -- Table structure for ap_user -- ---------------------------- @@ -552,6 +585,102 @@ CREATE TABLE `ap_usr_suggest` ( -- ---------------------------- INSERT INTO `ap_usr_suggest` VALUES (4, 86, '', '展商查询不方便', '', 1746105322, 10, 1750889230, '感谢反馈,已经提交给技术部处理。'); +-- ---------------------------- +-- Table structure for doc_help +-- ---------------------------- +DROP TABLE IF EXISTS `doc_help`; +CREATE TABLE `doc_help` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `upid` int(11) NOT NULL COMMENT ',上级', + `name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '标题', + `csort` int(11) NOT NULL DEFAULT 1 COMMENT '排序', + `isuse` int(11) NOT NULL DEFAULT 0 COMMENT '|公开|,BOOL', + `uptimes` bigint(20) NOT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 152 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '菜单表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of doc_help +-- ---------------------------- +INSERT INTO `doc_help` VALUES (1, 0, '首页', 10, 1, 1751753699); +INSERT INTO `doc_help` VALUES (10, 0, '快速了解', 10, 1, 1751760694); +INSERT INTO `doc_help` VALUES (11, 0, '环境部署', 10, 1, 0); +INSERT INTO `doc_help` VALUES (12, 0, '项目入门', 10, 1, 0); +INSERT INTO `doc_help` VALUES (20, 0, 'PC 前端手册', 10, 1, 0); +INSERT INTO `doc_help` VALUES (21, 0, 'PC PHP8手册', 10, 1, 0); +INSERT INTO `doc_help` VALUES (22, 0, 'PC Golang手册', 10, 2, 0); +INSERT INTO `doc_help` VALUES (23, 0, 'PC Python3手册', 10, 2, 0); +INSERT INTO `doc_help` VALUES (25, 0, '移动端手册', 10, 1, 0); +INSERT INTO `doc_help` VALUES (26, 0, '图表手册', 10, 1, 0); +INSERT INTO `doc_help` VALUES (27, 0, '网站手册', 10, 1, 0); +INSERT INTO `doc_help` VALUES (30, 0, '区块链研究', 10, 2, 1751753440); +INSERT INTO `doc_help` VALUES (40, 0, 'AI决策手册', 10, 1, 0); +INSERT INTO `doc_help` VALUES (41, 0, 'AI视觉手册', 10, 2, 0); +INSERT INTO `doc_help` VALUES (42, 0, 'Web3D手册', 10, 1, 0); +INSERT INTO `doc_help` VALUES (43, 0, 'UE虚幻手册', 10, 1, 0); +INSERT INTO `doc_help` VALUES (44, 0, '数据采集手册', 10, 1, 0); +INSERT INTO `doc_help` VALUES (45, 0, '物联网协议', 10, 1, 0); +INSERT INTO `doc_help` VALUES (50, 0, '开发约定', 10, 1, 0); +INSERT INTO `doc_help` VALUES (51, 0, '通用方法论', 10, 1, 0); +INSERT INTO `doc_help` VALUES (52, 0, '开发自动化', 10, 1, 0); +INSERT INTO `doc_help` VALUES (53, 0, '开发配套工具', 10, 1, 0); +INSERT INTO `doc_help` VALUES (60, 0, 'Golang开发', 10, 1, 0); +INSERT INTO `doc_help` VALUES (61, 0, '集群演进', 10, 1, 0); +INSERT INTO `doc_help` VALUES (62, 0, '运维优化', 10, 1, 1751759825); +INSERT INTO `doc_help` VALUES (63, 0, '安全研究', 10, 1, 0); +INSERT INTO `doc_help` VALUES (80, 0, '.net8桌面开发', 10, 1, 0); +INSERT INTO `doc_help` VALUES (90, 0, '常见问题', 10, 1, 0); +INSERT INTO `doc_help` VALUES (100, 11, 'Windows开发环境', 10, 1, 1751920466); +INSERT INTO `doc_help` VALUES (101, 11, 'Mac开发环境', 10, 1, 0); +INSERT INTO `doc_help` VALUES (102, 11, 'Linux生产环境部署', 10, 1, 0); +INSERT INTO `doc_help` VALUES (103, 11, '镜像部署', 10, 1, 0); +INSERT INTO `doc_help` VALUES (104, 41, 'AIBOX中间件', 10, 1, 0); +INSERT INTO `doc_help` VALUES (105, 50, '开发原则', 10, 1, 1751754931); +INSERT INTO `doc_help` VALUES (106, 50, '库表约定', 10, 1, 1751758452); +INSERT INTO `doc_help` VALUES (107, 50, '字段注解', 10, 1, 1751759052); +INSERT INTO `doc_help` VALUES (108, 50, '接口约定', 10, 1, 1751759750); +INSERT INTO `doc_help` VALUES (109, 50, '数据字典', 10, 1, 1751759682); +INSERT INTO `doc_help` VALUES (110, 50, '文件存储', 10, 1, 1751759709); +INSERT INTO `doc_help` VALUES (111, 50, '选型原则', 10, 1, 1751759868); +INSERT INTO `doc_help` VALUES (112, 52, '原型图设计器', 10, 1, 0); +INSERT INTO `doc_help` VALUES (113, 52, 'AI自动规划器', 10, 1, 0); +INSERT INTO `doc_help` VALUES (114, 52, '代码生成器', 10, 1, 0); +INSERT INTO `doc_help` VALUES (115, 53, '离线备份工具', 10, 1, 0); +INSERT INTO `doc_help` VALUES (116, 53, 'UE实景地编器', 10, 1, 0); +INSERT INTO `doc_help` VALUES (117, 53, '行政区划字典工具', 10, 1, 0); +INSERT INTO `doc_help` VALUES (118, 53, '云转储工具', 10, 1, 0); +INSERT INTO `doc_help` VALUES (119, 53, '文件清理工具', 10, 1, 0); +INSERT INTO `doc_help` VALUES (120, 53, 'SaaS导出工具', 10, 1, 0); +INSERT INTO `doc_help` VALUES (121, 60, 'PC端开发', 10, 1, 0); +INSERT INTO `doc_help` VALUES (122, 60, '服务发现', 10, 1, 0); +INSERT INTO `doc_help` VALUES (124, 61, '集群日志分析器', 10, 1, 0); +INSERT INTO `doc_help` VALUES (125, 61, '集群服务注册', 10, 1, 0); +INSERT INTO `doc_help` VALUES (127, 50, '选型历史', 10, 1, 1751759911); +INSERT INTO `doc_help` VALUES (128, 51, '登录校验模式', 10, 1, 0); +INSERT INTO `doc_help` VALUES (129, 51, '权限单字符串校验模式', 10, 1, 0); +INSERT INTO `doc_help` VALUES (130, 51, '服务器安全防护模式', 10, 1, 0); +INSERT INTO `doc_help` VALUES (131, 51, 'PC菜单实现思路', 10, 1, 0); +INSERT INTO `doc_help` VALUES (132, 51, '多语言模式', 10, 1, 0); +INSERT INTO `doc_help` VALUES (133, 51, '数据排序存储模式', 10, 1, 0); +INSERT INTO `doc_help` VALUES (134, 51, '文件存储模式', 10, 1, 0); +INSERT INTO `doc_help` VALUES (135, 51, '文件上传模式', 10, 1, 0); +INSERT INTO `doc_help` VALUES (136, 51, '图片懒加载', 10, 1, 0); +INSERT INTO `doc_help` VALUES (137, 51, '前端防重复请求', 10, 1, 0); +INSERT INTO `doc_help` VALUES (138, 51, '传统字典模式', 10, 1, 0); +INSERT INTO `doc_help` VALUES (139, 51, '租户字典模式', 10, 1, 0); +INSERT INTO `doc_help` VALUES (140, 51, '静态字典', 10, 1, 0); +INSERT INTO `doc_help` VALUES (141, 51, '一对多 所属模式', 10, 1, 0); +INSERT INTO `doc_help` VALUES (142, 51, '同时在线并发量定义', 10, 1, 0); +INSERT INTO `doc_help` VALUES (143, 51, '性能优化指标', 10, 1, 0); +INSERT INTO `doc_help` VALUES (144, 51, '本地离线备份模式', 10, 1, 0); +INSERT INTO `doc_help` VALUES (145, 51, 'HTTP API模式', 10, 1, 0); +INSERT INTO `doc_help` VALUES (146, 51, '爬虫开发模式', 10, 1, 0); +INSERT INTO `doc_help` VALUES (147, 51, '前端调试方案', 10, 1, 0); +INSERT INTO `doc_help` VALUES (148, 51, '测试分工模式', 10, 1, 0); +INSERT INTO `doc_help` VALUES (149, 51, '代码审查模式', 10, 1, 0); +INSERT INTO `doc_help` VALUES (150, 51, '分页场景优化方案', 10, 1, 0); +INSERT INTO `doc_help` VALUES (151, 51, '秒杀场景架构模式', 10, 1, 0); + -- ---------------------------- -- Table structure for xa_user -- ---------------------------- @@ -603,7 +732,7 @@ CREATE TABLE `zc_admin` ( `roleid` int(11) NOT NULL COMMENT '岗位角色,DB,zc_role', `logintimes` bigint(20) NOT NULL DEFAULT 0 COMMENT '活跃时间,DATE', `addtimes` bigint(20) NOT NULL COMMENT '注册时间,DATE', - `password` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT ',密码', + `password` varchar(70) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT ',密码', `trytime` int(11) NOT NULL DEFAULT 0 COMMENT ',连续错误次数', `power` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT ',权限表', PRIMARY KEY (`id`) USING BTREE, @@ -613,8 +742,8 @@ CREATE TABLE `zc_admin` ( -- ---------------------------- -- Records of zc_admin -- ---------------------------- -INSERT INTO `zc_admin` VALUES (10, '', '超级管理员', 10, '12345678901', 10, 34, 0, 1750891980, 1000000000, '745371a00438ced9c918d3d44b64d4a1', 0, '.*.'); -INSERT INTO `zc_admin` VALUES (18, '', '运营官', 10, '10000452346', 10, 34, 6, 1745062148, 1721153234, '17d73a3b6f9ca783817fc909aad0cfdb', 0, '.p3624.'); +INSERT INTO `zc_admin` VALUES (10, '', '超级管理员', 10, '12345678901', 10, 34, 0, 1750891980, 1000000000, 'fa3046be160f84e79da4a5cf004e367997730a662598082f5181efdb8aa43dc9', 0, '.*.'); +INSERT INTO `zc_admin` VALUES (18, '', '运营官', 10, '10000452346', 10, 34, 6, 1745062148, 1721153234, 'fa3046be160f84e79da4a5cf004e367997730a662598082f5181efdb8aa43dc9', 0, '.p3624.'); -- ---------------------------- -- Table structure for zc_autotask @@ -704,6 +833,8 @@ INSERT INTO `zc_cata` VALUES (22, 1, 0, 1, 0, 'artsort', '文章排序', '', 'ap INSERT INTO `zc_cata` VALUES (23, 1, 0, 1, 0, 'artstatus', '文章状态', '', 'ap_art_post'); INSERT INTO `zc_cata` VALUES (100, 2, 0, 1, 0, 'aicapacity', 'AI能力', '', 'zc_ai_key'); INSERT INTO `zc_cata` VALUES (101, 1, 0, 1, 0, 'aidotype', 'AI执行方式', '', 'zc_ai_tsk_run'); +INSERT INTO `zc_cata` VALUES (102, 1, 10, 1, 0, 'education', '学历', '', ''); +INSERT INTO `zc_cata` VALUES (103, 0, 10, 1, 0, 'orderstatus', '订单状态', '', ''); INSERT INTO `zc_cata` VALUES (1000, 0, 10, 1, 10, '10', '男', '', ''); INSERT INTO `zc_cata` VALUES (1001, 0, 20, 1, 10, '20', '女', '', ''); INSERT INTO `zc_cata` VALUES (1002, 0, 90, 1, 10, '90', '其他', '', ''); @@ -757,6 +888,18 @@ INSERT INTO `zc_cata` VALUES (10157, 0, 0, 1, 101, '160', '改后执行', '', '' INSERT INTO `zc_cata` VALUES (10159, 0, 0, 1, 101, '190', '人类拒绝', '', ''); INSERT INTO `zc_cata` VALUES (10160, 0, 0, 1, 101, '200', 'AI执行已阅', '', ''); INSERT INTO `zc_cata` VALUES (10161, 0, 0, 1, 101, '210', 'AI执行问题', '', ''); +INSERT INTO `zc_cata` VALUES (10200, 0, 10, 1, 102, '10', '小学', '', ''); +INSERT INTO `zc_cata` VALUES (10201, 0, 10, 1, 102, '20', '初中', '', ''); +INSERT INTO `zc_cata` VALUES (10202, 0, 10, 1, 102, '30', '高中', '', ''); +INSERT INTO `zc_cata` VALUES (10203, 0, 10, 1, 102, '40', '大专', '', ''); +INSERT INTO `zc_cata` VALUES (10204, 0, 10, 1, 102, '50', '本科', '', ''); +INSERT INTO `zc_cata` VALUES (10205, 0, 10, 1, 102, '60', '硕士', '', ''); +INSERT INTO `zc_cata` VALUES (10206, 0, 10, 1, 102, '70', '博士', '', ''); +INSERT INTO `zc_cata` VALUES (10250, 0, 10, 1, 103, '10', '等待指令', '', ''); +INSERT INTO `zc_cata` VALUES (10251, 0, 10, 1, 103, '20', '队列中', '', ''); +INSERT INTO `zc_cata` VALUES (10252, 0, 10, 1, 103, '30', '转账中', '', ''); +INSERT INTO `zc_cata` VALUES (10253, 0, 10, 1, 103, '100', '成功', '', ''); +INSERT INTO `zc_cata` VALUES (10254, 0, 10, 1, 103, '90', '失败', '', ''); -- ---------------------------- -- Table structure for zc_cemap_bill @@ -960,7 +1103,7 @@ INSERT INTO `zc_depart` VALUES (34, 32, '技术部', 19, 1, 10); DROP TABLE IF EXISTS `zc_dev_dbcode`; CREATE TABLE `zc_dev_dbcode` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, - `schem` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '库', + `dbcid` int(11) NOT NULL COMMENT '生成器,DB,zc_dev_dbsaas', `tabl` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '表', `pcjson` mediumtext CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'PC配置', PRIMARY KEY (`id`) USING BTREE @@ -969,7 +1112,24 @@ CREATE TABLE `zc_dev_dbcode` ( -- ---------------------------- -- Records of zc_dev_dbcode -- ---------------------------- -INSERT INTO `zc_dev_dbcode` VALUES (18, 'c5_ciyon', 'ap_usr_real_apply', '{\"bcod\":{\"verifyfunc\":\"verifyfast\",\"titname\":\"\\u5b9e\\u540d\\u8ba4\\u8bc1\\u7533\\u8bf7\",\"uploadpat\":\"usr_real_apply\",\"liiddict\":\"auditstatus\",\"uptabcard\":\"\",\"tabdict\":\"zc_cata\",\"saascode\":\"\",\"selectorder\":\"\",\"newline\":\"\\u5bfc\\u51fa\",\"multibtn\":\"\\u6279\\u91cf\\u5220\\u9664,\\u5ba1\\u6838\\u901a\\u8fc7,\\u9a73\\u56de\",\"btnlist_line\":\"\\u5ba1\\u6838\",\"savepc\":\"web\\\\admin\\\\ap\\\\usr_real_apply\",\"htmllang\":\"js\",\"proglang\":\"php\",\"pctemplate\":\"\",\"mbtemplate\":\"\"},\"col\":{\"id\":{\"bchk\":\",bout,\",\"set\":\"noup=no\"},\"auditstatus\":{\"bchk\":\",bviw,bout,\",\"set\":\"noup=no\"},\"vuser\":{\"bchk\":\",bviw,bmin,bout,\",\"set\":\"listload=rel\"},\"name\":{\"bchk\":\",bviw,bmin,bout,bqry,bimp,\",\"set\":\"\"},\"idid\":{\"bchk\":\",bviw,bmin,bout,\",\"set\":\"\"},\"idcard1\":{\"bchk\":\",bviw,bout,\",\"set\":\"ftype=jpg,png\"},\"idcard2\":{\"bchk\":\",bviw,bout,\",\"set\":\"ftype=jpg,png\"},\"addtimes\":{\"bchk\":\",bviw,bout,bqry,\",\"set\":\"noup=now\"},\"audituser\":{\"bchk\":\",bviw,bout,bqry,\",\"set\":\"noup=no\"},\"audittimes\":{\"bchk\":\",bviw,bout,\",\"set\":\"noup=no\"},\"auditmsg\":{\"bchk\":\",bviw,bout,bqry,\",\"set\":\"noup=no\"}}}'); +INSERT INTO `zc_dev_dbcode` VALUES (18, 1, 'ap_demo', '{\"bcod\":{\"verifyfunc\":\"verifyfast\",\"titname\":\"\\u590d\\u6742\\u529f\\u80fd\",\"uploadpat\":\"demo\",\"liiddict\":\"auditstatus\",\"uptabcard\":\"\",\"tabdict\":\"zc_cata\",\"saascode\":\"\",\"selectorder\":\"\",\"newline\":\"\\u6dfb\\u52a0,\\u5bfc\\u5165,\\u5bfc\\u51fa\",\"multibtn\":\"\\u6279\\u91cf\\u5220\\u9664,\\u5ba1\\u6838\\u901a\\u8fc7,\\u9a73\\u56de\",\"btnlist_line\":\"\\u67e5\\u770b,\\u4fee\\u6539,\\u5ba1\\u6838\",\"savepc\":\"web\\\\admin\\\\ap\\\\demo\",\"htmllang\":\"js\",\"proglang\":\"php\",\"pctemplate\":\"\",\"mbtemplate\":\"\"},\"col\":{\"id\":{\"bchk\":\",bout,\",\"set\":\"noup=no\"},\"auditstatus\":{\"bchk\":\",bviw,bout,\",\"set\":\"noup=no|colview=8\"},\"audituser\":{\"bchk\":\",bviw,bout,bqry,\",\"set\":\"noup=no|listload=rel|colview=8\"},\"audittimes\":{\"bchk\":\",bviw,bout,bqry,\",\"set\":\"noup=no|colview=8\"},\"auditmsg\":{\"bchk\":\",bviw,bout,bqry,\",\"set\":\"noup=no\"},\"name\":{\"bchk\":\",bviw,bmin,bout,bqry,bimp,\",\"set\":\"coledit=16|colview=16\"},\"menuid\":{\"bchk\":\",bviw,bmin,bout,bqry,\",\"set\":\"listload=rel|coledit=8|colview=8\"},\"filesize\":{\"bchk\":\",bviw,bmin,bout,\",\"set\":\"coledit=8|colview=8\"},\"metre\":{\"bchk\":\",bviw,bmin,bout,\",\"set\":\"coledit=8|colview=8\"},\"bankmoney\":{\"bchk\":\",bviw,bmin,bout,\",\"set\":\"coledit=8|colview=8\"},\"setdate\":{\"bchk\":\",bviw,bmin,bout,\",\"set\":\"coledit=8|colview=8\"},\"settimes\":{\"bchk\":\",bviw,bmin,bout,\",\"set\":\"coledit=8|colview=8\"},\"dayclock\":{\"bchk\":\",bviw,bmin,bout,\",\"set\":\"coledit=8|colview=8\"},\"downurl\":{\"bchk\":\",bviw,bout,\",\"set\":\"ftype=jpg,png|num=3|coledit=16\"},\"avar\":{\"bchk\":\",bviw,bout,\",\"set\":\"ftype=jpg,png|coledit=8\"},\"isuse\":{\"bchk\":\",bviw,bmin,bout,\",\"set\":\"coledit=6|colview=6\"},\"isopen\":{\"bchk\":\",bviw,bmin,bout,bqry,\",\"set\":\"coledit=6|colview=6\"},\"unit\":{\"bchk\":\",bviw,bmin,bout,\",\"set\":\"coledit=12|colview=12\"},\"sigstatus\":{\"bchk\":\",bviw,bmin,bout,\",\"set\":\"coledit=8|colview=6\"},\"mauditstatus\":{\"bchk\":\",bviw,bmin,bout,bqry,\",\"set\":\"dbquery=select|coledit=16|colview=6\"},\"prodcata\":{\"bchk\":\",bviw,bmin,bout,\",\"set\":\"colview=12\"},\"areacode\":{\"bchk\":\",bviw,bmin,bout,\",\"set\":\"colview=12\"},\"renzheng\":{\"bchk\":\",bviw,bmin,bout,\",\"set\":\"coledit=16|colview=12\"},\"ppint\":{\"bchk\":\",bviw,bmin,bout,\",\"set\":\"coledit=8|colview=6\"},\"npcyc\":{\"bchk\":\",bviw,bmin,bout,\",\"set\":\"coledit=8|colview=6\"},\"runsec\":{\"bchk\":\",bviw,bmin,bout,\",\"set\":\"coledit=8|colview=6\"},\"acttm\":{\"bchk\":\",bviw,bmin,bout,\",\"set\":\"coledit=8|colview=6\"},\"imgs\":{\"bchk\":\",bviw,bout,\",\"set\":\"ftype=jpg,png|num=3\"},\"ton\":{\"bchk\":\",bviw,bmin,bout,bqry,\",\"set\":\"coledit=8|colview=6\"},\"price\":{\"bchk\":\",bviw,bmin,bout,\",\"set\":\"coledit=8|colview=6\"},\"lat\":{\"bchk\":\",bout,\",\"set\":\"noup=fow|coledit=8|colview=6\"},\"lng\":{\"bchk\":\",bviw,bmin,bout,\",\"set\":\"coledit=8|colview=6\"},\"nums\":{\"bchk\":\",bviw,bmin,bout,\",\"set\":\"coledit=8|colview=6\"},\"pct\":{\"bchk\":\",bviw,bmin,bout,\",\"set\":\"coledit=8|colview=6\"},\"url\":{\"bchk\":\",bviw,bmin,bout,\",\"set\":\"coledit=8|colview=6\"},\"weightg\":{\"bchk\":\",bviw,bmin,bout,\",\"set\":\"coledit=8|colview=6\"},\"eartmpr\":{\"bchk\":\",bviw,bmin,bout,\",\"set\":\"coledit=8|colview=6\"},\"qian\":{\"bchk\":\",bviw,bmin,bout,\",\"set\":\"coledit=8\"},\"meishi\":{\"bchk\":\",bviw,bmin,bout,\",\"set\":\"coledit=8\"},\"weight\":{\"bchk\":\",bviw,bmin,bout,\",\"set\":\"coledit=8\"},\"height\":{\"bchk\":\",bviw,bmin,bout,\",\"set\":\"coledit=8\"},\"skt\":{\"bchk\":\",bviw,bmin,bout,\",\"set\":\"coledit=8\"},\"idcard\":{\"bchk\":\",bviw,bmin,bout,\",\"set\":\"msk=****##|coledit=8|colview=12\"},\"addtimes\":{\"bchk\":\",bviw,bout,\",\"set\":\"noup=now|colview=12\"},\"content\":{\"bchk\":\",bviw,bmin,bout,\",\"set\":\"nocmn=no\"},\"md\":{\"bchk\":\",bviw,\",\"set\":\"nocmn=no\"}}}'); + +-- ---------------------------- +-- Table structure for zc_dev_dbsaas +-- ---------------------------- +DROP TABLE IF EXISTS `zc_dev_dbsaas`; +CREATE TABLE `zc_dev_dbsaas` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT, + `name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '名称', + `schem` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '数据库', + `subpath` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '相对路径', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 79 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '代码目录表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of zc_dev_dbsaas +-- ---------------------------- +INSERT INTO `zc_dev_dbsaas` VALUES (1, '总控', 'c5_ciyon', 'admin\\ap'); -- ---------------------------- -- Table structure for zc_dev_note @@ -988,7 +1148,7 @@ CREATE TABLE `zc_dev_note` ( -- ---------------------------- INSERT INTO `zc_dev_note` VALUES (1, 10, 1750891369, '==单一机构管理系统==\n用户表,移动端与PC端复用admin\n用online实现多端登录及多设备同时登陆限制\n组织管理、服务器监控、系统管理是标配\n业务功能独立开发\n\n==单一互联网平台==\n前端互联网用户使用ap_user表\n总控后台管理用户使用zc_admin表\n平台端数据表前缀与后台管理区分。\n平台业务一般按客服工作、运营工作、财务工作分组。\n客服工作主要处理注册后的用户遇到的问题。包括工单、意见建议、客户查询及窗口业务处理。\n运营工作主要分析数据,制定获客策略、营收策略、广告等。包括金币模式、充值提现模式、付费会员模式等,设计佣金、多级分享、活跃埋点等。\n财务工作主要对账、开票、支付操作等。\n\n演示版开发一个应用。可扩展成多个应用入口,录入买家版、卖家版等。\n\n==多端SaaS软件==\n以某个行业为切入点开发SaaS功能,表前缀建议xa、xb、xc,未来可扩展上下游产业SaaS应用。\n例如,为农贸批发市场行业开发SaaS软件,启用表前缀xa_user、xz_org。\n随着业务发展,可能配套开发上下游SaaS,例如,食堂SaaS、冷链运输物流企业SaaS、时鲜类仓储企业SaaS、种植户溯源SaaS、团购团长SaaS等等。\n未平台化之前,整合开发低成本满足客户独立部署需求。\n平台化后,方便微服务拆分。\n\n\n==AI辅助决策能力==\n实现算力库、浓缩知识、MCP本地数据函数、AIAgent、AI任务编排、AIGC写作等。\n鉴于RAG、微调效果欠佳,经过这几年摸索,浓缩知识能降低幻觉的产生。\nAI自动调用本地数据函数,实现信息系统到AI的打通。需精心设计函数返回内容。\n通过AI任务编排实现AI分解工作,并行执行,合并结果,并且使用独立提示词或数学函数检验判断置信度。\n以置信度为核心的自动控制指令调用,建立AI从辅助决策到自主决策的工程实现。\n\n==审批事项==\n基于图的可配置审批流程\n通用审批流程给到具体表单,更新表单状态。直至审批成功或返回原点。\n\n==产业官网==\n自研SaaS软件,需要网络推广,做SEO\n通过产业官网及后续的配套文章自动发布模型,实现自动化的更新站点,强化SEO。\n\n==AI私域==\n通过自动操控手机或PC屏幕。实现自动化的操作微信、QQ、抖音、小红书等软件。\n达到AI自动跟客户聊天,自动给客户分类,通知人类集中回复高意向客户。\n\n\n==AI自媒体==\n通过自动操控和API接入,实现自动生成图文及短视频、定时自动发自媒体文章/视频。\n自动回复评论、点赞自动回点、自动回关、自动搜索兴趣话题并自动评论点赞。\n\n\n==各种接入==\n各种常见的功能接入\n例如,短信、收发邮件、区块链上链、公众号推送、AI监控、常见物联网设备等。\n\n==Web3D==\n实现基本的3D数字孪生效果\n实现一个可视化场景编辑器,封装常用的JS函数,便于二次开发。\n常用于数据大屏、场景展示。\n\n==系统管理==\n包括组织管理、管理员管理、用户角色。\n服务器各项指标监控,关键运行指标上报到服务发现网关,用于负载均衡。\n实现业务日志、程序日志、数据库慢请求日志等,用于综合分析运行瓶颈,及时发现异常。\n实现通用配置、数据字典、自动化任务(非实时)、数据计算(耗时)等框架功能。\n\n==开发者==\n隐藏的开发者模式,便于调试,按Ctrl+E 5下切换调试。\n实现菜单配置、扩展权限、mock。\n一些示例代码、原型图、代码生成器、AI辅助规划等。'); INSERT INTO `zc_dev_note` VALUES (2, 11, 1750891424, '\n金币购买记录 pnt_buy\n 所属会员、金币、金额、时间\n\n金币使用记录 pnt_use\n 所属会员、金币、摘要、时间\n\n金币奖励记录 pnt_reward\n 所属会员、金币、摘要、时间\n\n充值套餐表 fina_buy\n 金币、金额\n 功能:添加、修改\n\n财务收入记录 fina_earn\n 所属会员、金额、摘要、时间\n\n财务提现记录 fina_cash\n 所属会员、金额、状态(申请、通过、发放)、时间\n '); -INSERT INTO `zc_dev_note` VALUES (3, 12, 1750891779, '\n== 未来 ==\n审批事项(老平台移植)\n产业官网(老平台移植)\nAI私域\nAI自媒体\n部分接入(老平台移植)\n\n== 三期 ==\nok AI算力、浓缩知识、决策单元\nok 数据函数MCP\nok AIGC写作\n决策任务、置信度评分、主动决策执行\n\n\n== 二期 ==\nok Web3DJS库封装、Web3D地编器\n\n== 一期 ==\nok 总控菜单\nok 管理员角色组织机构\nok 系统管理\nok 服务监控\nok Mocks、示例代码\nok 充提、金币、付费会员\nok 分享、单页、埋点\nok 提现、开票、收货地址\nok 意见建议、工单'); +INSERT INTO `zc_dev_note` VALUES (3, 12, 1753836209, '\n== 未来 ==\n审批事项(老平台移植)\n产业官网(老平台移植)\nAI私域\nAI自媒体\n部分接入(老平台移植)\n\ndao的建立表\nschema: 项目id、总控、库名、相对路径\ntable: schemaid、表名、英文名、columnjson、pcjson\n基于表,生成代码、生成数据库文档。里程碑文档\n\n建立testyl、testtk,用例/任务。\n基于测试数据,生成测试文档。\n\n== 25.06 ==\n变更开发者菜单:\n软件设置。多端菜单管理、扩展权限、调试登录\n示例代码。前端组件分出交互示例,功能示例增加一些。\n开发工具。统一碎片代码位置,增加众产支持(统管)。\n研发管理。开发记录(统管)、里程碑更新记录(统管)。\n测试工具。测试用例和任务(统管)、mock接口。\n\n平台业务。增加API接口、订单示例。\n\nAI多语言翻译:\n语言库,从js中读取要设置的语言\nlang、name、trans\n以lang=\'\'为核心,新建一个,就自动根据语言建几个。\n列表: 中文、English、日本语、xxxx\n输入一个,就自动更新一个,文本框变化一下\n在头部可以整列AI自动翻译。也可以在文本框旁边点击\"翻译\"\n\n== 25.03 ==\nok AI算力、浓缩知识、决策单元\nok 数据函数MCP\nok AIGC写作\n决策任务、置信度评分、主动决策执行\n\n\n== 24.06 ==\nok Web3DJS库封装、Web3D地编器\n\n== 24.02 ==\nok 总控菜单\nok 管理员角色组织机构\nok 系统管理\nok 服务监控\nok Mocks、示例代码\nok 充提、金币、付费会员\nok 分享、单页、埋点\nok 提现、开票、收货地址\nok 意见建议、工单'); -- ---------------------------- -- Table structure for zc_funcslow @@ -1067,8 +1227,8 @@ CREATE TABLE `zc_menu` ( `name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '名称', `url` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '链接', `pow` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '权限', - `csort` int(11) NOT NULL DEFAULT 1 COMMENT '排序', - `isuse` int(11) NOT NULL DEFAULT 0 COMMENT '|启用|,BOOL', + `csort` int(11) NOT NULL DEFAULT 10 COMMENT '排序', + `isuse` int(11) NOT NULL DEFAULT 1 COMMENT '|启用|,BOOL', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 20003 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '菜单表' ROW_FORMAT = Dynamic; @@ -1090,9 +1250,6 @@ INSERT INTO `zc_menu` VALUES (80, 0, '组织管理', '', '', 10, 1); INSERT INTO `zc_menu` VALUES (81, 0, '服务器监控', '', '', 10, 1); INSERT INTO `zc_menu` VALUES (82, 0, '系统管理', '', '', 10, 1); INSERT INTO `zc_menu` VALUES (99, 0, '*开发者', '', '', 1, 1); -INSERT INTO `zc_menu` VALUES (100, 1, '简体中文', 'ciyfn.setlang()', '', 1, 1); -INSERT INTO `zc_menu` VALUES (101, 1, 'English', 'ciyfn.setlang(\'en\')', '', 1, 1); -INSERT INTO `zc_menu` VALUES (102, 1, '日本語', 'ciyfn.setlang(\'ja\')', '', 1, 1); INSERT INTO `zc_menu` VALUES (120, 1, '刷新缓存', 'restorage(true)', '', 1, 1); INSERT INTO `zc_menu` VALUES (121, 1, '修改密码', 'rigger/chgpass.html', '', 1, 1); INSERT INTO `zc_menu` VALUES (130, 2, 'SSH', 'setssh(true)', '', 1, 1); @@ -1168,7 +1325,7 @@ INSERT INTO `zc_menu` VALUES (550, 81, '健康指标', 'rigger/statsfunc.html', INSERT INTO `zc_menu` VALUES (551, 81, '服务器详情', 'rigger/statssrv.html', '', 10, 1); INSERT INTO `zc_menu` VALUES (552, 81, '数据库详情', 'rigger/statsdb.html', '', 10, 1); INSERT INTO `zc_menu` VALUES (553, 81, '业务日志', 'rigger/logdb.html?liid=1', 's=审阅|d=删除', 10, 1); -INSERT INTO `zc_menu` VALUES (554, 81, '程序日志', 'rigger/logfile.html', '', 10, 1); +INSERT INTO `zc_menu` VALUES (554, 81, '程序日志', 'rigger/logfile.html', 'd=删除', 10, 1); INSERT INTO `zc_menu` VALUES (555, 81, '慢请求记录', 'rigger/funcslow.html', 'd=删除|e=导出', 10, 1); INSERT INTO `zc_menu` VALUES (600, 82, '配置管理', 'rigger/config.html', 'u=管理|d=删除', 10, 1); INSERT INTO `zc_menu` VALUES (601, 82, '数据字典', 'rigger/cataindex.html', 'pi=库管理|pd=字典管理', 10, 1); @@ -1177,35 +1334,55 @@ INSERT INTO `zc_menu` VALUES (603, 82, '表单设计器', '~:tabbase 字段设 INSERT INTO `zc_menu` VALUES (604, 82, '流程设计器', '~:mattertemplate 流程设置matterflow', '', 10, 1); INSERT INTO `zc_menu` VALUES (610, 82, '数据计算', 'datasse/index.html', 'r=执行', 10, 1); INSERT INTO `zc_menu` VALUES (621, 82, '文档短链', '', '', 10, 1); -INSERT INTO `zc_menu` VALUES (622, 82, '静态字典生成', '', '', 10, 1); -INSERT INTO `zc_menu` VALUES (900, 99, '用户调试登录', 'rigger/debug_user.html', 'u=管理|n=使用', 10, 1); -INSERT INTO `zc_menu` VALUES (903, 99, '总控菜单', 'rigger/menu.html', 'u=管理|d=删除', 10, 1); -INSERT INTO `zc_menu` VALUES (910, 99, '扩展权限', 'rigger/power.html', 'u=设置', 10, 1); -INSERT INTO `zc_menu` VALUES (911, 99, 'Mocks接口', 'rigger/mock.html', 'u=管理|d=删除', 10, 1); -INSERT INTO `zc_menu` VALUES (912, 99, '通用事项管理', '~:mattercomm 未送审、未办结', '', 10, 2); -INSERT INTO `zc_menu` VALUES (920, 99, '示例代码', '', '', 10, 1); -INSERT INTO `zc_menu` VALUES (925, 99, '原型图', '', '', 10, 1); -INSERT INTO `zc_menu` VALUES (926, 99, '代码生成器', 'develop/code_list.html', '', 10, 1); -INSERT INTO `zc_menu` VALUES (927, 99, '开发文档', '', '', 10, 1); -INSERT INTO `zc_menu` VALUES (930, 920, '小工具', 'https://i.qiboc.cn/tool/', '', 10, 1); -INSERT INTO `zc_menu` VALUES (931, 920, '增删改查', 'ap/demo.html', '', 10, 1); -INSERT INTO `zc_menu` VALUES (932, 920, '前端组件', 'demo/index.html', '', 10, 1); -INSERT INTO `zc_menu` VALUES (933, 920, 'WebSocket示例', 'wsdemo/', '', 10, 1); -INSERT INTO `zc_menu` VALUES (934, 920, 'SSE示例', 'demo/dyn/sse.html', '', 10, 1); -INSERT INTO `zc_menu` VALUES (950, 925, '生成源码', '~:选择本地自定义表单生成,原型拉取到自定义表单,远程原型直接生成', '', 10, 0); -INSERT INTO `zc_menu` VALUES (955, 925, 'PC端原型', '~m4376,key=18679ba2c1fb8749727dae0ce6bde66cbbf00b7ce0', '', 10, 1); -INSERT INTO `zc_menu` VALUES (956, 925, '移动端原型', '~a4187,tag=me', '', 10, 1); -INSERT INTO `zc_menu` VALUES (957, 925, '图表原型', '~c836', '', 10, 1); -INSERT INTO `zc_menu` VALUES (958, 925, '大屏原型', '~c3125,key=18679ba589ab4e057e13b752ebc399a8f3f4ffeaf6', '', 10, 1); -INSERT INTO `zc_menu` VALUES (959, 925, '原型右键参考', 'rigger/config.html~m4376', '', 10, 1); -INSERT INTO `zc_menu` VALUES (960, 925, '菜单说明文字', '~:第一行|第二行', '', 10, 1); -INSERT INTO `zc_menu` VALUES (970, 927, '功能原型', 'develop/note.html?typeid=10', '', 10, 1); -INSERT INTO `zc_menu` VALUES (971, 927, '数据接口', 'develop/note.html?typeid=11', '', 10, 1); -INSERT INTO `zc_menu` VALUES (972, 927, '开发计划', 'develop/note.html?typeid=12', '', 10, 1); +INSERT INTO `zc_menu` VALUES (900, 99, '软件设置', '', '', 10, 1); +INSERT INTO `zc_menu` VALUES (901, 99, '示例代码', '', 'u=管理|n=使用', 10, 1); +INSERT INTO `zc_menu` VALUES (902, 99, '开发工具', '', '', 10, 1); +INSERT INTO `zc_menu` VALUES (903, 99, '开发管理', '', '', 10, 1); +INSERT INTO `zc_menu` VALUES (904, 99, '测试工具', '', '', 10, 1); +INSERT INTO `zc_menu` VALUES (910, 901, '前端组件', 'demo/index.html', '', 10, 1); +INSERT INTO `zc_menu` VALUES (911, 901, '交互示例', 'demo/index_fb.html', '', 10, 1); +INSERT INTO `zc_menu` VALUES (912, 901, '功能示例', '', '', 10, 1); +INSERT INTO `zc_menu` VALUES (920, 902, '碎片试验代码', '/ajax/api/test1.t1', '', 10, 1); +INSERT INTO `zc_menu` VALUES (921, 902, '共享工具集', 'https://i.qiboc.cn/tool/', '', 10, 1); +INSERT INTO `zc_menu` VALUES (922, 902, '原型图演示', '', '', 10, 1); +INSERT INTO `zc_menu` VALUES (923, 902, '众产支持', '', '', 10, 1); +INSERT INTO `zc_menu` VALUES (930, 903, '里程碑更新记录', '', '', 10, 1); +INSERT INTO `zc_menu` VALUES (931, 903, '开发记录', '', '', 10, 1); +INSERT INTO `zc_menu` VALUES (940, 904, '测试用例', 'dao.ciy.cn/dev', '', 10, 1); +INSERT INTO `zc_menu` VALUES (941, 904, '测试任务', 'dao.ciy.cn/dev', '', 10, 1); +INSERT INTO `zc_menu` VALUES (942, 904, 'Bug处置', 'dao.ciy.cn/dev', '', 10, 1); +INSERT INTO `zc_menu` VALUES (945, 904, 'Mocks接口', 'rigger/mock.html', '', 10, 1); +INSERT INTO `zc_menu` VALUES (980, 900, '总控菜单', 'rigger/menu.html', '', 10, 1); +INSERT INTO `zc_menu` VALUES (981, 900, 'SaaS菜单', '', '', 10, 1); +INSERT INTO `zc_menu` VALUES (990, 900, '调试登录', 'rigger/debug_user.html', '', 10, 1); +INSERT INTO `zc_menu` VALUES (991, 900, '扩展权限', 'rigger/power.html', '', 10, 1); +INSERT INTO `zc_menu` VALUES (992, 900, '通用事项管理', '~:mattercomm 未送审、未办结', '', 10, 1); +INSERT INTO `zc_menu` VALUES (1120, 912, '常规列表页', 'ap/demo.html', '', 10, 1); +INSERT INTO `zc_menu` VALUES (1121, 912, '块列表页', '', '', 10, 1); +INSERT INTO `zc_menu` VALUES (1122, 912, '多层分类', '', '', 10, 1); +INSERT INTO `zc_menu` VALUES (1123, 912, '行编辑表', '', '', 10, 1); +INSERT INTO `zc_menu` VALUES (1124, 912, '设置单页', '', '', 10, 1); +INSERT INTO `zc_menu` VALUES (1125, 912, '安全功能页', '', '', 10, 1); +INSERT INTO `zc_menu` VALUES (1126, 912, '分类列表页', '', '', 10, 1); +INSERT INTO `zc_menu` VALUES (1220, 922, 'PC端', '~m4376,key=18679ba2c1fb8749727dae0ce6bde66cbbf00b7ce0', '', 10, 1); +INSERT INTO `zc_menu` VALUES (1221, 922, '移动端', '~a4187,tag=me', '', 10, 1); +INSERT INTO `zc_menu` VALUES (1222, 922, '图表', '~c836', '', 10, 1); +INSERT INTO `zc_menu` VALUES (1223, 922, '大屏', '~c3125,key=18679ba589ab4e057e13b752ebc399a8f3f4ffeaf6', '', 10, 1); +INSERT INTO `zc_menu` VALUES (1224, 922, '菜单说明', '~:第一行|第二行', '', 10, 1); +INSERT INTO `zc_menu` VALUES (1230, 923, '加入指引', '', '', 10, 1); +INSERT INTO `zc_menu` VALUES (1231, 923, 'AI规划', '!DAO/dev/ciyon/project.html', '', 10, 1); +INSERT INTO `zc_menu` VALUES (1232, 923, '代码生成器', 'develop/code_saas.html', '', 10, 1); +INSERT INTO `zc_menu` VALUES (1233, 923, '生成文档', '', '', 10, 1); +INSERT INTO `zc_menu` VALUES (1234, 923, 'AI多语言翻译', '', '', 10, 1); +INSERT INTO `zc_menu` VALUES (1235, 923, '工具支持', '', '', 10, 1); +INSERT INTO `zc_menu` VALUES (1300, 931, '产品规划', 'develop/note.html?typeid=10', '', 10, 1); +INSERT INTO `zc_menu` VALUES (1301, 931, '架构设计', 'develop/note.html?typeid=11', '', 10, 1); +INSERT INTO `zc_menu` VALUES (1302, 931, '开发计划', 'develop/note.html?typeid=12', '', 10, 1); INSERT INTO `zc_menu` VALUES (10000, 10, '客服工作', '', '', 10, 1); INSERT INTO `zc_menu` VALUES (10001, 10, '运营工作', '', '', 10, 1); INSERT INTO `zc_menu` VALUES (10002, 10, '财务工作', '', '', 10, 1); INSERT INTO `zc_menu` VALUES (10010, 10, '用户数据', '', '', 10, 1); +INSERT INTO `zc_menu` VALUES (10011, 10, 'API接口', 'ap/api.html', '', 10, 1); INSERT INTO `zc_menu` VALUES (10100, 10000, '工单处理', 'ap/usr_problem.html', '', 10, 1); INSERT INTO `zc_menu` VALUES (10101, 10000, '意见建议', 'ap/usr_suggest.html', '', 10, 1); INSERT INTO `zc_menu` VALUES (10105, 10000, '用户服务', 'ap/user_service.html', '', 10, 1); @@ -1220,6 +1397,7 @@ INSERT INTO `zc_menu` VALUES (10222, 10001, '广告图管理', 'ap/banner.html', INSERT INTO `zc_menu` VALUES (10230, 10001, '金币奖励埋点', 'ap/pnt_track.html', '', 10, 1); INSERT INTO `zc_menu` VALUES (10231, 10001, '付费会员定价', 'ap/usr_buy_bundle.html', '', 10, 1); INSERT INTO `zc_menu` VALUES (10232, 10001, '金币购买定价', 'ap/pnt_bundle.html', '', 10, 1); +INSERT INTO `zc_menu` VALUES (10235, 10001, '订单示例', 'ap/transfer.html', '', 10, 1); INSERT INTO `zc_menu` VALUES (10300, 10002, '提现支付', 'ap/cash_out_2.html', '', 10, 1); INSERT INTO `zc_menu` VALUES (10301, 10002, '发票开票', 'ap/usr_invoicing.html', '', 10, 1); INSERT INTO `zc_menu` VALUES (10302, 10002, '付费会员流水', 'ap/usr_buy_user.html?liid=2', '', 10, 1); @@ -1237,6 +1415,7 @@ INSERT INTO `zc_menu` VALUES (10408, 10010, '验证码', 'ap/usr_capcode.html', DROP TABLE IF EXISTS `zc_mnufav`; CREATE TABLE `zc_mnufav` ( `id` int(11) NOT NULL AUTO_INCREMENT, + `favtarget` int(11) NOT NULL, `user` int(11) NOT NULL COMMENT '|用户|,CATA,adminuser', `menuid` int(11) NOT NULL, `addtimes` bigint(20) NOT NULL COMMENT '添加时间,DATE', @@ -1357,8 +1536,7 @@ DROP TABLE IF EXISTS `zc_ymock`; CREATE TABLE `zc_ymock` ( `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID', `name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '名称备注', - `upath` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '类路径', - `ufunc` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '函数名', + `ufunc` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '类.函数', `mockjson` mediumtext CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT ',mock数据', `lastrequest` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT ',请求快照', `lasttimes` bigint(20) NOT NULL DEFAULT 0 COMMENT '请求时间,DATE', @@ -1369,7 +1547,7 @@ CREATE TABLE `zc_ymock` ( -- ---------------------------- -- Records of zc_ymock -- ---------------------------- -INSERT INTO `zc_ymock` VALUES (6, '', 'work/art', 'get', '{\"code\":1}', '', 0, 1722713211); +INSERT INTO `zc_ymock` VALUES (6, '', 'admin/rigger/mock.testmock', '{\"code\":1,\"data\":12344321}', '/z/?func=admin/rigger/mock.testmock
{\"abc\":\"def\",\"_pf\":\"PC\"}', 1754001371, 1722713211); -- ---------------------------- -- Table structure for zc_zmem_var @@ -1385,9 +1563,10 @@ CREATE TABLE `zc_zmem_var` ( -- ---------------------------- -- Records of zc_zmem_var -- ---------------------------- -INSERT INTO `zc_zmem_var` VALUES (1, 'func_runms', 4332); -INSERT INTO `zc_zmem_var` VALUES (2, 'func_succ', 154); -INSERT INTO `zc_zmem_var` VALUES (3, 'func_fail', 8); -INSERT INTO `zc_zmem_var` VALUES (4, 'func_commit', 31); +INSERT INTO `zc_zmem_var` VALUES (1, 'func_runms', 0); +INSERT INTO `zc_zmem_var` VALUES (2, 'func_succ', 0); +INSERT INTO `zc_zmem_var` VALUES (3, 'func_fail', 0); +INSERT INTO `zc_zmem_var` VALUES (4, 'func_commit', 0); +INSERT INTO `zc_zmem_var` VALUES (5, 'func_rollback', 0); SET FOREIGN_KEY_CHECKS = 1; diff --git a/web/admin/ap/api.html b/web/admin/ap/api.html new file mode 100644 index 0000000..93d0a45 --- /dev/null +++ b/web/admin/ap/api.html @@ -0,0 +1,223 @@ + + + + + + + + + + + + +
+ +
+
Loading...
+
+
+
+ 全选 + 反选 + | +
+
+
+
+
+ + + + + + + + + + + \ No newline at end of file diff --git a/web/admin/ap/api.php b/web/admin/ap/api.php new file mode 100644 index 0000000..6c2d33e --- /dev/null +++ b/web/admin/ap/api.php @@ -0,0 +1,244 @@ +get('query'); + $csql = new \ciy\sql('ap_api'); + $order = objstr($query, 'order', 'id desc'); + $csql->order($order); + $query['order'] = $order; + return [$query, $csql]; + } + + public static function json_list() { + global $db; + $rsuser = verifyfast(); + $post = new \ciy\post(); + list($where, $csql) = self::setwhere($db, $post); + $pageno = $post->getint('pageno', 1); + $pagecount = $post->getint('pagecount', 10); + $csql->limit($pageno, $pagecount); + $mainrowcount = $post->getint('count'); + $rows = $db->get($csql, $mainrowcount); + if ($rows === false) + return errjson($db->error); + $ret = array('where' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows); + if ($post->getbool('field')) { + $field = array(); + $fshow = $db->getfield($field, 'ap_api'); + foreach ($field as $fr => $v) { + if (get('_' . $fr)) + $field[$fr]['c'] = ',' . $field[$fr]['c']; + } + $fshow = fieldadd($fshow, $field, 0, '_btn', '操作'); + $fshow = fieldadd($fshow, $field, -1, 'msg', '接入检测'); + $ret['field'] = $field; + $ret['fshow'] = $fshow; + } + if ($post->getbool('once')) { + $ret['once'] = array(); + $input = array(); + $ret['once']['input'] = $input; + } + return succjson($ret); + } + public static function json_addnew() { + global $db; + $rsuser = verifyfast(); + //if (nopower($db, $rsuser['id'], 'p u')) + // return errjson('您未被授权操作'); + $post = new \ciy\post(); + $csql = new \ciy\sql('ap_api'); + $csql->where('addtimes>', time() - 86400 * 7); + $csql->column('id'); + $chkid = toint($db->get1($csql)); + if ($chkid > 0) + return errjson('一周内只能建立一条API通道'); + $secret = randstr(10) . randstr(10); + try { + $db->begin(); + $updata = array(); + $updata['apisecret'] = $secret; + $updata['ips'] = ''; + $updata['addtimes'] = tostamp(); + $updata['pubkey'] = ''; + $csql = new \ciy\sql('ap_api'); + if ($db->insert($csql, $updata) === false) + throw new \Exception('新增失败:' . $db->error); + $updata['id'] = $db->insert_id(); + $db->commit(); + } catch (\Exception $ex) { + $db->rollback(); + savelogfile('err_db', $ex->getMessage()); + return errjson($ex->getMessage()); + } + $ret['data'] = $updata; + return succjson($ret); + } + public static function json_rekey() { + global $db; + $rsuser = verifyfast(); + //if (nopower($db, $rsuser['id'], 'p u')) + // return errjson('您未被授权操作'); + $post = new \ciy\post(); + $id = $post->getint('id'); + $secret = randstr(10) . randstr(10); + try { + $db->begin(); + $updata = array(); + $updata['apisecret'] = $secret; + $csql = new \ciy\sql('ap_api'); + $csql->where('id', $id); + if ($db->update($csql, $updata) === false) + throw new \Exception('新增失败:' . $db->error); + $db->commit(); + } catch (\Exception $ex) { + $db->rollback(); + savelogfile('err_db', $ex->getMessage()); + return errjson($ex->getMessage()); + } + $ret['secret'] = $secret; + return succjson($ret); + } + public static function json_edit() { + global $db; + $rsuser = verifyfast(); + //if (nopower($db, $rsuser['id'], 'p u')) + // return errjson('您未被授权操作'); + $post = new \ciy\post(); + $id = $post->getint('id'); + $ips = explode("\n", $post->get('ips')); + $iparr = array(); + foreach ($ips as $ip) { + $ip = trim($ip); + if (empty($ip)) + continue; + if (!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) + return errjson('公网IP格式错误:' . $ip); + $iparr[] = $ip; + } + try { + $db->begin(); + $updata = array(); + $updata['ips'] = implode("\n", $iparr); + $csql = new \ciy\sql('ap_api'); + $csql->where('id', $id); + if ($db->update($csql, $updata) === false) + throw new \Exception('更新失败:' . $db->error); + $updata['id'] = $id; + //savelogdb($db, $rsuser['id'], 'ap_api', $datarow, $updata); + $db->commit(); + } catch (\Exception $ex) { + $db->rollback(); + savelogfile('err_db', $ex->getMessage()); + return errjson($ex->getMessage()); + } + $ret['data'] = $updata; + return succjson($ret); + } + public static function json_pubkey() { + global $db; + $rsuser = verifyfast(); + //if (nopower($db, $rsuser['id'], 'p u')) + // return errjson('您未被授权操作'); + $post = new \ciy\post(); + $pubkey = $post->get('pubkey'); + $id = $post->getint('id'); + $oridata = $post->get('oridata'); + $hash = $post->get('hash'); + $pubkey = $post->get('pubkey'); + $csql = new \ciy\sql('ap_api'); + $csql->where('id', $id); + $apirow = $db->getone($csql); + if (!is_array($apirow)) + return errjson('API通道不存在'); + if (!empty($apirow['pubkey'])) + return errjson('该API通道已设置公钥'); + $publickey = $pubkey; + if (strpos($publickey, '-----BEGIN PUBLIC KEY-----') === false) + $publickey = "-----BEGIN PUBLIC KEY-----\n" . wordwrap($publickey, 64, "\n") . "\n-----END PUBLIC KEY-----"; + + $pubkey = str_replace('-----BEGIN PUBLIC KEY-----', '', $pubkey); + $pubkey = str_replace('-----END PUBLIC KEY-----', '', $pubkey); + $pubkey = str_replace(["\r", "\n"], '', $pubkey); + $pubkey = trim($pubkey); + $csql = new \ciy\sql('ap_api'); + $csql->where('pubkey', $pubkey); + $chkrow = $db->getone($csql); + if (is_array($chkrow)) + return errjson('该公钥已存在'); + $sign = $post->get('sign'); + $timestamp = toint(substr($oridata, 3)); + if (abs(time() - $timestamp) > 300) + return errjson('请在5分钟内完成操作'); + + if (sha256($oridata) != $hash) + return errjson('hash数据校验失败'); + $signbin = hex2bin($sign); + if ($signbin === false) + return errjson('签名格式错误'); + $hashbin = hex2bin($hash); + if ($hashbin === false) + return errjson('hash格式错误'); + + $result = openssl_verify($hashbin, $signbin, $publickey, OPENSSL_ALGO_SHA256); + if ($result === 0) + return errjson('验签失败'); + + else if ($result !== 1) + return errjson('验签错误:' . openssl_error_string()); + $hash = strtoupper($hash); + try { + $db->begin(); + $updata = array(); + $updata['pubkey'] = $pubkey; + $csql = new \ciy\sql('ap_api'); + $csql->where('id', $id); + if ($db->update($csql, $updata) === false) + throw new \Exception('更新失败:' . $db->error); + $updata['id'] = $id; + //savelogdb($db, $rsuser['id'], 'ap_api', $datarow, $updata); + $db->commit(); + } catch (\Exception $ex) { + $db->rollback(); + savelogfile('err_db', $ex->getMessage()); + return errjson($ex->getMessage()); + } + $ret['data'] = $updata; + return succjson($ret); + } + + public static function json_del() { + global $db; + $rsuser = verifyfast(); + //if (nopower($db, $rsuser['id'], 'p d')) + // return errjson('您未被授权操作'); + $post = new \ciy\post(); + $ids = $post->get('ids'); + if (empty($ids)) + return errjson('请选择至少一条'); + $csql = new \ciy\sql('ap_api'); + $csql->where('id in', $ids); + $rows = $db->get($csql); + $vids = array(); + try { + $db->begin(); + foreach ($rows as $row) { + $delid = $row['id']; + delcheck($db, $delid, 'ap_transfer', 'apiid', '转账订单'); + //delall($db, $delid, 'tablexx', 'xxid', '运动员'); //deltimeall + delme($db, $delid, 'ap_api'); + $vids[] = $delid; + } + $db->commit(); + } catch (\Exception $ex) { + $db->rollback(); + savelogfile('err_db', $ex->getMessage()); + return errjson($ex->getMessage()); + } + $ret['ids'] = $vids; + return succjson($ret); + } +} diff --git a/web/admin/ap/transfer.html b/web/admin/ap/transfer.html new file mode 100644 index 0000000..ab2b939 --- /dev/null +++ b/web/admin/ap/transfer.html @@ -0,0 +1,101 @@ + + + + + + + + + + + + +
+ +
+
Loading...
+
+
+
+ 全选 + 反选 + | +
+
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/web/admin/ap/transfer.php b/web/admin/ap/transfer.php new file mode 100644 index 0000000..e99d92c --- /dev/null +++ b/web/admin/ap/transfer.php @@ -0,0 +1,155 @@ +get('query'); + $csql = new \ciy\sql('ap_transfer'); + $liid = objint($query, 'liid'); + if ($liid > 0) + $csql->where('orderstatus', $liid); + $val = objstr($query, 'id'); + if (!empty($val) && $val[0] == 'P') + $csql->where('id', substr($val, 1)); + $csql->wherenumrange('amount', objstr($query, 'amount_1'), objstr($query, 'amount_2'), 100); + $csql->wheredaterange('addtimes', objstr($query, 'addtimes')); + $csql->where('thirdno like', objstr($query, 'thirdno')); + $order = objstr($query, 'order', 'id desc'); + $csql->order($order); + $query['order'] = $order; + return [$query, $csql]; + } + + public static function json_list() { + global $db; + $rsuser = verifyfast(); + $post = new \ciy\post(); + list($where, $csql) = self::setwhere($db, $post); + $pageno = $post->getint('pageno', 1); + $pagecount = $post->getint('pagecount', 10); + $csql->limit($pageno, $pagecount); + $mainrowcount = $post->getint('count'); + $rows = $db->get($csql, $mainrowcount); + if ($rows === false) + return errjson($db->error); + $ret = array('where' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $rows); + if ($post->getbool('field')) { + $field = array(); + $fshow = $db->getfield($field, 'ap_transfer'); + foreach ($field as $fr => $v) { + if (get('_' . $fr)) + $field[$fr]['c'] = ',' . $field[$fr]['c']; + } + $fshow = fieldadd($fshow, $field, 0, '_btn', '操作'); + $ret['field'] = $field; + $ret['fshow'] = $fshow; + } + if ($post->getbool('once')) { + $ret['once'] = array(); + $input = array(); + $input[] = array('type' => 'input', 'form' => 'id', 'name' => '流水号', 'prop' => ' style="width:8em;"'); + $input[] = array('type' => 'num', 'form' => 'amount', 'name' => '金额', 'prop' => ' style="width:4em;"'); + $input[] = array('type' => 'daterange', 'form' => 'addtimes', 'name' => '创建时间'); + $input[] = array('type' => 'input', 'form' => 'thirdno', 'name' => '三方单号', 'prop' => ' style="width:8em;"'); + $ret['once']['input'] = $input; + } + return succjson($ret); + } + + public static function json_checksign() { + global $db; + $post = new \ciy\post(); + $id = $post->getint('id'); + $csql = new \ciy\sql('ap_transfer'); + $csql->where('id', $id); + $orderrow = $db->getone($csql); + if (!is_array($orderrow)) + return errjson('数据不存在'); + $csql = new \ciy\sql('ap_api'); + $csql->where('id', $orderrow['apiid']); + $apirow = $db->getone($csql); + if (!is_array($apirow)) + return errjson('API不存在'); + $signs = array(); + $waitsignstr = 'amount=' . $orderrow['amount'] . ',addtimes=' . $orderrow['addtimes']; + $signs[] = array('hash' => hash('sha256', $waitsignstr), 'sign' => $orderrow['signature']); + $retsign = self::verifysign_api($apirow['pubkey'], $signs); + if (is_string($retsign)) + return errjson($retsign); + return succjson(); + } + static function verifysign_api($signKey, $signs) { + if (strpos($signKey, '-----BEGIN RSA PUBLIC KEY-----') === false && strpos($signKey, '-----BEGIN PUBLIC KEY-----') === false) + $signKey = "-----BEGIN PUBLIC KEY-----\n" . wordwrap($signKey, 64, "\n") . "\n-----END PUBLIC KEY-----"; + + foreach ($signs as $sign) { + $signbin = hex2bin($sign['sign']); + if ($signbin === false) + return errjson('签名格式错误'); + $hashbin = hex2bin($sign['hash']); + $result = openssl_verify($hashbin, $signbin, $signKey, OPENSSL_ALGO_SHA256); + if ($result === 0) + return '数字证书验签失败'; + else if ($result !== 1) + return '数字证书验签错误:' . openssl_error_string(); + return true; + } + } + public static function json_exportxls() { + global $db; + $rsuser = verifyfast(); + //if (nopower($db, $rsuser['id'], 'p e')) + // return errjson('您未被授权操作'); + $post = new \ciy\post(); + list($where, $csql) = self::setwhere($db, $post); + $rows = $db->get($csql); + if (count($rows) > 10000) + return errjson('将导出' . count($rows) . '条,不建议超过1万条,请筛选缩小范围'); + $fields = array(); + $fields[] = array('style' => 'l', 'width' => 60, 'field' => 'id', 'name' => '行码'); + $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'orderstatus', 'name' => '状态'); + $fields[] = array('style' => 'r', 'width' => 100, 'field' => 'amount', 'name' => '金额'); + $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'addtimes', 'name' => '创建时间'); + $fields[] = array('style' => 'l', 'width' => 100, 'field' => 'uptimes', 'name' => '完成时间'); + $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'thirdno', 'name' => '订单号'); + $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'apiuser', 'name' => 'APIID'); + $fields[] = array('style' => 'l', 'width' => 150, 'field' => 'signature', 'name' => '签名'); + $code_orderstatus = getcatas($db, 'orderstatus'); + $datas = array(); + foreach ($rows as $row) { + $dat = array(); + foreach ($fields as $field) { + $field = $field['field']; + $val = isset($row[$field]) ? $row[$field] : ''; + if ($field == 'id') + $val = enid($val); + if ($field == 'orderstatus') + $val = ccode($code_orderstatus, $val); + if ($field == 'amount') + $val = number_format($val / 100, 2); + if ($field == 'addtimes') + $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val)); + if ($field == 'uptimes') + $val = ($val == 0 ? '--' : date('Y-m-d H:i', $val)); + $dat[] = $val; + } + $datas[] = $dat; + } + $param = array(); + $param['field'] = $fields; + $param['data'] = $datas; + $param['sheetname'] = '数据报表'; + $param['titleheight'] = '25'; //列头高度 + $param['landscape'] = true; //横向打印 + $param['fixtopage'] = true; //打印整个工作表 + $param['toptitle'] = '转账单数据报表'; + $str = \ciy\excel::general_excel_xml($param); + $filename = ''; + if (empty($filename)) + $filename = date('Y-m-d_H-i-s') . rand(1000, 9999); + $filename .= '.xls'; + file_put_contents(PATH_WEB . 'ud/tmp/' . $filename, $str); + return succjson(array('url' => '/ud/tmp/' . $filename)); + } +} diff --git a/web/admin/common.go b/web/admin/common.go index 0a299a5..b79c149 100644 --- a/web/admin/common.go +++ b/web/admin/common.go @@ -12,7 +12,7 @@ var Gtokensalt string //登录盐值 var Gdefpass string //默认密码 func init() { Gtokenfield = "ciyadm" - Gtokensalt = "ast34h$2" + Gtokensalt = "bka02$59gG" Gdefpass = "1q2w" } func Verifyfast(db *c.CiyMysql, post *c.CiyPost) (map[string]any, int) { diff --git a/web/admin/common.js b/web/admin/common.js index a3d41eb..2bd91dc 100644 --- a/web/admin/common.js +++ b/web/admin/common.js @@ -1,9 +1,14 @@ var ciy_vars = { "tokenfield": "ciyadm" - , "tokensalt": "ast34h$3" + , "tokensalt": "bka02$59gG" , "uploadurl": "admin/upload" , "loginurl": "admin/login.html" , "dupsec": 60 , "storselect": '/' - , "storlist": { '/': '/ud/', 'A': 'https://cf5.nyyzsoft.cn/ud/', 'Z': 'https://cf5.nyyzsoft.cn/ud/' } + , "storlist": { '/': '/ud/', 'A': 'https://cf5.nyyzsoft.cn/ud/' } + , "langs": { + '': '简体中文' + , 'en': 'English' + , 'ja': '日本語' + } } diff --git a/web/admin/common.php b/web/admin/common.php index d5e388e..690cc65 100644 --- a/web/admin/common.php +++ b/web/admin/common.php @@ -19,10 +19,10 @@ $_token = array(); $_token['type'] = 'cookie'; //cookie(更安全) 、 localstorage(兼容性好) -$_token['swapsec'] = 10; //更换JWT时间 -$_token['expsec'] = 86400; //过期退出时间 +$_token['swapsec'] = 3600; //更换JWT时间 +$_token['expsec'] = 86400*7; //过期退出时间 $_token['field'] = 'ciyadm'; -$_token['salt'] = 'ast34h$3'; //做数据加解密时的加密因子,每个项目都不要相同。 +$_token['salt'] = 'bka02$59gG'; //做数据加解密时的加密因子,每个项目都不要相同。 function verifyfast() { $rsuser = verifyuser(); diff --git a/web/admin/demo/index.html b/web/admin/demo/index.html index 4a53fbc..a7d4e92 100644 --- a/web/admin/demo/index.html +++ b/web/admin/demo/index.html @@ -127,10 +127,6 @@ ciydom dom封装。替代jquery -
- bigscreen - 数据大屏实现原理。 -
shadow 文字阴影CSS实现原理。 @@ -163,38 +159,10 @@ proxy prop Proxy响应式示例。
-
- rsa sign - RSA私钥签名 -
-
- ecc sign - ECC UKey签名(VN) -
-
- web3 - web3登录、签名、验签 -
-
- mail - Mail收发邮件。 -
-
- deepseek - DeepSeek接口。 -
tesseract 文字OCR识别。
-
- alipaycb - 阿里API,回调数据分析 -
-
- realip - 复杂网络环境下获取真实ip -
diff --git a/web/admin/demo/index_fb.html b/web/admin/demo/index_fb.html new file mode 100644 index 0000000..c318ebf --- /dev/null +++ b/web/admin/demo/index_fb.html @@ -0,0 +1,96 @@ + + + + + + + + + + + + +
+
+
+
交互示例
+
com
+
+
+
+ websocket + websocket示例。 +
+
+ SSE + SSE示例。 +
+
+ bigscreen + 数据大屏实现原理。 +
+
+ rsa sign + RSA私钥签名 +
+
+ ecc sign + ECC UKey签名(VN) +
+
+ web3 + web3登录、签名、验签 +
+
+ mail + Mail收发邮件。 +
+
+ deepseek + DeepSeek接口。 +
+
+ alipaycb + 阿里API,回调数据分析 +
+
+ realip + 复杂网络环境下获取真实ip +
+
+ + +
+ + + + + + + + + \ No newline at end of file diff --git a/web/admin/index.html b/web/admin/index.html index 60a09b1..04b0fd4 100644 --- a/web/admin/index.html +++ b/web/admin/index.html @@ -506,6 +506,9 @@ +
  • 🌐 +
      +
    • @@ -674,6 +677,12 @@ } } else if (href.substring(0, 4) == 'http') { window.open(href); + } else if (href.substring(0, 4) == '!DAO') { + ciyfn.callfunc("godao", { url: href.substring(4) }, function (json) { + thos.page_ifropen(json.url, txt); + if (window.innerWidth < 992) + thos.page_shrink(); + }); } else { if (href.substring(0, 5) == '$http') href = href.substring(1); @@ -854,8 +863,8 @@ ableclose = ''; else ableclose = ''; - if (url.indexOf('http') === 0) - url = ''; + if (url.indexOf('token=') > 0) + url = url.substring(0, url.indexOf('token=') + 6); tabsuldom.append("
    • " + ciyfn.lang(txt) + "" + ableclose + "
    • "); //滚动到最后 tabsdom[0].scrollLeft = tabsdom.width() * 2; @@ -891,8 +900,13 @@ } this.page_refresh = function () { var domifm = $5("#id_ifms>iframe.active"); - if (domifm.length == 1) - domifm[0].contentWindow.location.reload(); //domifm.attr('src', domifm.attr('src')); + if (domifm.length == 1) { + try { + domifm[0].contentWindow.location.reload();//domifm.attr('src', domifm.attr('src')); + } catch (error) { + ciyfn.sendsignal(domifm[0].contentWindow, 'reload'); + } + } } this.page_ifrclose = function (domtab) { var txt = domtab.attr('data-tit'); @@ -950,6 +964,13 @@ $5('.ciy-pageload').html(json.errmsg); } }); + if (isobj(ciy_vars.langs)) { + var html = ''; + for (var i in ciy_vars.langs) + html += '
    • ' + ciy_vars.langs[i] + '
    • '; + $5('.cselectlang ul').html(html); + } else + $5('.cselectlang').hide(); }); window.addEventListener('message', function (event) { if (!event.data.func) diff --git a/web/admin/index.php b/web/admin/index.php index 31451b7..d686c6e 100644 --- a/web/admin/index.php +++ b/web/admin/index.php @@ -13,7 +13,7 @@ class index { $csql = new \ciy\sql('zc_menu'); $csql->where('isuse', 1)->order('csort desc,id')->column('id,upid,name,url,pow'); $ret['menu'] = $db->get($csql); - if($ret['menu'] === false) + if ($ret['menu'] === false) return errjson('菜单获取失败:' . $db->error); if (count($ret['menu']) == 0) $ret['menu'][] = array('id' => 2, 'upid' => 0, 'name' => '您无任何菜单权限', 'url' => '', 'pow' => '', 'csort' => 0); @@ -60,6 +60,23 @@ class index { $db->delete($csql); return succjson(); } + public static function json_godao() { + $rsuser = verifyfast(); + $post = new \ciy\post(); + $url = $post->get('url'); + $cfg = webini('ciyapi'); + $apiid = $cfg['apiid']; + $apikey = $cfg['apikey']; + $url = 'https://dao.local.ciy.cn' . $url; + if (strpos($url, '?') === false) + $url .= '?'; + else + $url .= '&'; + $time = time(); + $url .= 'token=' . $apiid . 'I' . $time . 'I' . sha256($apiid . $time . $apikey); + $ret['url'] = $url; + return succjson($ret); + } public static function json_setssh() { global $db; $rsuser = verifyfast(); diff --git a/web/admin/login.html b/web/admin/login.html index 5743fc0..67cc216 100644 --- a/web/admin/login.html +++ b/web/admin/login.html @@ -98,9 +98,6 @@ 选择语言
        -
      • 简体中文
      • -
      • English
      • -
      • 日本語
      @@ -150,6 +147,13 @@ 'use strict'; var Glob = {}; ciyfn.pageload(function () { + if (isobj(ciy_vars.langs)) { + var html = ''; + for (var i in ciy_vars.langs) + html += '
    • ' + ciy_vars.langs[i] + '
    • '; + $5('.cselectlang ul').html(html); + } else + $5('.cselectlang').hide(); var debuguser = ciyfn.getstorage('_debuguser10'); if (isarray(debuguser)) { for (var i in debuguser) { diff --git a/web/admin/login.php b/web/admin/login.php index d446177..9738984 100644 --- a/web/admin/login.php +++ b/web/admin/login.php @@ -40,7 +40,7 @@ class login { $csql = new \ciy\sql('zc_admin'); $csql->where('id', $rsuser['id']); $db->update($csql, $updata); - savelog($db, $rsuser['id'], 'LOGINERR', '用户[' . $user . ']登录密码错误 密码1:[' . sha256('1' . $_token['salt']) . ']'); + savelog($db, $rsuser['id'], 'LOGINERR', '用户[' . $user . ']登录密码错误 密码123654:[' . sha256('123654' . $_token['salt']) . ']'); return errjson('用户名或密码错误.'); } $id = $rsuser['id']; diff --git a/web/admin/rigger/debug_user.go b/web/admin/rigger/debug_user.go index 2e5ef6b..c1d8b23 100644 --- a/web/admin/rigger/debug_user.go +++ b/web/admin/rigger/debug_user.go @@ -92,7 +92,7 @@ func Debug_user_update(w http.ResponseWriter, r *http.Request) bool { if userid == 0 { return false } - if admin.Nopower(c.CiyDB, userid, "p900u") { + if admin.Nopower(c.CiyDB, userid, "p991u") { return c.ErrJSON(w, "您未被授权操作") } id := post.Getint("id") @@ -167,7 +167,7 @@ func Debug_user_del(w http.ResponseWriter, r *http.Request) bool { if userid == 0 { return false } - if admin.Nopower(c.CiyDB, userid, "p900u") { + if admin.Nopower(c.CiyDB, userid, "p991u") { return c.ErrJSON(w, "您未被授权操作") } ids := post.Get("ids") @@ -204,7 +204,7 @@ func Debug_user_getlocal(w http.ResponseWriter, r *http.Request) bool { if userid == 0 { return false } - if admin.Nopower(c.CiyDB, userid, "p900n") { + if admin.Nopower(c.CiyDB, userid, "p991n") { return c.ErrJSON(w, "您未被授权操作") } targettype := post.Getint("targettype") diff --git a/web/admin/rigger/debug_user.php b/web/admin/rigger/debug_user.php index b271d12..75e0174 100644 --- a/web/admin/rigger/debug_user.php +++ b/web/admin/rigger/debug_user.php @@ -62,7 +62,7 @@ class debug_user { global $db; $rsuser = verifyfast(); - if (nopower($db, $rsuser['id'], 'p900u')) + if (nopower($db, $rsuser['id'], 'p991u')) return errjson('您未被授权操作'); $post = new \ciy\post(); @@ -130,7 +130,7 @@ class debug_user { global $db; $rsuser = verifyfast(); - if (nopower($db, $rsuser['id'], 'p900u')) + if (nopower($db, $rsuser['id'], 'p991u')) return errjson('您未被授权操作'); $post = new \ciy\post(); @@ -164,7 +164,7 @@ class debug_user { global $db; $rsuser = verifyfast(); - if (nopower($db, $rsuser['id'], 'p900n')) + if (nopower($db, $rsuser['id'], 'p991n')) return errjson('您未被授权操作'); $post = new \ciy\post(); diff --git a/web/admin/rigger/logfile.php b/web/admin/rigger/logfile.php index 38fa0da..5a92ea5 100644 --- a/web/admin/rigger/logfile.php +++ b/web/admin/rigger/logfile.php @@ -5,7 +5,7 @@ namespace web\admin\rigger; class logfile { public static function json_init() { global $logpath; - Verifyfast(); + verifyfast(); $files = scandir($logpath); $logfiles = array(); foreach ($files as $file) { @@ -17,7 +17,11 @@ class logfile { return succjson($ret); } public static function json_clear() { + global $db; global $logpath; + $rsuser = verifyfast(); + if (nopower($db, $rsuser['id'], 'p554d')) + return errjson('您未被授权操作'); $post = new \ciy\post(); $param = $post->get('param'); $logfile = $logpath . $param . '.log'; diff --git a/web/admin/rigger/menu.go b/web/admin/rigger/menu.go index 51f2486..2df55a9 100644 --- a/web/admin/rigger/menu.go +++ b/web/admin/rigger/menu.go @@ -72,7 +72,7 @@ func Menu_update(w http.ResponseWriter, r *http.Request) bool { if userid == 0 { return false } - if admin.Nopower(c.CiyDB, userid, "p903u") { + if admin.Nopower(c.CiyDB, userid, "p980u") { return c.ErrJSON(w, "您未被授权操作") } id := post.Getint("id") @@ -140,7 +140,7 @@ func Menu_del(w http.ResponseWriter, r *http.Request) bool { if userid == 0 { return false } - if admin.Nopower(c.CiyDB, userid, "p903d") { + if admin.Nopower(c.CiyDB, userid, "p980d") { return c.ErrJSON(w, "您未被授权操作") } ids := post.Get("ids") @@ -179,7 +179,7 @@ func Menu_modifyupid(w http.ResponseWriter, r *http.Request) bool { if userid == 0 { return false } - if admin.Nopower(c.CiyDB, userid, "p903u") { + if admin.Nopower(c.CiyDB, userid, "p980u") { return c.ErrJSON(w, "您未被授权操作") } id := post.Getint("id") @@ -225,7 +225,7 @@ func Menu_multiadd(w http.ResponseWriter, r *http.Request) bool { if userid == 0 { return false } - if admin.Nopower(c.CiyDB, userid, "p903u") { + if admin.Nopower(c.CiyDB, userid, "p980u") { return c.ErrJSON(w, "您未被授权操作") } upid := post.Getint("upid") @@ -288,7 +288,7 @@ func Menu_seticon(w http.ResponseWriter, r *http.Request) bool { if userid == 0 { return false } - if admin.Nopower(c.CiyDB, userid, "p903u") { + if admin.Nopower(c.CiyDB, userid, "p980u") { return c.ErrJSON(w, "您未被授权操作") } id := post.Getint("id") diff --git a/web/admin/rigger/menu.php b/web/admin/rigger/menu.php index 7a5a77e..bdfffe4 100644 --- a/web/admin/rigger/menu.php +++ b/web/admin/rigger/menu.php @@ -51,7 +51,7 @@ class menu { global $db; $rsuser = verifyfast(); - if (nopower($db, $rsuser['id'], 'p903u')) + if (nopower($db, $rsuser['id'], 'p980u')) return errjson('您未被授权操作'); $post = new \ciy\post(); $updata = array(); @@ -117,7 +117,7 @@ class menu { global $db; $rsuser = verifyfast(); - if (nopower($db, $rsuser['id'], 'p903d')) + if (nopower($db, $rsuser['id'], 'p980d')) return errjson('您未被授权操作'); $post = new \ciy\post(); $ids = $post->get('ids'); @@ -151,7 +151,7 @@ class menu { global $db; $rsuser = verifyfast(); - if (nopower($db, $rsuser['id'], 'p903u')) + if (nopower($db, $rsuser['id'], 'p980u')) return errjson('您未被授权操作'); $post = new \ciy\post(); $id = $post->getint('id'); @@ -190,7 +190,7 @@ class menu { global $db; $rsuser = verifyfast(); - if (nopower($db, $rsuser['id'], 'p903u')) + if (nopower($db, $rsuser['id'], 'p980u')) return errjson('您未被授权操作'); $post = new \ciy\post(); $upid = $post->getint('upid'); @@ -243,7 +243,7 @@ class menu { global $db; $rsuser = verifyfast(); - if (nopower($db, $rsuser['id'], 'p903u')) + if (nopower($db, $rsuser['id'], 'p980u')) return errjson('您未被授权操作'); $post = new \ciy\post(); $id = $post->getint('id'); diff --git a/web/admin/rigger/mock.go b/web/admin/rigger/mock.go index c0df789..a7b4225 100644 --- a/web/admin/rigger/mock.go +++ b/web/admin/rigger/mock.go @@ -90,7 +90,7 @@ func Mock_update(w http.ResponseWriter, r *http.Request) bool { if userid == 0 { return false } - if admin.Nopower(c.CiyDB, userid, "p911u") { + if admin.Nopower(c.CiyDB, userid, "p942u") { return c.ErrJSON(w, "您未被授权操作") } id := post.Getint("id") @@ -167,7 +167,7 @@ func Mock_del(w http.ResponseWriter, r *http.Request) bool { if userid == 0 { return false } - if admin.Nopower(c.CiyDB, userid, "p911u") { + if admin.Nopower(c.CiyDB, userid, "p942u") { return c.ErrJSON(w, "您未被授权操作") } ids := post.Get("ids") diff --git a/web/admin/rigger/mock.html b/web/admin/rigger/mock.html index 1a48e64..5edd728 100644 --- a/web/admin/rigger/mock.html +++ b/web/admin/rigger/mock.html @@ -17,6 +17,7 @@
      帮助 + mock示例
      @@ -37,7 +38,8 @@