diff --git a/doc/db/so-im.chnr.json b/doc/db/so-im.chnr.json index b674937..54f518c 100644 --- a/doc/db/so-im.chnr.json +++ b/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 }}{{= i0}}{{='('}}{{=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 {\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 }}{{= i0}}{{='('}}{{=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\n /// {{=it.func.join(field.defName,field.comment,';')}}\n /// \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 }}{{= i0}}{{='('}}{{=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 }}{{= i0 ? ',' :'' ) }}\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 ? '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 + + + im-das-api + net.sopod + 1.0.0 + + 4.0.0 + + im-das-user-api + + + + com.baomidou + mybatis-plus-annotation + 3.5.0 + + + org.projectlombok + lombok + provided + + + + \ No newline at end of file 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 new file mode 100644 index 0000000..5d7aafe --- /dev/null +++ b/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; + +} diff --git a/im-das-api/pom.xml b/im-das-api/pom.xml index 2e6f953..2d72ec9 100644 --- a/im-das-api/pom.xml +++ b/im-das-api/pom.xml @@ -10,6 +10,10 @@ 4.0.0 im-das-api + pom + + im-das-user-api + \ No newline at end of file diff --git a/im-das/im-das-user/pom.xml b/im-das/im-das-user/pom.xml index 92cf25e..729f2e8 100644 --- a/im-das/im-das-user/pom.xml +++ b/im-das/im-das-user/pom.xml @@ -12,6 +12,16 @@ im-das-user + + net.sopod + im-das-user-api + ${soim.version} + + + net.sopod + im-common + ${soim.version} + org.springframework.boot spring-boot-starter @@ -46,15 +56,47 @@ org.apache.shardingsphere - sharding-jdbc-spring-boot-starter + shardingsphere-jdbc-core-spring-boot-starter + ${shardingsphere.version} + + + + mysql + mysql-connector-java + + + com.zaxxer + HikariCP + + + com.baomidou + mybatis-plus-boot-starter + + + org.springframework + spring-orm - + + org.springframework.boot + spring-boot-starter-test + test + + + org.junit.vintage + junit-vintage-engine + + + + \ No newline at end of file diff --git a/im-das/im-das-user/src/main/java/net/sopod/soim/das/user/DasUserApplication.java b/im-das/im-das-user/src/main/java/net/sopod/soim/das/user/DasUserApplication.java index cf938f8..f1eea6b 100644 --- a/im-das/im-das-user/src/main/java/net/sopod/soim/das/user/DasUserApplication.java +++ b/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) { diff --git a/im-das/im-das-user/src/main/java/net/sopod/soim/das/user/dao/UserMapper.java b/im-das/im-das-user/src/main/java/net/sopod/soim/das/user/dao/UserMapper.java new file mode 100644 index 0000000..dac5081 --- /dev/null +++ b/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 { + +} diff --git a/im-das/im-das-user/src/main/resources/application.properties b/im-das/im-das-user/src/main/resources/application.properties new file mode 100644 index 0000000..669fe39 --- /dev/null +++ b/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 diff --git a/im-das/im-das-user/src/main/resources/application.yml b/im-das/im-das-user/src/main/resources/application.yml index 4c8b458..bbf35f3 100644 --- a/im-das/im-das-user/src/main/resources/application.yml +++ b/im-das/im-das-user/src/main/resources/application.yml @@ -4,4 +4,7 @@ dubbo: registry: address: nacos://124.222.131.236:3848 protocol: - port: 8081 \ No newline at end of file + port: 8081 + +mybatis-plus: + mapper-locations: classpath:mapper/*.xml diff --git a/im-das/im-das-user/src/main/resources/mapper/UserMapper.xml b/im-das/im-das-user/src/main/resources/mapper/UserMapper.xml new file mode 100644 index 0000000..de938ad --- /dev/null +++ b/im-das/im-das-user/src/main/resources/mapper/UserMapper.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/im-das/im-das-user/src/test/java/nets/sopod/soim/das/user/test/DasUserApplicationTest.java b/im-das/im-das-user/src/test/java/nets/sopod/soim/das/user/test/DasUserApplicationTest.java new file mode 100644 index 0000000..347915a --- /dev/null +++ b/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); + } + +} diff --git a/pom.xml b/pom.xml index 4b43701..d3150c1 100644 --- a/pom.xml +++ b/pom.xml @@ -34,8 +34,10 @@ 1.0.0 4.1.72.Final 2.1.8.RELEASE + 5.1.9.RELEASE 3.0.5 4.2.0 + 5.0.1 @@ -145,26 +147,41 @@ curator-recipes 4.2.0 --> + + mysql + mysql-connector-java + 8.0.27 + com.zaxxer HikariCP - 3.4.5 + 5.0.1 - mysql - mysql-connector-java - 5.1.33 + org.apache.shardingsphere + shardingsphere-jdbc-core-spring-boot-starter + ${shardingsphere.version} + - org.apache.shardingsphere - sharding-jdbc-spring-boot-starter - 4.1.1 - - - com.google.guava - guava - - + com.baomidou + mybatis-plus-boot-starter + 3.5.0 + + + org.springframework.boot + spring-boot-starter-test + ${spring-boot.version} + test + + + org.springframework + spring-orm + ${spring.version}