first commit
This commit is contained in:
40
script/build/multi-service.sh
Normal file
40
script/build/multi-service.sh
Normal file
@@ -0,0 +1,40 @@
|
||||
#!/bin/bash
|
||||
file_path=$(
|
||||
cd "$(dirname "$0")" || exit
|
||||
pwd
|
||||
)/../..
|
||||
# shellcheck source=./util.sh
|
||||
source "${file_path}"/script/build/util.sh
|
||||
|
||||
env_type="$1"
|
||||
initOS ${env_type}
|
||||
os=$(initOS ${env_type})
|
||||
|
||||
api_version=""
|
||||
project_name="dtalk_service"
|
||||
now_time=$(date "+%Y_%m_%d")
|
||||
pkg_name="${project_name}_${now_time}_${os}"
|
||||
|
||||
echo ${pkg_name}
|
||||
|
||||
mkPkg "${file_path}" "${pkg_name}"
|
||||
|
||||
case "${api_version}" in
|
||||
*)
|
||||
buildGateway "${file_path}" "${pkg_name}" "gateway" "v1"
|
||||
buildService "${file_path}" "${pkg_name}" "backend" "${api_version}"
|
||||
buildService "${file_path}" "${pkg_name}" "backup" "${api_version}"
|
||||
buildService "${file_path}" "${pkg_name}" "call" "${api_version}"
|
||||
buildService "${file_path}" "${pkg_name}" "discovery" "${api_version}"
|
||||
buildService "${file_path}" "${pkg_name}" "generator" "${api_version}"
|
||||
buildService "${file_path}" "${pkg_name}" "group" "${api_version}"
|
||||
buildService "${file_path}" "${pkg_name}" "offline-push" "${api_version}"
|
||||
buildService "${file_path}" "${pkg_name}" "oss" "${api_version}"
|
||||
buildService "${file_path}" "${pkg_name}" "answer" "${api_version}" "record/"
|
||||
buildService "${file_path}" "${pkg_name}" "pusher" "${api_version}" "record/"
|
||||
buildService "${file_path}" "${pkg_name}" "store" "${api_version}" "record/"
|
||||
# tarPkg "${file_path}" "${pkg_name}" "multi-service"
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
67
script/build/quick_build.sh
Normal file
67
script/build/quick_build.sh
Normal file
@@ -0,0 +1,67 @@
|
||||
#!/bin/bash
|
||||
file_path=$(
|
||||
cd "$(dirname "$0")" || exit
|
||||
pwd
|
||||
)/../..
|
||||
# shellcheck source=./util.sh
|
||||
source "${file_path}"/script/build/util.sh
|
||||
|
||||
quickBuildService() {
|
||||
file_path="$1"
|
||||
pkg_path="$2"
|
||||
service_name="$3"
|
||||
sub_file_path="$4"
|
||||
flags=$(getFlags)
|
||||
|
||||
cd "${file_path}/service/${sub_file_path}${service_name}/cmd" || exit
|
||||
echo "┌ start building ${service_name} service"
|
||||
go build -ldflags "${flags}" -o "${file_path}/${pkg_path}/${service_name}" || exit
|
||||
echo "└ building ${service_name} service success"
|
||||
}
|
||||
|
||||
quickBuildGateway() {
|
||||
file_path="$1"
|
||||
pkg_name="$2"
|
||||
service_name="$3"
|
||||
sub_file_path="$4"
|
||||
flags=$(getFlags)
|
||||
|
||||
cd "${file_path}/gateway/api/${sub_file_path}" || exit
|
||||
echo "┌ start building ${service_name} service"
|
||||
go build -ldflags "${flags}" -o "${file_path}/${pkg_name}/${service_name}" || exit
|
||||
echo "└ building ${service_name} service success"
|
||||
}
|
||||
|
||||
mkDir() {
|
||||
file_path="$1"
|
||||
pkg_path="$2"
|
||||
|
||||
rm -rf ${file_path}/${pkg_path}
|
||||
mkdir -pv "${file_path}/${pkg_path}"
|
||||
}
|
||||
|
||||
env_type="$1"
|
||||
initOS ${env_type}
|
||||
os=$(initOS ${env_type})
|
||||
|
||||
api_version=""
|
||||
project_name="dtalk"
|
||||
now_time=$(date "+%Y_%m_%d")
|
||||
pkg_path="${project_name}_bin_${now_time}_${os}"
|
||||
|
||||
mkDir "${file_path}" "${pkg_path}"
|
||||
|
||||
quickBuildGateway "${file_path}" "${pkg_path}" "gateway" "v1"
|
||||
quickBuildService "${file_path}" "${pkg_path}" "backend"
|
||||
quickBuildService "${file_path}" "${pkg_path}" "backup"
|
||||
quickBuildService "${file_path}" "${pkg_path}" "call"
|
||||
quickBuildService "${file_path}" "${pkg_path}" "discovery"
|
||||
quickBuildService "${file_path}" "${pkg_path}" "generator"
|
||||
quickBuildService "${file_path}" "${pkg_path}" "group"
|
||||
quickBuildService "${file_path}" "${pkg_path}" "offline-push"
|
||||
quickBuildService "${file_path}" "${pkg_path}" "oss"
|
||||
quickBuildService "${file_path}" "${pkg_path}" "answer" "record/"
|
||||
quickBuildService "${file_path}" "${pkg_path}" "pusher" "record/"
|
||||
quickBuildService "${file_path}" "${pkg_path}" "store" "record/"
|
||||
|
||||
|
||||
131
script/build/util.sh
Normal file
131
script/build/util.sh
Normal file
@@ -0,0 +1,131 @@
|
||||
#!/bin/bash
|
||||
# 检查服务名称是否合法
|
||||
checkValid() {
|
||||
valid_services=("backend")
|
||||
#"apply" "department" "enterprise" "staff")
|
||||
service_name="$1"
|
||||
is_valid="no"
|
||||
|
||||
for valid_service in "${valid_services[@]}"; do
|
||||
if [ "${valid_service}" == "${service_name}" ]; then
|
||||
is_valid="yes"
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "${is_valid}" == "no" ]; then
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
# 获取编译参数
|
||||
getFlags() {
|
||||
main_path="main"
|
||||
go_version=$(go version | awk '{ print $3 }')
|
||||
build_time=$(date "+%Y-%m-%d %H:%M:%S %Z")
|
||||
git_commit=$(git rev-parse --short=10 HEAD)
|
||||
flags="-X '${main_path}.goVersion=${go_version}' -X '${main_path}.buildTime=${build_time}' -X '${main_path}.gitCommit=${git_commit}' -X 'google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn'"
|
||||
echo "${flags}"
|
||||
}
|
||||
|
||||
# 创建目标目录
|
||||
mkPkg() {
|
||||
file_path="$1"
|
||||
pkg_name="$2"
|
||||
|
||||
rm -rf ${file_path}/${pkg_name}
|
||||
mkdir -pv "${file_path}/${pkg_name}"/bin
|
||||
mkdir -pv "${file_path}/${pkg_name}"/etc
|
||||
}
|
||||
|
||||
# 编译服务
|
||||
buildService() {
|
||||
file_path="$1"
|
||||
pkg_name="$2"
|
||||
service_name="$3"
|
||||
version="$4"
|
||||
sub_file_path="$5"
|
||||
flags=$(getFlags)
|
||||
|
||||
suffix=""
|
||||
if [ -n "${version}" ]; then
|
||||
suffix="-${version}"
|
||||
fi
|
||||
|
||||
cd "${file_path}"/service/"${sub_file_path}""${service_name}"/cmd || exit
|
||||
echo "start building ${service_name} service"
|
||||
# echo ${flags}
|
||||
# go build -ldflags "${flags}" -o "${file_path}/${pkg_name}/bin/${service_name}${suffix}" || exit
|
||||
go build -ldflags "${flags}" -o "${file_path}/${pkg_name}/bin/${service_name}${suffix}" || exit
|
||||
echo "building ${service_name} service success"
|
||||
cp "${file_path}/service/${sub_file_path}${service_name}/config/${service_name}".toml "${file_path}/${pkg_name}/etc/${service_name}".toml
|
||||
}
|
||||
|
||||
# 编译gateway服务
|
||||
buildGateway() {
|
||||
file_path="$1"
|
||||
pkg_name="$2"
|
||||
service_name="$3"
|
||||
version="$4"
|
||||
flags=$(getFlags)
|
||||
|
||||
suffix=""
|
||||
if [ -n "${version}" ]; then
|
||||
suffix="-${version}"
|
||||
fi
|
||||
|
||||
cd "${file_path}/gateway/api/${version}" || exit
|
||||
echo "start building ${service_name} service"
|
||||
go build -ldflags "${flags}" -o "${file_path}/${pkg_name}/bin/${service_name}" || exit
|
||||
echo "building ${service_name} service success"
|
||||
cp "${file_path}/gateway/api/${version}/etc/${service_name}".toml "${file_path}/${pkg_name}/etc/${service_name}".toml
|
||||
}
|
||||
|
||||
# 复制所选文件
|
||||
cpIfExist() {
|
||||
file_path="$1"
|
||||
pkg_name="$2"
|
||||
files="$3"
|
||||
|
||||
for file in "${file_path}"/configs/${files}; do
|
||||
if [ -f "${file}" ]; then
|
||||
cp "${file}" "${file_path}/${pkg_name}"/etc
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# 打包目标目录
|
||||
tarPkg() {
|
||||
file_path="$1"
|
||||
pkg_name="$2"
|
||||
file_name="$3"
|
||||
is_single_service="$4"
|
||||
|
||||
# if [ "${is_single_service}" == "yes" ]; then
|
||||
# content="$(cat "${file_path}"/configs/Makefile-single-service)"
|
||||
# echo "${content//single/${file_name}}" > "${file_path}/${pkg_name}"/Makefile
|
||||
# else
|
||||
# cp "${file_path}/configs/Makefile-${file_name}" "${file_path}/${pkg_name}"/Makefile
|
||||
# fi
|
||||
|
||||
# cp "${file_path}"/README.md "${file_path}/${pkg_name}"
|
||||
tar -zcvPf "${file_path}/${pkg_name}".tar.gz -C "${file_path}" "${pkg_name}"/etc "${pkg_name}"/bin
|
||||
# "${pkg_name}"/Makefile
|
||||
# rm -r "${file_path}/${pkg_name}"
|
||||
}
|
||||
|
||||
# 设置目标打包环境
|
||||
# 默认 linux amd64
|
||||
initOS() {
|
||||
env_type="amd64"
|
||||
if [ -n "$1" ]; then
|
||||
env_type="$1"
|
||||
fi
|
||||
|
||||
export GOOS=linux
|
||||
export GOARCH=${env_type}
|
||||
export GOLANG_PROTOBUF_REGISTRATION_CONFLICT=warn
|
||||
|
||||
echo "linux_${env_type}"
|
||||
}
|
||||
67
script/dtalk.lua
Normal file
67
script/dtalk.lua
Normal file
@@ -0,0 +1,67 @@
|
||||
local p_dtalk = Proto("dtalk", "dtalk layer protocal");
|
||||
|
||||
local f_data = ProtoField.bytes("dtalk.data", "Data")
|
||||
local f_type = ProtoField.string("dtalk.type", "Type")
|
||||
|
||||
p_dtalk.fields = { f_data,f_type }
|
||||
|
||||
local protobuf_dissector = Dissector.get("protobuf")
|
||||
|
||||
DissectorTable.new('dtalk_dis', 'dtalk_dis', ftypes.UINT32, base.DEC, p_dtalk)
|
||||
|
||||
local msgtypes = {
|
||||
[1] = 'chat33.comet.AuthMsg',
|
||||
[2] = 'chat33.comet.AuthReply',
|
||||
[3] = 'chat33.comet.Heartbeat',
|
||||
[4] = 'chat33.comet.HeartbeatReply',
|
||||
[5] = 'chat33.comet.Disconnect',
|
||||
[6] = 'chat33.comet.DisconnectReply',
|
||||
[7] = 'dtalk.proto.Proto',
|
||||
[8] = 'dtalk.proto.Proto',
|
||||
[9] = 'dtalk.proto.Proto',
|
||||
[10] = 'dtalk.proto.Proto'
|
||||
}
|
||||
|
||||
local option_name = {
|
||||
[0] = 'Undefined',
|
||||
[1] = 'Auth',
|
||||
[2] = 'AuthReply',
|
||||
[3] = 'Heartbeat',
|
||||
[4] = 'HeartbeatReply',
|
||||
[5] = 'Disconnect',
|
||||
[6] = 'DisconnectReply',
|
||||
[7] = 'SendMsg',
|
||||
[8] = 'SendMsgReply',
|
||||
[9] = 'ReceiveMsg',
|
||||
[10] = 'ReceiveMsgReply',
|
||||
[14] = 'SyncMsgReq',
|
||||
[15] = 'SyncMsgReply'
|
||||
}
|
||||
|
||||
--biz proto
|
||||
local p_dtalk_biz = Proto("dtalk_biz", "dtalk biz layer protocal");
|
||||
|
||||
function p_dtalk.dissector(buf, pkt, tree)
|
||||
local subtree = tree:add(p_dtalk, buf())
|
||||
|
||||
--Data
|
||||
subtree:add(f_data, buf())
|
||||
--Type
|
||||
local opt_type = tonumber(pkt.private["dtalk_opt_type"])
|
||||
subtree:add(f_type, option_name[opt_type])
|
||||
|
||||
pkt.private["pb_msg_type"] = "message," .. msgtypes[opt_type]
|
||||
pcall(Dissector.call, protobuf_dissector, buf, pkt, subtree)
|
||||
|
||||
|
||||
local protobuf_field_table = DissectorTable.get("protobuf_field")
|
||||
protobuf_field_table:add("dtalk.proto.Proto.body", p_dtalk_biz)
|
||||
end
|
||||
|
||||
function p_dtalk_biz.dissector(buf, pkt, tree)
|
||||
for id, name in pairs(DissectorTable.list()) do
|
||||
tree:add(id .. ':', name)
|
||||
end
|
||||
pkt.private["pb_msg_type"] = "message," .. 'dtalk.proto.CommonMsg'
|
||||
pcall(Dissector.call, protobuf_dissector, buf, pkt, tree)
|
||||
end
|
||||
BIN
script/gen-proto/protoc-gen-go-grpc_v1.1.0
Normal file
BIN
script/gen-proto/protoc-gen-go-grpc_v1.1.0
Normal file
Binary file not shown.
BIN
script/gen-proto/protoc-gen-go_v1.27.1
Normal file
BIN
script/gen-proto/protoc-gen-go_v1.27.1
Normal file
Binary file not shown.
BIN
script/gen-proto/protoc_v3.19.1
Normal file
BIN
script/gen-proto/protoc_v3.19.1
Normal file
Binary file not shown.
210
script/mysql/dtalk_app.sql
Normal file
210
script/mysql/dtalk_app.sql
Normal file
@@ -0,0 +1,210 @@
|
||||
/*
|
||||
Navicat Premium Data Transfer
|
||||
|
||||
Source Server : 172.16.101.107
|
||||
Source Server Type : MySQL
|
||||
Source Server Version : 50732
|
||||
Source Host : 172.16.101.107:3306
|
||||
Source Schema : dtalk
|
||||
|
||||
Target Server Type : MySQL
|
||||
Target Server Version : 50732
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 18/11/2021 10:36:53
|
||||
*/
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for dtalk_addr_backup
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `dtalk_addr_backup`;
|
||||
CREATE TABLE `dtalk_addr_backup` (
|
||||
`address` varchar(255) NOT NULL COMMENT '用户地址',
|
||||
`area` varchar(4) DEFAULT NULL COMMENT '区号',
|
||||
`phone` varchar(11) DEFAULT NULL COMMENT '手机号',
|
||||
`email` varchar(30) DEFAULT NULL COMMENT '邮箱',
|
||||
`mnemonic` varchar(1020) DEFAULT NULL COMMENT '助记词',
|
||||
`private_key` varchar(1020) DEFAULT NULL COMMENT '加密私钥',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
PRIMARY KEY (`address`),
|
||||
KEY `idx_phone` (`phone`) USING HASH,
|
||||
KEY `idx_email` (`email`) USING HASH
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for dtalk_addr_relate
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `dtalk_addr_relate`;
|
||||
CREATE TABLE `dtalk_addr_relate` (
|
||||
`address` varchar(255) NOT NULL COMMENT '用户地址',
|
||||
`area` varchar(4) DEFAULT NULL COMMENT '区号',
|
||||
`phone` varchar(11) DEFAULT NULL COMMENT '手机号',
|
||||
`email` varchar(30) DEFAULT NULL COMMENT '邮箱',
|
||||
`mnemonic` varchar(1020) DEFAULT NULL COMMENT '助记词',
|
||||
`private_key` varchar(1020) DEFAULT NULL COMMENT '加密私钥',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
PRIMARY KEY (`address`),
|
||||
KEY `idx_phone` (`phone`) USING HASH,
|
||||
KEY `idx_email` (`email`) USING HASH
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for dtalk_cdk_info
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `dtalk_cdk_info`;
|
||||
CREATE TABLE `dtalk_cdk_info` (
|
||||
`cdk_id` bigint(20) NOT NULL COMMENT '兑换码id',
|
||||
`cdk_name` varchar(255) NOT NULL COMMENT '兑换码名称',
|
||||
`cdk_info` varchar(255) DEFAULT NULL COMMENT '兑换码详情',
|
||||
`coin_name` varchar(255) NOT NULL COMMENT '票券名称',
|
||||
`exchange_rate` bigint(20) NOT NULL COMMENT '汇率(一个兑换码需要的票券数量)',
|
||||
`create_time` bigint(20) NOT NULL COMMENT '创建时间',
|
||||
`update_time` bigint(20) NOT NULL COMMENT '更新时间',
|
||||
`delete_time` bigint(20) NOT NULL COMMENT '删除时间(大于零表示已删除)',
|
||||
PRIMARY KEY (`cdk_id`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for dtalk_cdk_list
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `dtalk_cdk_list`;
|
||||
CREATE TABLE `dtalk_cdk_list` (
|
||||
`id` bigint(20) NOT NULL COMMENT '记录id',
|
||||
`cdk_id` bigint(20) NOT NULL COMMENT 'cdk的id',
|
||||
`cdk_content` varchar(255) NOT NULL COMMENT 'cdk的内容',
|
||||
`user_id` varchar(255) DEFAULT NULL COMMENT '拥有用户id',
|
||||
`cdk_status` tinyint(4) NOT NULL COMMENT 'cdk的状态(0:未发放;1:冻结;2:已发放)',
|
||||
`order_id` bigint(20) DEFAULT NULL COMMENT '订单id',
|
||||
`create_time` bigint(20) NOT NULL COMMENT '创建时间',
|
||||
`update_time` bigint(20) NOT NULL COMMENT '更新时间',
|
||||
`delete_time` bigint(20) NOT NULL COMMENT '删除时间',
|
||||
`exchange_time` bigint(20) NOT NULL COMMENT '兑换时间',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for dtalk_group_apply
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `dtalk_group_apply`;
|
||||
CREATE TABLE `dtalk_group_apply` (
|
||||
`id` bigint(20) NOT NULL COMMENT '审批 ID',
|
||||
`group_id` bigint(20) NOT NULL COMMENT '群 ID',
|
||||
`inviter_id` varchar(40) DEFAULT NULL COMMENT '邀请人 ID, 空表示是自己主动申请的',
|
||||
`member_id` varchar(40) NOT NULL COMMENT '申请加入人 ID',
|
||||
`apply_note` varchar(255) DEFAULT NULL COMMENT '申请备注',
|
||||
`operator_id` varchar(40) DEFAULT NULL COMMENT '审批人 ID',
|
||||
`apply_status` tinyint(4) NOT NULL COMMENT '0=待审批, 1=审批通过, 2=审批不通过, 10=审批忽略',
|
||||
`reject_reason` varchar(255) DEFAULT NULL COMMENT '拒绝原因',
|
||||
`create_time` bigint(20) DEFAULT NULL COMMENT '创建时间 ms',
|
||||
`update_time` bigint(20) DEFAULT NULL COMMENT '修改时间 ms',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for dtalk_group_info
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `dtalk_group_info`;
|
||||
CREATE TABLE `dtalk_group_info` (
|
||||
`group_id` bigint(20) NOT NULL COMMENT '群id',
|
||||
`group_mark_id` varchar(40) NOT NULL COMMENT '群编号',
|
||||
`group_name` varchar(200) NOT NULL COMMENT '群名称',
|
||||
`group_avatar` varchar(1000) NOT NULL DEFAULT '' COMMENT '群头像 url',
|
||||
`group_member_num` int(11) NOT NULL COMMENT '群成员人数',
|
||||
`group_maximum` int(11) NOT NULL DEFAULT '200' COMMENT '群成员人数上限, 默认 200 人',
|
||||
`group_introduce` longtext NOT NULL COMMENT '群简介',
|
||||
`group_status` tinyint(4) NOT NULL COMMENT '群状态,0=正常 1=封禁 2=解散',
|
||||
`group_owner_id` varchar(40) NOT NULL COMMENT '群主 id',
|
||||
`group_create_time` bigint(20) NOT NULL COMMENT '创建时间',
|
||||
`group_update_time` bigint(20) NOT NULL COMMENT '更新时间',
|
||||
`group_join_type` tinyint(4) NOT NULL COMMENT '加群方式,0=无需审批(默认),1=禁止加群,群主和管理员邀请加群',
|
||||
`group_mute_type` tinyint(4) NOT NULL COMMENT '禁言, 0=全员可发言, 1=全员禁言(除群主和管理员)',
|
||||
`group_friend_type` tinyint(4) NOT NULL COMMENT '加好友限制, 0=群内可加好友,1=群内禁止加好友',
|
||||
`group_aes_key` varchar(255) DEFAULT NULL COMMENT 'aes key',
|
||||
`group_pub_name` varchar(255) DEFAULT NULL COMMENT '群公开名称',
|
||||
PRIMARY KEY (`group_id`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for dtalk_group_member
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `dtalk_group_member`;
|
||||
CREATE TABLE `dtalk_group_member` (
|
||||
`group_id` bigint(20) NOT NULL COMMENT '群 id',
|
||||
`group_member_id` varchar(40) NOT NULL COMMENT '用户 id',
|
||||
`group_member_name` varchar(40) NOT NULL COMMENT '用户群昵称',
|
||||
`group_member_type` tinyint(4) NOT NULL COMMENT '用户角色,2=群主,1=管理员,0=群员,3=退群',
|
||||
`group_member_join_time` bigint(20) NOT NULL COMMENT '用户加群时间',
|
||||
`group_member_update_time` bigint(20) NOT NULL COMMENT '用户更新时间',
|
||||
PRIMARY KEY (`group_id`,`group_member_id`),
|
||||
KEY `idx_userid_type` (`group_member_id`,`group_member_type`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for dtalk_group_member_mute
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `dtalk_group_member_mute`;
|
||||
CREATE TABLE `dtalk_group_member_mute` (
|
||||
`group_id` bigint(20) NOT NULL COMMENT '群 id',
|
||||
`group_member_id` varchar(40) NOT NULL COMMENT '用户 id',
|
||||
`group_member_mute_time` bigint(20) NOT NULL COMMENT '用户禁言结束时间',
|
||||
`group_member_mute_update_time` bigint(20) NOT NULL COMMENT '用户上一次被禁言的时间',
|
||||
PRIMARY KEY (`group_id`,`group_member_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for dtalk_oss_config
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `dtalk_oss_config`;
|
||||
CREATE TABLE `dtalk_oss_config` (
|
||||
`app` varchar(20) NOT NULL COMMENT '应用类型',
|
||||
`oss_type` varchar(20) NOT NULL COMMENT '存储服务类型',
|
||||
`endpoint` varchar(255) DEFAULT NULL COMMENT '服务节点',
|
||||
`access_key_id` varchar(255) DEFAULT NULL,
|
||||
`access_key_secret` varchar(255) DEFAULT NULL,
|
||||
`role` varchar(255) DEFAULT NULL,
|
||||
`policy` varchar(255) DEFAULT NULL COMMENT '角色权限控制',
|
||||
`duration_seconds` int(11) DEFAULT NULL COMMENT '最大会话时间',
|
||||
PRIMARY KEY (`app`,`oss_type`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for dtalk_ver_auth
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `dtalk_ver_auth`;
|
||||
CREATE TABLE `dtalk_ver_auth` (
|
||||
`app_id` varchar(40) NOT NULL COMMENT 'AppId',
|
||||
`app_config` text NOT NULL COMMENT '应用配置内容',
|
||||
`app_key` varchar(64) NOT NULL COMMENT 'key',
|
||||
`update_time` bigint(20) NOT NULL COMMENT '更新时间',
|
||||
`create_time` bigint(20) NOT NULL COMMENT '创建时间',
|
||||
PRIMARY KEY (`app_id`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for dtalk_ver_backend
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `dtalk_ver_backend`;
|
||||
CREATE TABLE `dtalk_ver_backend` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '版本编号',
|
||||
`platform` varchar(40) NOT NULL COMMENT '平台',
|
||||
`state` tinyint(4) NOT NULL COMMENT '线上状态',
|
||||
`device_type` varchar(40) NOT NULL COMMENT '终端',
|
||||
`version_code` bigint(20) NOT NULL COMMENT '版本号',
|
||||
`version_name` varchar(40) NOT NULL COMMENT '版本名字',
|
||||
`download_url` varchar(2083) NOT NULL COMMENT '下载地址',
|
||||
`size` bigint(20) NOT NULL COMMENT '包大小',
|
||||
`md5` varchar(40) NOT NULL COMMENT 'MD5',
|
||||
`force_update` tinyint(4) NOT NULL COMMENT '强制更新',
|
||||
`description` text NOT NULL COMMENT '描述信息',
|
||||
`ope_user` varchar(40) DEFAULT NULL COMMENT '操作者',
|
||||
`update_time` bigint(20) NOT NULL COMMENT '更新时间',
|
||||
`create_time` bigint(20) NOT NULL COMMENT '创建时间',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
112
script/mysql/dtalk_msg.sql
Normal file
112
script/mysql/dtalk_msg.sql
Normal file
@@ -0,0 +1,112 @@
|
||||
/*
|
||||
Navicat Premium Data Transfer
|
||||
|
||||
Source Server : 172.16.101.127
|
||||
Source Server Type : MySQL
|
||||
Source Server Version : 50733
|
||||
Source Host : 172.16.101.127:3306
|
||||
Source Schema : dtalk
|
||||
|
||||
Target Server Type : MySQL
|
||||
Target Server Version : 50733
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 18/11/2021 10:37:07
|
||||
*/
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for dtalk_group_msg_content
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `dtalk_group_msg_content`;
|
||||
CREATE TABLE `dtalk_group_msg_content` (
|
||||
`mid` bigint(20) unsigned NOT NULL COMMENT '\n\n消息id\n',
|
||||
`seq` varchar(40) NOT NULL COMMENT '消息序列号',
|
||||
`sender_id` varchar(40) NOT NULL COMMENT '发送者',
|
||||
`receiver_id` varchar(40) NOT NULL COMMENT '接收者',
|
||||
`msg_type` tinyint(3) unsigned NOT NULL COMMENT '消息类型',
|
||||
`content` longtext NOT NULL COMMENT '消息内容',
|
||||
`create_time` bigint(20) NOT NULL COMMENT '创建时间',
|
||||
`source` varchar(1024) DEFAULT NULL COMMENT '转发来源',
|
||||
PRIMARY KEY (`mid`) USING BTREE,
|
||||
KEY `idx_sender_id_seq` (`sender_id`,`seq`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for dtalk_group_msg_relation
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `dtalk_group_msg_relation`;
|
||||
CREATE TABLE `dtalk_group_msg_relation` (
|
||||
`mid` bigint(20) unsigned NOT NULL COMMENT '消息id',
|
||||
`owner_uid` varchar(40) NOT NULL COMMENT '索引用户',
|
||||
`other_uid` varchar(40) NOT NULL COMMENT '\n\n另一方用户\n',
|
||||
`type` tinyint(3) unsigned NOT NULL COMMENT '0->发件箱;1->收件箱',
|
||||
`state` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '0->未接受;1->已接收',
|
||||
`create_time` bigint(20) NOT NULL COMMENT '\n\n创建时间\n',
|
||||
PRIMARY KEY (`mid`,`owner_uid`) USING BTREE,
|
||||
KEY `idx_owneruid_otheruid_msgid` (`owner_uid`,`other_uid`,`mid`) USING BTREE,
|
||||
KEY `idx_owneruid_type_state` (`owner_uid`,`type`,`state`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for dtalk_msg_content
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `dtalk_msg_content`;
|
||||
CREATE TABLE `dtalk_msg_content` (
|
||||
`mid` bigint(20) unsigned NOT NULL COMMENT '\n\n消息id\n',
|
||||
`seq` varchar(40) NOT NULL COMMENT '消息序列号',
|
||||
`sender_id` varchar(40) NOT NULL COMMENT '发送者',
|
||||
`receiver_id` varchar(40) NOT NULL COMMENT '接收者',
|
||||
`msg_type` tinyint(3) unsigned NOT NULL COMMENT '消息类型',
|
||||
`content` longtext NOT NULL COMMENT '消息内容',
|
||||
`create_time` bigint(20) NOT NULL COMMENT '创建时间',
|
||||
`source` varchar(1024) DEFAULT NULL COMMENT '转发来源',
|
||||
PRIMARY KEY (`mid`) USING BTREE,
|
||||
KEY `idx_sender_id_seq` (`sender_id`,`seq`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for dtalk_msg_relation
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `dtalk_msg_relation`;
|
||||
CREATE TABLE `dtalk_msg_relation` (
|
||||
`mid` bigint(20) unsigned NOT NULL COMMENT '消息id',
|
||||
`owner_uid` varchar(40) NOT NULL COMMENT '索引用户',
|
||||
`other_uid` varchar(40) NOT NULL COMMENT '\n\n另一方用户\n',
|
||||
`type` tinyint(3) unsigned NOT NULL COMMENT '0->发件箱;1->收件箱',
|
||||
`state` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '0->未接受;1->已接收',
|
||||
`create_time` bigint(20) NOT NULL COMMENT '\n\n创建时间\n',
|
||||
PRIMARY KEY (`mid`,`owner_uid`) USING BTREE,
|
||||
KEY `idx_owneruid_otheruid_msgid` (`owner_uid`,`other_uid`,`mid`) USING BTREE,
|
||||
KEY `idx_owneruid_type_state` (`owner_uid`,`type`,`state`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for dtalk_msg_version
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `dtalk_msg_version`;
|
||||
CREATE TABLE `dtalk_msg_version` (
|
||||
`uid` varchar(40) NOT NULL COMMENT '\n\n用户id\n',
|
||||
`version` bigint(20) DEFAULT NULL COMMENT '版本号',
|
||||
PRIMARY KEY (`uid`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for dtalk_notice_content
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `dtalk_notice_content`;
|
||||
CREATE TABLE `dtalk_notice_content` (
|
||||
`id` bigint(20) NOT NULL COMMENT '消息id',
|
||||
`uid` varchar(40) NOT NULL COMMENT '接收者',
|
||||
`type` tinyint(3) DEFAULT NULL COMMENT '通知类型',
|
||||
`state` tinyint(3) DEFAULT NULL COMMENT '0->未接收;1->已接收',
|
||||
`content` varchar(1024) DEFAULT NULL COMMENT '通知内容',
|
||||
`create_time` bigint(20) DEFAULT NULL COMMENT '创建时间',
|
||||
`update_time` bigint(20) DEFAULT NULL COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`,`uid`) USING BTREE,
|
||||
KEY `idx_uid_state` (`uid`,`state`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
17
script/swag/build.sh
Normal file
17
script/swag/build.sh
Normal file
@@ -0,0 +1,17 @@
|
||||
#!/bin/bash
|
||||
file_path=$(
|
||||
cd "$(dirname "$0")" || exit
|
||||
pwd
|
||||
)/../..
|
||||
|
||||
echo $file_path
|
||||
|
||||
#projectPath = $(dirname $(dirname "$PWD"))
|
||||
|
||||
if [ -z $1 ]
|
||||
then
|
||||
echo 'ERROR: undefined version
|
||||
please input gateway version, example: ./build.sh v1'
|
||||
else
|
||||
swag init -d $file_path/gateway/api/$1/ -g internal/handler/routes.go -o $file_path/gateway/api/$1/docs/
|
||||
fi
|
||||
11
script/trace/docker-start-jaeger.sh
Normal file
11
script/trace/docker-start-jaeger.sh
Normal file
@@ -0,0 +1,11 @@
|
||||
docker run -d --name jaeger \
|
||||
-e COLLECTOR_ZIPKIN_HOST_PORT=:9411 \
|
||||
-p 5775:5775/udp \
|
||||
-p 6831:6831/udp \
|
||||
-p 6832:6832/udp \
|
||||
-p 5778:5778 \
|
||||
-p 16686:16686 \
|
||||
-p 14268:14268 \
|
||||
-p 14250:14250 \
|
||||
-p 9411:9411 \
|
||||
jaegertracing/all-in-one:1.29
|
||||
Reference in New Issue
Block a user