[MySQL]购物管理系统—简略版

本文内容需以MySQL支持

特别感谢baidu comate AI提供的少量虚拟数据

0.建库(建立数据库——utf8字符集,utf8_general_ci排序规则)

1.此项目ER图如下

2.DDL+DML(共九表,27数据)

SET FOREIGN_KEY_CHECKS = 0;

DROP TABLE IF EXISTS `goods`;
CREATE TABLE `goods`  (
  `goods_id` int(11) NOT NULL AUTO_INCREMENT,
  `create_time` datetime(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0),
  `goods_class_id` int(11) NOT NULL,
  `goods_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`goods_id`) USING BTREE,
  INDEX `goods_class_id`(`goods_class_id`) USING BTREE,
  INDEX `goods_name`(`goods_name`) USING BTREE,
  CONSTRAINT `goods_ibfk_1` FOREIGN KEY (`goods_class_id`) REFERENCES `goods_class` (`goods_class_id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

DROP TABLE IF EXISTS `goods_class`;
CREATE TABLE `goods_class`  (
  `goods_class_id` int(11) NOT NULL AUTO_INCREMENT,
  `class_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `create_time` datetime(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0),
  `base_class` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`goods_class_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

DROP TABLE IF EXISTS `goods_info`;
CREATE TABLE `goods_info`  (
  `goods_info_id` int(11) NOT NULL AUTO_INCREMENT,
  `goods_id` int(11) NOT NULL,
  `goods_price` decimal(10, 2) NOT NULL,
  `create_time` datetime(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0),
  `goods_class_id` int(11) NOT NULL,
  `goods_number` int(11) NOT NULL,
  PRIMARY KEY (`goods_info_id`) USING BTREE,
  INDEX `goods_id`(`goods_id`) USING BTREE,
  INDEX `goods_class_id`(`goods_class_id`) USING BTREE,
  CONSTRAINT `goods_info_ibfk_1` FOREIGN KEY (`goods_id`) REFERENCES `goods` (`goods_id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
  CONSTRAINT `goods_info_ibfk_2` FOREIGN KEY (`goods_class_id`) REFERENCES `goods_class` (`goods_class_id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

DROP TABLE IF EXISTS `order`;
CREATE TABLE `order`  (
  `order_id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `create_time` datetime(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0),
  `goods_id` int(11) NOT NULL,
  `paystatus` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '\'待支付\'',
  `goodstatus` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '\'待运送\',\'运送中\',\'已送达\'',
  PRIMARY KEY (`order_id`) USING BTREE,
  INDEX `user_id`(`user_id`) USING BTREE,
  INDEX `goods_id`(`goods_id`) USING BTREE,
  CONSTRAINT `order_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
  CONSTRAINT `order_ibfk_2` FOREIGN KEY (`goods_id`) REFERENCES `goods` (`goods_id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

DROP TABLE IF EXISTS `order_log`;
CREATE TABLE `order_log`  (
  `order_log_id` int(11) NOT NULL AUTO_INCREMENT,
  `order_id` int(11) NOT NULL,
  `paymode` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `number` int(11) NULL DEFAULT NULL,
  `amount` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `create_time` datetime(0) NULL DEFAULT NULL,
  PRIMARY KEY (`order_log_id`) USING BTREE,
  INDEX `order_id`(`order_id`) USING BTREE,
  CONSTRAINT `order_log_ibfk_1` FOREIGN KEY (`order_id`) REFERENCES `order` (`order_id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `user_id` int(11) NOT NULL AUTO_INCREMENT,
  `user_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `email` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `phone` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `create_time` datetime(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0),
  PRIMARY KEY (`user_id`) USING BTREE,
  UNIQUE INDEX `username`(`user_name`) USING BTREE,
  UNIQUE INDEX `email`(`email`) USING BTREE,
  UNIQUE INDEX `phone`(`phone`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

DROP TABLE IF EXISTS `user_info`;
CREATE TABLE `user_info`  (
  `user_info_id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `age` int(3) NULL DEFAULT NULL,
  `sex` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '1' COMMENT '1:男 0:女',
  `id_number` varchar(18) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `true_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`user_info_id`) USING BTREE,
  INDEX `user_id`(`user_id`) USING BTREE,
  CONSTRAINT `user_info_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

DROP TABLE IF EXISTS `user_wallet`;
CREATE TABLE `user_wallet`  (
  `user_wallet_id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `balance` decimal(10, 2) NOT NULL,
  `create_time` datetime(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0),
  PRIMARY KEY (`user_wallet_id`) USING BTREE,
  INDEX `user_id`(`user_id`) USING BTREE,
  CONSTRAINT `user_wallet_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

DROP TABLE IF EXISTS `user_wallet_log`;
CREATE TABLE `user_wallet_log`  (
  `user_wallet_log_id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `payamount` decimal(10, 2) NOT NULL,
  `user_wallet_id` int(11) NOT NULL,
  `paymode` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `create_time` datetime(0) NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP(0),
  PRIMARY KEY (`user_wallet_log_id`) USING BTREE,
  INDEX `user_id`(`user_id`) USING BTREE,
  INDEX `user_wallet_id`(`user_wallet_id`) USING BTREE,
  CONSTRAINT `user_wallet_log_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
  CONSTRAINT `user_wallet_log_ibfk_2` FOREIGN KEY (`user_wallet_id`) REFERENCES `user_wallet` (`user_wallet_id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
INSERT INTO `user` VALUES (1, 'Alice', 'password123', 'alice@example.com', '1234567890', '2024-06-27 14:11:28');
INSERT INTO `user` VALUES (2, 'Bob', 'bobpass', 'bob@example.com', '0987654321', '2024-06-27 14:11:28');

INSERT INTO `user_info` VALUES (1, 1, 25, '1', '123456789012345678', 'Alice Smith');
INSERT INTO `user_info` VALUES (2, 2, 30, '0', '098765432109876543', 'Bob Johnson');

INSERT INTO `user_wallet` VALUES (1, 1, 1000.00, '2024-06-27 14:11:28');
INSERT INTO `user_wallet` VALUES (2, 2, 500.00, '2024-06-27 14:11:28');

INSERT INTO `user_wallet_log` VALUES (1, 1, 8999.00, 1, '支付宝', '2024-06-27 14:11:28');
INSERT INTO `user_wallet_log` VALUES (2, 2, 39.90, 2, '微信支付', '2024-06-27 14:11:28');

INSERT INTO `goods_class` VALUES (1, '电子产品', '2024-06-27 14:15:22', '0');
INSERT INTO `goods_class` VALUES (2, '生活用品', '2024-06-27 14:15:23', '1');
INSERT INTO `goods_class` VALUES (3, '书籍', '2024-06-27 14:15:25', '1');

INSERT INTO `goods` VALUES (1, '2024-06-27 14:11:28', 1, 'iPhone 13');
INSERT INTO `goods` VALUES (2, '2024-06-27 14:11:28', 2, '洗发水');
INSERT INTO `goods` VALUES (3, '2024-06-27 14:11:28', 3, '编程入门');

INSERT INTO `goods_info` VALUES (1, 1, 8999.00, '2024-06-27 14:11:28', 1, 100);
INSERT INTO `goods_info` VALUES (2, 2, 39.90, '2024-06-27 14:11:28', 2, 200);
INSERT INTO `goods_info` VALUES (3, 3, 59.90, '2024-06-27 14:11:28', 3, 50);

INSERT INTO `order` VALUES (1, 1, '2024-06-27 14:11:28', 1, '待支付', '待运送');
INSERT INTO `order` VALUES (2, 1, '2024-06-27 14:11:28', 2, '已支付', '运送中');
INSERT INTO `order` VALUES (3, 2, '2024-06-27 14:11:28', 3, '已支付', '已送达');

INSERT INTO `order_log` VALUES (1, 1, '支付宝', 1, '8999.00', '2024-06-27 14:11:28');
INSERT INTO `order_log` VALUES (2, 2, '微信支付', 1, '39.90', '2024-06-27 14:11:28');
INSERT INTO `order_log` VALUES (3, 3, '银行卡', 1, '59.90', '2024-06-27 14:11:28');

-- 查询相关insert

-- goods表相关
INSERT INTO `goods` VALUES (4, now(), 1, 'OPPO Reno7 Pro 5G');
INSERT INTO `goods` VALUES (5, now(), 1, 'OPPO Reno7');

-- goods_info相关
INSERT INTO `goods_info` VALUES ('4', '4', '4800.00', now(), '1', '50');
INSERT INTO `goods_info` VALUES ('5', '5', '4500.00', now(), '1', '50');

3.相关查询

-- 查询'已支付'订单
select * from `order` where `order`.paystatus='已支付'; 

-- 查询用户完全信息
select `user`.*,
`user_info`.age,`user_info`.sex,`user_info`.id_number,`user_info`.true_name 
from `user` join `user_info` 
on `user`.user_id=`user_info`.user_id;

-- 模糊查询相似商品(走索引)
select * from `goods` where `goods`.goods_name like 'OPPO%';

4.触发器建立

-- 加入用户钱包
delimiter $$
create trigger insert_user_wallet
after insert on `user`
for each row
begin
	insert into `user_wallet` (user_id,balance,create_time) 
	values (new.user_id,0.00,now());
end;
$$
delimiter ;

测试用相关插入语句

INSERT INTO `user` VALUES (3, 'season', '20050918season', 'season@secondworld.com', '2002020213', now());
-- 删除所有用户信息(慎用,慎用,慎用)
create trigger delete_user_all
before delete on `user`
for each row
begin
	delete from `user_info` where user_id=old.user_id;
	delete from `user_wallet` where user_id=old.user_id;
	delete from `user_wallet_log` where user_id=old.user_id;
	delete from `order` where user_id=old.user_id;
end;

5.订单建立(存储过程)


create procedure create_order(
in in_user_id int,
in in_goods_id int,
in in_count_id int
)
BEGIN
-- 设局部变量+
	declare in_goods_number int;
	declare in_goods_price decimal(10,2);
	declare final_price decimal(10,2);
	declare in_user_balance decimal(10,2);
	declare in_user_wallet_id int;
	declare in_order_id int;
-- 检测是否有库存
	select goods_number into in_goods_number from goods_info where goods_id=in_goods_id;
	if in_count_id>in_goods_number then
		signal sqlstate '45000' set message_text='商品库存不足。';
	end if;
-- 计算商品总价
	select goods_price into in_goods_price from goods_info where goods_id=in_goods_id;
	set final_price=in_goods_price*in_count_id;
-- 检测账户余额
	select balance into in_user_balance from user_wallet where user_id=in_user_id;
	if in_user_balance<final_price then
		signal sqlstate '45000' set message_text='账户余额不足。';
	end if;
-- 进行相关表的修改
	start transaction;
	insert into `order` (user_id,create_time,goods_id,paystatus,goodstatus) values (in_user_id,now(),in_goods_id,'待支付','未运送');  -- order相关
	set in_order_id=LAST_INSERT_ID();
	insert into `order_log` (order_id,paymode,number,amount,create_time) values (in_order_id,'none',in_goods_number,final_price,now());  -- order_log相关
	update goods_info set goods_number=goods_number-in_count_id where goods_id=in_goods_id;  -- goods_info相关
	update user_wallet set balance=balance-final_price where user_id=in_user_id;  -- user_wallet相关
	select user_wallet_id into in_user_wallet_id from user_wallet where user_id=in_user_id;
	insert into user_wallet_log (user_id,user_wallet_id,payamount,paymode,create_time)values(in_user_id,in_user_wallet_id,final_price,'none',now());  -- user_wallet_log相关
	commit;
END;
-- 使用此语句调用[记得替换'()'中的参数]
call create_order('用户_id','商品_id','购买数量');

——想法很多,思路很好,但人类的力量是有极限的。(无名著)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/750546.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机的错误计算(十四)

摘要 解读 GPU和CPU计算上的精度差异&#xff1a;GPU 的 3个输出的相对误差分别高达 62.5%、50%、62.5%。 例1. 计算下列两个矩阵的乘积&#xff1a; 显然&#xff0c;其结果为第一列&#xff1a; 这个结果是准确的。 例2. 已知上面 3 个矩阵是由下面代码产生或输出&…

HTML【重点标签】

一、列表标签 1.无序列表 父级别&#xff1a; 无序列表的标题 ----表示无序列表的整体&#xff0c;用于包裹li标签 子级别&#xff1a; 无序列表一行的内容 ----表示无序列表的每一项&#xff0c;用于包含一行的内容 语义&#xff1a;构建没有顺序的列表 特点&#xff1a;列…

C# YoloV8 模型效果验证工具(OnnxRuntime+ByteTrack推理)

C# YoloV8 模型效果验证工具(OnnxRuntimeByteTrack推理) 目录 效果 项目 代码 下载 效果 模型效果验证工具 项目 代码 using ByteTrack; using OpenCvSharp; using System; using System.Collections.Generic; using System.Diagnostics; using System.Drawing; using Sys…

ACC:Automatic ECN Tuning for High-Speed Datacenter Networks 相关知识点介绍(一)

目录 ACC&#xff08;Adaptive Congestion Control&#xff09; 总结 结合 ACC 和 ECN ECN ECN&#xff08;Explicit Congestion Notification&#xff09; 静态 ECN 动态 ECN 对比 总结 FCT——flow completion time 具体解释 小鼠流和大象流 小鼠流&#xff08;…

2024百度之星第二场-小度的01串

补题链接&#xff1a; 码蹄集 一道经典线段树板子题。 区间修改01置换&#xff0c;区间查询子串权值。 唯一区别&#xff0c;权值要求的是相邻字符都不同所需修改的最小字符个数。 我们在线段树节点上分别维护当前连续区间&#xff1a; 奇数位是0的个数&#xff08;j0&…

ROS1通信机制——以topic为例

ROS1 的通信机制 ROS1是一个分布式框架&#xff0c;为用户提供多节点&#xff08;进程&#xff09;之间的通信服务。 ROS1通信时有一个中心节点&#xff08;ROS Master&#xff09;&#xff0c;进行信息匹配等工作。 ROS1 的话题通信机制 通信链接&#xff1a;XML/RPC 信息传…

YOLOV8图像分割预测后输出mask图

训练一个yolov8后&#xff0c;用官方的预测脚本一般是&#xff1a; results model.predict(img_path, saveTrue, save_diroutput_folder) 运行此代码会直接在run里面生成一个文件夹&#xff0c;保存预测图像。如果要获取分割后的mask点&#xff0c;或mask的轮廓点&#xff0…

WIFI各版本的带宽

带宽的定义&#xff1a; 带宽在网络领域通常指信道带宽&#xff0c;即信号在频谱中占用的频宽&#xff0c;单位是MHz&#xff08;兆赫&#xff09;。在无线通信中&#xff0c;带宽越宽&#xff0c;能够传输的数据量越大&#xff0c;因此信道带宽直接影响着数据传输速率。WiFi标…

SKYDROID-C12—— 让美景近在眼前

C12是一款小型高清双光吊舱&#xff0c;使用新一代影像芯片&#xff0c;搭配高清无畸变摄像头&#xff0c;有效像素达到500万&#xff0c;拥有强悍的2K视频录制和拍照能力&#xff0c;支持数字变倍&#xff0c;随时随地捕捉清晰的图像&#xff0c;让远处美景近在眼前。

Clickhouse 的性能优化实践总结

文章目录 前言性能优化的原则数据结构优化内存优化磁盘优化网络优化CPU优化查询优化数据迁移优化 前言 ClickHouse是一个性能很强的OLAP数据库&#xff0c;性能强是建立在专业运维之上的&#xff0c;需要专业运维人员依据不同的业务需求对ClickHouse进行有针对性的优化。同一批…

【Android11】开机启动日志捕捉服务

一、前言 制作这个功能的原因是客户想要自动的记录日志中的报错和警告到设备的内存卡里面。虽然开发者模式中有一个“bug report” 会在/data/user_de/0/com.android.shell/files/bugreports/目录下生成一个zip包记录了日志。但是客户觉得这个日志很难获取到他们需要的信息&am…

Transformer教程之神经网络和深度学习基础

在当今的人工智能领域&#xff0c;Transformer已经成为了一个热门的词汇。它不仅在自然语言处理&#xff08;NLP&#xff09;领域取得了巨大的成功&#xff0c;还在计算机视觉等其他领域展现出了强大的潜力。然而&#xff0c;要真正理解Transformer&#xff0c;我们首先需要扎实…

希喂生骨肉冻干值得入手吗?拯救瘦弱、增强抵抗力最强主食测评!

希喂生骨肉冻干值得入手吗&#xff1f;很多小姐妹觉着自家猫咪太瘦了、体质不咋好&#xff0c;换季还敏感、掉毛、不吃东西&#xff0c;听说生骨肉冻干好吸收、营养好&#xff0c;可以改善体质、拯救瘦弱、增强抵抗力&#xff0c;为了图省事&#xff0c;开始盲入生骨肉冻干&…

Linux—进程与计划管理

目录 一、程序 二、进程 1、什么是进程 2、进程的特点 3、进程、线程、携程 3.1、进程 3.2、线程 3.3、携程 三、查看进程信息 1、ps -aux 2、ps -elf 3、top ​3.2、输出内容详解 3.2.1、输出第一部分解释 3.2.2、输出第二部分解释 4、pgrep 5、pstree 四、进…

The ‘textprediction‘ attribute will be removed in the future

页面标签不展示&#xff0c;明明是复制的&#xff0c;反复检查&#xff0c;眼睛都看瞎了&#xff0c;也没找到&#xff0c;最后还是看后台报错&#xff0c;The textprediction attribute will be removed in the future说什么要被废弃&#xff0c;但是好好的标签怎么会无缘无辜…

C语言 | Leetcode C语言题解之第191题位1的个数

题目&#xff1a; 题解&#xff1a; int hammingWeight(uint32_t n) {int ret 0;while (n) {n & n - 1;ret;}return ret; }

2024最新特种设备(锅炉作业)题库分享。

1.锅炉蒸发量大小是由(  )决定的。 A.压力的高低 B.受压元件多少 C.受热面积大小 答案:C 2.哪项不是自然循环的故障?&#xff08; &#xff09; A.停滞 B.倒流 C.下降管带汽 D.上升管带汽 答案:D 3.水冷壁被现代大型锅炉广泛采用的是(  )。 A.光管水冷壁 B.膜…

龙迅LT8711V TYPE-CDP 1.2转VGA芯片,内置MCU,成熟批量产品

龙迅LT8711V描述&#xff1a; LT8711V是一种高性能的Type-C/DP1.2到VGA转换器&#xff0c;设计用于连接USB Type-C源或DP1.2源到VGA接收器。LT8711V集成了一个DP1.2兼容的接收器&#xff0c;和一个高速三通道视频DAC。此外&#xff0c;还包括两个CC控制器&#xff0c;用于CC通…

SherlockChain:基于高级AI实现的智能合约安全分析框架

关于SherlockChain SherlockChain是一款功能强大的智能合约安全分析框架&#xff0c;该工具整合了Slither工具&#xff08;一款针对智能合约的安全工具&#xff09;的功能&#xff0c;并引入了高级人工智能模型&#xff0c;旨在辅助广大研究人员针对Solidity、Vyper和Plutus智…

个人支付系统实现

基础首页&#xff1a; 订单&#xff1a; 智能售卡系统 基于webmanworkerman开发 禁用函数检查 使用这个脚本检查是否有禁用函数。命令行运行curl -Ss https://www.workerman.net/check | php 如果有提示Function 函数名 may be disabled. Please check disable_functions in …