Browse Source

sharding

master
tangmingyou 4 years ago
parent
commit
337cf6fec5
  1. 349
      doc/db/so-im.chnr.json
  2. 27
      im-das-api/im-das-user-api/pom.xml
  3. 51
      im-das-api/im-das-user-api/src/main/java/net/sopod/soim/das/user/api/model/entity/ImUser.java
  4. 4
      im-das-api/pom.xml
  5. 46
      im-das/im-das-user/pom.xml
  6. 2
      im-das/im-das-user/src/main/java/net/sopod/soim/das/user/DasUserApplication.java
  7. 16
      im-das/im-das-user/src/main/java/net/sopod/soim/das/user/dao/UserMapper.java
  8. 20
      im-das/im-das-user/src/main/resources/application.properties
  9. 3
      im-das/im-das-user/src/main/resources/application.yml
  10. 7
      im-das/im-das-user/src/main/resources/mapper/UserMapper.xml
  11. 37
      im-das/im-das-user/src/test/java/nets/sopod/soim/das/user/test/DasUserApplicationTest.java
  12. 43
      pom.xml

349
doc/db/so-im.chnr.json

@ -4,10 +4,10 @@
"avatar": "",
"version": "3.5.7",
"createdTime": "2022-3-7 15:11:08",
"updatedTime": "2022-3-31 23:22:24",
"updatedTime": "2022-4-1 17:26:44",
"profile": {
"default": {
"db": "89CD9C73-4D3F-4863-8386-B42B1FBDEA15",
"db": "8FE7C65E-40EB-41B6-B60E-79063AFF6273",
"dbConn": "",
"entityInitFields": [
{
@ -119,53 +119,17 @@
"delimiter": ""
},
"dataTypeSupports": [
{
"defKey": "SQLServer",
"id": "89CD9C73-4D3F-4863-8386-B42B1FBDEA15"
},
{
"defKey": "JAVA_MP",
"id": "1E385761-67B3-4B80-A194-E302E590E54E"
},
{
"defKey": "MYSQL",
"id": "8FE7C65E-40EB-41B6-B60E-79063AFF6273"
},
{
"defKey": "ORACLE",
"id": "7B3BDD41-C634-4E65-934C-2D054A42299D"
"defKey": "JAVA_MP",
"id": "1E385761-67B3-4B80-A194-E302E590E54E"
},
{
"defKey": "PostgreSQL",
"id": "7A6E0A3E-F850-47CF-B50A-3E4E905E5F3A"
},
{
"defKey": "DB2",
"id": "C21E8B1D-CFCD-4D19-A5F7-45F07240AD78"
},
{
"defKey": "DM",
"id": "E57CD9FE-D44B-4673-947E-E5E3967E5EAB"
},
{
"defKey": "GaussDB",
"id": "E2356C99-AEBA-42D1-AB23-8041A62AEC16"
},
{
"defKey": "Kingbase",
"id": "831AFF3D-F477-4E06-819B-3C1739E321C8"
},
{
"defKey": "MaxCompute",
"id": "797D129F-7619-4FF3-8595-DB942D773571"
},
{
"defKey": "C#",
"id": "F4F01E06-3181-4CCC-A561-6111A936862C"
},
{
"defKey": "SQLite",
"id": "7565A719-3C24-4064-8FEE-DC55725E9569"
}
],
"codeTemplates": [
@ -177,22 +141,6 @@
"createIndex": "{{~ it.entity.indexes:index}}\nCREATE {{? index.unique}}UNIQUE {{?}}INDEX {{=index.defKey}} ON {{=it.entity.defKey}}({{ fieldsKeys = index.fields.map(function(field){return field.fieldDefKey}) ; }}{{=it.func.join(...fieldsKeys,',')}});\n{{~}}",
"createView": "CREATE VIEW {{=it.view.defKey}} AS\nSELECT \n{{~it.view.fields:field:index}}\n {{=field.refEntity}}.{{=field.refEntityField}} AS {{=field.defKey}}{{= index < it.view.fields.length-1 ? ',' : ''}}\n{{~}}\nFROM {{~it.view.refEntities:refEntity:index}}{{=refEntity}}{{= index < it.view.refEntities.length-1 ? ',' : ''}}{{~}};\n$blankline\n"
},
{
"type": "dbDDL",
"applyFor": "7B3BDD41-C634-4E65-934C-2D054A42299D",
"isDefault": true,
"createTable": "CREATE 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.defaultValue ? it.func.join(' DEFAULT ',field.defaultValue,' ') : '' }}{{= field.notNull ? ' NOT NULL' : '' }}{{= field.autoIncrement ? '' : '' }}{{= index < it.entity.fields.length-1 ? ',' : ( pkList.length>0 ? ',' :'' ) }}\n{{~}}\n{{? pkList.length >0 }}\n PRIMARY KEY ({{~pkList:pkName:i}}{{= pkName }}{{= i<pkList.length-1 ? ',' : '' }}{{~}})\n{{?}}\n);\n$blankline\n{{? it.entity.defKey || it.entity.defName}}COMMENT ON TABLE {{=it.entity.defKey}} IS '{{=it.func.join(it.entity.defName,it.entity.comment,';')}}';{{?}}\n{{~it.entity.fields:field:index}}\n{{? field.defName || field.comment}}COMMENT ON COLUMN {{=it.entity.defKey}}.{{=field.defKey}} IS '{{=it.func.join(field.defName,field.comment,';')}}';{{?}}\n{{~}}",
"createIndex": "{{~ it.entity.indexes:index}}\nCREATE {{? index.unique}}UNIQUE {{?}}INDEX {{=index.defKey}} ON {{=it.entity.defKey}}({{ fieldsKeys = index.fields.map(function(field){return field.fieldDefKey}) ; }}{{=it.func.join(...fieldsKeys,',')}});\n{{~}}",
"createView": "CREATE VIEW {{=it.view.defKey}} AS\nSELECT \n{{~it.view.fields:field:index}}\n {{=field.refEntity}}.{{=field.refEntityField}} AS {{=field.defKey}}{{= index < it.view.fields.length-1 ? ',' : ''}}\n{{~}}\nFROM {{~it.view.refEntities:refEntity:index}}{{=refEntity}}{{= index < it.view.refEntities.length-1 ? ',' : ''}}{{~}};\n$blankline\n"
},
{
"type": "dbDDL",
"applyFor": "89CD9C73-4D3F-4863-8386-B42B1FBDEA15",
"isDefault": true,
"createTable": "IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[{{=it.entity.defKey}}]') AND type in (N'U'))\nDROP TABLE [dbo].[{{=it.entity.defKey}}];\n\nCREATE TABLE [dbo].[{{=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 ? ' IDENTITY(1,1)' : '' }}{{= 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<pkList.length-1 ? ',' : '' }}{{~}})\n{{?}}\n){{=it.separator}}\n$blankline\n{{? it.entity.defKey || it.entity.defName}}EXEC sp_addextendedproperty 'MS_Description', '{{=it.func.join(it.entity.defName,it.entity.comment,';')}}', 'SCHEMA', dbo, 'table', {{=it.entity.defKey}}, null, null;{{?}}\n{{~it.entity.fields:field:index}}\nEXEC sp_addextendedproperty 'MS_Description', '{{=it.func.join(field.defName,field.comment,';')}}', 'SCHEMA', dbo, 'table', {{=it.entity.defKey}}, 'column', {{=field.defKey}};\n{{~}}\n",
"createIndex": "{{~ it.entity.indexes:index}}\nCREATE {{? index.unique}}UNIQUE {{?}}INDEX {{=index.defKey}} ON {{=it.entity.defKey}}({{ fieldsKeys = index.fields.map(function(field){return field.fieldDefKey}) ; }}{{=it.func.join(...fieldsKeys,',')}});\n{{~}}",
"createView": "CREATE VIEW {{=it.view.defKey}} AS\nSELECT \n{{~it.view.fields:field:index}}\n {{=field.refEntity}}.{{=field.refEntityField}} AS {{=field.defKey}}{{= index < it.view.fields.length-1 ? ',' : ''}}\n{{~}}\nFROM {{~it.view.refEntities:refEntity:index}}{{=refEntity}}{{= index < it.view.refEntities.length-1 ? ',' : ''}}{{~}};\n$blankline\n"
},
{
"type": "dbDDL",
"applyFor": "7A6E0A3E-F850-47CF-B50A-3E4E905E5F3A",
@ -207,64 +155,11 @@
"isDefault": true,
"content": "\n$blankline\nimport com.baomidou.mybatisplus.annotation.IdType;\nimport com.baomidou.mybatisplus.annotation.TableField;\nimport com.baomidou.mybatisplus.annotation.TableId;\nimport com.baomidou.mybatisplus.annotation.TableName;\nimport com.baomidou.mybatisplus.extension.activerecord.Model;\nimport io.swagger.annotations.ApiModel;\nimport io.swagger.annotations.ApiModelProperty;\nimport java.util.Date;\nimport lombok.Data;\nimport lombok.EqualsAndHashCode;\nimport lombok.experimental.Accessors;\n$blankline\n{{\n var today=new Date();\n var fullYear=today.getFullYear();\n var month=today.getMonth() + 1;\n var days=today.getDate();\n var hours=today.getHours();\n var minutes=today.getMinutes();\n}}\n /**\n * @author : CHINER\n * @date : {{=fullYear}}-{{=month}}-{{=days}} {{=hours}}:{{=minutes}}\n * @desc : {{=it.entity.defName}}{{? it.entity.comment}},{{=it.entity.comment}}{{?}}\n */\n@Data\n@EqualsAndHashCode(callSuper = true)\n@Accessors(chain = true)\n@ApiModel(value = \"{{=it.entity.defName}}\"{{? it.entity.comment}}, description = \"{{=it.entity.comment}}\"{{?}})\n@TableName(\"{{=it.entity.defKey}}\")\npublic class {{=it.func.camel(it.entity.defKey,true) }} extends Model<{{=it.func.camel(it.entity.defKey,true) }}> {\n{{~it.entity.fields:field:index}}\n $blankline\n /** {{=it.func.join(field.defName,field.comment,';')}} */\n @ApiModelProperty(\"{{=field.defName}}\")\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": "C21E8B1D-CFCD-4D19-A5F7-45F07240AD78",
"isDefault": true,
"createTable": "CREATE 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 ? '' : '' }}{{= 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<pkList.length-1 ? ',' : '' }}{{~}})\n{{?}}\n);\n$blankline\n{{? it.entity.defKey || it.entity.defName}}COMMENT ON TABLE {{=it.entity.defKey}} IS '{{=it.func.join(it.entity.defName,it.entity.comment,';')}}';{{?}}\n{{~it.entity.fields:field:index}}\n{{? field.defName || field.comment}}COMMENT ON COLUMN {{=it.entity.defKey}}.{{=field.defKey}} IS '{{=it.func.join(field.defName,field.comment,';')}}';{{?}}\n{{~}}",
"createIndex": "{{~ it.entity.indexes:index}}\nCREATE {{? index.unique}}UNIQUE {{?}}INDEX {{=index.defKey}} ON {{=it.entity.defKey}}({{ fieldsKeys = index.fields.map(function(field){return field.fieldDefKey}) ; }}{{=it.func.join(...fieldsKeys,',')}});\n{{~}}",
"createView": "CREATE VIEW {{=it.view.defKey}} AS\nSELECT \n{{~it.view.fields:field:index}}\n {{=field.refEntity}}.{{=field.refEntityField}} AS {{=field.defKey}}{{= index < it.view.fields.length-1 ? ',' : ''}}\n{{~}}\nFROM {{~it.view.refEntities:refEntity:index}}{{=refEntity}}{{= index < it.view.refEntities.length-1 ? ',' : ''}}{{~}};\n$blankline\n"
},
{
"type": "dbDDL",
"applyFor": "E57CD9FE-D44B-4673-947E-E5E3967E5EAB",
"isDefault": true,
"createTable": "CREATE 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 ? '' : '' }}{{= 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<pkList.length-1 ? ',' : '' }}{{~}})\n{{?}}\n);\n$blankline\n{{? it.entity.defKey || it.entity.defName}}COMMENT ON TABLE {{=it.entity.defKey}} IS '{{=it.func.join(it.entity.defName,it.entity.comment,';')}}';{{?}}\n{{~it.entity.fields:field:index}}\n{{? field.defName || field.comment}}COMMENT ON COLUMN {{=it.entity.defKey}}.{{=field.defKey}} IS '{{=it.func.join(field.defName,field.comment,';')}}';{{?}}\n{{~}}",
"createIndex": "{{~ it.entity.indexes:index}}\nCREATE {{? index.unique}}UNIQUE {{?}}INDEX {{=index.defKey}} ON {{=it.entity.defKey}}({{ fieldsKeys = index.fields.map(function(field){return field.fieldDefKey}) ; }}{{=it.func.join(...fieldsKeys,',')}});\n{{~}}",
"createView": "CREATE VIEW {{=it.view.defKey}} AS\nSELECT \n{{~it.view.fields:field:index}}\n {{=field.refEntity}}.{{=field.refEntityField}} AS {{=field.defKey}}{{= index < it.view.fields.length-1 ? ',' : ''}}\n{{~}}\nFROM {{~it.view.refEntities:refEntity:index}}{{=refEntity}}{{= index < it.view.refEntities.length-1 ? ',' : ''}}{{~}};\n$blankline\n"
},
{
"type": "appCode",
"applyFor": "F4F01E06-3181-4CCC-A561-6111A936862C",
"isDefault": true,
"content": "using System;\nusing System.Collections.Generic;\n\n$blankline\n{{\n var today=new Date();\n var fullYear=today.getFullYear();\n var month=today.getMonth() + 1;\n var days=today.getDate();\n}}\n/*\n * @author : http://www.chiner.com.cn\n * @date : {{=fullYear}}-{{=month}}-{{=days}}\n * @desc : {{=it.func.join(it.entity.defName,it.entity.comment,'-')}}\n */\nnamespace Chiner.Application\n{\n public partial class {{=it.func.camel(it.entity.defKey,true) }}\n {\n \n {{~it.entity.fields:field:index}}\n /// <summary>\n /// {{=it.func.join(field.defName,field.comment,';')}}\n /// </summary>\n public {{=field.type}} {{=it.func.camel(field.defKey,true)}} { get; set; }\n $blankline\n {{~}}\n \n }\n}"
},
{
"type": "dbDDL",
"applyFor": "E2356C99-AEBA-42D1-AB23-8041A62AEC16",
"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,' ') : '' }}{{= index < it.entity.fields.length-1 ? ',' : ( pkList.length>0 ? ',' :'' ) }}\n{{~}}\n{{? pkList.length >0 }}\n PRIMARY KEY ({{~pkList:pkName:i}}{{= pkName }}{{= i<pkList.length-1 ? ',' : '' }}{{~}})\n{{?}}\n);\n$blankline\n{{? it.entity.defKey || it.entity.defName}}COMMENT ON TABLE {{=it.entity.defKey}} IS '{{=it.func.join(it.entity.defName,it.entity.comment,';')}}';{{?}}\n{{~it.entity.fields:field:index}}\n{{? field.defName || field.comment}}COMMENT ON COLUMN {{=it.entity.defKey}}.{{=field.defKey}} IS '{{=it.func.join(field.defName,field.comment,';')}}';{{?}}\n{{~}}",
"createIndex": "{{~ it.entity.indexes:index}}\nCREATE {{? index.unique}}UNIQUE {{?}}INDEX {{=index.defKey}} ON {{=it.entity.defKey}}({{ fieldsKeys = index.fields.map(function(field){return field.fieldDefKey}) ; }}{{=it.func.join(...fieldsKeys,',')}});\n{{~}}",
"createView": "CREATE VIEW {{=it.view.defKey}} AS\nSELECT \n{{~it.view.fields:field:index}}\n {{=field.refEntity}}.{{=field.refEntityField}} AS {{=field.defKey}}{{= index < it.view.fields.length-1 ? ',' : ''}}\n{{~}}\nFROM {{~it.view.refEntities:refEntity:index}}{{=refEntity}}{{= index < it.view.refEntities.length-1 ? ',' : ''}}{{~}};\n$blankline\n"
},
{
"type": "dbDDL",
"applyFor": "831AFF3D-F477-4E06-819B-3C1739E321C8",
"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.defaultValue ? it.func.join(' DEFAULT ',field.defaultValue,' ') : '' }}{{?}}{{= field.notNull ? ' NOT NULL' : '' }}{{= index < it.entity.fields.length-1 ? ',' : ( pkList.length>0 ? ',' :'' ) }}\n{{~}}\n{{? pkList.length >0 }}\n PRIMARY KEY ({{~pkList:pkName:i}}{{= pkName }}{{= i<pkList.length-1 ? ',' : '' }}{{~}})\n{{?}}\n);\n$blankline\n{{? it.entity.defKey || it.entity.defName}}COMMENT ON TABLE {{=it.entity.defKey}} IS '{{=it.func.join(it.entity.defName,it.entity.comment,';')}}';{{?}}\n{{~it.entity.fields:field:index}}\n{{? field.defName || field.comment}}COMMENT ON COLUMN {{=it.entity.defKey}}.{{=field.defKey}} IS '{{=it.func.join(field.defName,field.comment,';')}}';{{?}}\n{{~}}",
"createIndex": "{{~ it.entity.indexes:index}}\nCREATE {{? index.unique}}UNIQUE {{?}}INDEX {{=index.defKey}} ON {{=it.entity.defKey}}({{ fieldsKeys = index.fields.map(function(field){return field.fieldDefKey}) ; }}{{=it.func.join(...fieldsKeys,',')}});\n{{~}}",
"createView": "CREATE VIEW {{=it.view.defKey}} AS\nSELECT \n{{~it.view.fields:field:index}}\n {{=field.refEntity}}.{{=field.refEntityField}} AS {{=field.defKey}}{{= index < it.view.fields.length-1 ? ',' : ''}}\n{{~}}\nFROM {{~it.view.refEntities:refEntity:index}}{{=refEntity}}{{= index < it.view.refEntities.length-1 ? ',' : ''}}{{~}};\n$blankline\n"
},
{
"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{{~}}"
},
{
"type": "dbDDL",
"applyFor": "797D129F-7619-4FF3-8595-DB942D773571",
"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.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 }}{{= i<pkList.length-1 ? ',' : '' }}{{~}})\n{{?}}\n) COMMENT = '{{=it.func.join(it.entity.defName,it.entity.comment,';') }}';\n$blankline\n",
"createIndex": "",
"createView": "CREATE VIEW {{=it.view.defKey}} AS\nSELECT \n{{~it.view.fields:field:index}}\n {{=field.refEntity}}.{{=field.refEntityField}} AS {{=field.defKey}}{{= index < it.view.fields.length-1 ? ',' : ''}}\n{{~}}\nFROM {{~it.view.refEntities:refEntity:index}}{{=refEntity}}{{= index < it.view.refEntities.length-1 ? ',' : ''}}{{~}};\n$blankline\n"
},
{
"applyFor": "7565A719-3C24-4064-8FEE-DC55725E9569",
"type": "dbDDL",
"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 ? 'AUTOINCREMENT' : '' }} {{= field.defaultValue ? it.func.join('DEFAULT',field.defaultValue,' ') : '' }}{{= index < it.entity.fields.length-1 ? ',' : ( pkList.length>0 ? ',' :'' ) }} --{{=it.func.join(field.defName,field.comment,';')}}\n{{~}}\n{{? pkList.length >0 }}\n PRIMARY KEY ({{~pkList:pkName:i}}{{= pkName }}{{= i<pkList.length-1 ? ',' : '' }}{{~}})\n{{?}}\n) ; --{{=it.func.join(it.entity.defName,it.entity.comment,';') }}\n$blankline\n",
"createIndex": "{{~ it.entity.indexes:index}}\nCREATE {{? index.unique}}UNIQUE {{?}}INDEX {{=index.defKey}} ON {{=it.entity.defKey}}({{ fieldsKeys = index.fields.map(function(field){return field.fieldDefKey}) ; }}{{=it.func.join(...fieldsKeys,',')}});\n{{~}}",
"createView": "CREATE VIEW {{=it.view.defKey}} AS\nSELECT \n{{~it.view.fields:field:index}}\n {{=field.refEntity}}.{{=field.refEntityField}} AS {{=field.defKey}}{{= index < it.view.fields.length-1 ? ',' : ''}}\n{{~}}\nFROM {{~it.view.refEntities:refEntity:index}}{{=refEntity}}{{= index < it.view.refEntities.length-1 ? ',' : ''}}{{~}};\n$blankline\n"
}
],
"generatorDoc": {
@ -899,6 +794,207 @@
}
],
"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": []
}
],
"views": [],
@ -1008,6 +1104,14 @@
"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"
}
]
},
@ -1101,6 +1205,33 @@
"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": [

27
im-das-api/im-das-user-api/pom.xml

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
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">
<parent>
<artifactId>im-das-api</artifactId>
<groupId>net.sopod</groupId>
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>im-das-user-api</artifactId>
<dependencies>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-annotation</artifactId>
<version>3.5.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
</project>

51
im-das-api/im-das-user-api/src/main/java/net/sopod/soim/das/user/api/model/entity/ImUser.java

@ -0,0 +1,51 @@
package net.sopod.soim.das.user.api.model.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.Date;
/**
* ImUser
*
* @author tmy
* @date 2022-04-01 17:07
*/
@Data
@Accessors(chain = true)
@TableName("im_user")
public class ImUser {
/** id */
@TableId(value = "id", type= IdType.INPUT)
private Long id;
/** 用户名 */
@TableField(value = "username")
private String username;
/** 密码 */
@TableField(value = "password")
private String password;
/** 手机号 */
@TableField(value = "phone")
private String phone;
/** 创建时间 */
@TableField(value = "create_time")
private Date createTime;
/** 最后登录时间 */
@TableField(value = "last_login_time")
private Date lastLoginTime;
/** 最后活跃时间 */
@TableField(value = "last_active_time")
private Date lastActiveTime;
}

4
im-das-api/pom.xml

@ -10,6 +10,10 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>im-das-api</artifactId>
<packaging>pom</packaging>
<modules>
<module>im-das-user-api</module>
</modules>
</project>

46
im-das/im-das-user/pom.xml

@ -12,6 +12,16 @@
<artifactId>im-das-user</artifactId>
<dependencies>
<dependency>
<groupId>net.sopod</groupId>
<artifactId>im-das-user-api</artifactId>
<version>${soim.version}</version>
</dependency>
<dependency>
<groupId>net.sopod</groupId>
<artifactId>im-common</artifactId>
<version>${soim.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
@ -46,15 +56,47 @@
</dependency>
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
<artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId>
<version>${shardingsphere.version}</version>
</dependency>
<!-- <dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter-infra</artifactId>
<exclusions>
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</exclusion>
</exclusions>
</dependency>-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
</dependency>
</dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</project>

2
im-das/im-das-user/src/main/java/net/sopod/soim/das/user/DasUserApplication.java

@ -1,6 +1,7 @@
package net.sopod.soim.das.user;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@ -12,6 +13,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
*/
@EnableDubbo(scanBasePackages = {"net.sopod.soim.das.user.service"})
@SpringBootApplication
@MapperScan("net.sopod.soim.das.user.dao")
public class DasUserApplication {
public static void main(String[] args) {

16
im-das/im-das-user/src/main/java/net/sopod/soim/das/user/dao/UserMapper.java

@ -0,0 +1,16 @@
package net.sopod.soim.das.user.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import net.sopod.soim.das.user.api.model.entity.ImUser;
import org.springframework.stereotype.Repository;
/**
* UserMapper
*
* @author tmy
* @date 2022-04-01 17:00
*/
@Repository
public interface UserMapper extends BaseMapper<ImUser> {
}

20
im-das/im-das-user/src/main/resources/application.properties

@ -0,0 +1,20 @@
spring.profiles.active=${SPRING_PROFILES_ACTIVE:dev}
# sharding-jdbc 配置
# 配置数据源
spring.shardingsphere.datasource.names=db1
spring.shardingsphere.datasource.db1.type=com.zaxxer.hikari.HikariDataSource
spring.shardingsphere.datasource.db1.driver-class-name=com.mysql.cj.jdbc.Driver
spring.shardingsphere.datasource.db1.jdbc-url=jdbc:mysql://cd-cdb-mrz9fw80.sql.tencentcdb.com:61843/soim_db?serverTimezone=GMT%2B8
spring.shardingsphere.datasource.db1.username=root
spring.shardingsphere.datasource.db1.password=sopod@2347#
# 分表
spring.shardingsphere.sharding.tables.im_user.actual-data-nodes=db1.im_user_$->{0..2}
# 指定t_user表的分片策略,分片策略包括分片键和分片算法
spring.shardingsphere.sharding.tables.im_user.table-strategy.inline.sharding-column=id
spring.shardingsphere.sharding.tables.im_user.table-strategy.inline.algorithm-expression=im_user_$->{id % 3}
# 打开sharding-jdbc sql输出日志
spring.shardingsphere.props.sql.show=true

3
im-das/im-das-user/src/main/resources/application.yml

@ -5,3 +5,6 @@ dubbo:
address: nacos://124.222.131.236:3848
protocol:
port: 8081
mybatis-plus:
mapper-locations: classpath:mapper/*.xml

7
im-das/im-das-user/src/main/resources/mapper/UserMapper.xml

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="net.sopod.soim.das.user.dao.UserMapper">
</mapper>

37
im-das/im-das-user/src/test/java/nets/sopod/soim/das/user/test/DasUserApplicationTest.java

@ -0,0 +1,37 @@
package nets.sopod.soim.das.user.test;
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.dao.UserMapper;
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;
/**
* DasUserApplication
*
* @author tmy
* @date 2022-04-01 14:43
*/
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = DasUserApplication.class)
public class DasUserApplicationTest {
@Autowired
private UserMapper userMapper;
@Test
public void test() {
ImUser user1 = new ImUser()
.setId(1L)
.setUsername("野孩子")
.setPassword("123456")
.setPhone("17882451908")
.setCreateTime(ImClock.date());
userMapper.insert(user1);
}
}

43
pom.xml

@ -34,8 +34,10 @@
<soim.version>1.0.0</soim.version>
<netty.version>4.1.72.Final</netty.version>
<spring-boot.version>2.1.8.RELEASE</spring-boot.version>
<spring.version>5.1.9.RELEASE</spring.version>
<dubbo.version>3.0.5</dubbo.version>
<curator5_version>4.2.0</curator5_version>
<shardingsphere.version>5.0.1</shardingsphere.version>
</properties>
<dependencyManagement>
@ -145,26 +147,41 @@
<artifactId>curator-recipes</artifactId>
<version>4.2.0</version>
</dependency>-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.4.5</version>
<version>5.0.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.33</version>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId>
<version>${shardingsphere.version}</version>
</dependency>
<!-- <dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.0</version>
</dependency>
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
<version>4.1.1</version>
<exclusions>
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</exclusion>
</exclusions>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>${spring-boot.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
</dependencyManagement>

Loading…
Cancel
Save