# Luckysheet Server
English| [ç®ä½ä¸æ](./README-zh.md)
## Introduction
ð»[Luckysheet](https://github.com/mengshukeji/Luckysheet/) official Java version backend.
## Demo
- [Cooperative editing demo](http://luckysheet.lashuju.com/demo/)(Note: Please do not operate frequently to prevent the server from crashing)
## Deploy
- [LuckysheetServer Starter](https://github.com/mengshukeji/LuckysheetServerStarter)
## Requirements
jdk >= 1.8
postgre >= 10 (Support jsonb version)
- [Docker deploys postgre](https://www.cnblogs.com/xuchen0117/p/13863509.html)
- [Jsonb field processing in postgre](https://www.cnblogs.com/xuchen0117/p/13890710.html)
redis >= 3
- [Docker deploys Redis](https://www.cnblogs.com/xuchen0117/p/12183399.html)
- [Docker deploys Redis cluster](https://www.cnblogs.com/xuchen0117/p/11678931.html)
nginx >= 1.12
- [Docker deploys Nginx](https://www.cnblogs.com/xuchen0117/p/11934202.html)
maven >= 3.6
IntelliJ IDEA >= 12 (not necessary)
## Database initialization
Create database
```
CREATE DATABASE luckysheetdb
```
Create sequence
```
DROP SEQUENCE IF EXISTS "public"."luckysheet_id_seq";
CREATE SEQUENCE "public"."luckysheet_id_seq"
INCREMENT 1
MINVALUE 1
MAXVALUE 9999999999999
START 1
CACHE 10;
```
Create table
```
DROP TABLE IF EXISTS "public"."luckysheet";
CREATE TABLE "luckysheet" (
"id" int8 NOT NULL,
"block_id" varchar(200) COLLATE "pg_catalog"."default" NOT NULL,
"row_col" varchar(50),
"index" varchar(200) COLLATE "pg_catalog"."default" NOT NULL,
"list_id" varchar(200) COLLATE "pg_catalog"."default" NOT NULL,
"status" int2 NOT NULL,
"json_data" jsonb,
"order" int2,
"is_delete" int2
);
CREATE INDEX "block_id" ON "public"."luckysheet" USING btree (
"block_id" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST,
"list_id" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
);
CREATE INDEX "index" ON "public"."luckysheet" USING btree (
"index" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST,
"list_id" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
);
CREATE INDEX "is_delete" ON "public"."luckysheet" USING btree (
"is_delete" "pg_catalog"."int2_ops" ASC NULLS LAST
);
CREATE INDEX "list_id" ON "public"."luckysheet" USING btree (
"list_id" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
);
CREATE INDEX "order" ON "public"."luckysheet" USING btree (
"list_id" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST,
"order" "pg_catalog"."int2_ops" ASC NULLS LAST
);
CREATE INDEX "status" ON "public"."luckysheet" USING btree (
"list_id" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST,
"status" "pg_catalog"."int2_ops" ASC NULLS LAST
);
ALTER TABLE "public"."luckysheet" ADD CONSTRAINT "luckysheet_pkey" PRIMARY KEY ("id");
```
Insert initialization statement
```
INSERT INTO "public"."luckysheet" VALUES (nextval('luckysheet_id_seq'), 'fblock', '', '1', '1079500#-8803#7c45f52b7d01486d88bc53cb17dcd2c3', 1, '{"row":84,"name":"Sheet1","chart":[],"color":"","index":"1","order":0,"column":60,"config":{},"status":0,"celldata":[],"ch_width":4748,"rowsplit":[],"rh_height":1790,"scrollTop":0,"scrollLeft":0,"visibledatarow":[],"visibledatacolumn":[],"jfgird_select_save":[],"jfgrid_selection_range":{}}', 0, 0);
INSERT INTO "public"."luckysheet" VALUES (nextval('luckysheet_id_seq'), 'fblock', '', '2', '1079500#-8803#7c45f52b7d01486d88bc53cb17dcd2c3', 0, '{"row":84,"name":"Sheet2","chart":[],"color":"","index":"2","order":1,"column":60,"config":{},"status":0,"celldata":[],"ch_width":4748,"rowsplit":[],"rh_height":1790,"scrollTop":0,"scrollLeft":0,"visibledatarow":[],"visibledatacolumn":[],"jfgird_select_save":[],"jfgrid_selection_range":{}}', 1, 0);
INSERT INTO "public"."luckysheet" VALUES (nextval('luckysheet_id_seq'), 'fblock', '', '3', '1079500#-8803#7c45f52b7d01486d88bc53cb17dcd2c3', 0, '{"row":84,"name":"Sheet3","chart":[],"color":"","index":"3","order":2,"column":60,"config":{},"status":0,"celldata":[],"ch_width":4748,"rowsplit":[],"rh_height":1790,"scrollTop":0,"scrollLeft":0,"visibledatarow":[],"visibledatacolumn":[],"jfgird_select_save":[],"jfgrid_selection_range":{}}', 2, 0);
```
## nginx configuration
http block configuration
```
#websocket configuration
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream ws_dataluckysheet {
server [Project ip]: [port];
}
```
server block configuration
```
#websocket configuration
location /luckysheet/websocket/luckysheet {
proxy_pass http://ws_dataluckysheet/luckysheet/websocket/luckysheet;
proxy_set_header Host $host;
proxy_set_header X-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#websocket
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
#Dynamic resource configuration
location /luckysheet/ {
proxy_pass http://ws_dataluckysheet;
}
#Static resource configuration
location /luckysheet/demo/ {
root /usr/share/nginx/html;
index index.html index.htm;
}
```
### Access test
- Access the static homepage through `[project ip]:[port]`
- Access the collaborative editing homepage through `[project ip]:[port]?share`
## Project usage
application.yml Project configuration
```
server:
port: [Project port]
servlet:
context-path: /[Project path]
redis.channel: [redis channel name]
row_size: [The number of rows in the table, default 500]
col_size: [Number of columns in the table, default 500]
pgSetUp: [Whether to enable pgsql as storage data (0 for yes, 1 for no), currently can only be set to 0]
```
application-dev.yml Database configuration
```
spring:
redis:
host: [ip address]
port: [port]
password: [password]
db:
postgre:
druid:
url: jdbc:postgresql://[ip address]: [port]/luckysheetdb?useSSL=false
driverClassName: org.postgresql.Driver
username: [username]
password: [password]
```
logback-spring.xml Log configuration
```
<property name="log.path" value="[Log output directory]"/>
```
## project instruction
### Luckysheet module main class description
com.xc.luckysheet.WebApplication Project startup
com.xc.luckysheet.controller
```
JfGridFileController Table data loading class
TestController postgre redis Test class
```
com.xc.luckysheet.entity
```
SheetOperationEnum Table operation type
JfGridConfigModel Table block object
LuckySheetGridModel Tabular database objects
PgGridDataModel Table database object
```
com.xc.luckysheet.postgre
```
PostgresGridFileDao postgre database operation
PostgresGridFileGetService Record operation
PostgresJfGridUpdateService Update processing
```
com.xc.luckysheet.redisserver
```
RedisLock redis lock
RedisMessageListener Pipeline monitoring class
RedisMessagePublish Pipeline release class
```
com.xc.luckysheet.service
```
ConfigerService Configuration class
ScheduleService Initialize the timing database
```
com.xc.luckysheet.utils
```
GzipHandle Information compression
Pako_GzipUtils WebSocket information compression
```
com.xc.luckysheet.websocket
```
IpAndPortUtil Get the IP and port of the current service
MyWebSocketHandler Socket processor (including methods for sending information, receiving information, and information errors.)
MyWebSocketInterceptor Socket connection (handshake) and disconnection
WebSocketConfig Register WebSocket, Set the address of WebSocket
WSUserModel WebSocket object
```
### Main class description of common module
```
com.xc.common.config.datasource.DataSourceConfig Data source configuration class
com.xc.common.config.redis.RedisConfig redis configuration class
```
## Links
- [Luckysheet Documentation](https://mengshukeji.github.io/LuckysheetDocs/)
- [How Luckysheet saves the data in the table to the database](https://www.cnblogs.com/DuShuSir/p/13857874.html)
## Authors and acknowledgment
### Team
- [@iamxuchen800
没有合适的资源?快使用搜索试试~ 我知道了~
LuckysheetServer:Luckysheet Java后端
共117个文件
java:81个
ds_store:12个
xml:7个
3星 · 超过75%的资源 需积分: 50 29 下载量 158 浏览量
2021-03-20
06:30:08
上传
评论
收藏 167KB ZIP 举报
温馨提示
幸运表服务器 English | 介绍 :laptop: 官方Java版本后端。 演示版 (注意:请不要经常操作以防止服务器崩溃) 部署 要求 jdk> = 1.8 postgre> = 10(支持jsonb版本) Redis> = 3 Nginx的> = 1.12 专家> = 3.6 IntelliJ IDEA> = 12(不必要) 数据库初始化 建立资料库 CREATE DATABASE luckysheetdb 创建序列 DROP SEQUENCE IF EXISTS "public"."luckysheet_id_seq"; CREATE SEQUENCE "public"."luckysheet_id_seq" INCREMENT 1 MINVALUE 1 MAXVALUE 9999999999999 START 1 CACHE 10; 建立表格 DROP TABLE IF EXIST
资源详情
资源评论
资源推荐
收起资源包目录
LuckysheetServer:Luckysheet Java后端 (117个子文件)
.DS_Store 8KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
.gitignore 350B
.gitignore 303B
JfGridUpdateService.java 88KB
RecordDataUpdataHandle.java 24KB
XlsSheetUtil.java 24KB
RecordDataUpdataHandle.java 20KB
MyWebSocketHandler.java 15KB
RecordSelectHandle.java 15KB
RecordSelectHandle.java 15KB
JfGridFileUtil.java 11KB
Pako_GzipUtils.java 9KB
ConstantUtil.java 9KB
JfGridFileGetService.java 8KB
JfGridConfigModel.java 6KB
TestController.java 6KB
JfGridFileController.java 6KB
RecordDataInsertHandle.java 5KB
TestTransaction1.java 5KB
RecordDataInsertHandle.java 5KB
InterfaceRequestErrorAndPerformanceLog.java 5KB
RedisLock.java 5KB
Test.java 4KB
Test.java 4KB
SnowFlake.java 4KB
IRecordDataUpdataHandle.java 4KB
RedisCacheService.java 3KB
RedisQueueService.java 3KB
MyWebSocketInterceptor.java 3KB
GridFileRedisCacheService.java 3KB
IRecordSelectHandle.java 3KB
IpAndPortUtil.java 3KB
RedisConfig.java 3KB
RecordDelHandle.java 3KB
SwaggerConfig.java 2KB
RecordDelHandle.java 2KB
ConfigMergeModel.java 2KB
GzipHandle.java 2KB
ResponseVO.java 2KB
ColorUtil.java 2KB
WSUserModel.java 2KB
WebSocketConfig.java 2KB
TestTransaction2.java 2KB
WebApplication.java 2KB
WorkHandler2.java 2KB
RedisMessageListener.java 2KB
BaseHandle.java 2KB
WorkHandler.java 2KB
RedisMessageModel.java 2KB
TestTransaction3.java 2KB
MyURLUtil.java 2KB
ProfiledemoApplication.java 1KB
ProfiledemoApplication.java 1KB
TestTransaction4.java 1KB
TestUtil.java 1KB
Test.java 1KB
MSExcelUtil.java 1KB
TestTransaction51.java 1KB
SheetOperationEnum.java 1KB
SysConstant.java 1KB
XlsUtil.java 1KB
JsonUtil.java 1019B
DataSourceConfig.java 1011B
ConfigerService.java 991B
RedisMessagePublish.java 936B
ScheduleService.java 928B
TestTransaction52.java 863B
DataSourceConfig.java 826B
MyStringUtil.java 815B
IRecordDataInsertHandle.java 773B
GridRecordDataModel.java 722B
BaseOperationModel.java 699B
TestDao.java 683B
IRecordDelHandle.java 682B
JdbcTempleConfig.java 680B
JdbcTempleConfig.java 679B
LuckySheetGridModel.java 452B
BaseHandle.java 405B
BaseModel.java 357B
Student.java 334B
ServiceException.java 203B
OperationTypeEnum.java 196B
People.java 163B
Test.java 132B
LICENSE 11KB
README.md 8KB
README-zh.md 8KB
README-zh.md 4KB
bug_report.md 804B
共 117 条
- 1
- 2
安幕
- 粉丝: 27
- 资源: 4785
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论2