diff --git a/.gitignore b/.gitignore index 3a8cabc..4174613 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ /target .idea +/docker/logs +/docker/.env diff --git a/docker/.env.example b/docker/.env.example new file mode 100644 index 0000000..4b332b3 --- /dev/null +++ b/docker/.env.example @@ -0,0 +1,21 @@ +# nacos +NACOS_CONTAINER_NAME= +NACOS_IP= +NACOS_PORT= +NACOS_USERNAME= +NACOS_PASSWORD= + +# mysql +MYSQL_CONTAINER_NAME= +MYSQL_IP= +MYSQL_PORT= +MYSQL_DATABASE= +MYSQL_USERNAME= +MYSQL_PASSWORD= + +# local port +SOFTBOT_LOCAL_PORT= + +# microservice network name +MICROSERVICES_NETWORK_NAME= + diff --git a/docker/Dockerfile b/docker/Dockerfile index 5f11a8b..6da2965 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,4 +1,4 @@ FROM openjdk:8-jdk ADD target/softbot.jar /data/softbot.jar WORKDIR /data -ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS softbot.jar --spring.config.location=/data/config/softbot_application.yml"] \ No newline at end of file +ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS softbot.jar $NACOS_OPTS $MYSQL_OPTS --spring.profiles.active=prod"] \ No newline at end of file diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 611f3dc..5f0edd2 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -7,13 +7,23 @@ services: context: ../ dockerfile: docker/Dockerfile volumes: - - ./config/softbot_application.yml:/data/config/softbot_application.yml + - ./logs:/data/logs + external_links: + - ${NACOS_CONTAINER_NAME} + - ${MYSQL_CONTAINER_NAME} ports: - - "8069:8081" + - "${SOFTBOT_LOCAL_PORT}:8081" environment: - TZ=Asia/Shanghai + - NACOS_OPTS=--nacos_ip=${NACOS_IP} --nacos_port=${NACOS_PORT} --nacos_username=${NACOS_USERNAME} --nacos_password=${NACOS_PASSWORD} + - MYSQL_OPTS=--mysql_ip=${MYSQL_IP} --mysql_port=${MYSQL_PORT} --mysql_username=${MYSQL_USERNAME} --mysql_password=${MYSQL_PASSWORD} --mysql_database=${MYSQL_DATABASE} deploy: resources: limits: memory: 800M - restart: always \ No newline at end of file + restart: always + +networks: + microservices_network: + external: + name: ${MICROSERVICES_NETWORK_NAME} \ No newline at end of file diff --git a/docker/start_docker_compose.sh b/docker/start_docker_compose.sh index bb69fb5..497c0fd 100644 --- a/docker/start_docker_compose.sh +++ b/docker/start_docker_compose.sh @@ -1 +1,5 @@ -mvn -f ../pom.xml clean package -DskipTests && cp ../src/main/resources/application.yml ./config/softbot_application.yml && docker-compose -f docker-compose.yml up -d --build --force-recreate \ No newline at end of file +#!/bin/bash +# 编译项目 +mvn -f ../pom.xml clean package -DskipTests +# 启动docker-compose +docker-compose -f docker-compose.yml up -d --build --force-recreate \ No newline at end of file diff --git a/pom.xml b/pom.xml index feb6132..8282610 100644 --- a/pom.xml +++ b/pom.xml @@ -21,6 +21,12 @@ 1.8 + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + 2021.1 + + javax.validation validation-api diff --git a/src/main/java/com/gitlink/softbot/SoftBotApplication.java b/src/main/java/com/gitlink/softbot/SoftBotApplication.java index ee4854e..c3e4202 100644 --- a/src/main/java/com/gitlink/softbot/SoftBotApplication.java +++ b/src/main/java/com/gitlink/softbot/SoftBotApplication.java @@ -3,6 +3,7 @@ package com.gitlink.softbot; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.retry.annotation.EnableRetry; import org.springframework.scheduling.annotation.EnableAsync; @@ -10,6 +11,7 @@ import org.springframework.scheduling.annotation.EnableAsync; @MapperScan("com.gitlink.softbot.dao") @EnableAsync @EnableRetry +@EnableDiscoveryClient public class SoftBotApplication { public static void main(String[] args) { diff --git a/docker/config/softbot_application.yml b/src/main/resources/application-dev.yml similarity index 86% rename from docker/config/softbot_application.yml rename to src/main/resources/application-dev.yml index bcb1fc6..6243d56 100644 --- a/docker/config/softbot_application.yml +++ b/src/main/resources/application-dev.yml @@ -1,8 +1,25 @@ server: - port: 8080 + port: 8081 es-url: 127.0.0.1:9200 spring: + + config: + activate: + on-profile: dev + + application: + # 应用名称 + name: softbot + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: 127.0.0.1:8848 + username: nacos + password: nacos + + datasource: username: root password: 123456 #tonglin0711 @@ -45,6 +62,7 @@ spring: timeout: 10000 password: 123456 + mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml new file mode 100644 index 0000000..9732d6e --- /dev/null +++ b/src/main/resources/application-prod.yml @@ -0,0 +1,81 @@ +server: + port: 8081 +es-url: + 127.0.0.1:9200 + +spring: + + config: + activate: + on-profile: dev + + application: + # 应用名称 + name: softbot + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: ${nacos_ip}:${nacos_port} + username: ${nacos_username} + password: ${nacos_password} + + datasource: + username: ${mysql_username} + password: ${mysql_password} + url: jdbc:mysql://${mysql_ip}:${mysql_port}/${mysql_database}?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true + driver-class-name: com.mysql.cj.jdbc.Driver + dbcp2: + test-on-borrow: false + test-while-idle: true + time-between-eviction-runs-millis: 3600000 + + elasticsearch: + rest: + uris: http://127.0.0.1:9200 + + jackson: + time-zone: GMT+8 + date-format: yyyy-MM-dd HH:mm:ss + mvc: + view: + prefix: /WEB-INF/jsp/ + suffix: .jsp + thymeleaf: + prefix: classpath:/templates/ + suffix: .html + encoding: UTF-8 + redis: + database: 0 + host: 101.35.140.79 + port: 6379 + # password: + # 连接超时时间 + timeout: 10000 + password: 123456 + +mybatis-plus: + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + mapper-locations: classpath:mapper/*.xml + + +mybatis: + mapper-locations: classpath:mapper/*.xml + type-aliases-package: com.gitlink.softbot.entity + configuration: + map-underscore-to-camel-case: true + +#showSql +logging: + level: + com: + example: + mapper : debug +elasticsearch: + url: localhost:9200 + +gitlink: + url: https://testforgeplus.trustie.net + token: eyJraWQiOiJUaEVSLVl3Ukg4TWYwOHM0UnJLUDYzXzZLWmVET2NZckZXcmdzN2VUVWdrIiwiYWxnIjoiSFM1MTIifQ.eyJpc3MiOiJHaXRMaW5rIiwiaWF0IjoxNjc1NzYyMDkwLCJqdGkiOiI0MzA1ZDUwZC01ZGRkLTQ0MzUtODMyNS1iZDczYmVhMWMxYjciLCJ1c2VyIjp7ImlkIjpudWxsLCJsb2dpbiI6bnVsbCwibWFpbCI6bnVsbH19.hpHCJeU4Jyz-DM2NBUdB-tQW_E0-tu9H3LoGhsJ7kPHkSsdXJCII0jxhyPb9gwDsgd8SnlRZF8tZDDjnZSoztQ + diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 7f7611f..b971831 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,72 +1,10 @@ server: port: 8081 -es-url: - 127.0.0.1:9200 + spring: - datasource: - username: root - password: 123456 #tonglin0711 - url: jdbc:mysql://localhost:3306/testforgeplus?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true - driver-class-name: com.mysql.cj.jdbc.Driver - dbcp2: - test-on-borrow: false - test-while-idle: true - time-between-eviction-runs-millis: 3600000 - - elasticsearch: - rest: - uris: http://127.0.0.1:9200 - devtools: - restart: - - enabled: true - - additional-paths: src/main/java - - poll-interval: 3000 - quiet-period: 1000 - jackson: - time-zone: GMT+8 - date-format: yyyy-MM-dd HH:mm:ss - mvc: - view: - prefix: /WEB-INF/jsp/ - suffix: .jsp - thymeleaf: - prefix: classpath:/templates/ - suffix: .html - encoding: UTF-8 - redis: - database: 0 - host: 101.35.140.79 - port: 6379 - # password: - # 连接超时时间 - timeout: 10000 - password: 123456 - -mybatis-plus: - configuration: - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl - mapper-locations: classpath:mapper/*.xml - - -mybatis: - mapper-locations: classpath:mapper/*.xml - type-aliases-package: com.gitlink.softbot.entity - configuration: - map-underscore-to-camel-case: true - -#showSql -logging: - level: - com: - example: - mapper : debug -elasticsearch: - url: localhost:9200 - -gitlink: - url: https://testforgeplus.trustie.net - token: eyJraWQiOiJUaEVSLVl3Ukg4TWYwOHM0UnJLUDYzXzZLWmVET2NZckZXcmdzN2VUVWdrIiwiYWxnIjoiSFM1MTIifQ.eyJpc3MiOiJHaXRMaW5rIiwiaWF0IjoxNjc1NzYyMDkwLCJqdGkiOiI0MzA1ZDUwZC01ZGRkLTQ0MzUtODMyNS1iZDczYmVhMWMxYjciLCJ1c2VyIjp7ImlkIjpudWxsLCJsb2dpbiI6bnVsbCwibWFpbCI6bnVsbH19.hpHCJeU4Jyz-DM2NBUdB-tQW_E0-tu9H3LoGhsJ7kPHkSsdXJCII0jxhyPb9gwDsgd8SnlRZF8tZDDjnZSoztQ - + application: + # 应用名称 + name: softbot + profiles: + # 环境配置 + active: dev diff --git a/src/main/resources/sql/soft_bot.sql b/src/main/resources/sql/soft_bot.sql index fc94439..e5db904 100644 --- a/src/main/resources/sql/soft_bot.sql +++ b/src/main/resources/sql/soft_bot.sql @@ -39,7 +39,7 @@ CREATE TABLE `bot` ( `private_key` text, PRIMARY KEY (`id`) USING BTREE, UNIQUE KEY `name` (`bot_name`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=802 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; -- ---------------------------- -- Records of bot @@ -195,3 +195,156 @@ CREATE TABLE `transfer_bot` ( -- ---------------------------- -- Records of transfer_bot -- ---------------------------- + + +DROP TABLE IF EXISTS `bot`; +CREATE TABLE `bot` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT '主键', + `bot_name` varchar(255) NOT NULL COMMENT 'bot名称', + `bot_des` longtext COMMENT 'bot描述', + `webhook` varchar(255) NOT NULL COMMENT 'bot回调url', + `is_public` tinyint DEFAULT NULL COMMENT '0:私有1:公开', + `logo` varchar(255) DEFAULT NULL COMMENT 'logo', + `state` tinyint DEFAULT NULL COMMENT '0:挂起1:工作', + `client_id` varchar(255) DEFAULT NULL COMMENT '客户端id(后台生成)', + `client_secret` varchar(255) DEFAULT NULL COMMENT '客户端密钥(后台生成)', + `web_url` varchar(255) DEFAULT NULL COMMENT '主页网址', + `category` varchar(255) DEFAULT NULL COMMENT '类型', + `install_num` int DEFAULT '0' COMMENT '下载数量', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `uid` int DEFAULT NULL, + `owner_id` int DEFAULT NULL, + `private_key` text, + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`bot_name`) +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; + +-- Records of bot +INSERT INTO `bot` VALUES + ('783', 'botnameegdret', 'miaoshusd', 'http://localhost:10000', '1', 'asdasdasfdg', '0', 'qwer', 'ert', 'botnameegdret', '疑修管理', '6', '2023-03-07 17:42:13', '2023-03-07 17:42:13', NULL, '84993', NULL), + ('791', 'botnameegdretui', 'miaoshusd', 'www.hauhahasd.com', '1', 'asdasdasfdg', '0', 'qwer', 'ert', 'botnameegdretui', '疑修管理', '1', '2023-03-07 17:23:28', '2023-03-06 23:05:28', NULL, '84993', NULL), + ('792', 'botnameegdretop', 'miaoshusd', 'www.hauhahasd.com', '0', 'asdasdasfdg', '0', 'qwer', 'ert', 'botnameegdretop', NULL, '0', '2023-03-06 23:05:29', '2023-03-06 23:05:29', NULL, '84993', NULL); + +-- Table structure for bot_category +DROP TABLE IF EXISTS `bot_category`; +CREATE TABLE `bot_category` ( + `id` int NOT NULL, + `category` varchar(255) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +-- Records of bot_category +INSERT INTO `bot_category` VALUES + ('1', '疑修管理'), + ('2', '合并请求管理'), + ('3', '代码审阅'), + ('4', '代码质量'), + ('5', '依赖管理'), + ('6', '构建'), + ('7', '测试'), + ('8', '部署'), + ('9', '文档管理'), + ('10', '其他'); + +-- Table structure for bot_limit_event +DROP TABLE IF EXISTS `bot_limit_event`; +CREATE TABLE `bot_limit_event` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT '主键', + `bot_id` int NOT NULL COMMENT 'bot的唯一标识', + `read_write_code` tinyint NOT NULL COMMENT '0:只读1:读写2:无权限', + `read_write_pr` tinyint NOT NULL COMMENT '0:只读1:读写2:无权限', + `auth_category` tinyint NOT NULL COMMENT '0:代码仓库权限1:合并请求权限2:无权限', + `event` tinyint NOT NULL COMMENT '0:git推送到存储库1:创建分支或标签2:删除分支或标签3:合并请求被打开或重新打开4:合并请求被分配5:无权限', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8; + +-- Records of bot_limit_event +INSERT INTO `bot_limit_event` VALUES + ('18', '783', '0', '1', '0', '1', '2022-10-05 19:21:53', '2022-10-05 19:21:53'), + ('19', '791', '0', '1', '0', '1', '2022-10-07 20:19:22', '2022-10-07 20:19:22'), + ('20', '792', '1', '2', '0', '2', '2022-12-29 18:34:26', '2022-12-29 18:34:26'), + ('21', '793', '1', '2', '0', '1', '2022-12-29 18:42:26', '2022-12-29 18:42:26'), + ('23', '794', '1', '2', '0', '1', '2022-12-29 18:45:54', '2022-12-29 18:45:54'), + ('27', '799', '1', '2', '0', '1', '2022-12-29 19:30:05', '2022-12-29 19:30:05'), + ('28', '799', '2', '1', '1', '2', '2022-12-29 19:30:05', '2022-12-29 19:30:05'); + +-- Table structure for install_bot +DROP TABLE IF EXISTS `install_bot`; +CREATE TABLE `install_bot` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT '主键', + `bot_id` int NOT NULL COMMENT 'bot唯一标识', + `installer_id` int NOT NULL COMMENT '安装者唯一标识', + `store_id` int NOT NULL COMMENT '仓库唯一标识', + `state` tinyint NOT NULL COMMENT '0:挂起1:工作2:卸载', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `installer_login` varchar(255) NOT NULL, + `store_repo` varchar(255) NOT NULL, + `webhook_id` int DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8; + +-- Table structure for market_bot +DROP TABLE IF EXISTS `market_bot`; +CREATE TABLE `market_bot` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT '主键', + `bot_id` int NOT NULL COMMENT 'bot唯一 标识', + `market_name` varchar(255) DEFAULT NULL COMMENT '上市名称', + `market_desc` varchar(255) DEFAULT NULL COMMENT '上市简介', + `market_intro` longtext COMMENT '详细介绍', + `first_func` varchar(255) NOT NULL COMMENT '主要功能', + `second_func` varchar(255) DEFAULT NULL COMMENT '次要功能', + `webhook` varchar(255) DEFAULT NULL COMMENT '回调url', + `is_receive_ag1` tinyint DEFAULT '0' COMMENT '0:接收协议1:不接受收开发者协议', + `is_receive_ag2` tinyint DEFAULT '0' COMMENT '0:接收协议1:不接受平台协议', + `market_time` datetime DEFAULT NULL COMMENT '上市时间', + `logo` varchar(255) DEFAULT NULL COMMENT '头像', + `install_num` int DEFAULT '0' COMMENT '安装次数', + `category` varchar(255) DEFAULT NULL COMMENT '类型', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', + PRIMARY KEY (`id`), + UNIQUE KEY `唯一` (`bot_id`) +) ENGINE=InnoDB AUTO_INCREMENT=55 DEFAULT CHARSET=utf8; + +-- Records of market_bot +INSERT INTO `market_bot` VALUES ('49', '783', 'qwe', 'asd', null, '代码审阅', '疑修管理', 'sad', '1', '1', '2023-03-06 21:07:01', 'sd', '6', 'asd', '2023-03-06 21:07:01', '2023-03-07 17:40:57'); +INSERT INTO `market_bot` VALUES ('54', '791', 'asder', 'asd', 'asdasd', '其他', '', 'www.asd.com', '0', '0', '2023-03-06 21:06:58', 'asd', '1', 'xcv', '2023-03-06 21:06:58', '2023-03-07 17:23:28'); + + +DROP TABLE IF EXISTS `register_bot`; +CREATE TABLE `register_bot` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT '主键', + `bot_id` int NOT NULL COMMENT 'bot唯一标识', + `developer_id` int NOT NULL COMMENT 'bot开发者唯一标识', + `create_time` datetime NOT NULL COMMENT '创建时间', + `update_time` datetime NOT NULL COMMENT '更新时间', + `developer_login` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `bot_id` (`bot_id`) +) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8; + +-- Records of register_bot +INSERT INTO `register_bot` (id, bot_id, developer_id, create_time, update_time, developer_login) VALUES + (3, 783, 84993, '2023-03-07 09:46:37', '2023-03-07 09:46:37', 'durian'), + (4, 791, 84993, '2023-03-07 09:46:37', '2023-03-07 09:46:37', 'durian'), + (5, 792, 84993, '2023-03-07 09:46:35', '2023-03-07 09:46:35', 'durian'); + +-- Table structure for `transfer_bot` +DROP TABLE IF EXISTS `transfer_bot`; +CREATE TABLE `transfer_bot` ( + `id` int NOT NULL AUTO_INCREMENT COMMENT '主键', + `bot_id` int NOT NULL COMMENT 'bot唯一标识', + `transfer_from_id` int NOT NULL COMMENT '转让者唯一标识', + `transfer_to_id` int NOT NULL COMMENT '接收者唯一标识', + `is_success` tinyint NOT NULL COMMENT '0:转让失败,1:转让成功 2:待接收', + `transfer_time` datetime NOT NULL COMMENT '转让时间', + `create_time` datetime NOT NULL COMMENT '创建时间', + `update_time` datetime NOT NULL COMMENT '更新时间', + `from_login` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + `to_login` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;