diff --git a/README.md b/README.md index a387dc7..b2b995d 100644 --- a/README.md +++ b/README.md @@ -52,6 +52,43 @@ yarn test └─controller ``` +### git提交规范规范 +``` +git commit 规范 +采用 Conventional Commits规范,请细看 Conventional Commits。 + +[optional scope]: +type 值如下: + feat:新功能(feature) + fix:修补 bug + docs:文档相关(documentation) + style: 格式(不影响代码运行的变动,空格,注释等) + refactor:重构(即不是新增功能,也不是修改 bug 的代码变动,代码优化) + perf: 提升产品用户体验的改动 + test:添加缺失测试、更正或者删除现有测试,test 相关代码改动都用这个 + chore:非 src 或者 test代码变动,如辅助工具、配置文件等变动。 + build:影响构建系统或外部依赖项的更改(示例范围:gulp,broccoli, npm) + ci:对 CI 配置文件和脚本的更改,一般我们都用不上,开源项目用得上(示例范围:Travis,Circle,BrowserStac k,SauceLabs) + revert:回滚提交的版本 +``` +详细文档查看:[git 仓库管理规范] [git-rules] + +### 开发基本规范 +- 能不用any,绝对不使用any + +- interface维护在interface目录下 + +- 代码注释 + - 每个方法,类必须有注释 + - 方法、类型注释必须描述清楚方法名称,参数,返回值等 + - 关键逻辑行,必须注释 + - 注释从读者的角度 + +- 命名 + - 文件名使用小驼峰, 如:baseService + - 类名使用大驼峰,如:BaseService + - 接口名使用大驼峰并以I开头,如:ILog + - 方法名字尽量以动词开头,如:getSomething,getUserInfo [midway]: https://midwayjs.org [git-rules]: https://confluence.sui.work/pages/viewpage.action?pageId=51120607 diff --git a/package.json b/package.json index 06567f4..bd61312 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ "@types/socket.io": "^2.1.4", "egg-cors": "^2.2.3", "egg-jwt": "^3.1.7", + "egg-mysql": "^3.0.0", "egg-redis": "^2.4.0", "egg-scripts": "^2.10.0", "egg-socket.io": "^4.1.6", diff --git a/src/app/controller/room.ts b/src/app/controller/room.ts new file mode 100644 index 0000000..4c28e04 --- /dev/null +++ b/src/app/controller/room.ts @@ -0,0 +1,31 @@ +import { Context, inject, controller, post, provide } from 'midway'; +import BaseController from '../../lib/baseController'; +import { IRoomService } from '../../interface/IRoom'; + +@provide() +@controller('/node/game/room') +export class RoomController extends BaseController { + + @inject() + ctx: Context; + + @inject('RoomService') + roomService: IRoomService; + /** + * 处理ocr数据转发 + */ + @post('/') + async index() { + try { + const result = await this.roomService.add(); + if(result.affectedRows === 1) { + this.success({ username: 'cai'}); + } else { + this.fail('create room error'); + } + } catch (e) { + this.fail('create room error'); + console.log(e) + } + } +} diff --git a/src/app/core/Poker.ts b/src/app/core/Poker.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/app/core/PokerGame.ts b/src/app/core/PokerGame.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/app/io/controller/nsp.ts b/src/app/io/controller/nsp.ts index 010e642..cc7bd32 100644 --- a/src/app/io/controller/nsp.ts +++ b/src/app/io/controller/nsp.ts @@ -13,9 +13,7 @@ class NspController extends Controller { const rooms = [room]; try { const { payload } = message; - console.log('rooms', rooms) nsp.adapter.clients(rooms, (err: any, clients: any) => { - console.log('clients-------exchange', clients); // 广播信息 nsp.to(room).emit('online', { clients, diff --git a/src/config/config.default.ts b/src/config/config.default.ts index 20b87cf..06d357e 100644 --- a/src/config/config.default.ts +++ b/src/config/config.default.ts @@ -95,6 +95,25 @@ export default (appInfo: EggAppInfo) => { db: 0, }, }; + config.mysql = { + // 单数据库信息配置 + client: { + // host + host: '127.0.0.1', + // 端口号 + port: '3306', + // 用户名 + user: 'root', + // 密码 + password: '123456', + // 数据库名 + database: 'poker', + }, + // 是否加载到 app 上,默认开启 + app: true, + // 是否加载到 agent 上,默认关闭 + agent: false, + }; return { ...bizConfig, diff --git a/src/config/plugin.ts b/src/config/plugin.ts index a2375f1..7492bfc 100644 --- a/src/config/plugin.ts +++ b/src/config/plugin.ts @@ -17,6 +17,10 @@ const plugin: EggPlugin = { jwt:{ enable: true, package: "egg-jwt", + }, + mysql:{ + enable: true, + package: 'egg-mysql', } }; diff --git a/src/interface/ICommandRecord.ts b/src/interface/ICommandRecord.ts new file mode 100644 index 0000000..a7828d6 --- /dev/null +++ b/src/interface/ICommandRecord.ts @@ -0,0 +1,7 @@ +export interface ICommandRecord { + roomId: string; + gameId: string; + userId: string; + type: string; + command: string; +} diff --git a/src/interface/IGame.ts b/src/interface/IGame.ts new file mode 100644 index 0000000..1965174 --- /dev/null +++ b/src/interface/IGame.ts @@ -0,0 +1,6 @@ +export interface IGame { + roomId: string; + pot: string; + status: number; + commonCard: string; +} diff --git a/src/interface/IGameRecord.ts b/src/interface/IGameRecord.ts new file mode 100644 index 0000000..876e924 --- /dev/null +++ b/src/interface/IGameRecord.ts @@ -0,0 +1,7 @@ +export interface IGameRecord { + roomId:string; + userId:string; + commonCard: string; + handCards: string; + status: string; +} diff --git a/src/interface/IRoom.ts b/src/interface/IRoom.ts new file mode 100644 index 0000000..c6b8aa0 --- /dev/null +++ b/src/interface/IRoom.ts @@ -0,0 +1,8 @@ +export interface IRoom { + roomNumber: string; +} + +export interface IRoomService { + findById(uid: string): IRoom; + add(): Promise; +} diff --git a/src/interface/IUser.ts b/src/interface/IUser.ts new file mode 100644 index 0000000..c899097 --- /dev/null +++ b/src/interface/IUser.ts @@ -0,0 +1,5 @@ +export interface IUser { + nickName: string; + account: string; + password: string; +} diff --git a/src/service/room.ts b/src/service/room.ts new file mode 100644 index 0000000..649580d --- /dev/null +++ b/src/service/room.ts @@ -0,0 +1,23 @@ +import BaseService from '../lib/baseService'; +import {Context, inject, provide, plugin} from "midway"; + +@provide('RoomService') +export class RoomService extends BaseService { + + @inject() + ctx: Context; + + @plugin() + mysql: any; + + async findById(uid: string){ + const room = await this.mysql.get('room', { id: uid}); + return { room } + } + + async add() { + const number = Math.floor(Math.random() * (1000000 - 100000)) + 100000; + return await this.mysql.insert('room', { roomNumber: number }); + } + +} diff --git a/src/service/user.ts b/src/service/user.ts new file mode 100644 index 0000000..5a81fd3 --- /dev/null +++ b/src/service/user.ts @@ -0,0 +1,28 @@ +import {Context, inject, provide, plugin} from "midway"; +import { IUser } from '../interface/IUser'; + +@provide('UserService') +export class UserService { + + @inject() + ctx: Context; + + @plugin() + mysql: any; + + async findById(uid: string){ + const user = await this.mysql.get('user', { id: uid}); + return { user } + } + + async findByAccount(account: string){ + const user = await this.mysql.get('user', { account: account}); + return { user } + } + + async addUser(data: IUser) { + const result = await this.mysql.insert('user', data) + return result + } + +} diff --git a/yarn.lock b/yarn.lock index 6a947f5..323fe12 100644 --- a/yarn.lock +++ b/yarn.lock @@ -614,6 +614,16 @@ agentkeepalive@^4.0.2: depd "^1.1.2" humanize-ms "^1.2.1" +ali-rds@^3.0.0: + version "3.3.0" + resolved "https://registry.npm.taobao.org/ali-rds/download/ali-rds-3.3.0.tgz#001ba1f4edf4555805f57ca272fe5c047aef992b" + integrity sha1-ABuh9O30VVgF9Xyicv5cBHrvmSs= + dependencies: + co-wrap-all "^1.0.0" + debug "^2.2.0" + mysql "^2.13.0" + pify "^2.3.0" + amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.npm.taobao.org/amdefine/download/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" @@ -1646,6 +1656,11 @@ better-assert@~1.0.0: dependencies: callsite "1.0.0" +bignumber.js@9.0.0: + version "9.0.0" + resolved "https://registry.npm.taobao.org/bignumber.js/download/bignumber.js-9.0.0.tgz#805880f84a329b5eac6e7cb6f8274b6d82bdf075" + integrity sha1-gFiA+Eoym16sbny2+CdLbYK98HU= + binary-extensions@^1.0.0: version "1.13.1" resolved "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" @@ -2049,6 +2064,13 @@ co-mocha@^1.2.2: co "^4.0.0" is-generator "^1.0.1" +co-wrap-all@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/co-wrap-all/download/co-wrap-all-1.0.0.tgz#370ae3e8333510a53f6b2f7fdfbe4568a11b7ecf" + integrity sha1-Nwrj6DM1EKU/ay9/375FaKEbfs8= + dependencies: + co "^4.0.0" + co@^4.0.0, co@^4.6.0: version "4.6.0" resolved "https://registry.npm.taobao.org/co/download/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -2780,6 +2802,13 @@ egg-multipart@^2.4.0: stream-wormhole "^1.1.0" uuid "^3.3.2" +egg-mysql@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/egg-mysql/download/egg-mysql-3.0.0.tgz#67d0a559cd909fab52682dc687d56a6595ccd699" + integrity sha1-Z9ClWc2Qn6tSaC3Gh9VqZZXM1pk= + dependencies: + ali-rds "^3.0.0" + egg-onerror@^2.1.0: version "2.1.0" resolved "https://registry.npm.taobao.org/egg-onerror/download/egg-onerror-2.1.0.tgz#e05dc08e39aec16518b64053b8bc874110aba9f7" @@ -5395,6 +5424,16 @@ mustache@^2.3.0: resolved "https://registry.npm.taobao.org/mustache/download/mustache-2.3.2.tgz?cache=0&sync_timestamp=1575717099164&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmustache%2Fdownload%2Fmustache-2.3.2.tgz#a6d4d9c3f91d13359ab889a812954f9230a3d0c5" integrity sha1-ptTZw/kdEzWauImoEpVPkjCj0MU= +mysql@^2.13.0: + version "2.18.1" + resolved "https://registry.npm.taobao.org/mysql/download/mysql-2.18.1.tgz#2254143855c5a8c73825e4522baf2ea021766717" + integrity sha1-IlQUOFXFqMc4JeRSK68uoCF2Zxc= + dependencies: + bignumber.js "9.0.0" + readable-stream "2.3.7" + safe-buffer "5.1.2" + sqlstring "2.3.1" + mz-modules@^2.1.0: version "2.1.0" resolved "https://registry.npm.taobao.org/mz-modules/download/mz-modules-2.1.0.tgz#7f529877afd0d42f409a7463b96986d61cfbcf96" @@ -5935,7 +5974,7 @@ picomatch@^2.0.5: resolved "https://registry.npm.taobao.org/picomatch/download/picomatch-2.1.1.tgz#ecdfbea7704adb5fe6fb47f9866c4c0e15e905c5" integrity sha1-7N++p3BK21/m+0f5hmxMDhXpBcU= -pify@^2.0.0: +pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= @@ -6243,6 +6282,19 @@ readable-stream@2, readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stre string_decoder "~1.1.1" util-deprecate "~1.0.1" +readable-stream@2.3.7: + version "2.3.7" + resolved "https://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.7.tgz?cache=0&sync_timestamp=1581624324274&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freadable-stream%2Fdownload%2Freadable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + readdirp@^2.2.1: version "2.2.1" resolved "https://registry.npm.taobao.org/readdirp/download/readdirp-2.2.1.tgz?cache=0&sync_timestamp=1575629866543&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freaddirp%2Fdownload%2Freaddirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" @@ -6887,6 +6939,11 @@ sprintf-js@~1.0.2: resolved "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsprintf-js%2Fdownload%2Fsprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= +sqlstring@2.3.1: + version "2.3.1" + resolved "https://registry.npm.taobao.org/sqlstring/download/sqlstring-2.3.1.tgz#475393ff9e91479aea62dcaf0ca3d14983a7fb40" + integrity sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A= + stack-trace@^0.0.10: version "0.0.10" resolved "https://registry.npm.taobao.org/stack-trace/download/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0"