first commit

This commit is contained in:
2022-03-17 15:59:24 +08:00
commit 2b0debb847
592 changed files with 73946 additions and 0 deletions

View 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

View 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
View 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
View 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

Binary file not shown.

Binary file not shown.

Binary file not shown.

210
script/mysql/dtalk_app.sql Normal file
View 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
View 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
View 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

View 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