parent
e0b23044a4
commit
779bbb5e7f
@ -1,181 +0,0 @@
|
||||
DROP TABLE IF EXISTS `user`|
|
||||
CREATE TABLE `user` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(50) NOT NULL DEFAULT '',
|
||||
`password` varchar(50) NOT NULL DEFAULT '',
|
||||
`nickname` varchar(50) NOT NULL DEFAULT '',
|
||||
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updated_at` timestamp NULL DEFAULT NULL,
|
||||
`deleted_at` timestamp NULL DEFAULT NULL,
|
||||
`avator` varchar(100) NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `idx_name` (`name`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8|
|
||||
TRUNCATE TABLE `user`|
|
||||
INSERT INTO `user` (`id`, `name`, `password`, `nickname`, `created_at`, `updated_at`, `deleted_at`, `avator`) VALUE
|
||||
(1, 'kefu2', '202cb962ac59075b964b07152d234b70', '智能客服系统', '2020-06-27 19:32:41', '2020-07-04 09:32:20', NULL, '/static/images/4.jpg')|
|
||||
|
||||
DROP TABLE IF EXISTS `visitor`|
|
||||
CREATE TABLE `visitor` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(50) NOT NULL DEFAULT '',
|
||||
`avator` varchar(500) NOT NULL DEFAULT '',
|
||||
`source_ip` varchar(50) NOT NULL DEFAULT '',
|
||||
`to_id` varchar(50) NOT NULL DEFAULT '',
|
||||
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updated_at` timestamp NULL DEFAULT NULL,
|
||||
`deleted_at` timestamp NULL DEFAULT NULL,
|
||||
`visitor_id` varchar(100) NOT NULL DEFAULT '',
|
||||
`status` tinyint(4) NOT NULL DEFAULT '0',
|
||||
`refer` varchar(500) NOT NULL DEFAULT '',
|
||||
`city` varchar(100) NOT NULL DEFAULT '',
|
||||
`client_ip` varchar(100) NOT NULL DEFAULT '',
|
||||
`extra` varchar(2048) NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `visitor_id` (`visitor_id`),
|
||||
KEY `to_id` (`to_id`),
|
||||
KEY `idx_update` (`updated_at`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8|
|
||||
|
||||
DROP TABLE IF EXISTS `message`|
|
||||
CREATE TABLE `message` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`kefu_id` varchar(100) NOT NULL DEFAULT '',
|
||||
`visitor_id` varchar(100) NOT NULL DEFAULT '',
|
||||
`content` varchar(2048) NOT NULL DEFAULT '',
|
||||
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`updated_at` timestamp NULL DEFAULT NULL,
|
||||
`deleted_at` timestamp NULL DEFAULT NULL,
|
||||
`mes_type` enum('kefu','visitor') NOT NULL DEFAULT 'visitor',
|
||||
`status` enum('read','unread') NOT NULL DEFAULT 'unread',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `kefu_id` (`kefu_id`),
|
||||
KEY `visitor_id` (`visitor_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4|
|
||||
|
||||
DROP TABLE IF EXISTS `user_role`|
|
||||
CREATE TABLE `user_role` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`user_id` int(11) NOT NULL DEFAULT '0',
|
||||
`role_id` int(11) NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8|
|
||||
INSERT INTO `user_role` (`id`, `user_id`, `role_id`) VALUE
|
||||
(1, 1, 1)|
|
||||
|
||||
DROP TABLE IF EXISTS `role`|
|
||||
CREATE TABLE `role` (
|
||||
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`name` varchar(100) NOT NULL DEFAULT '',
|
||||
`method` varchar(100) NOT NULL DEFAULT '',
|
||||
`path` varchar(2048) NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8|
|
||||
INSERT INTO `role` (`id`, `name`, `method`, `path`) VALUES
|
||||
(1, '普通客服', '*', '*')|
|
||||
|
||||
DROP TABLE IF EXISTS `welcome`|
|
||||
CREATE TABLE `welcome` (
|
||||
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`user_id` varchar(100) NOT NULL DEFAULT '',
|
||||
`keyword` varchar(100) NOT NULL DEFAULT '',
|
||||
`content` varchar(500) NOT NULL DEFAULT '',
|
||||
`is_default` tinyint(3) unsigned NOT NULL DEFAULT '0',
|
||||
`ctime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `user_id` (`user_id`),
|
||||
KEY `keyword` (`keyword`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8|
|
||||
INSERT INTO `welcome` (`id`, `user_id`, `content`, `is_default`, `ctime`, `keyword`) VALUES
|
||||
(NULL, 'kefu2', '我暂时离线,留言已转发到我的邮箱,稍后回复~', 1, '2020-08-24 02:57:49','offline')|
|
||||
INSERT INTO `welcome` (`id`, `user_id`, `content`, `is_default`, `ctime`, `keyword`) VALUES
|
||||
(NULL, 'kefu2', '请问有什么可以帮您?', 0, '2020-08-24 02:57:49','welcome')|
|
||||
|
||||
DROP TABLE IF EXISTS `ipblack`|
|
||||
CREATE TABLE `ipblack` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`ip` varchar(100) NOT NULL DEFAULT '',
|
||||
`create_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`kefu_id` varchar(100) NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `ip` (`ip`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8|
|
||||
|
||||
DROP TABLE IF EXISTS `config`|
|
||||
CREATE TABLE `config` (
|
||||
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`conf_name` varchar(255) NOT NULL DEFAULT '',
|
||||
`conf_key` varchar(255) NOT NULL DEFAULT '',
|
||||
`conf_value` varchar(255) NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `conf_key` (`conf_key`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8|
|
||||
INSERT INTO `config` (`id`, `conf_name`, `conf_key`, `conf_value`) VALUES (NULL, '发送通知邮件(SMTP地址)', 'NoticeEmailSmtp', '')|
|
||||
INSERT INTO `config` (`id`, `conf_name`, `conf_key`, `conf_value`) VALUES (NULL, '发送通知邮件(邮箱)', 'NoticeEmailAddress', '')|
|
||||
INSERT INTO `config` (`id`, `conf_name`, `conf_key`, `conf_value`) VALUES (NULL, '发送通知邮件(密码)', 'NoticeEmailPassword', '')|
|
||||
INSERT INTO `config` (`id`, `conf_name`, `conf_key`, `conf_value`) VALUES (NULL, '发送通知邮件(密码)', 'NoticeEmailPassword', '')|
|
||||
DROP TABLE IF EXISTS `about`|
|
||||
CREATE TABLE `about` (
|
||||
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
`title_cn` varchar(255) NOT NULL DEFAULT '',
|
||||
`title_en` varchar(255) NOT NULL DEFAULT '',
|
||||
`keywords_cn` varchar(255) NOT NULL DEFAULT '',
|
||||
`keywords_en` varchar(255) NOT NULL DEFAULT '',
|
||||
`desc_cn` varchar(1024) NOT NULL DEFAULT '',
|
||||
`desc_en` varchar(1024) NOT NULL DEFAULT '',
|
||||
`css_js` text NOT NULL,
|
||||
`html_cn` text NOT NULL,
|
||||
`html_en` text NOT NULL,
|
||||
`page` varchar(50) NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `page` (`page`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8|
|
||||
DROP TABLE IF EXISTS `reply_group`|
|
||||
CREATE TABLE `reply_group` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`group_name` varchar(50) NOT NULL DEFAULT '',
|
||||
`user_id` varchar(50) NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `user_id` (`user_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8|
|
||||
INSERT INTO `reply_group` (`id`, `group_name`, `user_id`) VALUES (NULL, '常见问题', 'kefu2')|
|
||||
DROP TABLE IF EXISTS `reply_item`|
|
||||
CREATE TABLE `reply_item` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`content` varchar(1024) NOT NULL DEFAULT '',
|
||||
`group_id` int(11) NOT NULL DEFAULT '0',
|
||||
`user_id` varchar(50) NOT NULL DEFAULT '',
|
||||
`item_name` varchar(50) NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `user_id` (`user_id`),
|
||||
KEY `group_id` (`group_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8|
|
||||
DROP TABLE IF EXISTS `land_page`|
|
||||
CREATE TABLE `land_page` (
|
||||
`id` int(11) NOT NULL,
|
||||
`title` varchar(125) NOT NULL DEFAULT '',
|
||||
`keyword` varchar(255) NOT NULL DEFAULT '',
|
||||
`content` text NOT NULL,
|
||||
`language` varchar(50) NOT NULL DEFAULT '',
|
||||
`page_id` varchar(50) NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci|
|
||||
DROP TABLE IF EXISTS `language`|
|
||||
CREATE TABLE `language` (
|
||||
`id` int(11) NOT NULL,
|
||||
`country` varchar(100) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
|
||||
`short_key` varchar(100) COLLATE utf8mb4_general_ci NOT NULL DEFAULT ''
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci|
|
||||
INSERT INTO `language` (`id`, `country`, `short_key`) VALUES (1, '中文简体', 'zh-cn')|
|
||||
INSERT INTO `language` (`id`, `country`, `short_key`) VALUES (2, '正體中文', 'zh-tw')|
|
||||
INSERT INTO `language` (`id`, `country`, `short_key`) VALUES (3, 'English', 'en_us')|
|
||||
INSERT INTO `language` (`id`, `country`, `short_key`) VALUES (4, '日本語', 'ja_jp')|
|
||||
DROP TABLE IF EXISTS `user_client`|
|
||||
CREATE TABLE `user_client` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`kefu` varchar(100) NOT NULL DEFAULT '',
|
||||
`client_id` varchar(100) NOT NULL DEFAULT '',
|
||||
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE KEY `idx_user` (`kefu`,`client_id`),
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8|
|
@ -1,137 +0,0 @@
|
||||
# <b>GOFLY</b> [V1KF] GOFLY LIVE CHAT FOR CUSTOMER SUPPORT SERVICE
|
||||
<a href="readme.md">中文</a> |
|
||||
<a href="readme_en.md">English</a> |
|
||||
<a href="https://gofly.v1kf.com">The official website</a>
|
||||
|
||||
### Please note that this project is for personal learning and testing only, and is prohibited for all online commercial use and illegal use!
|
||||
|
||||
### It appears that you are providing information about purchasing a paid version of the software and receiving an installation package and authorization.
|
||||
|
||||
## The main technology stack
|
||||
gin + jwt-go + websocket + go.uuid + gorm + cobra + VueJS + ElementUI + MySQL
|
||||
|
||||
### Preview
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
### To install and use:
|
||||
|
||||
|
||||
#### 1. Install and run MySQL >=5.5, and create the gofly database.
|
||||
|
||||
create database gofly charset utf8;
|
||||
|
||||
edit config/mysql.json
|
||||
```php
|
||||
{
|
||||
"Server":"127.0.0.1",
|
||||
"Port":"3306",
|
||||
"Database":"gofly",
|
||||
"Username":"go-fly",
|
||||
"Password":"go-fly"
|
||||
}
|
||||
```
|
||||
|
||||
#### 2. Run the source code:
|
||||
|
||||
1. Go module:
|
||||
|
||||
go env -w GO111MODULE=on
|
||||
|
||||
go env -w GOPROXY=https://goproxy.cn,direct
|
||||
|
||||
git clone https://github.com/taoshihan1991/go-fly.git
|
||||
|
||||
go run go-fly.go install
|
||||
|
||||
go run go-fly.go server
|
||||
|
||||
3. Source code packaging: go build go-fly.go, which will generate the go-fly executable file.
|
||||
|
||||
4. Import the database (will delete the table and clear the data): ./go-fly install
|
||||
|
||||
5. Binary file execution:
|
||||
|
||||
linux: ./go-fly server [optional -p 8082 -d]
|
||||
|
||||
windows: go-fly.exe server [optional -p 8082 -d]
|
||||
|
||||
6. Close the program:
|
||||
./go-fly stop
|
||||
|
||||
For Linux, use the ps and kill commands to kill the process:
|
||||
|
||||
ps -ef|grep go-fly
|
||||
|
||||
kill process parent process id; kill process child process id
|
||||
|
||||
or killall go-fly
|
||||
|
||||
#### Usage
|
||||
The server installation is complete and the service is running, and the client can be accessed through the browser.
|
||||
|
||||
The default port is 8081. If you use the -p parameter to specify the port, you can access it through the browser http://127.0.0.1:port.
|
||||
|
||||
The default user name and password are kefu2 and 123
|
||||
|
||||
|
||||
|
||||
|
||||
### Nginx
|
||||
|
||||
```php
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
ssl on;
|
||||
ssl_certificate conf.d/cert/4263285_gofly.sopans.com.pem;
|
||||
ssl_certificate_key conf.d/cert/4263285_gofly.sopans.com.key;
|
||||
ssl_session_timeout 5m;
|
||||
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
|
||||
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
|
||||
ssl_prefer_server_ciphers on;
|
||||
#listen 80;
|
||||
server_name gofly.sopans.com;
|
||||
access_log /var/log/nginx/gofly.sopans.com.access.log main;
|
||||
location /static {
|
||||
root /var/www/html/go-fly;//自己的部署路径,静态文件直接nginx响应
|
||||
}
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:8081;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
proxy_set_header Origin "";
|
||||
}
|
||||
}
|
||||
server{
|
||||
listen 80;
|
||||
server_name gofly.sopans.com;
|
||||
access_log /var/log/nginx/gofly.sopans.com.access.log main;
|
||||
location /static {
|
||||
root /var/www/html/go-fly;//自己的部署路径,静态文件直接nginx响应
|
||||
}
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:8081;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "upgrade";
|
||||
proxy_set_header Origin "";
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### If you encounter a pop-up window requiring authentication after logging into the backend, please go to the official website to register an account and bind your phone. Entering your bound phone number + your own password will allow you to pass the authentication. If you do not have a Chinese phone number, please contact me on the official website to obtain a test phone number and password.
|
||||
|
||||
### Copyright
|
||||
|
||||
This project is a complete code with full functionality, but it is still only for personal demonstration and testing and does not include online use.
|
||||
|
||||
All commercial activities are prohibited. When using this software, please comply with local laws and regulations. Any illegal use is at your own risk.
|
Loading…
Reference in new issue