From 51706d01782933536ebe4e01394de6ee24181cfa Mon Sep 17 00:00:00 2001 From: tangmingyou <234767776@qq.com> Date: Thu, 14 Apr 2022 16:01:30 +0800 Subject: [PATCH] im-router --- doc/db/so-im-backup-20220402180208.chnr.json | 1783 ----------------- doc/db/so-im.chnr.json | 42 +- .../sopod/soim/client/net/ImNetClient.java | 2 +- .../soim/common/util/HashAlgorithms.java | 396 ++++ .../net/sopod/soim/common/util/ImClock.java | 4 +- .../sopod/soim/common/util/StringUtil.java | 19 + .../net/sopod/soim/common/util/TokenUtil.java | 93 + .../soim/das/user/api/config/LogicTables.java | 13 + .../das/user/api/model/entity/ImUser.java | 17 +- .../das/user/service/UserDasServiceImpl.java | 2 +- .../das/user/dao/DasImUserShardingTest.java | 23 +- .../net/sopod/soim/data/msg/auth/Auth.java | 788 +++++++- .../src/main/resources/protoSerialNoTable.txt | 11 +- .../main/resources/protobuf/auth/Auth.proto | 7 +- .../src/main/resources/application.yml | 3 + .../soim/entry/handler/auth/LoginHandler.java | 4 +- .../im-logic-user-api/pom.xml | 3 +- .../soim/logic/user/auth/model/ImAuth.java | 0 .../logic/user/auth/service/AuthService.java | 0 .../logic/user/service/UserAuthService.java | 0 .../soim/logic/user/service/UserService.java | 0 .../im-router-api}/pom.xml | 4 +- .../sopod/soim/router/api/model/CacheRes.java | 31 + .../api/service/AccountStoreService.java | 12 + .../router/api/service/AuthStoreService.java | 15 + .../im-segment-id-api/pom.xml | 3 +- .../config/SegmentIdAutoConfiguration.java | 3 +- .../logic/api/segmentid/core/Segment.java | 0 .../segmentid/core/SegmentIdGenerator.java | 0 .../api/segmentid/model/NextSegmentParam.java | 0 .../api/segmentid/model/SegmentRange.java | 0 .../segmentid/service/SegmentIdService.java | 10 + .../spring-configuration-metadata.json | 0 .../main/resources/META-INF/spring.factories | 0 im-service-api/pom.xml | 21 + .../im-logic-user/pom.xml | 2 +- .../soim/logic/user/LogicUserApplication.java | 0 .../user/service/UserAuthServiceImpl.java | 0 .../logic/user/service/UserServiceImpl.java | 0 .../src/main/resources/application.yml | 0 im-service/im-router/pom.xml | 72 + .../sopod/soim/router/RouterApplication.java | 21 + .../router/service/AuthStoreServiceImpl.java | 34 + .../src/main/resources/application.yml | 25 + .../im-segment-id/pom.xml | 2 +- .../logic/segmentid/SegmentIdApplication.java | 0 .../logic/segmentid/config/SegmentConfig.java | 0 .../segmentid/mapper/SegmentIdMapper.java | 0 .../segmentid/model/entity/SegmentId.java | 0 .../service/SegmentIdServiceImpl.java | 2 +- .../logic/segmentid/util/RedisLockUtil.java | 0 .../src/main/resources/application.yml | 0 .../main/resources/mapper/SegmentIdMapper.xml | 0 .../test/SegmentIdApplicationTest.java | 0 {im-logic => im-service}/pom.xml | 4 +- pom.xml | 12 +- 56 files changed, 1590 insertions(+), 1893 deletions(-) delete mode 100644 doc/db/so-im-backup-20220402180208.chnr.json create mode 100644 im-common/src/main/java/net/sopod/soim/common/util/HashAlgorithms.java create mode 100644 im-common/src/main/java/net/sopod/soim/common/util/StringUtil.java create mode 100644 im-common/src/main/java/net/sopod/soim/common/util/TokenUtil.java create mode 100644 im-das-api/im-das-user-api/src/main/java/net/sopod/soim/das/user/api/config/LogicTables.java rename {im-logic-api => im-service-api}/im-logic-user-api/pom.xml (81%) rename {im-logic-api => im-service-api}/im-logic-user-api/src/main/java/net/sopod/soim/logic/user/auth/model/ImAuth.java (100%) rename {im-logic-api => im-service-api}/im-logic-user-api/src/main/java/net/sopod/soim/logic/user/auth/service/AuthService.java (100%) rename {im-logic-api => im-service-api}/im-logic-user-api/src/main/java/net/sopod/soim/logic/user/service/UserAuthService.java (100%) rename {im-logic-api => im-service-api}/im-logic-user-api/src/main/java/net/sopod/soim/logic/user/service/UserService.java (100%) rename {im-logic-api => im-service-api/im-router-api}/pom.xml (79%) create mode 100644 im-service-api/im-router-api/src/main/java/net/sopod/soim/router/api/model/CacheRes.java create mode 100644 im-service-api/im-router-api/src/main/java/net/sopod/soim/router/api/service/AccountStoreService.java create mode 100644 im-service-api/im-router-api/src/main/java/net/sopod/soim/router/api/service/AuthStoreService.java rename {im-logic-api => im-service-api}/im-segment-id-api/pom.xml (91%) rename {im-logic-api => im-service-api}/im-segment-id-api/src/main/java/net/sopod/soim/logic/api/segmentid/config/SegmentIdAutoConfiguration.java (93%) rename {im-logic-api => im-service-api}/im-segment-id-api/src/main/java/net/sopod/soim/logic/api/segmentid/core/Segment.java (100%) rename {im-logic-api => im-service-api}/im-segment-id-api/src/main/java/net/sopod/soim/logic/api/segmentid/core/SegmentIdGenerator.java (100%) rename {im-logic-api => im-service-api}/im-segment-id-api/src/main/java/net/sopod/soim/logic/api/segmentid/model/NextSegmentParam.java (100%) rename {im-logic-api => im-service-api}/im-segment-id-api/src/main/java/net/sopod/soim/logic/api/segmentid/model/SegmentRange.java (100%) rename {im-logic-api => im-service-api}/im-segment-id-api/src/main/java/net/sopod/soim/logic/api/segmentid/service/SegmentIdService.java (64%) rename {im-logic-api => im-service-api}/im-segment-id-api/src/main/resources/META-INF/spring-configuration-metadata.json (100%) rename {im-logic-api => im-service-api}/im-segment-id-api/src/main/resources/META-INF/spring.factories (100%) create mode 100644 im-service-api/pom.xml rename {im-logic => im-service}/im-logic-user/pom.xml (98%) rename {im-logic => im-service}/im-logic-user/src/main/java/net/sopod/soim/logic/user/LogicUserApplication.java (100%) rename {im-logic => im-service}/im-logic-user/src/main/java/net/sopod/soim/logic/user/service/UserAuthServiceImpl.java (100%) rename {im-logic => im-service}/im-logic-user/src/main/java/net/sopod/soim/logic/user/service/UserServiceImpl.java (100%) rename {im-logic => im-service}/im-logic-user/src/main/resources/application.yml (100%) create mode 100644 im-service/im-router/pom.xml create mode 100644 im-service/im-router/src/main/java/net/sopod/soim/router/RouterApplication.java create mode 100644 im-service/im-router/src/main/java/net/sopod/soim/router/service/AuthStoreServiceImpl.java create mode 100644 im-service/im-router/src/main/resources/application.yml rename {im-logic => im-service}/im-segment-id/pom.xml (98%) rename {im-logic => im-service}/im-segment-id/src/main/java/net/sopod/soim/logic/segmentid/SegmentIdApplication.java (100%) rename {im-logic => im-service}/im-segment-id/src/main/java/net/sopod/soim/logic/segmentid/config/SegmentConfig.java (100%) rename {im-logic => im-service}/im-segment-id/src/main/java/net/sopod/soim/logic/segmentid/mapper/SegmentIdMapper.java (100%) rename {im-logic => im-service}/im-segment-id/src/main/java/net/sopod/soim/logic/segmentid/model/entity/SegmentId.java (100%) rename {im-logic => im-service}/im-segment-id/src/main/java/net/sopod/soim/logic/segmentid/service/SegmentIdServiceImpl.java (99%) rename {im-logic => im-service}/im-segment-id/src/main/java/net/sopod/soim/logic/segmentid/util/RedisLockUtil.java (100%) rename {im-logic => im-service}/im-segment-id/src/main/resources/application.yml (100%) rename {im-logic => im-service}/im-segment-id/src/main/resources/mapper/SegmentIdMapper.xml (100%) rename {im-logic => im-service}/im-segment-id/src/test/java/net/sopod/soim/logic/segmentid/test/SegmentIdApplicationTest.java (100%) rename {im-logic => im-service}/pom.xml (81%) diff --git a/doc/db/so-im-backup-20220402180208.chnr.json b/doc/db/so-im-backup-20220402180208.chnr.json deleted file mode 100644 index ef4f192..0000000 --- a/doc/db/so-im-backup-20220402180208.chnr.json +++ /dev/null @@ -1,1783 +0,0 @@ -{ - "name": "so-im", - "describe": "sopod-soim", - "avatar": "", - "version": "3.5.7", - "createdTime": "2022-3-7 15:11:08", - "updatedTime": "2022-4-2 15:02:54", - "profile": { - "default": { - "db": "8FE7C65E-40EB-41B6-B60E-79063AFF6273", - "dbConn": "", - "entityInitFields": [ - { - "defKey": "TENANT_ID", - "defName": "租户号", - "comment": "", - "type": "", - "len": 32, - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": true, - "domain": "4159ACB8-2488-4350-9C3B-797336F7246E", - "refDict": "", - "uiHint": "", - "id": "AFCBBC02-ECE9-47B0-9680-9F0494CDCB57" - }, - { - "defKey": "REVISION", - "defName": "乐观锁", - "comment": "", - "domain": "4159ACB8-2488-4350-9C3B-797336F7246E", - "type": "", - "len": 32, - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": true, - "refDict": "", - "uiHint": "", - "id": "C6E4A7AF-BD29-444B-BF64-1D2D2EC37CF0" - }, - { - "defKey": "CREATED_BY", - "defName": "创建人", - "comment": "", - "domain": "4159ACB8-2488-4350-9C3B-797336F7246E", - "type": "", - "len": 32, - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": true, - "refDict": "", - "uiHint": "", - "id": "2D4573C1-B54E-4BDF-BBD4-F4C2FD1FC8C4" - }, - { - "defKey": "CREATED_TIME", - "defName": "创建时间", - "comment": "", - "domain": "4E3ADE61-41F4-4E74-8068-C1E543F9095C", - "type": "", - "len": "", - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": true, - "refDict": "", - "uiHint": "", - "id": "7AB9290E-20AA-4A3E-97E3-96C905B496D3" - }, - { - "defKey": "UPDATED_BY", - "defName": "更新人", - "comment": "", - "domain": "4159ACB8-2488-4350-9C3B-797336F7246E", - "type": "", - "len": 32, - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": true, - "refDict": "", - "uiHint": "", - "id": "C0C6343D-A720-4EB1-835A-28F7227B036F" - }, - { - "defKey": "UPDATED_TIME", - "defName": "更新时间", - "comment": "", - "domain": "4E3ADE61-41F4-4E74-8068-C1E543F9095C", - "type": "", - "len": "", - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": true, - "refDict": "", - "uiHint": "", - "id": "FEBBEA16-0F4D-4557-95E2-278C7C127BB9" - } - ], - "entityInitProperties": {} - }, - "sql": { - "delimiter": "" - }, - "dataTypeSupports": [ - { - "defKey": "MYSQL", - "id": "8FE7C65E-40EB-41B6-B60E-79063AFF6273" - }, - { - "defKey": "JAVA_MP", - "id": "1E385761-67B3-4B80-A194-E302E590E54E" - }, - { - "defKey": "PostgreSQL", - "id": "7A6E0A3E-F850-47CF-B50A-3E4E905E5F3A" - } - ], - "codeTemplates": [ - { - "type": "dbDDL", - "applyFor": "8FE7C65E-40EB-41B6-B60E-79063AFF6273", - "isDefault": true, - "createTable": "DROP TABLE IF EXISTS {{=it.entity.defKey}};\nCREATE TABLE {{=it.entity.defKey}}(\n{{ pkList = [] ; }}\n{{~it.entity.fields:field:index}}\n {{? field.primaryKey }}{{ pkList.push(field.defKey) }}{{?}}\n {{=field.defKey}} {{=field.type}}{{?field.len>0}}{{='('}}{{=field.len}}{{?field.scale>0}}{{=','}}{{=field.scale}}{{?}}{{=')'}}{{?}} {{= field.notNull ? 'NOT NULL' : '' }} {{= field.autoIncrement ? 'AUTO_INCREMENT' : '' }} {{= field.defaultValue ? it.func.join('DEFAULT',field.defaultValue,' ') : '' }} COMMENT '{{=it.func.join(field.defName,field.comment,';')}}' {{= index < it.entity.fields.length-1 ? ',' : ( pkList.length>0 ? ',' :'' ) }}\n{{~}}\n{{? pkList.length >0 }}\n PRIMARY KEY ({{~pkList:pkName:i}}{{= pkName }}{{= i0}}{{='('}}{{=field.len}}{{?field.scale>0}}{{=','}}{{=field.scale}}{{?}}{{=')'}}{{?}}{{= field.notNull ? ' NOT NULL' : '' }}{{= field.autoIncrement ? ' AUTO_INCREMENT' : '' }}{{= field.defaultValue ? it.func.join(' DEFAULT ',field.defaultValue,' ') : '' }}{{= index < it.entity.fields.length-1 ? ',' : ( pkList.length>0 ? ',' :'' ) }}\n{{~}}\n{{? pkList.length >0 }}\n PRIMARY KEY ({{~pkList:pkName:i}}{{= pkName }}{{= i {\n{{~it.entity.fields:field:index}}\n $blankline\n /** {{=it.func.join(field.defName,field.comment,';')}} */\n {{? field.primaryKey }}\n @TableId(value = \"{{=field.defKey}}\"{{? field.autoIncrement}}, type=IdType.AUTO{{?}})\n {{??}}\n @TableField(value = \"{{=field.defKey}}\")\n {{?}}\n private {{=field.type}} {{=it.func.camel(field.defKey,false)}};\n{{~}}\n$blankline\n}\n$blankline" - }, - { - "type": "dbDDL", - "applyFor": "dictSQLTemplate", - "isDefault": true, - "content": "/* 插入字典总表[{{=it.dict.defKey}}-{{=it.dict.defName}}] */\nINSERT INTO SYS_DICT(KEY_,LABEL,INTRO,REVISION) VALUES('{{=it.dict.defKey}}','{{=it.dict.defName}}','{{=it.dict.intro}}',1);\n/* 插入字典明细表 */\n{{~it.dict.items:item:index}}\nINSERT INTO SYS_DICT_ITEM(DICT_KEY,KEY_,LABEL,SORT_,INTRO,REVISION) VALUES('{{=it.dict.defKey}}','{{=item.defKey}}','{{=item.defName}}','{{=item.sort}}','{{=item.intro}}',1);\n{{~}}" - } - ], - "generatorDoc": { - "docTemplate": "" - }, - "relationFieldSize": 30, - "uiHint": [ - { - "defKey": "Input", - "defName": "普通输入框", - "id": "6DD45F73-AE5E-426A-9C51-7E6CFABE23F6" - }, - { - "defKey": "Select", - "defName": "下拉输入框", - "id": "A1EA6B0B-E0EC-4A2A-8B22-9B7522DE1F0E" - }, - { - "defKey": "CheckBox", - "defName": "复选框", - "id": "8AD07131-FDFB-4932-B4EF-20FDA92C6F04" - }, - { - "defKey": "RadioBox", - "defName": "单选框", - "id": "3A4C23CC-E68F-43F9-97C1-7307AA638D1F" - }, - { - "defKey": "Double", - "defName": "小数输入", - "id": "33B230A9-C60E-417D-8C35-EE9130EE3D1D" - }, - { - "defKey": "Integer", - "defName": "整数输入", - "id": "2AFFF582-7624-4CE1-A6A8-A88BB0E5EBBF" - }, - { - "defKey": "Money", - "defName": "金额输入", - "id": "5E216947-0E7F-4488-95EB-6F6A51F49D96" - }, - { - "defKey": "Date", - "defName": "日期输入", - "id": "97980CB0-93F7-477C-A744-31D81A76CF06" - }, - { - "defKey": "DataYearMonth", - "defName": "年月输入", - "id": "6B1ACA65-DD29-4886-BC28-4E032FA6A63B" - }, - { - "defKey": "Text", - "defName": "长文本输入", - "id": "FCBB76EC-4E91-4C9A-A24C-8C1BC98A8C4B" - }, - { - "defKey": "RichText", - "defName": "富文本输入", - "id": "9965DCFB-54BE-4C5A-9518-DF09D4E58140" - } - ], - "menuWidth": "244px" - }, - "entities": [ - { - "id": "373ED1A7-A39C-47F4-89AF-46992DD3CA83", - "defKey": "t_w_water_order", - "defName": "订单信息", - "comment": "", - "properties": {}, - "fields": [ - { - "rowNo": 1, - "defKey": "order_no", - "defName": "系统订单号", - "comment": "", - "domain": "4159ACB8-2488-4350-9C3B-797336F7246E", - "type": "varchar", - "len": "", - "scale": "", - "primaryKey": true, - "notNull": true, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "typeFullName": "varchar(32)", - "primaryKeyName": "√", - "notNullName": "", - "autoIncrementName": "", - "refDict": "", - "id": "BA550922-0749-41FB-B23D-6738BA5DE665" - }, - { - "rowNo": 2, - "defKey": "order_type", - "defName": "订单类型(type=1加价费订单 )", - "comment": "", - "domain": "CBE2B93C-DD97-4950-86A8-B583971583C8", - "type": "int", - "len": "", - "scale": "", - "primaryKey": null, - "notNull": null, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "typeFullName": "int", - "primaryKeyName": "", - "notNullName": "", - "autoIncrementName": "", - "refDict": "", - "id": "7F07DB81-F6C1-4391-B672-B9A519870619" - }, - { - "defKey": "ref_id", - "defName": "关联编号(缴费数据)", - "comment": "", - "type": "VARCHAR", - "len": 32, - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "refDict": "", - "domain": "", - "id": "F41FE343-C68D-461C-B0CF-53D7AD321957" - }, - { - "defKey": "prod_name", - "defName": "商品名称", - "comment": "", - "type": "NVARCHAR", - "len": 128, - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "refDict": "", - "domain": "", - "id": "92D8161F-42EE-468B-84BD-4EC3F7211088" - }, - { - "rowNo": 3, - "defKey": "order_money", - "defName": "订单金额", - "comment": "", - "domain": "", - "type": "decimal", - "len": 12, - "scale": 2, - "primaryKey": null, - "notNull": null, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "typeFullName": "decimal(12,2)", - "primaryKeyName": "", - "notNullName": "", - "autoIncrementName": "", - "refDict": "", - "id": "FA153E93-8959-42A0-B98A-FF4320A82778" - }, - { - "rowNo": 4, - "defKey": "pay_money", - "defName": "实付金额", - "comment": "", - "domain": "", - "type": "decimal", - "len": 12, - "scale": 2, - "primaryKey": null, - "notNull": null, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "typeFullName": "decimal(12,2)", - "primaryKeyName": "", - "notNullName": "", - "autoIncrementName": "", - "refDict": "", - "id": "52F3B778-6F28-41FB-ADF8-8FA99CEF5617" - }, - { - "rowNo": 5, - "defKey": "refund_money", - "defName": "实退金额", - "comment": "", - "domain": "", - "type": "decimal", - "len": 12, - "scale": 2, - "primaryKey": null, - "notNull": null, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "typeFullName": "decimal(12,2)", - "primaryKeyName": "", - "notNullName": "", - "autoIncrementName": "", - "refDict": "", - "id": "82EA738A-9499-43FD-A173-09B9CA81885D" - }, - { - "rowNo": 6, - "defKey": "status", - "defName": "账单状态(1待支付,2已支付,3已取消,4已退款,5部分退款)", - "comment": "", - "domain": "CBE2B93C-DD97-4950-86A8-B583971583C8", - "type": "int", - "len": "", - "scale": "", - "primaryKey": null, - "notNull": null, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "typeFullName": "int", - "primaryKeyName": "", - "notNullName": "", - "autoIncrementName": "", - "refDict": "", - "id": "D7A34977-ED3D-47B4-9472-D4644E297580" - }, - { - "defKey": "pay_status", - "defName": "付款状态(0.已失败,1.未付款,2.已付款,3.不确定待查询,4.待轮询)", - "comment": "", - "type": "int", - "len": "", - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "domain": "CBE2B93C-DD97-4950-86A8-B583971583C8", - "id": "8AB0F3E7-409D-49F0-90C8-2135A6A37F29" - }, - { - "defKey": "trade_id", - "defName": "建行交易流水号", - "comment": "", - "type": "VARCHAR", - "len": 32, - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "refDict": "", - "domain": "", - "id": "4E49B24A-3074-494E-B72A-40B7C0D4D857" - }, - { - "rowNo": 7, - "defKey": "platform_pay_no", - "defName": "支付平台流水号(wx/alipay)", - "comment": "", - "domain": "", - "type": "varchar", - "len": 64, - "scale": "", - "primaryKey": null, - "notNull": null, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "typeFullName": "varchar(64)", - "primaryKeyName": "", - "notNullName": "", - "autoIncrementName": "", - "refDict": "", - "id": "B4044C3A-E17D-415C-BBAC-7A58A2140985" - }, - { - "rowNo": 8, - "defKey": "pay_time", - "defName": "支付完成时间", - "comment": "", - "domain": "4E3ADE61-41F4-4E74-8068-C1E543F9095C", - "type": "datetime", - "len": "", - "scale": "", - "primaryKey": null, - "notNull": null, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "typeFullName": "datetime", - "primaryKeyName": "", - "notNullName": "", - "autoIncrementName": "", - "refDict": "", - "id": "497A89D1-ED7C-46D9-BE21-D938BCEAE58D" - }, - { - "rowNo": 9, - "defKey": "refund_time", - "defName": "退款完成时间", - "comment": "", - "domain": "4E3ADE61-41F4-4E74-8068-C1E543F9095C", - "type": "datetime", - "len": "", - "scale": "", - "primaryKey": null, - "notNull": null, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "typeFullName": "datetime", - "primaryKeyName": "", - "notNullName": "", - "autoIncrementName": "", - "refDict": "", - "id": "CAEDF742-75BA-4F45-8BA1-18348557AECC" - }, - { - "rowNo": 10, - "defKey": "create_time", - "defName": "订单创建时间", - "comment": "", - "domain": "4E3ADE61-41F4-4E74-8068-C1E543F9095C", - "type": "datetime", - "len": "", - "scale": "", - "primaryKey": null, - "notNull": null, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "typeFullName": "datetime", - "primaryKeyName": "", - "notNullName": "", - "autoIncrementName": "", - "refDict": "", - "id": "E9736BCA-55FA-42A2-AFA6-CAA5EC355901" - }, - { - "rowNo": 11, - "defKey": "remark", - "defName": "订单备注", - "comment": "", - "domain": "", - "type": "nvarchar", - "len": 32, - "scale": "", - "primaryKey": null, - "notNull": null, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "typeFullName": "nvarchar(32)", - "primaryKeyName": "", - "notNullName": "", - "autoIncrementName": "", - "refDict": "", - "id": "B1548CA2-84D2-4E64-AEA8-BA825F6E5AFF" - }, - { - "defKey": "receipt_money", - "defName": "平台实收金额", - "comment": "", - "type": "decimal", - "len": 12, - "scale": 2, - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "id": "4A752610-041F-4A72-8FBE-27137257757B" - }, - { - "defKey": "charge_money", - "defName": "手续费(实付减实收)", - "comment": "", - "type": "decimal", - "len": 12, - "scale": 2, - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "id": "864F6CE2-3491-47FE-A26D-2D522D235137" - }, - { - "defKey": "third_trade_no", - "defName": "第三方订单号(支付宝/微信)", - "comment": "", - "type": "varchar", - "len": 100, - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": true, - "id": "06F2B2D8-F4C8-4E9C-B63B-C0DE404E9194" - }, - { - "defKey": "pay_channel", - "defName": "支付渠道(按支付方式查询详情)", - "comment": "", - "type": "varchar", - "len": "", - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "domain": "4159ACB8-2488-4350-9C3B-797336F7246E", - "id": "405632DF-3944-4756-BC6D-131754E43049" - }, - { - "defKey": "pay_channel_name", - "defName": "支付渠道名称", - "comment": "", - "type": "nvarchar", - "len": 64, - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "id": "C5B92F02-496D-4BBB-94B8-788B9D32F20C" - }, - { - "defKey": "pay_way", - "defName": "付款方式(1.龙支付,2.微信,3.支付宝,4.银联)", - "comment": "", - "type": "int", - "len": "", - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "domain": "CBE2B93C-DD97-4950-86A8-B583971583C8", - "id": "4A77CDA9-2090-4861-AF0D-083C8661A470" - }, - { - "defKey": "pay_way_name", - "defName": "付款类型名称", - "comment": "", - "type": "nvarchar", - "len": 64, - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "id": "6F6946AC-6938-4766-AC3D-901C9D3911C3" - }, - { - "defKey": "pay_qr_code", - "defName": "被扫支付付款码(轮询查询结果时用)", - "comment": "", - "type": "varchar", - "len": 512, - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "id": "86D9ABDA-C602-4ABB-AAFC-0F2C1CCF469E" - }, - { - "defKey": "error_code", - "defName": "错误码", - "comment": "", - "type": "varchar", - "len": "", - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": true, - "domain": "4159ACB8-2488-4350-9C3B-797336F7246E", - "id": "D0B091E6-22B0-4E0D-9B0C-255CB8CCF120" - }, - { - "defKey": "error_msg", - "defName": "失败消息", - "comment": "", - "type": "nvarchar", - "len": 128, - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": true, - "id": "D31A28C0-5585-468C-8C94-ED37CCA635D9" - }, - { - "defKey": "open_id", - "defName": "客户识别号", - "comment": "", - "type": "varchar", - "len": 128, - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "id": "15F7A05D-CAF2-478B-A1CE-854D90293921" - }, - { - "defKey": "sub_open_id", - "defName": "用户子标识(微信)", - "comment": "", - "type": "varchar", - "len": 128, - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": true, - "id": "8ED56900-51B3-4D3E-82E7-5F5F7E89F5DE" - } - ], - "indexes": [ - { - "defKey": "Key_1", - "unique": false, - "defName": "Key_1", - "comment": "", - "fields": [ - { - "ascOrDesc": null, - "id": "27E2B60B-000A-43B5-9921-13D27EF2CCCE", - "fieldDefKey": "BA550922-0749-41FB-B23D-6738BA5DE665" - } - ], - "id": "BFC0EC49-F132-4B03-8D91-937A34B05227" - } - ], - "nameTemplate": "{defKey}[{defName}]", - "headers": [ - { - "freeze": false, - "refKey": "hideInGraph", - "hideInGraph": true - }, - { - "freeze": true, - "refKey": "defKey", - "hideInGraph": false - }, - { - "freeze": true, - "refKey": "defName", - "hideInGraph": false - }, - { - "freeze": false, - "refKey": "primaryKey", - "hideInGraph": false - }, - { - "freeze": false, - "refKey": "notNull", - "hideInGraph": true - }, - { - "freeze": false, - "refKey": "autoIncrement", - "hideInGraph": true - }, - { - "freeze": false, - "refKey": "domain", - "hideInGraph": true - }, - { - "freeze": false, - "refKey": "type", - "hideInGraph": false - }, - { - "freeze": false, - "refKey": "len", - "hideInGraph": false - }, - { - "freeze": false, - "refKey": "scale", - "hideInGraph": false - }, - { - "freeze": false, - "refKey": "comment", - "hideInGraph": true - }, - { - "freeze": false, - "refKey": "refDict", - "hideInGraph": true - }, - { - "freeze": false, - "refKey": "defaultValue", - "hideInGraph": true - }, - { - "freeze": false, - "refKey": "isStandard", - "hideInGraph": false - }, - { - "freeze": false, - "refKey": "uiHint", - "hideInGraph": true - } - ], - "correlations": [] - }, - { - "id": "A741CFD3-2ED1-4994-997E-A5A0E2FAE0F0", - "defKey": "im_user", - "defName": "用户表", - "comment": "", - "properties": {}, - "nameTemplate": "{defKey}[{defName}]", - "headers": [ - { - "freeze": false, - "refKey": "hideInGraph", - "hideInGraph": true - }, - { - "freeze": true, - "refKey": "defKey", - "hideInGraph": false - }, - { - "freeze": true, - "refKey": "defName", - "hideInGraph": false - }, - { - "freeze": false, - "refKey": "primaryKey", - "hideInGraph": false - }, - { - "freeze": false, - "refKey": "notNull", - "hideInGraph": true - }, - { - "freeze": false, - "refKey": "autoIncrement", - "hideInGraph": true - }, - { - "freeze": false, - "refKey": "domain", - "hideInGraph": true - }, - { - "freeze": false, - "refKey": "type", - "hideInGraph": false - }, - { - "freeze": false, - "refKey": "len", - "hideInGraph": false - }, - { - "freeze": false, - "refKey": "scale", - "hideInGraph": false - }, - { - "freeze": false, - "refKey": "comment", - "hideInGraph": true - }, - { - "freeze": false, - "refKey": "refDict", - "hideInGraph": true - }, - { - "freeze": false, - "refKey": "defaultValue", - "hideInGraph": true - }, - { - "freeze": false, - "refKey": "isStandard", - "hideInGraph": false - }, - { - "freeze": false, - "refKey": "uiHint", - "hideInGraph": true - } - ], - "fields": [ - { - "defKey": "id", - "defName": "id", - "comment": "", - "type": "", - "len": "", - "scale": "", - "primaryKey": true, - "notNull": true, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "refDict": "", - "domain": "1E5537DF-B204-49BC-AC1D-457BC6DEE707", - "id": "F06C0F3B-A0F1-47EC-80E5-F57ABD41984F" - }, - { - "defKey": "username", - "defName": "用户名", - "comment": "", - "type": "", - "len": "", - "scale": "", - "primaryKey": false, - "notNull": true, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "refDict": "", - "domain": "BB0241B4-A9DB-46CB-AB7D-EA6DDA6A02D6", - "id": "BB5539DD-5A96-4729-AF84-205D99479F51" - }, - { - "defKey": "password", - "defName": "密码", - "comment": "", - "type": "", - "len": "", - "scale": "", - "primaryKey": false, - "notNull": true, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "refDict": "", - "domain": "BB0241B4-A9DB-46CB-AB7D-EA6DDA6A02D6", - "id": "E5070C9C-9C16-470A-98AE-82B640B1324C" - }, - { - "defKey": "phone", - "defName": "手机号", - "comment": "", - "type": "", - "len": "", - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "refDict": "", - "domain": "CC17D845-14BD-443E-B780-AC2C9FF59306", - "id": "02FB8316-D443-4D08-A65C-4350B7535925" - }, - { - "defKey": "create_time", - "defName": "创建时间", - "comment": "", - "type": "", - "len": "", - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "refDict": "", - "domain": "4E3ADE61-41F4-4E74-8068-C1E543F9095C", - "id": "11E5C3FA-B5B8-4E6C-A120-78385F09D7C1" - }, - { - "defKey": "last_login_time", - "defName": "最后登录时间", - "comment": "", - "type": "", - "len": "", - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "refDict": "", - "domain": "4E3ADE61-41F4-4E74-8068-C1E543F9095C", - "id": "A33DF9A6-5122-4CB0-95BE-57D88B09DD5C" - }, - { - "defKey": "last_active_time", - "defName": "最后活跃时间", - "comment": "", - "type": "", - "len": "", - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "refDict": "", - "domain": "4E3ADE61-41F4-4E74-8068-C1E543F9095C", - "id": "AE4C5769-E1BE-4DE8-951E-D045A30187F9" - } - ], - "correlations": [], - "indexes": [] - }, - { - "id": "E79C9C4C-FFC3-44BB-BD98-4F44F528B4B8", - "defKey": "im_segment_id", - "defName": "分段id", - "comment": "", - "properties": {}, - "nameTemplate": "{defKey}[{defName}]", - "headers": [ - { - "freeze": false, - "refKey": "hideInGraph", - "hideInGraph": true - }, - { - "freeze": true, - "refKey": "defKey", - "hideInGraph": false - }, - { - "freeze": true, - "refKey": "defName", - "hideInGraph": false - }, - { - "freeze": false, - "refKey": "primaryKey", - "hideInGraph": false - }, - { - "freeze": false, - "refKey": "notNull", - "hideInGraph": true - }, - { - "freeze": false, - "refKey": "autoIncrement", - "hideInGraph": true - }, - { - "freeze": false, - "refKey": "domain", - "hideInGraph": true - }, - { - "freeze": false, - "refKey": "type", - "hideInGraph": false - }, - { - "freeze": false, - "refKey": "len", - "hideInGraph": false - }, - { - "freeze": false, - "refKey": "scale", - "hideInGraph": false - }, - { - "freeze": false, - "refKey": "comment", - "hideInGraph": true - }, - { - "freeze": false, - "refKey": "refDict", - "hideInGraph": true - }, - { - "freeze": false, - "refKey": "defaultValue", - "hideInGraph": true - }, - { - "freeze": false, - "refKey": "isStandard", - "hideInGraph": false - }, - { - "freeze": false, - "refKey": "uiHint", - "hideInGraph": true - } - ], - "fields": [ - { - "defKey": "biz_tag", - "defName": "业务标签", - "comment": "", - "type": "", - "len": "", - "scale": "", - "primaryKey": true, - "notNull": true, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "refDict": "", - "domain": "BB0241B4-A9DB-46CB-AB7D-EA6DDA6A02D6", - "id": "F6D445F1-ADD3-4A28-AFDA-2606A912C007" - }, - { - "defKey": "current_id", - "defName": "当前id值", - "comment": "", - "type": "", - "len": "", - "scale": "", - "primaryKey": false, - "notNull": true, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "refDict": "", - "domain": "1E5537DF-B204-49BC-AC1D-457BC6DEE707", - "id": "3E9E2CBB-B458-49D5-B6DC-454A11FB9633" - }, - { - "defKey": "init_step", - "defName": "业务标签初始步长", - "comment": "", - "type": "", - "len": "", - "scale": "", - "primaryKey": false, - "notNull": true, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "refDict": "", - "domain": "1E5537DF-B204-49BC-AC1D-457BC6DEE707", - "id": "38C65486-2A4E-4862-9875-EFE113FFD627" - }, - { - "defKey": "create_time", - "defName": "创建时间", - "comment": "", - "type": "", - "len": "", - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "refDict": "", - "domain": "4E3ADE61-41F4-4E74-8068-C1E543F9095C", - "id": "87279682-D6B5-4BA0-9BE5-03FC436313C9" - }, - { - "defKey": "update_time", - "defName": "更新时间", - "comment": "", - "type": "", - "len": "", - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "refDict": "", - "domain": "4E3ADE61-41F4-4E74-8068-C1E543F9095C", - "id": "1F373AF6-4C60-4AC4-B75F-604B91AEC0C6" - }, - { - "defKey": "version", - "defName": "版本号", - "comment": "", - "type": "", - "len": "", - "scale": "", - "primaryKey": false, - "notNull": true, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "refDict": "", - "domain": "1E5537DF-B204-49BC-AC1D-457BC6DEE707", - "id": "D376659D-0FFA-4D1A-AA3C-0C5CBA66B41B" - } - ], - "correlations": [], - "indexes": [] - }, - { - "id": "A843E8FC-C8E8-4F0A-8EB0-C5C104BE241F", - "defKey": "im_segment_fragment", - "defName": "分段id碎片id段(id端回收)", - "comment": "", - "properties": {}, - "nameTemplate": "{defKey}[{defName}]", - "headers": [ - { - "freeze": false, - "refKey": "hideInGraph", - "hideInGraph": true - }, - { - "freeze": true, - "refKey": "defKey", - "hideInGraph": false - }, - { - "freeze": true, - "refKey": "defName", - "hideInGraph": false - }, - { - "freeze": false, - "refKey": "primaryKey", - "hideInGraph": false - }, - { - "freeze": false, - "refKey": "notNull", - "hideInGraph": true - }, - { - "freeze": false, - "refKey": "autoIncrement", - "hideInGraph": true - }, - { - "freeze": false, - "refKey": "domain", - "hideInGraph": true - }, - { - "freeze": false, - "refKey": "type", - "hideInGraph": false - }, - { - "freeze": false, - "refKey": "len", - "hideInGraph": false - }, - { - "freeze": false, - "refKey": "scale", - "hideInGraph": false - }, - { - "freeze": false, - "refKey": "comment", - "hideInGraph": true - }, - { - "freeze": false, - "refKey": "refDict", - "hideInGraph": true - }, - { - "freeze": false, - "refKey": "defaultValue", - "hideInGraph": true - }, - { - "freeze": false, - "refKey": "isStandard", - "hideInGraph": false - }, - { - "freeze": false, - "refKey": "uiHint", - "hideInGraph": true - } - ], - "fields": [ - { - "defKey": "id", - "defName": "主键id", - "comment": "", - "type": "", - "len": "", - "scale": "", - "primaryKey": true, - "notNull": true, - "autoIncrement": true, - "defaultValue": "", - "hideInGraph": false, - "refDict": "", - "domain": "1E5537DF-B204-49BC-AC1D-457BC6DEE707", - "id": "32D9CFBB-3E32-4614-B576-E0E062E8FBF6" - }, - { - "defKey": "biz_tag", - "defName": "业务标签", - "comment": "", - "type": "", - "len": "", - "scale": "", - "primaryKey": false, - "notNull": true, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "refDict": "", - "domain": "BB0241B4-A9DB-46CB-AB7D-EA6DDA6A02D6", - "id": "031DE904-D768-4F8B-958C-B97213421A46" - }, - { - "defKey": "min_id", - "defName": "id段最小值", - "comment": "", - "type": "", - "len": "", - "scale": "", - "primaryKey": false, - "notNull": true, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "refDict": "", - "domain": "1E5537DF-B204-49BC-AC1D-457BC6DEE707", - "id": "BF29BB31-2AA3-4CF3-BD29-304DA6F60F97" - }, - { - "defKey": "end_id", - "defName": "id段最大值", - "comment": "", - "type": "", - "len": "", - "scale": "", - "primaryKey": false, - "notNull": true, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "refDict": "", - "domain": "1E5537DF-B204-49BC-AC1D-457BC6DEE707", - "id": "27254611-5E86-4EAA-BADA-AE78CAD14528" - }, - { - "defKey": "begin_id", - "defName": "id段当前值", - "comment": "", - "type": "", - "len": "", - "scale": "", - "primaryKey": false, - "notNull": true, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "refDict": "", - "domain": "1E5537DF-B204-49BC-AC1D-457BC6DEE707", - "id": "BEBCA2FF-01B5-4834-8218-7F7051250C3D" - }, - { - "defKey": "create_time", - "defName": "创建时间", - "comment": "", - "type": "", - "len": "", - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "refDict": "", - "domain": "72DD10F8-60AE-4F2A-89E1-D69C51B30849", - "id": "4989C582-86B0-4011-A3D7-A2C43FFC3F76" - }, - { - "defKey": "update_time", - "defName": "更新时间", - "comment": "", - "type": "", - "len": "", - "scale": "", - "primaryKey": false, - "notNull": false, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "refDict": "", - "domain": "72DD10F8-60AE-4F2A-89E1-D69C51B30849", - "id": "9DC77CD9-4006-42B2-9F63-13B309BC7BA1" - }, - { - "defKey": "version", - "defName": "版本号", - "comment": "", - "type": "", - "len": "", - "scale": "", - "primaryKey": false, - "notNull": true, - "autoIncrement": false, - "defaultValue": "", - "hideInGraph": false, - "refDict": "", - "domain": "1E5537DF-B204-49BC-AC1D-457BC6DEE707", - "id": "C83AAC89-59CB-49E9-8C8F-2F5796BF65FE" - } - ], - "correlations": [], - "indexes": [] - } - ], - "views": [], - "dicts": [], - "viewGroups": [], - "dataTypeMapping": { - "referURL": "", - "mappings": [ - { - "defKey": "string", - "defName": "字串", - "id": "4D31EB2E-C825-46FA-BDB3-186AA546EF7F", - "8FE7C65E-40EB-41B6-B60E-79063AFF6273": "VARCHAR", - "7B3BDD41-C634-4E65-934C-2D054A42299D": "VARCHAR2", - "89CD9C73-4D3F-4863-8386-B42B1FBDEA15": "VARCHAR", - "7A6E0A3E-F850-47CF-B50A-3E4E905E5F3A": "VARCHAR", - "C21E8B1D-CFCD-4D19-A5F7-45F07240AD78": "VARCHAR", - "E57CD9FE-D44B-4673-947E-E5E3967E5EAB": "VARCHAR2", - "E2356C99-AEBA-42D1-AB23-8041A62AEC16": "VARCHAR", - "831AFF3D-F477-4E06-819B-3C1739E321C8": "VARCHAR", - "797D129F-7619-4FF3-8595-DB942D773571": "STRING", - "1E385761-67B3-4B80-A194-E302E590E54E": "String", - "F4F01E06-3181-4CCC-A561-6111A936862C": "string", - "7565A719-3C24-4064-8FEE-DC55725E9569": "TEXT" - }, - { - "defKey": "double", - "defName": "小数", - "id": "0DA23D3F-6357-41DB-BD13-64472B3B2EED", - "8FE7C65E-40EB-41B6-B60E-79063AFF6273": "DECIMAL", - "7B3BDD41-C634-4E65-934C-2D054A42299D": "DECIMAL", - "89CD9C73-4D3F-4863-8386-B42B1FBDEA15": "DECIMAL", - "7A6E0A3E-F850-47CF-B50A-3E4E905E5F3A": "NUMERIC", - "C21E8B1D-CFCD-4D19-A5F7-45F07240AD78": "DECIMAL", - "E57CD9FE-D44B-4673-947E-E5E3967E5EAB": "DECIMAL", - "E2356C99-AEBA-42D1-AB23-8041A62AEC16": "NUMERIC", - "831AFF3D-F477-4E06-819B-3C1739E321C8": "NUMERIC", - "797D129F-7619-4FF3-8595-DB942D773571": "DOUBLE", - "1E385761-67B3-4B80-A194-E302E590E54E": "Double", - "F4F01E06-3181-4CCC-A561-6111A936862C": "decimal", - "7565A719-3C24-4064-8FEE-DC55725E9569": "REAL" - }, - { - "defKey": "int", - "defName": "整数", - "id": "E522C027-26AA-45E3-9861-A78B6C658EED", - "8FE7C65E-40EB-41B6-B60E-79063AFF6273": "INT", - "7B3BDD41-C634-4E65-934C-2D054A42299D": "INT", - "89CD9C73-4D3F-4863-8386-B42B1FBDEA15": "INT", - "7A6E0A3E-F850-47CF-B50A-3E4E905E5F3A": "INTEGER", - "C21E8B1D-CFCD-4D19-A5F7-45F07240AD78": "INT", - "E57CD9FE-D44B-4673-947E-E5E3967E5EAB": "INTEGER", - "E2356C99-AEBA-42D1-AB23-8041A62AEC16": "INTEGER", - "831AFF3D-F477-4E06-819B-3C1739E321C8": "INT4", - "797D129F-7619-4FF3-8595-DB942D773571": "INT", - "1E385761-67B3-4B80-A194-E302E590E54E": "Integer", - "F4F01E06-3181-4CCC-A561-6111A936862C": "int", - "7565A719-3C24-4064-8FEE-DC55725E9569": "INTEGER" - }, - { - "defKey": "date", - "defName": "日期", - "id": "79417FE2-7972-4A82-98C7-2EAB557884A5", - "8FE7C65E-40EB-41B6-B60E-79063AFF6273": "DATETIME", - "7B3BDD41-C634-4E65-934C-2D054A42299D": "DATE", - "89CD9C73-4D3F-4863-8386-B42B1FBDEA15": "DATETIME", - "7A6E0A3E-F850-47CF-B50A-3E4E905E5F3A": "DATE", - "C21E8B1D-CFCD-4D19-A5F7-45F07240AD78": "DATE", - "E57CD9FE-D44B-4673-947E-E5E3967E5EAB": "DATE", - "E2356C99-AEBA-42D1-AB23-8041A62AEC16": "DATE", - "831AFF3D-F477-4E06-819B-3C1739E321C8": "DATE", - "797D129F-7619-4FF3-8595-DB942D773571": "DATETIME", - "1E385761-67B3-4B80-A194-E302E590E54E": "Date", - "F4F01E06-3181-4CCC-A561-6111A936862C": "DateTime", - "7565A719-3C24-4064-8FEE-DC55725E9569": "NUMERIC" - }, - { - "defKey": "bytes", - "defName": "二进制", - "id": "6B786A15-5962-48EC-BAC5-3D6E9882C985", - "8FE7C65E-40EB-41B6-B60E-79063AFF6273": "BLOB", - "7B3BDD41-C634-4E65-934C-2D054A42299D": "BLOB", - "89CD9C73-4D3F-4863-8386-B42B1FBDEA15": "VARBINARY", - "7A6E0A3E-F850-47CF-B50A-3E4E905E5F3A": "BYTEA", - "C21E8B1D-CFCD-4D19-A5F7-45F07240AD78": "BLOB", - "E57CD9FE-D44B-4673-947E-E5E3967E5EAB": "BLOB", - "E2356C99-AEBA-42D1-AB23-8041A62AEC16": "BYTEA", - "831AFF3D-F477-4E06-819B-3C1739E321C8": "BYTEA", - "797D129F-7619-4FF3-8595-DB942D773571": "BINARY", - "1E385761-67B3-4B80-A194-E302E590E54E": "byte[]", - "F4F01E06-3181-4CCC-A561-6111A936862C": "byte[]", - "7565A719-3C24-4064-8FEE-DC55725E9569": "NONE" - }, - { - "defKey": "largeText", - "defName": "大文本", - "id": "852F9202-C5CB-4A9A-9064-26304FF36CF2", - "8FE7C65E-40EB-41B6-B60E-79063AFF6273": "TEXT", - "7B3BDD41-C634-4E65-934C-2D054A42299D": "CLOB", - "89CD9C73-4D3F-4863-8386-B42B1FBDEA15": "TEXT", - "7A6E0A3E-F850-47CF-B50A-3E4E905E5F3A": "TEXT", - "C21E8B1D-CFCD-4D19-A5F7-45F07240AD78": "CLOB", - "E57CD9FE-D44B-4673-947E-E5E3967E5EAB": "CLOB", - "E2356C99-AEBA-42D1-AB23-8041A62AEC16": "TEXT", - "831AFF3D-F477-4E06-819B-3C1739E321C8": "TEXT", - "797D129F-7619-4FF3-8595-DB942D773571": "STRING", - "1E385761-67B3-4B80-A194-E302E590E54E": "String", - "F4F01E06-3181-4CCC-A561-6111A936862C": "string", - "7565A719-3C24-4064-8FEE-DC55725E9569": "TEXT" - }, - { - "defKey": "bigint", - "defName": "大整数", - "id": "4CAF2CA7-EEA7-42C2-8FF5-746D6F03D923", - "8FE7C65E-40EB-41B6-B60E-79063AFF6273": "bigint", - "1E385761-67B3-4B80-A194-E302E590E54E": "Long", - "7A6E0A3E-F850-47CF-B50A-3E4E905E5F3A": "bigint" - } - ] - }, - "domains": [ - { - "defKey": "DefaultString", - "defName": "默认字串", - "applyFor": "4D31EB2E-C825-46FA-BDB3-186AA546EF7F", - "len": 255, - "scale": "", - "uiHint": "", - "id": "72DD10F8-60AE-4F2A-89E1-D69C51B30849" - }, - { - "defKey": "IdOrKey", - "defName": "主键标识", - "applyFor": "4D31EB2E-C825-46FA-BDB3-186AA546EF7F", - "len": 32, - "scale": "", - "uiHint": "", - "id": "4159ACB8-2488-4350-9C3B-797336F7246E" - }, - { - "defKey": "Name", - "defName": "名称", - "applyFor": "4D31EB2E-C825-46FA-BDB3-186AA546EF7F", - "len": 90, - "scale": "", - "uiHint": "", - "id": "0EE54036-962D-4166-A613-16F67228D05C" - }, - { - "defKey": "Int", - "defName": "整数", - "applyFor": "E522C027-26AA-45E3-9861-A78B6C658EED", - "len": "", - "scale": "", - "uiHint": "", - "id": "CBE2B93C-DD97-4950-86A8-B583971583C8" - }, - { - "defKey": "Double", - "defName": "小数", - "applyFor": "0DA23D3F-6357-41DB-BD13-64472B3B2EED", - "len": 24, - "scale": 6, - "uiHint": "", - "id": "F1708A7E-8DDE-47BA-94CC-489838C22267" - }, - { - "defKey": "Money", - "defName": "金额", - "applyFor": "0DA23D3F-6357-41DB-BD13-64472B3B2EED", - "len": 24, - "scale": 6, - "uiHint": "", - "id": "B31176E9-883C-4F95-ACB2-3C5BD307473C" - }, - { - "defKey": "DateTime", - "defName": "日期时间", - "applyFor": "79417FE2-7972-4A82-98C7-2EAB557884A5", - "len": "", - "scale": "", - "uiHint": "", - "id": "4E3ADE61-41F4-4E74-8068-C1E543F9095C" - }, - { - "defKey": "YesNo", - "defName": "是否", - "applyFor": "4D31EB2E-C825-46FA-BDB3-186AA546EF7F", - "len": "1", - "scale": "", - "uiHint": "", - "id": "8996EFF3-7388-4F6B-932F-4328F6B8715F" - }, - { - "defKey": "Dict", - "defName": "数据字典", - "applyFor": "4D31EB2E-C825-46FA-BDB3-186AA546EF7F", - "len": "32", - "scale": "", - "uiHint": "", - "id": "498C9D3B-26B1-4914-9E4A-616B5D761BDE" - }, - { - "defKey": "DescText", - "defName": "描述文本", - "applyFor": "4D31EB2E-C825-46FA-BDB3-186AA546EF7F", - "len": "900", - "scale": "", - "uiHint": "", - "id": "8FF076E7-81A9-4500-A0EA-870639178F2D" - }, - { - "defKey": "bigint", - "defName": "大整数", - "applyFor": "4CAF2CA7-EEA7-42C2-8FF5-746D6F03D923", - "len": "", - "scale": "", - "uiHint": "", - "id": "1E5537DF-B204-49BC-AC1D-457BC6DEE707" - }, - { - "defKey": "string128", - "defName": "字串128", - "applyFor": "4D31EB2E-C825-46FA-BDB3-186AA546EF7F", - "len": 128, - "scale": "", - "uiHint": "", - "id": "BB0241B4-A9DB-46CB-AB7D-EA6DDA6A02D6" - }, - { - "defKey": "string32", - "defName": "字串32", - "applyFor": "4D31EB2E-C825-46FA-BDB3-186AA546EF7F", - "len": 32, - "scale": "", - "uiHint": "", - "id": "CC17D845-14BD-443E-B780-AC2C9FF59306" - } - ], - "diagrams": [ - { - "defKey": "order_relation", - "defName": "订单结构", - "relationType": "field", - "canvasData": { - "cells": [ - { - "id": "c88a6b8d-51c1-41a1-b49e-d53af66078df", - "shape": "table", - "position": { - "x": 740, - "y": -371 - }, - "count": 0, - "originKey": "EBAD8E23-3861-4D61-82E1-0D7AA5FD8DF8" - }, - { - "id": "ec6ac74b-352b-4f0b-bc5a-8b50752aed52", - "shape": "table", - "position": { - "x": 740, - "y": 250 - }, - "count": 0, - "originKey": "28786E25-243A-4D50-9524-16CFE8B5379B" - }, - { - "id": "f2a5fa0c-0fab-485c-b85e-94c547181e27", - "shape": "table", - "position": { - "x": 740, - "y": -54 - }, - "count": 0, - "originKey": "EE84861E-D381-4596-B895-FD9B91290815" - }, - { - "id": "e5c3f06e-19ff-4fe8-99d4-007bfbd9046c", - "shape": "table", - "position": { - "x": -448, - "y": 40 - }, - "count": 0, - "originKey": "03EC19D5-A2B3-4D16-BDBE-E398A57ED86B" - }, - { - "id": "dd033551-96d7-40fd-85c5-b4a2b65d5b1b", - "shape": "erdRelation", - "source": { - "cell": "4abdd7cd-87bc-4fb0-a445-ac5b88c4a459", - "port": "58F2326B-31BF-4986-8858-28ADD0AEC5E2%out" - }, - "target": { - "cell": "5b29c047-cacc-4c24-a4b3-c1578735c26f", - "port": "BA550922-0749-41FB-B23D-6738BA5DE665%in" - }, - "relation": "1:n", - "fillColor": "#ACDAFC" - }, - { - "id": "bdb220ff-64d9-463d-bdf0-d48d7e9b82fe", - "shape": "erdRelation", - "source": { - "cell": "e5c3f06e-19ff-4fe8-99d4-007bfbd9046c", - "port": "6EC0C0BA-6D83-4B68-B91D-F133E1282DA3%out" - }, - "target": { - "cell": "5b29c047-cacc-4c24-a4b3-c1578735c26f", - "port": "BA550922-0749-41FB-B23D-6738BA5DE665%in" - }, - "relation": "1:n", - "vertices": [], - "fillColor": "#ACDAFC" - }, - { - "id": "c02bb0f1-399d-4cd9-8c61-5c1f080a937e", - "shape": "erdRelation", - "source": { - "cell": "f2a5fa0c-0fab-485c-b85e-94c547181e27", - "port": "B82E4A03-4D7B-4B61-BDC2-ACDE048E3BB6%in" - }, - "target": { - "cell": "5b29c047-cacc-4c24-a4b3-c1578735c26f", - "port": "BA550922-0749-41FB-B23D-6738BA5DE665%out" - }, - "relation": "1:n", - "fillColor": "#ACDAFC" - }, - { - "id": "c089a78c-6e2d-4f8a-a869-38d966bb94cc", - "shape": "erdRelation", - "source": { - "cell": "c88a6b8d-51c1-41a1-b49e-d53af66078df", - "port": "BCAB762D-1D4D-44F8-BF8B-8ADC5737F057%in" - }, - "target": { - "cell": "5b29c047-cacc-4c24-a4b3-c1578735c26f", - "port": "BA550922-0749-41FB-B23D-6738BA5DE665%out" - }, - "relation": "1:n", - "fillColor": "#ACDAFC" - }, - { - "id": "f8906da8-8b2d-4745-8e11-7eb5d2230ed6", - "shape": "erdRelation", - "source": { - "cell": "ec6ac74b-352b-4f0b-bc5a-8b50752aed52", - "port": "8492DC65-9EAA-401C-A416-9C430474910E%in" - }, - "target": { - "cell": "5b29c047-cacc-4c24-a4b3-c1578735c26f", - "port": "BA550922-0749-41FB-B23D-6738BA5DE665%out" - }, - "relation": "1:n", - "fillColor": "#ACDAFC" - }, - { - "id": "4abdd7cd-87bc-4fb0-a445-ac5b88c4a459", - "shape": "table", - "position": { - "x": -566, - "y": -284 - }, - "count": 0, - "originKey": "C3166434-A5C0-415A-BABE-1FEBB4BB8BD6" - }, - { - "id": "5b29c047-cacc-4c24-a4b3-c1578735c26f", - "shape": "table", - "position": { - "x": 40, - "y": -287 - }, - "count": 0, - "originKey": "373ED1A7-A39C-47F4-89AF-46992DD3CA83" - } - ] - }, - "id": "2A859C63-E1E5-4778-B413-19FFADDB631B" - } - ], - "standardFields": [] -} \ No newline at end of file diff --git a/doc/db/so-im.chnr.json b/doc/db/so-im.chnr.json index ef4f192..db76a61 100644 --- a/doc/db/so-im.chnr.json +++ b/doc/db/so-im.chnr.json @@ -4,7 +4,7 @@ "avatar": "", "version": "3.5.7", "createdTime": "2022-3-7 15:11:08", - "updatedTime": "2022-4-2 15:02:54", + "updatedTime": "2022-4-14 16:00:46", "profile": { "default": { "db": "8FE7C65E-40EB-41B6-B60E-79063AFF6273", @@ -897,8 +897,8 @@ "id": "F06C0F3B-A0F1-47EC-80E5-F57ABD41984F" }, { - "defKey": "username", - "defName": "用户名", + "defKey": "status", + "defName": "状态:1.正常,2.禁用,3删除", "comment": "", "type": "", "len": "", @@ -909,9 +909,41 @@ "defaultValue": "", "hideInGraph": false, "refDict": "", - "domain": "BB0241B4-A9DB-46CB-AB7D-EA6DDA6A02D6", + "domain": "CBE2B93C-DD97-4950-86A8-B583971583C8", + "id": "ED141994-B3F8-42C8-96AE-91244E115A35" + }, + { + "defKey": "account", + "defName": "登录账号", + "comment": "", + "type": "", + "len": "", + "scale": "", + "primaryKey": false, + "notNull": true, + "autoIncrement": false, + "defaultValue": "", + "hideInGraph": false, + "refDict": "", + "domain": "CC17D845-14BD-443E-B780-AC2C9FF59306", "id": "BB5539DD-5A96-4729-AF84-205D99479F51" }, + { + "defKey": "nickname", + "defName": "用户昵称", + "comment": "", + "type": "", + "len": "", + "scale": "", + "primaryKey": false, + "notNull": false, + "autoIncrement": false, + "defaultValue": "", + "hideInGraph": false, + "refDict": "", + "domain": "BB0241B4-A9DB-46CB-AB7D-EA6DDA6A02D6", + "id": "85C805F2-4AEC-4AAE-B607-415D9B4544A2" + }, { "defKey": "password", "defName": "密码", @@ -920,7 +952,7 @@ "len": "", "scale": "", "primaryKey": false, - "notNull": true, + "notNull": false, "autoIncrement": false, "defaultValue": "", "hideInGraph": false, diff --git a/im-client/src/main/java/net/sopod/soim/client/net/ImNetClient.java b/im-client/src/main/java/net/sopod/soim/client/net/ImNetClient.java index b2d3440..4f22a8a 100644 --- a/im-client/src/main/java/net/sopod/soim/client/net/ImNetClient.java +++ b/im-client/src/main/java/net/sopod/soim/client/net/ImNetClient.java @@ -43,7 +43,7 @@ public class ImNetClient { .setId(1) .setStr("手") .build(); - Auth.Login login = Auth.Login.newBuilder() + Auth.ReqLogin login = Auth.ReqLogin.newBuilder() .setAccount("prometheus") .setPassword("123456") .build(); diff --git a/im-common/src/main/java/net/sopod/soim/common/util/HashAlgorithms.java b/im-common/src/main/java/net/sopod/soim/common/util/HashAlgorithms.java new file mode 100644 index 0000000..2b88c5c --- /dev/null +++ b/im-common/src/main/java/net/sopod/soim/common/util/HashAlgorithms.java @@ -0,0 +1,396 @@ +package net.sopod.soim.common.util; + +/** + * hash函数 + * https://zhuanlan.zhihu.com/p/101390996 + * + * @author tangmingyou + * @date 2021-10-28 10:33 + */ +public class HashAlgorithms { + + /** + * 加法hash + * + * @param key 字符串 + * @param prime 一个质数 + * @return hash结果 + */ + public static int additiveHash(String key, int prime) { + int hash, i; + for (hash = key.length(), i = 0; i < key.length(); i++) + hash += key.charAt(i); + return (hash % prime); + } + + /** + * 旋转hash + * + * @param key 输入字符串 + * @param prime 质数 + * @return hash值 + */ + public static int rotatingHash(String key, int prime) { + int hash, i; + for (hash = key.length(), i = 0; i < key.length(); ++i) + hash = (hash << 4) ^ (hash >> 28) ^ key.charAt(i); + return (hash % prime); + // return (hash ^ (hash>>10) ^ (hash>>20)); + } + // 替代: + // 使用:hash = (hash ^ (hash>>10) ^ (hash>>20)) & mask; + // 替代:hash %= prime; + /**/ + /** + * MASK值,随便找一个值,最好是质数 + */ + static int M_MASK = 0x8765fed1; + + /** + * 一次一个hash + * + * @param key 输入字符串 + * @return 输出hash值 + */ + public static int oneByOneHash(String key) { + int hash, i; + for (hash = 0, i = 0; i < key.length(); ++i) { + hash += key.charAt(i); + hash += (hash << 10); + hash ^= (hash >> 6); + } + hash += (hash << 3); + hash ^= (hash >> 11); + hash += (hash << 15); + // return (hash & M_MASK); + return hash; + } + + /** + * Bernstein's hash + * + * @param key 输入字节数组 + * @return 结果hash + */ + public static int bernstein(String key) { + int hash = 0; + int i; + for (i = 0; i < key.length(); ++i) hash = 33 * hash + key.charAt(i); + return hash; + } + + // + /**///// Pearson's Hash + // char pearson(char[]key, ub4 len, char tab[256]) + // { + // char hash; + // ub4 i; + // for (hash=len, i=0; i> 8) ^ tab[(hash & 0xff) ^ key[i]]; + // return (hash & mask); + // } + /**/ + + /** + * CRC系列算法本身并非查表,可是,查表是它的一种最快的实现方式。以下是CRC32的实现 + */ + private static int[] signed_crc_table() { + int c = 0; + int[] table = new int[256]; + + for (int n = 0; n != 256; ++n) { + c = n; + c = ((c & 1) != 0 ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c & 1) != 0 ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c & 1) != 0 ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c & 1) != 0 ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c & 1) != 0 ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c & 1) != 0 ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c & 1) != 0 ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c & 1) != 0 ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + table[n] = c; + } + return table; + } + + private static final int[] T = signed_crc_table(); + + /** + * CRC32 的查表实现 + */ + public static int crc32(String str, int seed) { + int C = ~seed; // 按位取反 seed ^ -1 + for (int i = 0, L = str.length(), c, d; i < L; ) { + c = str.charAt(i++); + if (c < 0x80) { + C = (C >>> 8) ^ T[(C ^ c) & 0xFF]; + } else if (c < 0x800) { + C = (C >>> 8) ^ T[(C ^ (192 | ((c >> 6) & 31))) & 0xFF]; + C = (C >>> 8) ^ T[(C ^ (128 | (c & 63))) & 0xFF]; + } else if (c >= 0xD800 && c < 0xE000) { + c = (c & 1023) + 64; + d = str.charAt(i++) & 1023; + C = (C >>> 8) ^ T[(C ^ (240 | ((c >> 8) & 7))) & 0xFF]; + C = (C >>> 8) ^ T[(C ^ (128 | ((c >> 2) & 63))) & 0xFF]; + C = (C >>> 8) ^ T[(C ^ (128 | ((d >> 6) & 15) | ((c & 3) << 4))) & 0xFF]; + C = (C >>> 8) ^ T[(C ^ (128 | (d & 63))) & 0xFF]; + } else { + C = (C >>> 8) ^ T[(C ^ (224 | ((c >> 12) & 15))) & 0xFF]; + C = (C >>> 8) ^ T[(C ^ (128 | ((c >> 6) & 63))) & 0xFF]; + C = (C >>> 8) ^ T[(C ^ (128 | (c & 63))) & 0xFF]; + } + } + return ~C; + } + + /** + * Universal Hashing + */ + public static int universal(char[] key, int mask, int[] tab) { + int hash = key.length, i, len = key.length; + for (i = 0; i < (len << 3); i += 8) { + char k = key[i >> 3]; + if ((k & 0x01) == 0) hash ^= tab[i + 0]; + if ((k & 0x02) == 0) hash ^= tab[i + 1]; + if ((k & 0x04) == 0) hash ^= tab[i + 2]; + if ((k & 0x08) == 0) hash ^= tab[i + 3]; + if ((k & 0x10) == 0) hash ^= tab[i + 4]; + if ((k & 0x20) == 0) hash ^= tab[i + 5]; + if ((k & 0x40) == 0) hash ^= tab[i + 6]; + if ((k & 0x80) == 0) hash ^= tab[i + 7]; + } + return (hash & mask); + } + + /** + * Zobrist Hashing + */ + public static int zobrist(char[] key, int mask, int[][] tab) { + int hash, i; + for (hash = key.length, i = 0; i < key.length; ++i) + hash ^= tab[i][key[i]]; + return (hash & mask); + } + + // LOOKUP3 + // 见Bob Jenkins(3).c文件 + // 32位FNV算法 + static int M_SHIFT = 0; + + /** + * 32位的FNV算法 + * + * @param data 数组 + * @return int值 + */ + public static int FNVHash(byte[] data) { + int hash = (int) 2166136261L; + for (byte b : data) + hash = (hash * 16777619) ^ b; + if (M_SHIFT == 0) + return hash; + return (hash ^ (hash >> M_SHIFT)) & M_MASK; + } + + /** + * 改进的32位FNV算法1 + * + * @param data 数组 + * @return int值 + */ + public static int FNVHash1(byte[] data) { + final int p = 16777619; + int hash = (int) 2166136261L; + for (byte b : data) + hash = (hash ^ b) * p; + hash += hash << 13; + hash ^= hash >> 7; + hash += hash << 3; + hash ^= hash >> 17; + hash += hash << 5; + return hash; + } + + /** + * FNV-1a HASH + * 改进的32位FNV算法1 + *

+ * costarring 与...碰撞 liquid + * declinate 与...碰撞 macallums + * altarage 与...碰撞 zinke + * altarages 与...碰撞 zinkes + * + * @param data 字符串 + * @return int值 + */ + public static int FNVHash1a(String data) { + final int p = 16777619; + int hash = (int) 2166136261L; + for (int i = 0; i < data.length(); i++) + hash = (hash ^ data.charAt(i)) * p; + hash += hash << 13; + hash ^= hash >> 7; + hash += hash << 3; + hash ^= hash >> 17; + hash += hash << 5; + return hash; + } + + /** + * Thomas Wang的算法,整数hash + */ + public static int intHash(int key) { + key += ~(key << 15); + key ^= (key >>> 10); + key += (key << 3); + key ^= (key >>> 6); + key += ~(key << 11); + key ^= (key >>> 16); + return key; + } + + /** + * RS算法hash + * + * @param str 字符串 + */ + public static int RSHash(String str) { + int b = 378551; + int a = 63689; + int hash = 0; + for (int i = 0; i < str.length(); i++) { + hash = hash * a + str.charAt(i); + a = a * b; + } + return (hash & 0x7FFFFFFF); + } + /* End Of RS Hash Function */ + + /** + * JS算法 + */ + public static int JSHash(String str) { + int hash = 1315423911; + for (int i = 0; i < str.length(); i++) { + hash ^= ((hash << 5) + str.charAt(i) + (hash >> 2)); + } + return (hash & 0x7FFFFFFF); + } + /**//* End Of JS Hash Function */ + + /** + * PJW算法 + */ + public static int PJWHash(String str) { + int BitsInUnsignedInt = 32; + int ThreeQuarters = (BitsInUnsignedInt * 3) / 4; + int OneEighth = BitsInUnsignedInt / 8; + int HighBits = 0xFFFFFFFF << (BitsInUnsignedInt - OneEighth); + int hash = 0; + int test = 0; + for (int i = 0; i < str.length(); i++) { + hash = (hash << OneEighth) + str.charAt(i); + if ((test = hash & HighBits) != 0) { + hash = ((hash ^ (test >> ThreeQuarters)) & (~HighBits)); + } + } + return (hash & 0x7FFFFFFF); + } + /* End Of P. J. Weinberger Hash Function */ + + /** + * ELF算法 + */ + public static int ELFHash(String str) { + int hash = 0; + int x = 0; + for (int i = 0; i < str.length(); i++) { + hash = (hash << 4) + str.charAt(i); + if ((x = (int) (hash & 0xF0000000L)) != 0) { + hash ^= (x >> 24); + hash &= ~x; + } + } + return (hash & 0x7FFFFFFF); + } + + /** + * BKDR算法 + */ + public static int BKDRHash(String str) { + int seed = 131; // 31 131 1313 13131 131313 etc.. + int hash = 0; + for (int i = 0; i < str.length(); i++) { + hash = (hash * seed) + str.charAt(i); + } + return (hash & 0x7FFFFFFF); + } + + /** + * SDBM算法 + */ + public static int SDBMHash(String str) { + int hash = 0; + for (int i = 0; i < str.length(); i++) { + hash = str.charAt(i) + (hash << 6) + (hash << 16) - hash; + } + return (hash & 0x7FFFFFFF); + } + + /** + * DJB算法 + */ + public static int DJBHash(String str) { + int hash = 5381; + for (int i = 0; i < str.length(); i++) { + hash = ((hash << 5) + hash) + str.charAt(i); + } + return (hash & 0x7FFFFFFF); + } + + /** + * DEK算法 + */ + public static int DEKHash(String str) { + int hash = str.length(); + for (int i = 0; i < str.length(); i++) { + hash = ((hash << 5) ^ (hash >> 27)) ^ str.charAt(i); + } + return (hash & 0x7FFFFFFF); + } + + /** + * AP算法 + */ + public static int APHash(String str) { + int hash = 0; + for (int i = 0; i < str.length(); i++) { + hash ^= ((i & 1) == 0) ? ((hash << 7) ^ str.charAt(i) ^ (hash >> 3)) : + (~((hash << 11) ^ str.charAt(i) ^ (hash >> 5))); + } + // return (hash & 0x7FFFFFFF); + return hash; + } + + /** + * JAVA自己带的算法 + */ + public static int java(String str) { + int h = 0; + int off = 0; + int len = str.length(); + for (int i = 0; i < len; i++) { + h = 31 * h + str.charAt(off++); + } + return h; + } + +} diff --git a/im-common/src/main/java/net/sopod/soim/common/util/ImClock.java b/im-common/src/main/java/net/sopod/soim/common/util/ImClock.java index c581f7d..0673376 100644 --- a/im-common/src/main/java/net/sopod/soim/common/util/ImClock.java +++ b/im-common/src/main/java/net/sopod/soim/common/util/ImClock.java @@ -35,8 +35,8 @@ public class ImClock { return new Date(clock.millis()); } - public static LocalDateTime msec2time(long msec) { - Instant instant = Instant.ofEpochMilli(msec); + public static LocalDateTime millis2time(long millis) { + Instant instant = Instant.ofEpochMilli(millis); return LocalDateTime.ofInstant(instant, ZoneId.systemDefault()); } diff --git a/im-common/src/main/java/net/sopod/soim/common/util/StringUtil.java b/im-common/src/main/java/net/sopod/soim/common/util/StringUtil.java new file mode 100644 index 0000000..2b764d7 --- /dev/null +++ b/im-common/src/main/java/net/sopod/soim/common/util/StringUtil.java @@ -0,0 +1,19 @@ +package net.sopod.soim.common.util; + +import java.util.UUID; +import java.util.concurrent.ThreadLocalRandom; + +/** + * StringUtil + * + * @author tmy + * @date 2022-04-14 11:10 + */ +public class StringUtil { + + public static String randomUUID() { + ThreadLocalRandom random = ThreadLocalRandom.current(); + return (new UUID(random.nextLong(), random.nextLong())).toString().replace("-", ""); + } + +} diff --git a/im-common/src/main/java/net/sopod/soim/common/util/TokenUtil.java b/im-common/src/main/java/net/sopod/soim/common/util/TokenUtil.java new file mode 100644 index 0000000..53ecfa5 --- /dev/null +++ b/im-common/src/main/java/net/sopod/soim/common/util/TokenUtil.java @@ -0,0 +1,93 @@ +package net.sopod.soim.common.util; + +import java.nio.ByteBuffer; +import java.util.Base64; +import java.util.concurrent.ThreadLocalRandom; + +/** + * TokenUtil + * + * @author tmy + * @date 2022-04-14 14:04 + */ +public class TokenUtil { + + /** TODO 后期存储到全局缓存中 */ + private static final String SALT = "ac614c954663124b62043e720e5c144d"; + + /*** + * base64({id:1,time:unix}) + ".sign(payload)" + */ + public static String genToken(long userId) { + int random = ThreadLocalRandom.current().nextInt(); + ByteBuffer buf = ByteBuffer.allocate(20); + buf.putLong(ImClock.millis()); + buf.putLong(userId); + buf.putInt(random); + byte[] bytes = buf.array(); + String payload = Base64.getUrlEncoder().encodeToString(bytes); + // TODO 其他hash算法 + String signStr = sign(payload); + return payload + "." + signStr; + } + + public static Payload validateAndParse(String token) { + int idx = token.indexOf('.'); + if (idx == -1) return null; + + String payload = token.substring(0, idx); + String sign = token.substring(idx + 1); + String calcSign = sign(payload); + if (!calcSign.equals(sign)) return null; + + byte[] payloadBytes = Base64.getUrlDecoder().decode(payload); + ByteBuffer buf = ByteBuffer.wrap(payloadBytes); + Payload p = new Payload(); + p.time = buf.getLong(); + p.userId = buf.getLong(); + p.random = buf.getInt(); + return p; + } + + public static class Payload { + long time; + long userId; + int random; + public long getTime() { + return time; + } + public long getUserId() { + return userId; + } + public int getRandom() { + return random; + } + @Override + public String toString() { + return "Payload{" + + "time=" + time + + ", userId=" + userId + + ", random=" + random + + '}'; + } + } + + private static String sign(String payload) { + // TODO 其他hash算法 + int sign = HashAlgorithms.crc32(payload + SALT, 10086); + byte[] signBytes = ByteBuffer.allocate(4).putInt(sign).array(); + return Base64.getUrlEncoder().encodeToString(signBytes); + } + + public static void main(String[] args) throws InterruptedException { + for (int i = 0; i < 10; i++) { + long uid = Math.abs(ThreadLocalRandom.current().nextLong()); + String token = genToken(uid); + Payload payload = validateAndParse(i == 3 ? token + "=" : token); + System.out.println(token); + System.out.println(uid + ": " + payload); + Thread.sleep(2000L); + } + } + +} diff --git a/im-das-api/im-das-user-api/src/main/java/net/sopod/soim/das/user/api/config/LogicTables.java b/im-das-api/im-das-user-api/src/main/java/net/sopod/soim/das/user/api/config/LogicTables.java new file mode 100644 index 0000000..3d01e82 --- /dev/null +++ b/im-das-api/im-das-user-api/src/main/java/net/sopod/soim/das/user/api/config/LogicTables.java @@ -0,0 +1,13 @@ +package net.sopod.soim.das.user.api.config; + +/** + * LogicTables + * + * @author tmy + * @date 2022-04-14 10:15 + */ +public interface LogicTables { + + String IM_USER = "im_user"; + +} diff --git a/im-das-api/im-das-user-api/src/main/java/net/sopod/soim/das/user/api/model/entity/ImUser.java b/im-das-api/im-das-user-api/src/main/java/net/sopod/soim/das/user/api/model/entity/ImUser.java index 5d7aafe..78630a6 100644 --- a/im-das-api/im-das-user-api/src/main/java/net/sopod/soim/das/user/api/model/entity/ImUser.java +++ b/im-das-api/im-das-user-api/src/main/java/net/sopod/soim/das/user/api/model/entity/ImUser.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.experimental.Accessors; +import net.sopod.soim.das.user.api.config.LogicTables; import java.util.Date; @@ -17,16 +18,24 @@ import java.util.Date; */ @Data @Accessors(chain = true) -@TableName("im_user") +@TableName(LogicTables.IM_USER) public class ImUser { /** id */ @TableId(value = "id", type= IdType.INPUT) private Long id; - /** 用户名 */ - @TableField(value = "username") - private String username; + /** 状态:1.正常,2.禁用,3删除 */ + @TableField(value = "status") + private Integer status; + + /** 登录账号 */ + @TableField(value = "account") + private String account; + + /** 用户昵称 */ + @TableField(value = "nickname") + private String nickname; /** 密码 */ @TableField(value = "password") diff --git a/im-das/im-das-user/src/main/java/net/sopod/soim/das/user/service/UserDasServiceImpl.java b/im-das/im-das-user/src/main/java/net/sopod/soim/das/user/service/UserDasServiceImpl.java index c010134..0987734 100644 --- a/im-das/im-das-user/src/main/java/net/sopod/soim/das/user/service/UserDasServiceImpl.java +++ b/im-das/im-das-user/src/main/java/net/sopod/soim/das/user/service/UserDasServiceImpl.java @@ -28,7 +28,7 @@ public class UserDasServiceImpl implements UserDasService { @Override public ImUser getUserByAccount(String account) { LambdaQueryWrapper accountQuery = new QueryWrapper().lambda() - .eq(ImUser::getUsername, account); + .eq(ImUser::getAccount, account); return userMapper.selectOne(accountQuery); } diff --git a/im-das/im-das-user/src/test/java/nets/sopod/soim/das/user/dao/DasImUserShardingTest.java b/im-das/im-das-user/src/test/java/nets/sopod/soim/das/user/dao/DasImUserShardingTest.java index 686f64e..8f5991d 100644 --- a/im-das/im-das-user/src/test/java/nets/sopod/soim/das/user/dao/DasImUserShardingTest.java +++ b/im-das/im-das-user/src/test/java/nets/sopod/soim/das/user/dao/DasImUserShardingTest.java @@ -1,15 +1,20 @@ package nets.sopod.soim.das.user.dao; +import com.google.common.base.Preconditions; import net.sopod.soim.common.util.ImClock; import net.sopod.soim.das.user.DasUserApplication; import net.sopod.soim.das.user.api.model.entity.ImUser; +import net.sopod.soim.das.user.api.config.LogicTables; import net.sopod.soim.das.user.dao.UserMapper; +import net.sopod.soim.logic.api.segmentid.core.SegmentIdGenerator; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import javax.annotation.Resource; + /** * DasUserApplication * @@ -23,15 +28,27 @@ public class DasImUserShardingTest { @Autowired private UserMapper userMapper; + @Resource + private SegmentIdGenerator segmentIdGen; + @Test public void test() { + long userId = segmentIdGen.nextId(LogicTables.IM_USER); ImUser user1 = new ImUser() - .setId(5L) - .setUsername("野孩子5") + .setId(userId) + .setStatus(1) + .setAccount("poros") + .setNickname("波罗斯") .setPassword("123456") - .setPhone("17882451908") + .setPhone("17882451902") .setCreateTime(ImClock.date()); userMapper.insert(user1); + + ImUser imUser = userMapper.selectById(userId); + Preconditions.checkState(imUser != null + && user1.getAccount().equals(imUser.getAccount()) + && user1.getPhone().equals(imUser.getPhone()) + ); } } diff --git a/im-data/src/main/java/net/sopod/soim/data/msg/auth/Auth.java b/im-data/src/main/java/net/sopod/soim/data/msg/auth/Auth.java index 576876b..5a32da8 100644 --- a/im-data/src/main/java/net/sopod/soim/data/msg/auth/Auth.java +++ b/im-data/src/main/java/net/sopod/soim/data/msg/auth/Auth.java @@ -14,8 +14,8 @@ public final class Auth { registerAllExtensions( (com.google.protobuf.ExtensionRegistryLite) registry); } - public interface LoginOrBuilder extends - // @@protoc_insertion_point(interface_extends:proto.Login) + public interface ReqLoginOrBuilder extends + // @@protoc_insertion_point(interface_extends:proto.ReqLogin) com.google.protobuf.MessageOrBuilder { /** @@ -43,18 +43,18 @@ public final class Auth { getPasswordBytes(); } /** - * Protobuf type {@code proto.Login} + * Protobuf type {@code proto.ReqLogin} */ - public static final class Login extends + public static final class ReqLogin extends com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:proto.Login) - LoginOrBuilder { + // @@protoc_insertion_point(message_implements:proto.ReqLogin) + ReqLoginOrBuilder { private static final long serialVersionUID = 0L; - // Use Login.newBuilder() to construct. - private Login(com.google.protobuf.GeneratedMessageV3.Builder builder) { + // Use ReqLogin.newBuilder() to construct. + private ReqLogin(com.google.protobuf.GeneratedMessageV3.Builder builder) { super(builder); } - private Login() { + private ReqLogin() { account_ = ""; password_ = ""; } @@ -63,7 +63,7 @@ public final class Auth { @SuppressWarnings({"unused"}) protected java.lang.Object newInstance( UnusedPrivateParameter unused) { - return new Login(); + return new ReqLogin(); } @java.lang.Override @@ -71,7 +71,7 @@ public final class Auth { getUnknownFields() { return this.unknownFields; } - private Login( + private ReqLogin( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { @@ -122,15 +122,15 @@ public final class Auth { } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return net.sopod.soim.data.msg.auth.Auth.internal_static_proto_Login_descriptor; + return net.sopod.soim.data.msg.auth.Auth.internal_static_proto_ReqLogin_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return net.sopod.soim.data.msg.auth.Auth.internal_static_proto_Login_fieldAccessorTable + return net.sopod.soim.data.msg.auth.Auth.internal_static_proto_ReqLogin_fieldAccessorTable .ensureFieldAccessorsInitialized( - net.sopod.soim.data.msg.auth.Auth.Login.class, net.sopod.soim.data.msg.auth.Auth.Login.Builder.class); + net.sopod.soim.data.msg.auth.Auth.ReqLogin.class, net.sopod.soim.data.msg.auth.Auth.ReqLogin.Builder.class); } public static final int ACCOUNT_FIELD_NUMBER = 1; @@ -254,10 +254,10 @@ public final class Auth { if (obj == this) { return true; } - if (!(obj instanceof net.sopod.soim.data.msg.auth.Auth.Login)) { + if (!(obj instanceof net.sopod.soim.data.msg.auth.Auth.ReqLogin)) { return super.equals(obj); } - net.sopod.soim.data.msg.auth.Auth.Login other = (net.sopod.soim.data.msg.auth.Auth.Login) obj; + net.sopod.soim.data.msg.auth.Auth.ReqLogin other = (net.sopod.soim.data.msg.auth.Auth.ReqLogin) obj; if (!getAccount() .equals(other.getAccount())) return false; @@ -283,69 +283,69 @@ public final class Auth { return hash; } - public static net.sopod.soim.data.msg.auth.Auth.Login parseFrom( + public static net.sopod.soim.data.msg.auth.Auth.ReqLogin parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static net.sopod.soim.data.msg.auth.Auth.Login parseFrom( + public static net.sopod.soim.data.msg.auth.Auth.ReqLogin parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static net.sopod.soim.data.msg.auth.Auth.Login parseFrom( + public static net.sopod.soim.data.msg.auth.Auth.ReqLogin parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static net.sopod.soim.data.msg.auth.Auth.Login parseFrom( + public static net.sopod.soim.data.msg.auth.Auth.ReqLogin parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static net.sopod.soim.data.msg.auth.Auth.Login parseFrom(byte[] data) + public static net.sopod.soim.data.msg.auth.Auth.ReqLogin parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static net.sopod.soim.data.msg.auth.Auth.Login parseFrom( + public static net.sopod.soim.data.msg.auth.Auth.ReqLogin parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static net.sopod.soim.data.msg.auth.Auth.Login parseFrom(java.io.InputStream input) + public static net.sopod.soim.data.msg.auth.Auth.ReqLogin parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input); } - public static net.sopod.soim.data.msg.auth.Auth.Login parseFrom( + public static net.sopod.soim.data.msg.auth.Auth.ReqLogin parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input, extensionRegistry); } - public static net.sopod.soim.data.msg.auth.Auth.Login parseDelimitedFrom(java.io.InputStream input) + public static net.sopod.soim.data.msg.auth.Auth.ReqLogin parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseDelimitedWithIOException(PARSER, input); } - public static net.sopod.soim.data.msg.auth.Auth.Login parseDelimitedFrom( + public static net.sopod.soim.data.msg.auth.Auth.ReqLogin parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static net.sopod.soim.data.msg.auth.Auth.Login parseFrom( + public static net.sopod.soim.data.msg.auth.Auth.ReqLogin parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input); } - public static net.sopod.soim.data.msg.auth.Auth.Login parseFrom( + public static net.sopod.soim.data.msg.auth.Auth.ReqLogin parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -358,7 +358,7 @@ public final class Auth { public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(net.sopod.soim.data.msg.auth.Auth.Login prototype) { + public static Builder newBuilder(net.sopod.soim.data.msg.auth.Auth.ReqLogin prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @java.lang.Override @@ -374,26 +374,26 @@ public final class Auth { return builder; } /** - * Protobuf type {@code proto.Login} + * Protobuf type {@code proto.ReqLogin} */ public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:proto.Login) - net.sopod.soim.data.msg.auth.Auth.LoginOrBuilder { + // @@protoc_insertion_point(builder_implements:proto.ReqLogin) + net.sopod.soim.data.msg.auth.Auth.ReqLoginOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return net.sopod.soim.data.msg.auth.Auth.internal_static_proto_Login_descriptor; + return net.sopod.soim.data.msg.auth.Auth.internal_static_proto_ReqLogin_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return net.sopod.soim.data.msg.auth.Auth.internal_static_proto_Login_fieldAccessorTable + return net.sopod.soim.data.msg.auth.Auth.internal_static_proto_ReqLogin_fieldAccessorTable .ensureFieldAccessorsInitialized( - net.sopod.soim.data.msg.auth.Auth.Login.class, net.sopod.soim.data.msg.auth.Auth.Login.Builder.class); + net.sopod.soim.data.msg.auth.Auth.ReqLogin.class, net.sopod.soim.data.msg.auth.Auth.ReqLogin.Builder.class); } - // Construct using net.sopod.soim.data.msg.auth.Auth.Login.newBuilder() + // Construct using net.sopod.soim.data.msg.auth.Auth.ReqLogin.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -421,17 +421,17 @@ public final class Auth { @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return net.sopod.soim.data.msg.auth.Auth.internal_static_proto_Login_descriptor; + return net.sopod.soim.data.msg.auth.Auth.internal_static_proto_ReqLogin_descriptor; } @java.lang.Override - public net.sopod.soim.data.msg.auth.Auth.Login getDefaultInstanceForType() { - return net.sopod.soim.data.msg.auth.Auth.Login.getDefaultInstance(); + public net.sopod.soim.data.msg.auth.Auth.ReqLogin getDefaultInstanceForType() { + return net.sopod.soim.data.msg.auth.Auth.ReqLogin.getDefaultInstance(); } @java.lang.Override - public net.sopod.soim.data.msg.auth.Auth.Login build() { - net.sopod.soim.data.msg.auth.Auth.Login result = buildPartial(); + public net.sopod.soim.data.msg.auth.Auth.ReqLogin build() { + net.sopod.soim.data.msg.auth.Auth.ReqLogin result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -439,8 +439,8 @@ public final class Auth { } @java.lang.Override - public net.sopod.soim.data.msg.auth.Auth.Login buildPartial() { - net.sopod.soim.data.msg.auth.Auth.Login result = new net.sopod.soim.data.msg.auth.Auth.Login(this); + public net.sopod.soim.data.msg.auth.Auth.ReqLogin buildPartial() { + net.sopod.soim.data.msg.auth.Auth.ReqLogin result = new net.sopod.soim.data.msg.auth.Auth.ReqLogin(this); result.account_ = account_; result.password_ = password_; onBuilt(); @@ -481,16 +481,16 @@ public final class Auth { } @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof net.sopod.soim.data.msg.auth.Auth.Login) { - return mergeFrom((net.sopod.soim.data.msg.auth.Auth.Login)other); + if (other instanceof net.sopod.soim.data.msg.auth.Auth.ReqLogin) { + return mergeFrom((net.sopod.soim.data.msg.auth.Auth.ReqLogin)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(net.sopod.soim.data.msg.auth.Auth.Login other) { - if (other == net.sopod.soim.data.msg.auth.Auth.Login.getDefaultInstance()) return this; + public Builder mergeFrom(net.sopod.soim.data.msg.auth.Auth.ReqLogin other) { + if (other == net.sopod.soim.data.msg.auth.Auth.ReqLogin.getDefaultInstance()) return this; if (!other.getAccount().isEmpty()) { account_ = other.account_; onChanged(); @@ -514,11 +514,11 @@ public final class Auth { com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - net.sopod.soim.data.msg.auth.Auth.Login parsedMessage = null; + net.sopod.soim.data.msg.auth.Auth.ReqLogin parsedMessage = null; try { parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (net.sopod.soim.data.msg.auth.Auth.Login) e.getUnfinishedMessage(); + parsedMessage = (net.sopod.soim.data.msg.auth.Auth.ReqLogin) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { if (parsedMessage != null) { @@ -692,51 +692,694 @@ public final class Auth { } - // @@protoc_insertion_point(builder_scope:proto.Login) + // @@protoc_insertion_point(builder_scope:proto.ReqLogin) } - // @@protoc_insertion_point(class_scope:proto.Login) - private static final net.sopod.soim.data.msg.auth.Auth.Login DEFAULT_INSTANCE; + // @@protoc_insertion_point(class_scope:proto.ReqLogin) + private static final net.sopod.soim.data.msg.auth.Auth.ReqLogin DEFAULT_INSTANCE; static { - DEFAULT_INSTANCE = new net.sopod.soim.data.msg.auth.Auth.Login(); + DEFAULT_INSTANCE = new net.sopod.soim.data.msg.auth.Auth.ReqLogin(); } - public static net.sopod.soim.data.msg.auth.Auth.Login getDefaultInstance() { + public static net.sopod.soim.data.msg.auth.Auth.ReqLogin getDefaultInstance() { return DEFAULT_INSTANCE; } - private static final com.google.protobuf.Parser - PARSER = new com.google.protobuf.AbstractParser() { + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { @java.lang.Override - public Login parsePartialFrom( + public ReqLogin parsePartialFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return new Login(input, extensionRegistry); + return new ReqLogin(input, extensionRegistry); } }; - public static com.google.protobuf.Parser parser() { + public static com.google.protobuf.Parser parser() { return PARSER; } @java.lang.Override - public com.google.protobuf.Parser getParserForType() { + public com.google.protobuf.Parser getParserForType() { return PARSER; } @java.lang.Override - public net.sopod.soim.data.msg.auth.Auth.Login getDefaultInstanceForType() { + public net.sopod.soim.data.msg.auth.Auth.ReqLogin getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface ResLoginOrBuilder extends + // @@protoc_insertion_point(interface_extends:proto.ResLogin) + com.google.protobuf.MessageOrBuilder { + + /** + * int32 code = 1; + * @return The code. + */ + int getCode(); + + /** + * string message = 2; + * @return The message. + */ + java.lang.String getMessage(); + /** + * string message = 2; + * @return The bytes for message. + */ + com.google.protobuf.ByteString + getMessageBytes(); + } + /** + * Protobuf type {@code proto.ResLogin} + */ + public static final class ResLogin extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:proto.ResLogin) + ResLoginOrBuilder { + private static final long serialVersionUID = 0L; + // Use ResLogin.newBuilder() to construct. + private ResLogin(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private ResLogin() { + message_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new ResLogin(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private ResLogin( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + + code_ = input.readInt32(); + break; + } + case 18: { + java.lang.String s = input.readStringRequireUtf8(); + + message_ = s; + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return net.sopod.soim.data.msg.auth.Auth.internal_static_proto_ResLogin_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return net.sopod.soim.data.msg.auth.Auth.internal_static_proto_ResLogin_fieldAccessorTable + .ensureFieldAccessorsInitialized( + net.sopod.soim.data.msg.auth.Auth.ResLogin.class, net.sopod.soim.data.msg.auth.Auth.ResLogin.Builder.class); + } + + public static final int CODE_FIELD_NUMBER = 1; + private int code_; + /** + * int32 code = 1; + * @return The code. + */ + @java.lang.Override + public int getCode() { + return code_; + } + + public static final int MESSAGE_FIELD_NUMBER = 2; + private volatile java.lang.Object message_; + /** + * string message = 2; + * @return The message. + */ + @java.lang.Override + public java.lang.String getMessage() { + java.lang.Object ref = message_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + message_ = s; + return s; + } + } + /** + * string message = 2; + * @return The bytes for message. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getMessageBytes() { + java.lang.Object ref = message_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + message_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (code_ != 0) { + output.writeInt32(1, code_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(message_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, message_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (code_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(1, code_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(message_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, message_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof net.sopod.soim.data.msg.auth.Auth.ResLogin)) { + return super.equals(obj); + } + net.sopod.soim.data.msg.auth.Auth.ResLogin other = (net.sopod.soim.data.msg.auth.Auth.ResLogin) obj; + + if (getCode() + != other.getCode()) return false; + if (!getMessage() + .equals(other.getMessage())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + CODE_FIELD_NUMBER; + hash = (53 * hash) + getCode(); + hash = (37 * hash) + MESSAGE_FIELD_NUMBER; + hash = (53 * hash) + getMessage().hashCode(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static net.sopod.soim.data.msg.auth.Auth.ResLogin parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static net.sopod.soim.data.msg.auth.Auth.ResLogin parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static net.sopod.soim.data.msg.auth.Auth.ResLogin parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static net.sopod.soim.data.msg.auth.Auth.ResLogin parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static net.sopod.soim.data.msg.auth.Auth.ResLogin parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static net.sopod.soim.data.msg.auth.Auth.ResLogin parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static net.sopod.soim.data.msg.auth.Auth.ResLogin parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static net.sopod.soim.data.msg.auth.Auth.ResLogin parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static net.sopod.soim.data.msg.auth.Auth.ResLogin parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static net.sopod.soim.data.msg.auth.Auth.ResLogin parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static net.sopod.soim.data.msg.auth.Auth.ResLogin parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static net.sopod.soim.data.msg.auth.Auth.ResLogin parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(net.sopod.soim.data.msg.auth.Auth.ResLogin prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code proto.ResLogin} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:proto.ResLogin) + net.sopod.soim.data.msg.auth.Auth.ResLoginOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return net.sopod.soim.data.msg.auth.Auth.internal_static_proto_ResLogin_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return net.sopod.soim.data.msg.auth.Auth.internal_static_proto_ResLogin_fieldAccessorTable + .ensureFieldAccessorsInitialized( + net.sopod.soim.data.msg.auth.Auth.ResLogin.class, net.sopod.soim.data.msg.auth.Auth.ResLogin.Builder.class); + } + + // Construct using net.sopod.soim.data.msg.auth.Auth.ResLogin.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + code_ = 0; + + message_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return net.sopod.soim.data.msg.auth.Auth.internal_static_proto_ResLogin_descriptor; + } + + @java.lang.Override + public net.sopod.soim.data.msg.auth.Auth.ResLogin getDefaultInstanceForType() { + return net.sopod.soim.data.msg.auth.Auth.ResLogin.getDefaultInstance(); + } + + @java.lang.Override + public net.sopod.soim.data.msg.auth.Auth.ResLogin build() { + net.sopod.soim.data.msg.auth.Auth.ResLogin result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public net.sopod.soim.data.msg.auth.Auth.ResLogin buildPartial() { + net.sopod.soim.data.msg.auth.Auth.ResLogin result = new net.sopod.soim.data.msg.auth.Auth.ResLogin(this); + result.code_ = code_; + result.message_ = message_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof net.sopod.soim.data.msg.auth.Auth.ResLogin) { + return mergeFrom((net.sopod.soim.data.msg.auth.Auth.ResLogin)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(net.sopod.soim.data.msg.auth.Auth.ResLogin other) { + if (other == net.sopod.soim.data.msg.auth.Auth.ResLogin.getDefaultInstance()) return this; + if (other.getCode() != 0) { + setCode(other.getCode()); + } + if (!other.getMessage().isEmpty()) { + message_ = other.message_; + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + net.sopod.soim.data.msg.auth.Auth.ResLogin parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (net.sopod.soim.data.msg.auth.Auth.ResLogin) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private int code_ ; + /** + * int32 code = 1; + * @return The code. + */ + @java.lang.Override + public int getCode() { + return code_; + } + /** + * int32 code = 1; + * @param value The code to set. + * @return This builder for chaining. + */ + public Builder setCode(int value) { + + code_ = value; + onChanged(); + return this; + } + /** + * int32 code = 1; + * @return This builder for chaining. + */ + public Builder clearCode() { + + code_ = 0; + onChanged(); + return this; + } + + private java.lang.Object message_ = ""; + /** + * string message = 2; + * @return The message. + */ + public java.lang.String getMessage() { + java.lang.Object ref = message_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + message_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string message = 2; + * @return The bytes for message. + */ + public com.google.protobuf.ByteString + getMessageBytes() { + java.lang.Object ref = message_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + message_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string message = 2; + * @param value The message to set. + * @return This builder for chaining. + */ + public Builder setMessage( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + message_ = value; + onChanged(); + return this; + } + /** + * string message = 2; + * @return This builder for chaining. + */ + public Builder clearMessage() { + + message_ = getDefaultInstance().getMessage(); + onChanged(); + return this; + } + /** + * string message = 2; + * @param value The bytes for message to set. + * @return This builder for chaining. + */ + public Builder setMessageBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + message_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:proto.ResLogin) + } + + // @@protoc_insertion_point(class_scope:proto.ResLogin) + private static final net.sopod.soim.data.msg.auth.Auth.ResLogin DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new net.sopod.soim.data.msg.auth.Auth.ResLogin(); + } + + public static net.sopod.soim.data.msg.auth.Auth.ResLogin getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ResLogin parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ResLogin(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public net.sopod.soim.data.msg.auth.Auth.ResLogin getDefaultInstanceForType() { return DEFAULT_INSTANCE; } } private static final com.google.protobuf.Descriptors.Descriptor - internal_static_proto_Login_descriptor; + internal_static_proto_ReqLogin_descriptor; private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_proto_Login_fieldAccessorTable; + internal_static_proto_ReqLogin_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_proto_ResLogin_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_proto_ResLogin_fieldAccessorTable; public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { @@ -747,20 +1390,27 @@ public final class Auth { static { java.lang.String[] descriptorData = { "\n3im-data/src/main/resources/protobuf/au" + - "th/Auth.proto\022\005proto\"*\n\005Login\022\017\n\007account" + - "\030\001 \001(\t\022\020\n\010password\030\002 \001(\tB&\n\034net.sopod.so" + - "im.data.msg.authB\004AuthP\000b\006proto3" + "th/Auth.proto\022\005proto\"-\n\010ReqLogin\022\017\n\007acco" + + "unt\030\001 \001(\t\022\020\n\010password\030\002 \001(\t\")\n\010ResLogin\022" + + "\014\n\004code\030\001 \001(\005\022\017\n\007message\030\002 \001(\tB&\n\034net.so" + + "pod.soim.data.msg.authB\004AuthP\000b\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { }); - internal_static_proto_Login_descriptor = + internal_static_proto_ReqLogin_descriptor = getDescriptor().getMessageTypes().get(0); - internal_static_proto_Login_fieldAccessorTable = new + internal_static_proto_ReqLogin_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_proto_Login_descriptor, + internal_static_proto_ReqLogin_descriptor, new java.lang.String[] { "Account", "Password", }); + internal_static_proto_ResLogin_descriptor = + getDescriptor().getMessageTypes().get(1); + internal_static_proto_ResLogin_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_proto_ResLogin_descriptor, + new java.lang.String[] { "Code", "Message", }); } // @@protoc_insertion_point(outer_class_scope) diff --git a/im-data/src/main/resources/protoSerialNoTable.txt b/im-data/src/main/resources/protoSerialNoTable.txt index 8c25b8f..217d12a 100644 --- a/im-data/src/main/resources/protoSerialNoTable.txt +++ b/im-data/src/main/resources/protoSerialNoTable.txt @@ -1,5 +1,6 @@ -net.sopod.soim.data.msg.hello.HelloPB$World=10000 -net.sopod.soim.data.msg.net.HeartBeat$Ping=10001 -net.sopod.soim.data.msg.net.HeartBeat$Pong=10002 -net.sopod.soim.data.msg.auth.Auth$Login=10003 -net.sopod.soim.data.msg.hello.HelloPB$Hello=10004 +net.sopod.soim.data.msg.net.HeartBeat$Ping=10000 +net.sopod.soim.data.msg.net.HeartBeat$Pong=10001 +net.sopod.soim.data.msg.auth.Auth$ResLogin=10002 +net.sopod.soim.data.msg.hello.HelloPB$Hello=10003 +net.sopod.soim.data.msg.auth.Auth$ReqLogin=10004 +net.sopod.soim.data.msg.hello.HelloPB$World=10005 diff --git a/im-data/src/main/resources/protobuf/auth/Auth.proto b/im-data/src/main/resources/protobuf/auth/Auth.proto index 4bdc7cd..26efa7f 100644 --- a/im-data/src/main/resources/protobuf/auth/Auth.proto +++ b/im-data/src/main/resources/protobuf/auth/Auth.proto @@ -6,7 +6,12 @@ option java_outer_classname = "Auth"; option java_package = "net.sopod.soim.data.msg.auth"; // option objc_class_prefix = "DEMOSRV"; -message Login { +message ReqLogin { string account = 1; string password = 2; } + +message ResLogin { + int32 code = 1; + string message = 2; +} \ No newline at end of file diff --git a/im-entry-http/src/main/resources/application.yml b/im-entry-http/src/main/resources/application.yml index 7808715..ef807c5 100644 --- a/im-entry-http/src/main/resources/application.yml +++ b/im-entry-http/src/main/resources/application.yml @@ -12,3 +12,6 @@ dubbo: protocol: injvm # 服务提供只供jvm内部使用, 不暴露在外面 (不启动dubbo provider服务) consumer: check: false + +server: + port: 3021 diff --git a/im-entry/src/main/java/net/sopod/soim/entry/handler/auth/LoginHandler.java b/im-entry/src/main/java/net/sopod/soim/entry/handler/auth/LoginHandler.java index f1619f6..a8b2590 100644 --- a/im-entry/src/main/java/net/sopod/soim/entry/handler/auth/LoginHandler.java +++ b/im-entry/src/main/java/net/sopod/soim/entry/handler/auth/LoginHandler.java @@ -16,12 +16,12 @@ import org.springframework.stereotype.Service; * @date 2022-04-13 22:20 */ @Service -public class LoginHandler extends NetUserMessageHandler { +public class LoginHandler extends NetUserMessageHandler { private static final Logger logger = LoggerFactory.getLogger(LoginHandler.class); @Override - public MessageLite handle(NetUser netUser, Auth.Login msg) { + public MessageLite handle(NetUser netUser, Auth.ReqLogin msg) { logger.info("auth login: {}, {}", msg.getAccount(), msg.getPassword()); Account account = Account.AccountBuilder.newBuilder() .setNetUser(netUser) diff --git a/im-logic-api/im-logic-user-api/pom.xml b/im-service-api/im-logic-user-api/pom.xml similarity index 81% rename from im-logic-api/im-logic-user-api/pom.xml rename to im-service-api/im-logic-user-api/pom.xml index a2d9366..47e74e2 100644 --- a/im-logic-api/im-logic-user-api/pom.xml +++ b/im-service-api/im-logic-user-api/pom.xml @@ -3,10 +3,9 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - so-im + im-service-api net.sopod 1.0.0 - ../../pom.xml 4.0.0 diff --git a/im-logic-api/im-logic-user-api/src/main/java/net/sopod/soim/logic/user/auth/model/ImAuth.java b/im-service-api/im-logic-user-api/src/main/java/net/sopod/soim/logic/user/auth/model/ImAuth.java similarity index 100% rename from im-logic-api/im-logic-user-api/src/main/java/net/sopod/soim/logic/user/auth/model/ImAuth.java rename to im-service-api/im-logic-user-api/src/main/java/net/sopod/soim/logic/user/auth/model/ImAuth.java diff --git a/im-logic-api/im-logic-user-api/src/main/java/net/sopod/soim/logic/user/auth/service/AuthService.java b/im-service-api/im-logic-user-api/src/main/java/net/sopod/soim/logic/user/auth/service/AuthService.java similarity index 100% rename from im-logic-api/im-logic-user-api/src/main/java/net/sopod/soim/logic/user/auth/service/AuthService.java rename to im-service-api/im-logic-user-api/src/main/java/net/sopod/soim/logic/user/auth/service/AuthService.java diff --git a/im-logic-api/im-logic-user-api/src/main/java/net/sopod/soim/logic/user/service/UserAuthService.java b/im-service-api/im-logic-user-api/src/main/java/net/sopod/soim/logic/user/service/UserAuthService.java similarity index 100% rename from im-logic-api/im-logic-user-api/src/main/java/net/sopod/soim/logic/user/service/UserAuthService.java rename to im-service-api/im-logic-user-api/src/main/java/net/sopod/soim/logic/user/service/UserAuthService.java diff --git a/im-logic-api/im-logic-user-api/src/main/java/net/sopod/soim/logic/user/service/UserService.java b/im-service-api/im-logic-user-api/src/main/java/net/sopod/soim/logic/user/service/UserService.java similarity index 100% rename from im-logic-api/im-logic-user-api/src/main/java/net/sopod/soim/logic/user/service/UserService.java rename to im-service-api/im-logic-user-api/src/main/java/net/sopod/soim/logic/user/service/UserService.java diff --git a/im-logic-api/pom.xml b/im-service-api/im-router-api/pom.xml similarity index 79% rename from im-logic-api/pom.xml rename to im-service-api/im-router-api/pom.xml index aaec1f6..fdeef75 100644 --- a/im-logic-api/pom.xml +++ b/im-service-api/im-router-api/pom.xml @@ -3,13 +3,13 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - so-im + im-service-api net.sopod 1.0.0 4.0.0 - im-logic-api + im-router-api \ No newline at end of file diff --git a/im-service-api/im-router-api/src/main/java/net/sopod/soim/router/api/model/CacheRes.java b/im-service-api/im-router-api/src/main/java/net/sopod/soim/router/api/model/CacheRes.java new file mode 100644 index 0000000..8b105c7 --- /dev/null +++ b/im-service-api/im-router-api/src/main/java/net/sopod/soim/router/api/model/CacheRes.java @@ -0,0 +1,31 @@ +package net.sopod.soim.router.api.model; + +import lombok.Data; + +/** + * CacheRes + * + * @author tmy + * @date 2022-04-14 15:13 + */ +@Data +public class CacheRes { + + /** + * 是否缓存成功 + */ + private Boolean success; + + /** + * 过期时间戳(毫秒),0不过期 + */ + private Long expire; + + public static CacheRes success(Long expire) { + CacheRes res = new CacheRes(); + res.setSuccess(Boolean.TRUE); + res.setExpire(expire); + return res; + } + +} diff --git a/im-service-api/im-router-api/src/main/java/net/sopod/soim/router/api/service/AccountStoreService.java b/im-service-api/im-router-api/src/main/java/net/sopod/soim/router/api/service/AccountStoreService.java new file mode 100644 index 0000000..566131e --- /dev/null +++ b/im-service-api/im-router-api/src/main/java/net/sopod/soim/router/api/service/AccountStoreService.java @@ -0,0 +1,12 @@ +package net.sopod.soim.router.api.service; + +/** + * AccountStoreService + * 缓存登录账号信息,entry 节点信息... + * + * @author tmy + * @date 2022-04-14 15:22 + */ +public interface AccountStoreService { + +} diff --git a/im-service-api/im-router-api/src/main/java/net/sopod/soim/router/api/service/AuthStoreService.java b/im-service-api/im-router-api/src/main/java/net/sopod/soim/router/api/service/AuthStoreService.java new file mode 100644 index 0000000..225f534 --- /dev/null +++ b/im-service-api/im-router-api/src/main/java/net/sopod/soim/router/api/service/AuthStoreService.java @@ -0,0 +1,15 @@ +package net.sopod.soim.router.api.service; + +import net.sopod.soim.router.api.model.CacheRes; + +/** + * RouterService + * + * @author tmy + * @date 2022-04-14 11:22 + */ +public interface AuthStoreService { + + CacheRes cacheToken(Long userId, String token); + +} diff --git a/im-logic-api/im-segment-id-api/pom.xml b/im-service-api/im-segment-id-api/pom.xml similarity index 91% rename from im-logic-api/im-segment-id-api/pom.xml rename to im-service-api/im-segment-id-api/pom.xml index dd5c414..a1c8a35 100644 --- a/im-logic-api/im-segment-id-api/pom.xml +++ b/im-service-api/im-segment-id-api/pom.xml @@ -3,10 +3,9 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - so-im + im-service-api net.sopod 1.0.0 - ../../pom.xml 4.0.0 diff --git a/im-logic-api/im-segment-id-api/src/main/java/net/sopod/soim/logic/api/segmentid/config/SegmentIdAutoConfiguration.java b/im-service-api/im-segment-id-api/src/main/java/net/sopod/soim/logic/api/segmentid/config/SegmentIdAutoConfiguration.java similarity index 93% rename from im-logic-api/im-segment-id-api/src/main/java/net/sopod/soim/logic/api/segmentid/config/SegmentIdAutoConfiguration.java rename to im-service-api/im-segment-id-api/src/main/java/net/sopod/soim/logic/api/segmentid/config/SegmentIdAutoConfiguration.java index 5ee758a..077dcf5 100644 --- a/im-logic-api/im-segment-id-api/src/main/java/net/sopod/soim/logic/api/segmentid/config/SegmentIdAutoConfiguration.java +++ b/im-service-api/im-segment-id-api/src/main/java/net/sopod/soim/logic/api/segmentid/config/SegmentIdAutoConfiguration.java @@ -22,7 +22,7 @@ import org.springframework.context.annotation.Configuration; @Configuration public class SegmentIdAutoConfiguration { - @DubboReference + @DubboReference//(version = "*") //SegmentIdService.Version.v1) private SegmentIdService segmentIdService; @Bean @@ -33,5 +33,4 @@ public class SegmentIdAutoConfiguration { return new SegmentIdGenerator(segmentIdService); } - } diff --git a/im-logic-api/im-segment-id-api/src/main/java/net/sopod/soim/logic/api/segmentid/core/Segment.java b/im-service-api/im-segment-id-api/src/main/java/net/sopod/soim/logic/api/segmentid/core/Segment.java similarity index 100% rename from im-logic-api/im-segment-id-api/src/main/java/net/sopod/soim/logic/api/segmentid/core/Segment.java rename to im-service-api/im-segment-id-api/src/main/java/net/sopod/soim/logic/api/segmentid/core/Segment.java diff --git a/im-logic-api/im-segment-id-api/src/main/java/net/sopod/soim/logic/api/segmentid/core/SegmentIdGenerator.java b/im-service-api/im-segment-id-api/src/main/java/net/sopod/soim/logic/api/segmentid/core/SegmentIdGenerator.java similarity index 100% rename from im-logic-api/im-segment-id-api/src/main/java/net/sopod/soim/logic/api/segmentid/core/SegmentIdGenerator.java rename to im-service-api/im-segment-id-api/src/main/java/net/sopod/soim/logic/api/segmentid/core/SegmentIdGenerator.java diff --git a/im-logic-api/im-segment-id-api/src/main/java/net/sopod/soim/logic/api/segmentid/model/NextSegmentParam.java b/im-service-api/im-segment-id-api/src/main/java/net/sopod/soim/logic/api/segmentid/model/NextSegmentParam.java similarity index 100% rename from im-logic-api/im-segment-id-api/src/main/java/net/sopod/soim/logic/api/segmentid/model/NextSegmentParam.java rename to im-service-api/im-segment-id-api/src/main/java/net/sopod/soim/logic/api/segmentid/model/NextSegmentParam.java diff --git a/im-logic-api/im-segment-id-api/src/main/java/net/sopod/soim/logic/api/segmentid/model/SegmentRange.java b/im-service-api/im-segment-id-api/src/main/java/net/sopod/soim/logic/api/segmentid/model/SegmentRange.java similarity index 100% rename from im-logic-api/im-segment-id-api/src/main/java/net/sopod/soim/logic/api/segmentid/model/SegmentRange.java rename to im-service-api/im-segment-id-api/src/main/java/net/sopod/soim/logic/api/segmentid/model/SegmentRange.java diff --git a/im-logic-api/im-segment-id-api/src/main/java/net/sopod/soim/logic/api/segmentid/service/SegmentIdService.java b/im-service-api/im-segment-id-api/src/main/java/net/sopod/soim/logic/api/segmentid/service/SegmentIdService.java similarity index 64% rename from im-logic-api/im-segment-id-api/src/main/java/net/sopod/soim/logic/api/segmentid/service/SegmentIdService.java rename to im-service-api/im-segment-id-api/src/main/java/net/sopod/soim/logic/api/segmentid/service/SegmentIdService.java index 7c1625a..da94438 100644 --- a/im-logic-api/im-segment-id-api/src/main/java/net/sopod/soim/logic/api/segmentid/service/SegmentIdService.java +++ b/im-service-api/im-segment-id-api/src/main/java/net/sopod/soim/logic/api/segmentid/service/SegmentIdService.java @@ -14,4 +14,14 @@ public interface SegmentIdService { SegmentRange nextSegmentId(String bizTag, Long step); + interface Version { + + /** + * 基本功能:获取业务标签对应的分段id范围 + * 大版本向下兼容 + */ + String v1 = "1"; + + } + } diff --git a/im-logic-api/im-segment-id-api/src/main/resources/META-INF/spring-configuration-metadata.json b/im-service-api/im-segment-id-api/src/main/resources/META-INF/spring-configuration-metadata.json similarity index 100% rename from im-logic-api/im-segment-id-api/src/main/resources/META-INF/spring-configuration-metadata.json rename to im-service-api/im-segment-id-api/src/main/resources/META-INF/spring-configuration-metadata.json diff --git a/im-logic-api/im-segment-id-api/src/main/resources/META-INF/spring.factories b/im-service-api/im-segment-id-api/src/main/resources/META-INF/spring.factories similarity index 100% rename from im-logic-api/im-segment-id-api/src/main/resources/META-INF/spring.factories rename to im-service-api/im-segment-id-api/src/main/resources/META-INF/spring.factories diff --git a/im-service-api/pom.xml b/im-service-api/pom.xml new file mode 100644 index 0000000..ac25479 --- /dev/null +++ b/im-service-api/pom.xml @@ -0,0 +1,21 @@ + + + + so-im + net.sopod + 1.0.0 + + 4.0.0 + + im-service-api + pom + + + im-segment-id-api + im-router-api + im-logic-user-api + + + \ No newline at end of file diff --git a/im-logic/im-logic-user/pom.xml b/im-service/im-logic-user/pom.xml similarity index 98% rename from im-logic/im-logic-user/pom.xml rename to im-service/im-logic-user/pom.xml index fa91a7f..941f291 100644 --- a/im-logic/im-logic-user/pom.xml +++ b/im-service/im-logic-user/pom.xml @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - im-logic + im-service net.sopod 1.0.0 diff --git a/im-logic/im-logic-user/src/main/java/net/sopod/soim/logic/user/LogicUserApplication.java b/im-service/im-logic-user/src/main/java/net/sopod/soim/logic/user/LogicUserApplication.java similarity index 100% rename from im-logic/im-logic-user/src/main/java/net/sopod/soim/logic/user/LogicUserApplication.java rename to im-service/im-logic-user/src/main/java/net/sopod/soim/logic/user/LogicUserApplication.java diff --git a/im-logic/im-logic-user/src/main/java/net/sopod/soim/logic/user/service/UserAuthServiceImpl.java b/im-service/im-logic-user/src/main/java/net/sopod/soim/logic/user/service/UserAuthServiceImpl.java similarity index 100% rename from im-logic/im-logic-user/src/main/java/net/sopod/soim/logic/user/service/UserAuthServiceImpl.java rename to im-service/im-logic-user/src/main/java/net/sopod/soim/logic/user/service/UserAuthServiceImpl.java diff --git a/im-logic/im-logic-user/src/main/java/net/sopod/soim/logic/user/service/UserServiceImpl.java b/im-service/im-logic-user/src/main/java/net/sopod/soim/logic/user/service/UserServiceImpl.java similarity index 100% rename from im-logic/im-logic-user/src/main/java/net/sopod/soim/logic/user/service/UserServiceImpl.java rename to im-service/im-logic-user/src/main/java/net/sopod/soim/logic/user/service/UserServiceImpl.java diff --git a/im-logic/im-logic-user/src/main/resources/application.yml b/im-service/im-logic-user/src/main/resources/application.yml similarity index 100% rename from im-logic/im-logic-user/src/main/resources/application.yml rename to im-service/im-logic-user/src/main/resources/application.yml diff --git a/im-service/im-router/pom.xml b/im-service/im-router/pom.xml new file mode 100644 index 0000000..413a705 --- /dev/null +++ b/im-service/im-router/pom.xml @@ -0,0 +1,72 @@ + + + + im-service + net.sopod + 1.0.0 + + 4.0.0 + + im-router + + + + net.sopod + im-router-api + ${soim.version} + + + net.sopod + im-common + ${soim.version} + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-logging + + + + + org.springframework.boot + spring-boot-starter-log4j2 + + + com.fasterxml.jackson.core + jackson-databind + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + + + + + org.springframework.boot + spring-boot-starter-data-redis + + + org.apache.commons + commons-pool2 + + + org.apache.dubbo + dubbo-spring-boot-starter + + + org.apache.dubbo + dubbo-registry-nacos + + + org.springframework.boot + spring-boot-starter-test + test + + + + \ No newline at end of file diff --git a/im-service/im-router/src/main/java/net/sopod/soim/router/RouterApplication.java b/im-service/im-router/src/main/java/net/sopod/soim/router/RouterApplication.java new file mode 100644 index 0000000..be96583 --- /dev/null +++ b/im-service/im-router/src/main/java/net/sopod/soim/router/RouterApplication.java @@ -0,0 +1,21 @@ +package net.sopod.soim.router; + +import org.apache.dubbo.config.spring.context.annotation.EnableDubbo; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * RouterApplication + * + * @author tmy + * @date 2022-04-14 11:45 + */ +@EnableDubbo(scanBasePackages = {"net.sopod.soim.router.service"}) +@SpringBootApplication +public class RouterApplication { + + public static void main(String[] args) { + SpringApplication.run(RouterApplication.class, args); + } + +} diff --git a/im-service/im-router/src/main/java/net/sopod/soim/router/service/AuthStoreServiceImpl.java b/im-service/im-router/src/main/java/net/sopod/soim/router/service/AuthStoreServiceImpl.java new file mode 100644 index 0000000..eb9178f --- /dev/null +++ b/im-service/im-router/src/main/java/net/sopod/soim/router/service/AuthStoreServiceImpl.java @@ -0,0 +1,34 @@ +package net.sopod.soim.router.service; + +import net.sopod.soim.common.util.ImClock; +import net.sopod.soim.router.api.model.CacheRes; +import net.sopod.soim.router.api.service.AuthStoreService; +import org.apache.dubbo.config.annotation.DubboService; + +import java.util.concurrent.ConcurrentHashMap; + +/** + * AuthStoreServiceImpl + * + * @author tmy + * @date 2022-04-14 11:23 + */ +@DubboService +public class AuthStoreServiceImpl implements AuthStoreService { + + private final ConcurrentHashMap tokenStore; + + public AuthStoreServiceImpl() { + tokenStore = new ConcurrentHashMap<>(); + } + + @Override + public CacheRes cacheToken(Long userId, String token) { + // 从内存中获取 + tokenStore.put(userId, token); + + // 从redis中获取 + return CacheRes.success(ImClock.millis() + 120_1000); + } + +} diff --git a/im-service/im-router/src/main/resources/application.yml b/im-service/im-router/src/main/resources/application.yml new file mode 100644 index 0000000..dd9a0b5 --- /dev/null +++ b/im-service/im-router/src/main/resources/application.yml @@ -0,0 +1,25 @@ +spring: + application: + name: im-router + redis: + host: 124.222.131.236 + port: 3379 + password: sopod@redis# + lettuce: + pool: + max-active: 100 + max-idle: 100 + max-wait: 1000 + min-idle: 2 + +dubbo: + application: + name: ${spring.application.name} + registry: + address: nacos://124.222.131.236:3848 + group: so-im + protocol: + name: dubbo + port: 3031 + host: 0.0.0.0 + # ssl-enabled: \ No newline at end of file diff --git a/im-logic/im-segment-id/pom.xml b/im-service/im-segment-id/pom.xml similarity index 98% rename from im-logic/im-segment-id/pom.xml rename to im-service/im-segment-id/pom.xml index 2e6b44d..159e5cc 100644 --- a/im-logic/im-segment-id/pom.xml +++ b/im-service/im-segment-id/pom.xml @@ -3,7 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - im-logic + im-service net.sopod 1.0.0 diff --git a/im-logic/im-segment-id/src/main/java/net/sopod/soim/logic/segmentid/SegmentIdApplication.java b/im-service/im-segment-id/src/main/java/net/sopod/soim/logic/segmentid/SegmentIdApplication.java similarity index 100% rename from im-logic/im-segment-id/src/main/java/net/sopod/soim/logic/segmentid/SegmentIdApplication.java rename to im-service/im-segment-id/src/main/java/net/sopod/soim/logic/segmentid/SegmentIdApplication.java diff --git a/im-logic/im-segment-id/src/main/java/net/sopod/soim/logic/segmentid/config/SegmentConfig.java b/im-service/im-segment-id/src/main/java/net/sopod/soim/logic/segmentid/config/SegmentConfig.java similarity index 100% rename from im-logic/im-segment-id/src/main/java/net/sopod/soim/logic/segmentid/config/SegmentConfig.java rename to im-service/im-segment-id/src/main/java/net/sopod/soim/logic/segmentid/config/SegmentConfig.java diff --git a/im-logic/im-segment-id/src/main/java/net/sopod/soim/logic/segmentid/mapper/SegmentIdMapper.java b/im-service/im-segment-id/src/main/java/net/sopod/soim/logic/segmentid/mapper/SegmentIdMapper.java similarity index 100% rename from im-logic/im-segment-id/src/main/java/net/sopod/soim/logic/segmentid/mapper/SegmentIdMapper.java rename to im-service/im-segment-id/src/main/java/net/sopod/soim/logic/segmentid/mapper/SegmentIdMapper.java diff --git a/im-logic/im-segment-id/src/main/java/net/sopod/soim/logic/segmentid/model/entity/SegmentId.java b/im-service/im-segment-id/src/main/java/net/sopod/soim/logic/segmentid/model/entity/SegmentId.java similarity index 100% rename from im-logic/im-segment-id/src/main/java/net/sopod/soim/logic/segmentid/model/entity/SegmentId.java rename to im-service/im-segment-id/src/main/java/net/sopod/soim/logic/segmentid/model/entity/SegmentId.java diff --git a/im-logic/im-segment-id/src/main/java/net/sopod/soim/logic/segmentid/service/SegmentIdServiceImpl.java b/im-service/im-segment-id/src/main/java/net/sopod/soim/logic/segmentid/service/SegmentIdServiceImpl.java similarity index 99% rename from im-logic/im-segment-id/src/main/java/net/sopod/soim/logic/segmentid/service/SegmentIdServiceImpl.java rename to im-service/im-segment-id/src/main/java/net/sopod/soim/logic/segmentid/service/SegmentIdServiceImpl.java index 020aa77..63f2226 100644 --- a/im-logic/im-segment-id/src/main/java/net/sopod/soim/logic/segmentid/service/SegmentIdServiceImpl.java +++ b/im-service/im-segment-id/src/main/java/net/sopod/soim/logic/segmentid/service/SegmentIdServiceImpl.java @@ -25,7 +25,7 @@ import java.util.concurrent.ThreadLocalRandom; * @author tmy * @date 2022-04-02 15:22 */ -@DubboService +@DubboService//(version = SegmentIdService.Version.v1) @AllArgsConstructor public class SegmentIdServiceImpl implements SegmentIdService { diff --git a/im-logic/im-segment-id/src/main/java/net/sopod/soim/logic/segmentid/util/RedisLockUtil.java b/im-service/im-segment-id/src/main/java/net/sopod/soim/logic/segmentid/util/RedisLockUtil.java similarity index 100% rename from im-logic/im-segment-id/src/main/java/net/sopod/soim/logic/segmentid/util/RedisLockUtil.java rename to im-service/im-segment-id/src/main/java/net/sopod/soim/logic/segmentid/util/RedisLockUtil.java diff --git a/im-logic/im-segment-id/src/main/resources/application.yml b/im-service/im-segment-id/src/main/resources/application.yml similarity index 100% rename from im-logic/im-segment-id/src/main/resources/application.yml rename to im-service/im-segment-id/src/main/resources/application.yml diff --git a/im-logic/im-segment-id/src/main/resources/mapper/SegmentIdMapper.xml b/im-service/im-segment-id/src/main/resources/mapper/SegmentIdMapper.xml similarity index 100% rename from im-logic/im-segment-id/src/main/resources/mapper/SegmentIdMapper.xml rename to im-service/im-segment-id/src/main/resources/mapper/SegmentIdMapper.xml diff --git a/im-logic/im-segment-id/src/test/java/net/sopod/soim/logic/segmentid/test/SegmentIdApplicationTest.java b/im-service/im-segment-id/src/test/java/net/sopod/soim/logic/segmentid/test/SegmentIdApplicationTest.java similarity index 100% rename from im-logic/im-segment-id/src/test/java/net/sopod/soim/logic/segmentid/test/SegmentIdApplicationTest.java rename to im-service/im-segment-id/src/test/java/net/sopod/soim/logic/segmentid/test/SegmentIdApplicationTest.java diff --git a/im-logic/pom.xml b/im-service/pom.xml similarity index 81% rename from im-logic/pom.xml rename to im-service/pom.xml index 33c7732..5c9979b 100644 --- a/im-logic/pom.xml +++ b/im-service/pom.xml @@ -9,9 +9,11 @@ 4.0.0 - im-logic + im-service pom + im-segment-id + im-router im-logic-user diff --git a/pom.xml b/pom.xml index 8b233e6..ca25802 100644 --- a/pom.xml +++ b/pom.xml @@ -12,15 +12,12 @@ im-common im-data im-entry - im-logic im-client - im-logic-api - im-logic-api/im-logic-user-api im-core im-das im-das-api - im-logic-api/im-segment-id-api - im-logic/im-segment-id + im-service + im-service-api im-entry-http @@ -146,6 +143,11 @@ spring-boot-starter-data-redis ${spring-boot.version} + + org.apache.commons + commons-pool2 + 2.11.1 + io.lettuce lettuce-core