程序员蜗牛
1 year ago
22 changed files with 1420 additions and 0 deletions
@ -0,0 +1,10 @@ |
|||||
|
.idea/ |
||||
|
target/ |
||||
|
*.iml |
||||
|
*.ipr |
||||
|
*.iws |
||||
|
*.log |
||||
|
.svn/ |
||||
|
.project |
||||
|
rebel.xml |
||||
|
.rebel-remote.xml.* |
@ -0,0 +1,20 @@ |
|||||
|
The MIT License (MIT) |
||||
|
|
||||
|
Copyright (c) 2018 Xiong Neng |
||||
|
|
||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of |
||||
|
this software and associated documentation files (the "Software"), to deal in |
||||
|
the Software without restriction, including without limitation the rights to |
||||
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of |
||||
|
the Software, and to permit persons to whom the Software is furnished to do so, |
||||
|
subject to the following conditions: |
||||
|
|
||||
|
The above copyright notice and this permission notice shall be included in all |
||||
|
copies or substantial portions of the Software. |
||||
|
|
||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS |
||||
|
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR |
||||
|
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER |
||||
|
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
||||
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
@ -0,0 +1,34 @@ |
|||||
|
## 配置多数据源 |
||||
|
|
||||
|
SpringBoot配置多数据源,使用MyBatis作为DAO层演示 |
||||
|
|
||||
|
## 安装MySQL数据库 |
||||
|
|
||||
|
数据库的安装教程网上非常多,配置数据库的账号和密码。 |
||||
|
并且创建两个数据库pos和biz来测试多数据源。 |
||||
|
|
||||
|
## 修改application.yml |
||||
|
|
||||
|
修改配置文件,主要是mysql的账号和密码,两个数据库都要配置 |
||||
|
|
||||
|
## 数据库初始化 |
||||
|
|
||||
|
然后执行SQL文件`src/main/resources/sql/schema.sql` |
||||
|
|
||||
|
``` |
||||
|
# 下面是核心数据库中的插入数据 |
||||
|
INSERT INTO `t_user` VALUES (1,'admin','系统管理员','123456','www', '17890908889', '系统管理员', 1, '2017-12-12 09:46:12', '2017-12-12 09:46:12'); |
||||
|
INSERT INTO `t_user` VALUES (2,'aix','张三','123456','eee', '17859569358', '', 1, '2017-12-12 09:46:12', '2017-12-12 09:46:12'); |
||||
|
|
||||
|
# 下面是biz数据库中的插入数据 |
||||
|
INSERT INTO `t_user` VALUES (1,'admin1','系统管理员','123456','www', '17890908889', '系统管理员', 1, '2017-12-12 09:46:12', '2017-12-12 09:46:12'); |
||||
|
INSERT INTO `t_user` VALUES (2,'aix1','张三','123456','eee', '17859569358', '', 1, '2017-12-12 09:46:12', '2017-12-12 09:46:12'); |
||||
|
|
||||
|
``` |
||||
|
|
||||
|
## 运行测试用例 |
||||
|
|
||||
|
执行对用户表增/删/改/查的测试用例:`com.woniu.pos.ApplicationTests.java` |
||||
|
|
||||
|
|
||||
|
|
@ -0,0 +1,113 @@ |
|||||
|
<?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"> |
||||
|
<modelVersion>4.0.0</modelVersion> |
||||
|
|
||||
|
<groupId>com.woniu</groupId> |
||||
|
<artifactId>springboot-multisource</artifactId> |
||||
|
<version>1.0.0-SNAPSHOT</version> |
||||
|
<packaging>jar</packaging> |
||||
|
|
||||
|
<name>springboot-multisource</name> |
||||
|
<description>SpringBoot配置多数据源</description> |
||||
|
|
||||
|
<parent> |
||||
|
<groupId>org.springframework.boot</groupId> |
||||
|
<artifactId>spring-boot-starter-parent</artifactId> |
||||
|
<version>2.0.4.RELEASE</version> |
||||
|
</parent> |
||||
|
|
||||
|
<properties> |
||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> |
||||
|
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> |
||||
|
<java.version>1.8</java.version> |
||||
|
<druid.version>1.1.2</druid.version> |
||||
|
<mysql-connector.version>8.0.26</mysql-connector.version> |
||||
|
<mybatis-plus.version>2.1.8</mybatis-plus.version> |
||||
|
<mybatisplus-spring-boot-starter.version>1.0.5</mybatisplus-spring-boot-starter.version> |
||||
|
</properties> |
||||
|
|
||||
|
<dependencies> |
||||
|
<dependency> |
||||
|
<groupId>org.springframework.boot</groupId> |
||||
|
<artifactId>spring-boot-starter-aop</artifactId> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>mysql</groupId> |
||||
|
<artifactId>mysql-connector-java</artifactId> |
||||
|
<version>${mysql-connector.version}</version> |
||||
|
<scope>runtime</scope> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>com.alibaba</groupId> |
||||
|
<artifactId>druid</artifactId> |
||||
|
<version>${druid.version}</version> |
||||
|
</dependency> |
||||
|
<!-- MyBatis plus增强和springboot的集成--> |
||||
|
<dependency> |
||||
|
<groupId>com.baomidou</groupId> |
||||
|
<artifactId>mybatis-plus</artifactId> |
||||
|
<version>${mybatis-plus.version}</version> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>com.baomidou</groupId> |
||||
|
<artifactId>mybatisplus-spring-boot-starter</artifactId> |
||||
|
<version>${mybatisplus-spring-boot-starter.version}</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<dependency> |
||||
|
<groupId>org.springframework.boot</groupId> |
||||
|
<artifactId>spring-boot-starter-test</artifactId> |
||||
|
<scope>test</scope> |
||||
|
</dependency> |
||||
|
<dependency> |
||||
|
<groupId>org.hamcrest</groupId> |
||||
|
<artifactId>hamcrest-all</artifactId> |
||||
|
<version>1.3</version> |
||||
|
<scope>test</scope> |
||||
|
</dependency> |
||||
|
</dependencies> |
||||
|
|
||||
|
<build> |
||||
|
<plugins> |
||||
|
<plugin> |
||||
|
<groupId>org.apache.maven.plugins</groupId> |
||||
|
<artifactId>maven-compiler-plugin</artifactId> |
||||
|
<version>3.6.1</version> |
||||
|
<configuration> |
||||
|
<!--<proc>none</proc>--> |
||||
|
<source>1.8</source> |
||||
|
<target>1.8</target> |
||||
|
</configuration> |
||||
|
</plugin> |
||||
|
<plugin> |
||||
|
<groupId>org.apache.maven.plugins</groupId> |
||||
|
<artifactId>maven-surefire-plugin</artifactId> |
||||
|
<version>2.20</version> |
||||
|
<configuration> |
||||
|
<skip>true</skip> |
||||
|
</configuration> |
||||
|
</plugin> |
||||
|
<plugin> |
||||
|
<groupId>org.springframework.boot</groupId> |
||||
|
<artifactId>spring-boot-maven-plugin</artifactId> |
||||
|
<executions> |
||||
|
</executions> |
||||
|
</plugin> |
||||
|
</plugins> |
||||
|
|
||||
|
<resources> |
||||
|
<resource> |
||||
|
<directory>src/main/resources</directory> |
||||
|
</resource> |
||||
|
<resource> |
||||
|
<directory>src/main/java</directory> |
||||
|
<includes> |
||||
|
<include>**/*.xml</include> |
||||
|
</includes> |
||||
|
</resource> |
||||
|
</resources> |
||||
|
</build> |
||||
|
|
||||
|
</project> |
@ -0,0 +1,72 @@ |
|||||
|
#!/bin/bash |
||||
|
# 项目自动更新脚本 |
||||
|
# 先clone相应的分支下来: |
||||
|
# git clone ssh://git@120.24.173.142:7999/xxx.git |
||||
|
# 远程调试启动: |
||||
|
# nohup java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -Xms512m -Xmx1024m -jar -Dspring.profiles.active=${profile} ${jarfile} >/dev/null 2>&1 & |
||||
|
|
||||
|
function start { |
||||
|
profile="$1" |
||||
|
echo "启动环境profile=${profile}" |
||||
|
jarfile=$(ls target/*.jar) |
||||
|
if [[ "$?" == "0" ]]; then |
||||
|
stop $profile $jarfile |
||||
|
fi |
||||
|
branch=$(git branch |awk '{print $2}') |
||||
|
git pull origin ${branch} |
||||
|
echo "更新完代码开始重新打包" |
||||
|
mvn clean && mvn clean && mvn package -DskipTests=true |
||||
|
if [[ "$?" != "0" ]]; then |
||||
|
echo "编译出错,退出!" |
||||
|
exit 1 |
||||
|
fi |
||||
|
echo "nohup java -Xms512m -Xmx1024m -jar -Dspring.profiles.active=${profile} ${jarfile} >/dev/null 2>&1 &" |
||||
|
nohup java -Xms512m -Xmx1024m -jar -Dspring.profiles.active=${profile} ${jarfile} >/dev/null 2>&1 & |
||||
|
echo "启动应用中,请查看日志文件..." |
||||
|
} |
||||
|
|
||||
|
function stop { |
||||
|
profile="$1" |
||||
|
jarfile="$2" |
||||
|
ps aux | grep "${jarfile}" | grep "spring.profiles.active=${profile}" | grep -v grep > /dev/null |
||||
|
if [[ "$?" == "0" ]]; then |
||||
|
echo "该应用还在跑,我先停了它" |
||||
|
pid=$(ps aux | grep "${jarfile}" | grep "spring.profiles.active=${profile}" | grep -v grep |awk '{print $2}') |
||||
|
if [[ "$pid" != "" ]]; then |
||||
|
kill -9 $pid |
||||
|
fi |
||||
|
echo "停止应用成功..." |
||||
|
fi |
||||
|
} |
||||
|
|
||||
|
if [[ "$1" == "start" ]]; then |
||||
|
if [[ "$#" < 2 ]]; then |
||||
|
echo "请输入正确参数:./epay.sh start {profile}" |
||||
|
exit 1 |
||||
|
fi |
||||
|
profile="$2" |
||||
|
if [[ "$profile" != "dev" && "$profile" != "test" && "$profile" != "show" && "$profile" != "production" ]]; then |
||||
|
echo "参数错误,请输入正确的profile参数,使用方法:" |
||||
|
echo "./epay.sh start {profile} ==> 启动应用,{profile}取值:dev|test|show|production" |
||||
|
exit 1 |
||||
|
fi |
||||
|
start "${profile}" |
||||
|
elif [[ "$1" == "stop" ]]; then |
||||
|
if [[ "$#" < 2 ]]; then |
||||
|
echo "请输入正确参数:./epay.sh stop {profile}" |
||||
|
exit 1 |
||||
|
fi |
||||
|
profile="$2" |
||||
|
if [[ "$profile" != "dev" && "$profile" != "test" && "$profile" != "show" && "$profile" != "production" ]]; then |
||||
|
echo "参数错误,请输入正确的profile参数,使用方法:" |
||||
|
echo "./epay.sh stop {profile} ==> 停止应用,{profile}取值:dev|test|show|production" |
||||
|
exit 1 |
||||
|
fi |
||||
|
jarfile=$(ls target/*.jar) |
||||
|
stop $profile $jarfile |
||||
|
else |
||||
|
echo "参数错误,使用方法:{}参数是必填的,[]参数可选" |
||||
|
echo "./epay.sh start {profile} ==> 启动应用,{profile}取值:dev|test|show|production" |
||||
|
echo "./epay.sh stop {profile} ==> 停止应用,{profile}取值:dev|test|show|production" |
||||
|
exit 1 |
||||
|
fi |
@ -0,0 +1,12 @@ |
|||||
|
package com.woniu.pos; |
||||
|
|
||||
|
import org.springframework.boot.SpringApplication; |
||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication; |
||||
|
|
||||
|
@SpringBootApplication |
||||
|
public class Application { |
||||
|
public static void main(String[] args) { |
||||
|
SpringApplication.run(Application.class, args); |
||||
|
} |
||||
|
|
||||
|
} |
@ -0,0 +1,16 @@ |
|||||
|
package com.woniu.pos.common.annotion; |
||||
|
|
||||
|
import java.lang.annotation.*; |
||||
|
|
||||
|
/** |
||||
|
* 多数据源标识 |
||||
|
* @author 蜗牛 |
||||
|
*/ |
||||
|
|
||||
|
@Inherited |
||||
|
@Retention(RetentionPolicy.RUNTIME) |
||||
|
@Target({ElementType.METHOD}) |
||||
|
public @interface DataSource { |
||||
|
|
||||
|
String name() default ""; |
||||
|
} |
@ -0,0 +1,73 @@ |
|||||
|
package com.woniu.pos.common.aop; |
||||
|
|
||||
|
import com.woniu.pos.common.annotion.DataSource; |
||||
|
import com.woniu.pos.common.mutidatesource.DSEnum; |
||||
|
import com.woniu.pos.common.mutidatesource.DataSourceContextHolder; |
||||
|
import org.aspectj.lang.ProceedingJoinPoint; |
||||
|
import org.aspectj.lang.Signature; |
||||
|
import org.aspectj.lang.annotation.Around; |
||||
|
import org.aspectj.lang.annotation.Aspect; |
||||
|
import org.aspectj.lang.annotation.Pointcut; |
||||
|
import org.aspectj.lang.reflect.MethodSignature; |
||||
|
import org.slf4j.Logger; |
||||
|
import org.slf4j.LoggerFactory; |
||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; |
||||
|
import org.springframework.core.Ordered; |
||||
|
import org.springframework.stereotype.Component; |
||||
|
|
||||
|
import java.lang.reflect.Method; |
||||
|
|
||||
|
/** |
||||
|
* 多数据源切换的aop |
||||
|
*/ |
||||
|
@Aspect |
||||
|
@Component |
||||
|
@ConditionalOnProperty(prefix = "xncoding", name = "muti-datasource-open", havingValue = "true") |
||||
|
public class MultiSourceExAop implements Ordered { |
||||
|
|
||||
|
private Logger log = LoggerFactory.getLogger(this.getClass()); |
||||
|
|
||||
|
@Pointcut(value = "@annotation(com.woniu.pos.common.annotion.DataSource)") |
||||
|
private void cut() { |
||||
|
|
||||
|
} |
||||
|
|
||||
|
@Around("cut()") |
||||
|
public Object around(ProceedingJoinPoint point) throws Throwable { |
||||
|
|
||||
|
Signature signature = point.getSignature(); |
||||
|
MethodSignature methodSignature = null; |
||||
|
if (!(signature instanceof MethodSignature)) { |
||||
|
throw new IllegalArgumentException("该注解只能用于方法"); |
||||
|
} |
||||
|
methodSignature = (MethodSignature) signature; |
||||
|
|
||||
|
Object target = point.getTarget(); |
||||
|
Method currentMethod = target.getClass().getMethod(methodSignature.getName(), methodSignature.getParameterTypes()); |
||||
|
|
||||
|
DataSource datasource = currentMethod.getAnnotation(DataSource.class); |
||||
|
if (datasource != null) { |
||||
|
DataSourceContextHolder.setDataSourceType(datasource.name()); |
||||
|
log.debug("设置数据源为:" + datasource.name()); |
||||
|
} else { |
||||
|
DataSourceContextHolder.setDataSourceType(DSEnum.DATA_SOURCE_CORE); |
||||
|
log.debug("设置数据源为:dataSourceCore"); |
||||
|
} |
||||
|
try { |
||||
|
return point.proceed(); |
||||
|
} finally { |
||||
|
log.debug("清空数据源信息!"); |
||||
|
DataSourceContextHolder.clearDataSourceType(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* aop的顺序要早于spring的事务 |
||||
|
*/ |
||||
|
@Override |
||||
|
public int getOrder() { |
||||
|
return 1; |
||||
|
} |
||||
|
|
||||
|
} |
@ -0,0 +1,245 @@ |
|||||
|
package com.woniu.pos.common.dao.entity; |
||||
|
|
||||
|
import java.util.Date; |
||||
|
import com.baomidou.mybatisplus.annotations.TableName; |
||||
|
import com.baomidou.mybatisplus.enums.IdType; |
||||
|
import com.baomidou.mybatisplus.annotations.TableId; |
||||
|
import com.baomidou.mybatisplus.activerecord.Model; |
||||
|
import java.io.Serializable; |
||||
|
|
||||
|
/** |
||||
|
* @author 蜗牛 |
||||
|
*/ |
||||
|
@TableName(value = "t_user") |
||||
|
public class User extends Model<User> { |
||||
|
|
||||
|
private static final long serialVersionUID = 1L; |
||||
|
|
||||
|
/** |
||||
|
* 主键ID |
||||
|
*/ |
||||
|
@TableId(value="id", type= IdType.AUTO) |
||||
|
private Integer id; |
||||
|
/** |
||||
|
* 账号 |
||||
|
*/ |
||||
|
private String username; |
||||
|
/** |
||||
|
* 名字 |
||||
|
*/ |
||||
|
private String name; |
||||
|
/** |
||||
|
* 密码 |
||||
|
*/ |
||||
|
private String password; |
||||
|
/** |
||||
|
* md5密码盐 |
||||
|
*/ |
||||
|
private String salt; |
||||
|
/** |
||||
|
* 联系电话 |
||||
|
*/ |
||||
|
private String phone; |
||||
|
/** |
||||
|
* 备注 |
||||
|
*/ |
||||
|
private String tips; |
||||
|
/** |
||||
|
* 状态 1:正常 2:禁用 |
||||
|
*/ |
||||
|
private Integer state; |
||||
|
/** |
||||
|
* 创建时间 |
||||
|
*/ |
||||
|
private Date createdTime; |
||||
|
/** |
||||
|
* 更新时间 |
||||
|
*/ |
||||
|
private Date updatedTime; |
||||
|
|
||||
|
/** |
||||
|
* 获取 主键ID. |
||||
|
* |
||||
|
* @return 主键ID. |
||||
|
*/ |
||||
|
public Integer getId() { |
||||
|
return id; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 设置 主键ID. |
||||
|
* |
||||
|
* @param id 主键ID. |
||||
|
*/ |
||||
|
public void setId(Integer id) { |
||||
|
this.id = id; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 获取 账号. |
||||
|
* |
||||
|
* @return 账号. |
||||
|
*/ |
||||
|
public String getUsername() { |
||||
|
return username; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 设置 账号. |
||||
|
* |
||||
|
* @param username 账号. |
||||
|
*/ |
||||
|
public void setUsername(String username) { |
||||
|
this.username = username; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 获取 名字. |
||||
|
* |
||||
|
* @return 名字. |
||||
|
*/ |
||||
|
public String getName() { |
||||
|
return name; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 设置 名字. |
||||
|
* |
||||
|
* @param name 名字. |
||||
|
*/ |
||||
|
public void setName(String name) { |
||||
|
this.name = name; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 获取 密码. |
||||
|
* |
||||
|
* @return 密码. |
||||
|
*/ |
||||
|
public String getPassword() { |
||||
|
return password; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 设置 密码. |
||||
|
* |
||||
|
* @param password 密码. |
||||
|
*/ |
||||
|
public void setPassword(String password) { |
||||
|
this.password = password; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 获取 md5密码盐. |
||||
|
* |
||||
|
* @return md5密码盐. |
||||
|
*/ |
||||
|
public String getSalt() { |
||||
|
return salt; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 设置 md5密码盐. |
||||
|
* |
||||
|
* @param salt md5密码盐. |
||||
|
*/ |
||||
|
public void setSalt(String salt) { |
||||
|
this.salt = salt; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 获取 联系电话. |
||||
|
* |
||||
|
* @return 联系电话. |
||||
|
*/ |
||||
|
public String getPhone() { |
||||
|
return phone; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 设置 联系电话. |
||||
|
* |
||||
|
* @param phone 联系电话. |
||||
|
*/ |
||||
|
public void setPhone(String phone) { |
||||
|
this.phone = phone; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 获取 备注. |
||||
|
* |
||||
|
* @return 备注. |
||||
|
*/ |
||||
|
public String getTips() { |
||||
|
return tips; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 设置 备注. |
||||
|
* |
||||
|
* @param tips 备注. |
||||
|
*/ |
||||
|
public void setTips(String tips) { |
||||
|
this.tips = tips; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 获取 状态 1:正常 2:禁用. |
||||
|
* |
||||
|
* @return 状态 1:正常 2:禁用. |
||||
|
*/ |
||||
|
public Integer getState() { |
||||
|
return state; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 设置 状态 1:正常 2:禁用. |
||||
|
* |
||||
|
* @param state 状态 1:正常 2:禁用. |
||||
|
*/ |
||||
|
public void setState(Integer state) { |
||||
|
this.state = state; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 获取 创建时间. |
||||
|
* |
||||
|
* @return 创建时间. |
||||
|
*/ |
||||
|
public Date getCreatedTime() { |
||||
|
return createdTime; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 设置 创建时间. |
||||
|
* |
||||
|
* @param createdTime 创建时间. |
||||
|
*/ |
||||
|
public void setCreatedTime(Date createdTime) { |
||||
|
this.createdTime = createdTime; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 获取 更新时间. |
||||
|
* |
||||
|
* @return 更新时间. |
||||
|
*/ |
||||
|
public Date getUpdatedTime() { |
||||
|
return updatedTime; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 设置 更新时间. |
||||
|
* |
||||
|
* @param updatedTime 更新时间. |
||||
|
*/ |
||||
|
public void setUpdatedTime(Date updatedTime) { |
||||
|
this.updatedTime = updatedTime; |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
protected Serializable pkVal() { |
||||
|
return this.id; |
||||
|
} |
||||
|
|
||||
|
} |
@ -0,0 +1,11 @@ |
|||||
|
package com.woniu.pos.common.dao.repository; |
||||
|
|
||||
|
import com.woniu.pos.common.dao.entity.User; |
||||
|
import com.baomidou.mybatisplus.mapper.BaseMapper; |
||||
|
|
||||
|
/** |
||||
|
* @author 蜗牛 |
||||
|
*/ |
||||
|
public interface UserMapper extends BaseMapper<User> { |
||||
|
|
||||
|
} |
@ -0,0 +1,11 @@ |
|||||
|
package com.woniu.pos.common.mutidatesource; |
||||
|
|
||||
|
/** |
||||
|
* @author 蜗牛 |
||||
|
*/ |
||||
|
public interface DSEnum { |
||||
|
|
||||
|
String DATA_SOURCE_CORE = "dataSourceCore"; //核心数据源
|
||||
|
|
||||
|
String DATA_SOURCE_BIZ = "dataSourceBiz"; //其他业务的数据源
|
||||
|
} |
@ -0,0 +1,31 @@ |
|||||
|
package com.woniu.pos.common.mutidatesource; |
||||
|
|
||||
|
/** |
||||
|
* @author 蜗牛 |
||||
|
*/ |
||||
|
public class DataSourceContextHolder { |
||||
|
|
||||
|
private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>(); |
||||
|
|
||||
|
/** |
||||
|
* @param dataSourceType 数据库类型 |
||||
|
* @Description: 设置数据源类型 |
||||
|
*/ |
||||
|
public static void setDataSourceType(String dataSourceType) { |
||||
|
contextHolder.set(dataSourceType); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @Description: 获取数据源类型 |
||||
|
*/ |
||||
|
public static String getDataSourceType() { |
||||
|
return contextHolder.get(); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @Description: 清除数据源类型 |
||||
|
*/ |
||||
|
public static void clearDataSourceType() { |
||||
|
contextHolder.remove(); |
||||
|
} |
||||
|
} |
@ -0,0 +1,15 @@ |
|||||
|
package com.woniu.pos.common.mutidatesource; |
||||
|
|
||||
|
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource; |
||||
|
|
||||
|
/** |
||||
|
* @author 蜗牛 |
||||
|
*/ |
||||
|
public class DynamicDataSource extends AbstractRoutingDataSource { |
||||
|
|
||||
|
@Override |
||||
|
protected Object determineCurrentLookupKey() { |
||||
|
return DataSourceContextHolder.getDataSourceType(); |
||||
|
} |
||||
|
|
||||
|
} |
@ -0,0 +1,95 @@ |
|||||
|
package com.woniu.pos.config; |
||||
|
|
||||
|
import com.alibaba.druid.pool.DruidDataSource; |
||||
|
import com.baomidou.mybatisplus.plugins.PaginationInterceptor; |
||||
|
import com.woniu.pos.common.mutidatesource.DSEnum; |
||||
|
import com.woniu.pos.common.mutidatesource.DynamicDataSource; |
||||
|
import com.woniu.pos.config.properties.MutiDataSourceProperties; |
||||
|
import com.woniu.pos.config.properties.DruidProperties; |
||||
|
import org.mybatis.spring.annotation.MapperScan; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; |
||||
|
import org.springframework.context.annotation.Bean; |
||||
|
import org.springframework.context.annotation.Configuration; |
||||
|
import org.springframework.transaction.annotation.EnableTransactionManagement; |
||||
|
|
||||
|
import java.sql.SQLException; |
||||
|
import java.util.HashMap; |
||||
|
|
||||
|
/** |
||||
|
* mybatis配置多数据源! |
||||
|
* @author 蜗牛 |
||||
|
*/ |
||||
|
@Configuration |
||||
|
@EnableTransactionManagement(order = 2) |
||||
|
@MapperScan(basePackages = {"com.woniu.pos.common.dao.repository"}) |
||||
|
public class MybatisPlusConfig { |
||||
|
|
||||
|
@Autowired |
||||
|
DruidProperties druidProperties; |
||||
|
|
||||
|
@Autowired |
||||
|
MutiDataSourceProperties mutiDataSourceProperties; |
||||
|
|
||||
|
/** |
||||
|
* 核心数据源 |
||||
|
*/ |
||||
|
private DruidDataSource coreDataSource() { |
||||
|
DruidDataSource dataSource = new DruidDataSource(); |
||||
|
druidProperties.config(dataSource); |
||||
|
return dataSource; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 另一个数据源 |
||||
|
*/ |
||||
|
private DruidDataSource bizDataSource() { |
||||
|
DruidDataSource dataSource = new DruidDataSource(); |
||||
|
druidProperties.config(dataSource); |
||||
|
mutiDataSourceProperties.config(dataSource); |
||||
|
return dataSource; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 单数据源连接池配置 |
||||
|
*/ |
||||
|
@Bean |
||||
|
@ConditionalOnProperty(prefix = "xncoding", name = "muti-datasource-open", havingValue = "false") |
||||
|
public DruidDataSource singleDatasource() { |
||||
|
return coreDataSource(); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 多数据源连接池配置 |
||||
|
*/ |
||||
|
@Bean |
||||
|
@ConditionalOnProperty(prefix = "xncoding", name = "muti-datasource-open", havingValue = "true") |
||||
|
public DynamicDataSource mutiDataSource() { |
||||
|
|
||||
|
DruidDataSource coreDataSource = coreDataSource(); |
||||
|
DruidDataSource bizDataSource = bizDataSource(); |
||||
|
|
||||
|
try { |
||||
|
coreDataSource.init(); |
||||
|
bizDataSource.init(); |
||||
|
} catch (SQLException sql) { |
||||
|
sql.printStackTrace(); |
||||
|
} |
||||
|
|
||||
|
DynamicDataSource dynamicDataSource = new DynamicDataSource(); |
||||
|
HashMap<Object, Object> hashMap = new HashMap<>(); |
||||
|
hashMap.put(DSEnum.DATA_SOURCE_CORE, coreDataSource); |
||||
|
hashMap.put(DSEnum.DATA_SOURCE_BIZ, bizDataSource); |
||||
|
dynamicDataSource.setTargetDataSources(hashMap); |
||||
|
dynamicDataSource.setDefaultTargetDataSource(coreDataSource); |
||||
|
return dynamicDataSource; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* mybatis-plus分页插件 |
||||
|
*/ |
||||
|
@Bean |
||||
|
public PaginationInterceptor paginationInterceptor() { |
||||
|
return new PaginationInterceptor(); |
||||
|
} |
||||
|
} |
@ -0,0 +1,246 @@ |
|||||
|
package com.woniu.pos.config.properties; |
||||
|
|
||||
|
import com.alibaba.druid.pool.DruidDataSource; |
||||
|
import com.alibaba.druid.util.JdbcConstants; |
||||
|
import org.springframework.boot.context.properties.ConfigurationProperties; |
||||
|
import org.springframework.stereotype.Component; |
||||
|
|
||||
|
import java.sql.SQLException; |
||||
|
|
||||
|
/** |
||||
|
* <p>数据库数据源配置</p> |
||||
|
* <p>说明:这个类中包含了许多默认配置,若这些配置符合您的情况,您可以不用管,若不符合,建议不要修改本类,建议直接在"application.yml"中配置即可</p> |
||||
|
*/ |
||||
|
@Component |
||||
|
@ConfigurationProperties(prefix = "spring.datasource") |
||||
|
public class DruidProperties { |
||||
|
|
||||
|
private String url; |
||||
|
|
||||
|
private String username; |
||||
|
|
||||
|
private String password; |
||||
|
|
||||
|
private String driverClassName = "com.mysql.cj.jdbc.Driver"; |
||||
|
|
||||
|
private Integer initialSize = 10; |
||||
|
|
||||
|
private Integer minIdle = 3; |
||||
|
|
||||
|
private Integer maxActive = 60; |
||||
|
|
||||
|
private Integer maxWait = 60000; |
||||
|
|
||||
|
private Boolean removeAbandoned = true; |
||||
|
|
||||
|
private Integer removeAbandonedTimeout = 180; |
||||
|
|
||||
|
private Integer timeBetweenEvictionRunsMillis = 60000; |
||||
|
|
||||
|
private Integer minEvictableIdleTimeMillis = 300000; |
||||
|
|
||||
|
private String validationQuery = "SELECT 'x'"; |
||||
|
|
||||
|
private Boolean testWhileIdle = true; |
||||
|
|
||||
|
private Boolean testOnBorrow = false; |
||||
|
|
||||
|
private Boolean testOnReturn = false; |
||||
|
|
||||
|
private Boolean poolPreparedStatements = true; |
||||
|
|
||||
|
private Integer maxPoolPreparedStatementPerConnectionSize = 50; |
||||
|
|
||||
|
private String filters = "stat"; |
||||
|
|
||||
|
public void config(DruidDataSource dataSource) { |
||||
|
dataSource.setDbType(JdbcConstants.MYSQL); |
||||
|
dataSource.setUrl(url); |
||||
|
dataSource.setUsername(username); |
||||
|
dataSource.setPassword(password); |
||||
|
dataSource.setDriverClassName(driverClassName); |
||||
|
dataSource.setInitialSize(initialSize); // 定义初始连接数
|
||||
|
dataSource.setMinIdle(minIdle); // 最小空闲
|
||||
|
dataSource.setMaxActive(maxActive); // 定义最大连接数
|
||||
|
dataSource.setMaxWait(maxWait); // 获取连接等待超时的时间
|
||||
|
dataSource.setRemoveAbandoned(removeAbandoned); // 超过时间限制是否回收
|
||||
|
dataSource.setRemoveAbandonedTimeout(removeAbandonedTimeout); // 超过时间限制多长
|
||||
|
|
||||
|
// 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
|
||||
|
dataSource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis); |
||||
|
// 配置一个连接在池中最小生存的时间,单位是毫秒
|
||||
|
dataSource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis); |
||||
|
// 用来检测连接是否有效的sql,要求是一个查询语句
|
||||
|
dataSource.setValidationQuery(validationQuery); |
||||
|
// 申请连接的时候检测
|
||||
|
dataSource.setTestWhileIdle(testWhileIdle); |
||||
|
// 申请连接时执行validationQuery检测连接是否有效,配置为true会降低性能
|
||||
|
dataSource.setTestOnBorrow(testOnBorrow); |
||||
|
// 归还连接时执行validationQuery检测连接是否有效,配置为true会降低性能
|
||||
|
dataSource.setTestOnReturn(testOnReturn); |
||||
|
// 打开PSCache,并且指定每个连接上PSCache的大小
|
||||
|
dataSource.setPoolPreparedStatements(poolPreparedStatements); |
||||
|
dataSource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize); |
||||
|
// 属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有:
|
||||
|
// 监控统计用的filter:stat
|
||||
|
// 日志用的filter:log4j
|
||||
|
// 防御SQL注入的filter:wall
|
||||
|
try { |
||||
|
dataSource.setFilters(filters); |
||||
|
} catch (SQLException e) { |
||||
|
e.printStackTrace(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
public String getUrl() { |
||||
|
return url; |
||||
|
} |
||||
|
|
||||
|
public void setUrl(String url) { |
||||
|
this.url = url; |
||||
|
} |
||||
|
|
||||
|
public String getUsername() { |
||||
|
return username; |
||||
|
} |
||||
|
|
||||
|
public void setUsername(String username) { |
||||
|
this.username = username; |
||||
|
} |
||||
|
|
||||
|
public String getPassword() { |
||||
|
return password; |
||||
|
} |
||||
|
|
||||
|
public void setPassword(String password) { |
||||
|
this.password = password; |
||||
|
} |
||||
|
|
||||
|
public String getDriverClassName() { |
||||
|
return driverClassName; |
||||
|
} |
||||
|
|
||||
|
public void setDriverClassName(String driverClassName) { |
||||
|
this.driverClassName = driverClassName; |
||||
|
} |
||||
|
|
||||
|
public Integer getInitialSize() { |
||||
|
return initialSize; |
||||
|
} |
||||
|
|
||||
|
public void setInitialSize(Integer initialSize) { |
||||
|
this.initialSize = initialSize; |
||||
|
} |
||||
|
|
||||
|
public Integer getMinIdle() { |
||||
|
return minIdle; |
||||
|
} |
||||
|
|
||||
|
public void setMinIdle(Integer minIdle) { |
||||
|
this.minIdle = minIdle; |
||||
|
} |
||||
|
|
||||
|
public Integer getMaxActive() { |
||||
|
return maxActive; |
||||
|
} |
||||
|
|
||||
|
public void setMaxActive(Integer maxActive) { |
||||
|
this.maxActive = maxActive; |
||||
|
} |
||||
|
|
||||
|
public Integer getMaxWait() { |
||||
|
return maxWait; |
||||
|
} |
||||
|
|
||||
|
public void setMaxWait(Integer maxWait) { |
||||
|
this.maxWait = maxWait; |
||||
|
} |
||||
|
|
||||
|
public Integer getTimeBetweenEvictionRunsMillis() { |
||||
|
return timeBetweenEvictionRunsMillis; |
||||
|
} |
||||
|
|
||||
|
public void setTimeBetweenEvictionRunsMillis(Integer timeBetweenEvictionRunsMillis) { |
||||
|
this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis; |
||||
|
} |
||||
|
|
||||
|
public Integer getMinEvictableIdleTimeMillis() { |
||||
|
return minEvictableIdleTimeMillis; |
||||
|
} |
||||
|
|
||||
|
public void setMinEvictableIdleTimeMillis(Integer minEvictableIdleTimeMillis) { |
||||
|
this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis; |
||||
|
} |
||||
|
|
||||
|
public String getValidationQuery() { |
||||
|
return validationQuery; |
||||
|
} |
||||
|
|
||||
|
public void setValidationQuery(String validationQuery) { |
||||
|
this.validationQuery = validationQuery; |
||||
|
} |
||||
|
|
||||
|
public Boolean getTestWhileIdle() { |
||||
|
return testWhileIdle; |
||||
|
} |
||||
|
|
||||
|
public void setTestWhileIdle(Boolean testWhileIdle) { |
||||
|
this.testWhileIdle = testWhileIdle; |
||||
|
} |
||||
|
|
||||
|
public Boolean getTestOnBorrow() { |
||||
|
return testOnBorrow; |
||||
|
} |
||||
|
|
||||
|
public void setTestOnBorrow(Boolean testOnBorrow) { |
||||
|
this.testOnBorrow = testOnBorrow; |
||||
|
} |
||||
|
|
||||
|
public Boolean getTestOnReturn() { |
||||
|
return testOnReturn; |
||||
|
} |
||||
|
|
||||
|
public void setTestOnReturn(Boolean testOnReturn) { |
||||
|
this.testOnReturn = testOnReturn; |
||||
|
} |
||||
|
|
||||
|
public Boolean getPoolPreparedStatements() { |
||||
|
return poolPreparedStatements; |
||||
|
} |
||||
|
|
||||
|
public void setPoolPreparedStatements(Boolean poolPreparedStatements) { |
||||
|
this.poolPreparedStatements = poolPreparedStatements; |
||||
|
} |
||||
|
|
||||
|
public Integer getMaxPoolPreparedStatementPerConnectionSize() { |
||||
|
return maxPoolPreparedStatementPerConnectionSize; |
||||
|
} |
||||
|
|
||||
|
public void setMaxPoolPreparedStatementPerConnectionSize(Integer maxPoolPreparedStatementPerConnectionSize) { |
||||
|
this.maxPoolPreparedStatementPerConnectionSize = maxPoolPreparedStatementPerConnectionSize; |
||||
|
} |
||||
|
|
||||
|
public String getFilters() { |
||||
|
return filters; |
||||
|
} |
||||
|
|
||||
|
public void setFilters(String filters) { |
||||
|
this.filters = filters; |
||||
|
} |
||||
|
|
||||
|
public Boolean getRemoveAbandoned() { |
||||
|
return removeAbandoned; |
||||
|
} |
||||
|
|
||||
|
public void setRemoveAbandoned(Boolean removeAbandoned) { |
||||
|
this.removeAbandoned = removeAbandoned; |
||||
|
} |
||||
|
|
||||
|
public Integer getRemoveAbandonedTimeout() { |
||||
|
return removeAbandonedTimeout; |
||||
|
} |
||||
|
|
||||
|
public void setRemoveAbandonedTimeout(Integer removeAbandonedTimeout) { |
||||
|
this.removeAbandonedTimeout = removeAbandonedTimeout; |
||||
|
} |
||||
|
} |
@ -0,0 +1,49 @@ |
|||||
|
package com.woniu.pos.config.properties; |
||||
|
|
||||
|
import com.alibaba.druid.pool.DruidDataSource; |
||||
|
import org.springframework.boot.context.properties.ConfigurationProperties; |
||||
|
import org.springframework.stereotype.Component; |
||||
|
|
||||
|
/** |
||||
|
* 多数据源的配置 |
||||
|
*/ |
||||
|
@Component |
||||
|
@ConfigurationProperties(prefix = "biz.datasource") |
||||
|
public class MutiDataSourceProperties { |
||||
|
|
||||
|
private String url; |
||||
|
|
||||
|
private String username; |
||||
|
|
||||
|
private String password; |
||||
|
|
||||
|
public void config(DruidDataSource dataSource) { |
||||
|
dataSource.setUrl(url); |
||||
|
dataSource.setUsername(username); |
||||
|
dataSource.setPassword(password); |
||||
|
} |
||||
|
|
||||
|
public String getUrl() { |
||||
|
return url; |
||||
|
} |
||||
|
|
||||
|
public void setUrl(String url) { |
||||
|
this.url = url; |
||||
|
} |
||||
|
|
||||
|
public String getUsername() { |
||||
|
return username; |
||||
|
} |
||||
|
|
||||
|
public void setUsername(String username) { |
||||
|
this.username = username; |
||||
|
} |
||||
|
|
||||
|
public String getPassword() { |
||||
|
return password; |
||||
|
} |
||||
|
|
||||
|
public void setPassword(String password) { |
||||
|
this.password = password; |
||||
|
} |
||||
|
} |
@ -0,0 +1,66 @@ |
|||||
|
package com.woniu.pos.service; |
||||
|
|
||||
|
import com.woniu.pos.common.annotion.DataSource; |
||||
|
import com.woniu.pos.common.dao.entity.User; |
||||
|
import com.woniu.pos.common.dao.repository.UserMapper; |
||||
|
import com.woniu.pos.common.mutidatesource.DSEnum; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
import org.springframework.transaction.annotation.Transactional; |
||||
|
|
||||
|
import javax.annotation.Resource; |
||||
|
|
||||
|
/** |
||||
|
* 后台用户管理 |
||||
|
*/ |
||||
|
|
||||
|
@Service |
||||
|
@Transactional |
||||
|
public class UserService { |
||||
|
|
||||
|
@Resource |
||||
|
private UserMapper userMapper; |
||||
|
|
||||
|
/** |
||||
|
* 通过ID查找用户 |
||||
|
* @param id |
||||
|
* @return |
||||
|
*/ |
||||
|
public User findById(Integer id) { |
||||
|
return userMapper.selectById(id); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 通过ID查找用户 |
||||
|
* @param id |
||||
|
* @return |
||||
|
*/ |
||||
|
@DataSource(name = DSEnum.DATA_SOURCE_BIZ) |
||||
|
public User findById1(Integer id) { |
||||
|
return userMapper.selectById(id); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 新增用户 |
||||
|
* @param user |
||||
|
*/ |
||||
|
public void insertUser(User user) { |
||||
|
userMapper.insert(user); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 修改用户 |
||||
|
* @param user |
||||
|
*/ |
||||
|
public void updateUser(User user) { |
||||
|
userMapper.updateById(user); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 删除用户 |
||||
|
* @param id |
||||
|
*/ |
||||
|
public void deleteUser(Integer id) { |
||||
|
userMapper.deleteById(id); |
||||
|
} |
||||
|
|
||||
|
} |
@ -0,0 +1,48 @@ |
|||||
|
xncoding: |
||||
|
muti-datasource-open: true #是否开启多数据源(true/false) |
||||
|
|
||||
|
|
||||
|
spring: |
||||
|
profiles: |
||||
|
active: dev |
||||
|
|
||||
|
mybatis-plus: |
||||
|
mapper-locations: classpath*:com/woniu/pos/common/dao/repository/mapping/*.xml |
||||
|
typeAliasesPackage: > |
||||
|
com.woniu.pos.common.dao.entity |
||||
|
global-config: |
||||
|
id-type: 0 # 0:数据库ID自增 1:用户输入id 2:全局唯一id(IdWorker) 3:全局唯一ID(uuid) |
||||
|
db-column-underline: false |
||||
|
refresh-mapper: true |
||||
|
configuration: |
||||
|
map-underscore-to-camel-case: true |
||||
|
cache-enabled: true #配置的缓存的全局开关 |
||||
|
lazyLoadingEnabled: true #延时加载的开关 |
||||
|
multipleResultSetsEnabled: true #开启的话,延时加载一个属性时会加载该对象全部属性,否则按需加载属性 |
||||
|
logging: |
||||
|
level: |
||||
|
org.springframework.web.servlet: ERROR |
||||
|
server: |
||||
|
port: 8088 |
||||
|
--- |
||||
|
|
||||
|
spring: |
||||
|
profiles: dev |
||||
|
datasource: |
||||
|
url: jdbc:mysql://127.0.0.1:3306/ds1database?rewriteBatchedStatements=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=Asia/Shanghai |
||||
|
username: root |
||||
|
password: 123456 |
||||
|
|
||||
|
biz: |
||||
|
datasource: |
||||
|
url: jdbc:mysql://127.0.0.1:3306/ds2database?rewriteBatchedStatements=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=Asia/Shanghai |
||||
|
username: root |
||||
|
password: 123456 |
||||
|
|
||||
|
logging: |
||||
|
level: |
||||
|
ROOT: INFO |
||||
|
com: |
||||
|
xncoding: DEBUG |
||||
|
file: D:/logs/app.log |
||||
|
|
@ -0,0 +1,139 @@ |
|||||
|
:: :.:..... : ....: ..: ..: : : :..: ..:...:.... :..........:.... .:.: : :.::..:.:......:.:..: : :...:..:::..::.:::::::..::.:::::.::::::::::::::::::::::::::::::::::::::::::;:::::: |
||||
|
.::.:.:::...: ::.:.:.:.:::.::::.::.:.:.:::.:.:.::::.::::.:::.::.:.:.:::::::::::::::.::::::::::::::::::::.:::.:::::::::::::::::::::::;:;:;;;:;;:;:i::::;;,;,,;::;,i;:i;,;:;,;;,;;i:;: |
||||
|
::.::: :::::::::::::::::.:::::::::::::::.:::::::::::::.::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;:;;:::::;::::::ii,;,ii,,;,,:ii:ii,;::i:ii:i;,;;,i:,;,:i:::;,,;,,: |
||||
|
::::.::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;:::;;:::::::::::::::::;::::::;::::::::;:::;::::::i:,;:::;,;:;i:;,,;i;i:i,;,;,:,;,::,;;,;,:,;:;,,;i:;,;::i:,;,,;:;, |
||||
|
:;;:;;:,i:,;:;::i:i:;:,;,,ii,,:;;,:i,;,,;,,i:,:::;:i::,;::,;,:,::i;,;::;:::::,:;:,::::,::i;:,::::::,:,:,,:ii:i::i:,;,;,:::;:;:;i:i;ii:i;,i;,;:::,:,::,::i:i:,::;,i,;ii;,,::;,:::i:i: |
||||
|
;ii:,:,;;,;,,:,:;,:,:,::ii;,;:i::;::,:::::::;::,;:,;,:i:,;:::;:i::::::::::::::;,;,;;:::;:::::,::;:::::;,:i::i:;,::::;::::::,::,:i:iiiiiiiiii::i:::;:;:::::::;::i:,;i,i:i:i:,;::::::: |
||||
|
,;;:;,;::;:::;:i::::::,;::i:i;::::,::;,::::,:::::;:i::;,:::;iifffjiii;i:::::i:,;;:,,:::,::::::::::::::::;,;;,;:;:,;,:;,::::;i:;;:iiiiii,i:,;::::;,:,:::;,;,:,:;,;;ii;,;i;::;::,:i::: |
||||
|
,i:i::::::::::::::::,::i:i;;ii::;::,::::::::,::::;:i:;,;ijffLffffGGGDDLGfii;;:,;:i::::::;::::::::::::;::;:i;,;:;::;::::::,;:i:;;i:i:iii,;ii:,;::::,:;::::,:;::;,;;,;ii:i;,:;:;:::::: |
||||
|
:ii:;;:,:;,:::::,;,:::::iiiii;,;,:;:i::::::::;::;;,;ii;ifGLGGLGDGGGDDEDGffijiiii;::;:::::::::::::::::,:;:,::::,:,:::,;:::::,::,i:i,ii;;i,;;,;:,::;::::::;:::,;:,;i:i:,;,,;:,:,:;:::: |
||||
|
i;;,:::::::::::::::::::i::i:ii:,::::::::::;:::,;:iii;ifLDGfDDDGDDEEEKEEDEGDDGLfi:,;::::::,::::::::::::::;:;:i:::;:;::::::::;i:;,;:i:ii,;i:::,,::::,;::::,::::::;,:i:i;,;:,::::::,::: |
||||
|
i:,;,,:::,:::::,::,::,:,;;,;i:i::;,:::::::,::,;,;i;ifLDGGDEKEDEEEKKDEDKEKEEDDDGfi;,::::::::::::::::::::::::::::::::::::::::::,:;:i;;i:;,;,,;::;:;:::::::::::;::,;i:;::;,,;:;;:i:;::: |
||||
|
i:,;::::::::::::;::::,:::;:i::;,,:,:::::::;:,;iiifGGGDGDEEDKEKEEWW#WKKEWKEW#KKEGj;i;,::::::::::::::::::::.::..::.::...: ::::::,;:;:,;i:i:;::;::;:;:::::::::::::,;;:;:::i,:;:,::::::: |
||||
|
:;;,::,:;:,::::::,::::,;,:::;,:;;:;:::::::::;,jjfGDGDGGGEDEEKKK#KWK#E#WWW#KWEWEDffii:;::::::.:::::::::::...;;:ijiii:::: :::::;:,:i,:;::;:::,:,::::::::::::,::::::::,::;::::::::::::: |
||||
|
,::;,::::::::::::::::::::::i:;:::,:,::::.:;,iifffffDGGfLDEKKWK#WKEEWWWEWKKWWWWKKDGGi;,::::::::::::::.:.:;:;;;jLfGGfji;:::::.:::;::;;,:::;,;::;::;:::::::::;::::;:;:;::::::;:::i::::: |
||||
|
::;::::::::::.:::::::::::::;:::::::,::::::i,ififLDGDDDDEKWEWWK##KWEWWWWKKKWKWWKWWKDGfi;::::::..:::::;,;ijLGjjjtjLGDDGDGGGi::::::::;:::::::::;::;,::::.:::::::::;::,:::;::::::::::::: |
||||
|
:;:::::::::::.:::::::::::;:::,:;::;::::.::ijtGDGDDDDDEEKWWWKWWWWE##KK##KKWKWK#KWK#EGfii:::: :::::::::iiifLGGGGjjtGGEDGEGDj;;:::;:::;::::;::::::,;:::::::::::::::::;::::::::;:,;::::: |
||||
|
:::;:::::::.::.:::::::::;:::::::::,::::::ifDGDKEKEDELDKKEKEK#WW#K#WWWWWEWWKK#KK#KKKGGi;::::::.:.::.:;ijfGGGEEDGGtjGGKDDEDG;;:.::::::::::::::::::::::::::::::::::::::;::::::::::::::: |
||||
|
:::::::::::::::::::::::::::::::::::::::;ifDEDDD#GDEDEWWKEW#W#E#WWWKKWKWWKK#EWK#KEKGjii;:::::::: ::iiLGDGKKKKKDKKEjjGEDKEEjjGfj;:::::::::;:;:::::::::.:::::::::::;:;:::.::::::::::::: |
||||
|
::::::::::::::::::::::::::;::::::::::::iiGKKDGEWEKEWWK#K#KWK#WW#KW#WK#WWKWKWK#KKKDj,;:::::... :::i;jGGDEEKDKKKKKKGjjGEKKDjGGGjf::::;::::::::::::::.::.::::::.::.:.::.::::::::::::::: |
||||
|
:::::::::.::: ::::::::::;,::;::::::::,;ifLEKEEDEK#KKKWE#WW##KWWK##KK#KWWKKKWEGKGGi:;::::.::.:::::ifGGGEKKKEKDKWKEGLjGD#EKGGGGGG;:.::::::::::::::::::::..:::::::::::::::::::::::::::: |
||||
|
:::.::: :::.:::::::::::,::::::::::::i;ifGDEKKEEKKK#KK#KWWWKWWW##EWW#E#WEWEWEEDGjLi::::::::.: .:;ijjLGEGDGGEKGEKK#KGGGKKWEDEKDGGi;::::::::::::::::.:..:..:..::.::.:.:::::::::::::.::. |
||||
|
:::::.::::.::::::.:::::::::::.:.::::iifGGDK#EWEKEWK#E#WKWWWKWKWWWKKKK#WEWDGGGLit;;:...:::. :.:;ijLjjjjLGGEEKDEEDGEKDGGEDKKKEEGGi;::: :...:: :::. : ::.::..:::..: .::.::..:::::..:.:. |
||||
|
::::::.::.::: :.::::::::::::..:.: ::iiGGDEEWKKKKEE#K#KWWWWW#K#EW#KWW#KWEKEGfLf;;;;;: ::: ::::ijLGjtjLLGGKEEEEEDKEDKDEGGGKKEKKDGj;;:;;::::..:....:.: ...:..:....:::...:..:.....::.::. |
||||
|
:::.:.:::.: ::.:::::.::.::..:: :::::iLGDGDKWKE#KK#WWEKWWWWWKWWWEWWWWKKKKKDDfjj;;,,..:...:.::;jGjjjjLGKEEGEKDDEGDDGGGGfLjGKKEEKGjj;;,;;: :.:.:::...:. :....::.. : ..:::::..:::: :::: |
||||
|
.:..:..:: : ..:::: :..:: :....: .::ijGDKDGEWEW#EW#EWKWWWWWWKWWWEWKK#KWKKEDGGi;;;,,::.:.: ::;i;t;LEGGDGEGKEGGGLjiji;j;;;;tjGGEKDGjt;.:.:: :: ::.:: : :.......:..:: :.:.:...:.:...::. |
||||
|
..: ::..: :..::...: :.: :: :::..:::ifLGEKEKEK##WWK##KKWWWKKKWWK#K#KKKWKWKEKGti;:.:.,.:. : ;ij;;jGGGLGEGGDEGLjj;t;;;;;;;;;;tjGEDGjt;:.. ;:..........::..:.......: :... :..: ... :... |
||||
|
..... : : :.. :.: .: .: :.. ::::;ifGEEKKE#KKWWWEWK#K#K#K##EWKEWKWWWW#EEEDGi;;;.:.:..:: :;ijitGGLLGEGEKGGGjj;;;;;;,;.;;:;;;LGKEGt;.: :. :..:: ::. :. :... .... :.....: : :::.....:: |
||||
|
:......:. ..: ...::..: ::.....:::;iDEEWEKKKKKKK#WK#KWKW#K##EWWWKW#EKEKWKKEDGj;;;.::.,: ;;ii;jjGGLGGDKGGjLjji;;;,::,:.;:,::,;tjGGLL;................:... : .:: ::....:..: :: :..... |
||||
|
. .::..: : . : :..: :..:: :..:.:::iGDKKKK#KK##E##WWWW#KWW#WK#EKWWKKKEEWEKGEGj;,.:...,..::;;jjLGLGLGEGLGLjjtjt;;;;;.;;.::,:.,;iGDGG;;.............. :..: ::.. :.. : : .: :. : :..: |
||||
|
.::..: :..:... ...:: :: :: : : ::,iGDEEKEK#EWKW#WW#KWK#KWWWWWKEWKKEWDDDKKKDGGi;.:.:,.;::;;itLGLfLGGGGGjjjt;i;;;.;,,::,:...::,;LGGGL;:: .. : ....... : : :....: :: .. :.....: :: :: |
||||
|
:..::.::.: . :: : :.....: :: :::ijDGDWEKWWK#KWWW#K#WW#WW#WWWKK#KWKEKKKDKEEGGj;.:...:.,:;;;jLjGLLGKELjLjjt;t;;;,,;:.:.:..:..:.iGGGLj:.:..... : : ::..... ... :.:......: : : : : |
||||
|
.. : :..: :. ::. :.......: :: :::;fGDDDEWKWW##WW#KWWWWWWWWWWE#KWKEWEKEKGDEDGGj;:.:..:.,;i;jjGGLLDKEGLjjjtjt;;;,,;,:..:.:.:.:.:;;LGt;j:.: .. :....:: :: : : . : . : :.: :.: :.: .: |
||||
|
. : .... .: : : :.....:......:::ijfDEEWKK#K##K#WW#KWWEWEWWWWWKWEWKEKGGDGEGGjj;.:..:.,;jEitiGGLjGKELjjtijii;;;,;..;:.:.::.:.:..;jGjtt.:: :....: : :.: :.: ::...... ::......:.:.:. |
||||
|
: : .........: : : : : :...::itGDDKEW#KWKW#KWWWEE##WWKWEWEK#KKEKKDGKGGGGf;,:..:..;jGK;jLGLGGEKEjLjtt;j;;;;,,,::::.;..:...::.jGLj;j ::: :: :: : : ......:: :: :.:....:.: :.:.:. |
||||
|
: ...................: :....:...:;fGDDKEKWEW##W##KWWWW#WW#K#KWK#KKKDKGfGGGGLj;::..:.;ijjjjGGGGDKKEGjLjjLjjji;;;;,;.::.:..:....:.;fGLijj.:: ::.::.... :: : : : :..:.. : ::..:..: |
||||
|
....: :.............:: ...:..: :ijGDKEWWWWWEK#KK#WWWKWE#KKWWK#KWDEGGGGfjGji;...:..;;;;;iLjGLGKKKGLLjLLGGLLLj;;:;:.;:..::.::....:jDLijj.:............. :..: :: :: :.......:: :: ::. |
||||
|
: : ..: .. : : :: :: ::. :: :: ;fGDEDEWWWKWWWWWWW#WK##WKWWK#KKEDKEDGfGfjL;;.:.,:.:;...;GLLGDDKEGLGLGGLjfjfLj;;;;,..::.:.::.:...jKLt;j;.................. .. : .........: .....:: |
||||
|
:...: :: .. : : ....: .. ... :: ;fLGDDEKWWKKWWW#K#E#KKWKWKWK#EKEDEGDGGGjji..:.::;.:.:..;LGLGKKELLjjjttt;;;;;;;;;,;..:.:;;;i;::..;KGj;;j; : : .. :: .. : . .. . .. :: . .. ..: |
||||
|
.. . : .. :: : .. : ....: . :;ffDGEK#K#K#WW##WWWW#KWWWK#KWWEKGDDGfGfjj;.:...:..:..:;jGGGEWKGLfLjtjtttij;.;;;;;.:.::;;;iji;:..;KGf;;;; .. : ... .... .: . ..: : .. : :: :... : |
||||
|
. .. ... .... . . .... . :: :. :LGDDDEK#WE##WW#K#KK#EWWW#KKWKEKDDGDjGfij;.::...::..:;j;iLEDKKGjLjjjtjjLLGLj.;;;;;..:.,:;;;t;j::.EGj;;;;: .: .. . : .. .. : . :. ....... . |
||||
|
. . . .: ... . . :. . : .. . ..;jGDGDKKKKKWK#WKW#EK#WKK#KWWWKEDDGGGjGjjtj,:...:.;..:;;;;;GKKGLLtjjtjjGGEEKD;.,;;;.:.;;,;,:::;;.:DGL;;;;...... : .. : .: : : : ... : .. :..... |
||||
|
: . : . :.. : . ... : . .. ...iGDGDEKKWE##EWWK#K#KWWKKKWWWEDDDGGGjGfjji;::.:.....::,..:,DKLjtjttLLGELiiEGG;;i;;.:,;;;;jjj;: :.GGj;;;;... .. : .. : : .. .... : : : .. :....: |
||||
|
. : . .... :.. ... . . : . . ;GEGDDEE#KWW#KWKK#WE##K#K#KKDKGEGGGGjjjjj;:.,..:.:....;,:,;EGLjtjjjjLLLLjLGK;;;;,: ;;;jGDWKG;. .Gjt:,:;: .: ... : .. : : . .... :: ......... |
||||
|
. ... : . . : .. .. .. : . : :GGDEDEWKKWWWEWWKKWWEWWEWKKKDGGGGGjjGjjji;:;:::....::.,:.;;jGLtjttjtjtj;;;;j;;t;;..;;;jiifDW;:.:Ei; :.; : : .. .. :.........:... .. : :... : .: |
||||
|
.. ... . .. : : . .... . .: ..GDGEEKKK#KKKKWWWW#KWWWKEWKKGLL...;jjfjji;,;::.:.. ...:;:;;,;Gtjtj;j;;;;;;;;;jtt;:.:.;;itjjLL; .L::..;... : .. :: .. : : ..........: : : ....: |
||||
|
. . . ..: .... . ........ .... :....LKLKDKKKWWWWWEWWWK#W#WKKKEELL;:;..,;jjjt;;.;.:.:.:....:;;;;iLjtjiti;;;;,,.;;tji;;:.:;t;;;.;;;..j:. .:. : : ..... : .. ..... : .. : :: :...: |
||||
|
.. . ... .. : .. :. :: .... ...: :.iGGDEKKWEWWWKWWKWWK#EWKWEKGLt,tt...;;jjj;;:;;:... :. .;;,;;jGjttti;;,,,;.;;ijtt;...:;;;;;..:. .j: :; .... . ...: ...... : .. : :: :: .::..: :: |
||||
|
. : . . : .. :: ..: :: :: .. : ....;jGGDKDKKKWKKK#KWWWWK#KKGLLtt,tj,..:;;;;;;:,,:,:.. . ..;,;LKLttjt;t,.:,;:,;ttjt;:...:,.:.:.: . j: .:. : : .... : : :: .. ......: : :: :..:: |
||||
|
. . ....: : : . : :.. : ....: :: :.:;fGDKDEWWKWEEWK#KWWWWKEGGjf;,ti:,...;;;;;;;:,:..:..:..,;jKELjttt;;;;,,,.;;jtj;;::....:,,:...:.j:..:.. . .. : .. :: : ........: : ::....: : : |
||||
|
:....... :...: :.. :...... ....::iGEEEKEKKWKWKWWK#KEWWELjLj;,,,j;.:.,;;;:,::;:.:......;;KKGLtttt;,;,.;,;:;jjj;;.....:.::... . f;..: ::.........: :: .......: :.:.:: :.......:: |
||||
|
. .... .....: .. : : : : ..... : .::GGDKEDWWEWK#EWWWK#KWGLjjf;;.tLL. ..;;;;;:;:,:...:. .,jEWGLtttt;;;,;:..;tjLj;;:.:...,:.:..: .ii.:.......... : : : :: :: :::.::.::.....::.. : |
||||
|
....... : . ..... ..: ..:..... .: .:.iGGKKKKKKK#EW##K#WWKGLjtLt,.;ff; .:.;;;;;;:;;:..:.:.:,LEELtjti;;,,::.;ttjtj;,:...;,:::.: . .i;;:::.::.:...:....::: : :::..:.::::..: :..:: :.: |
||||
|
..: :: :: ... :... : :...:..:::..:...;DGEKKEWWWKWWWWWKKKKLjjLfj;.,;t;.:.;,,;,:;.,:,,...::,:jDELtttt;;;:,.;;Ljtjj;;..:.;;.... :.. ;;;::.:.....:..:.:.: :: : ::..::::::::.:.::.::... |
||||
|
.: :::...................:.:..: : :..:.:jGDEEWWKKK#K##W#WWKLjjjtjt....;..;.;;;;;;.,,..,.:...,;GELtjtt;,;,,:;;jjLLLj;,;..;,,:..: : :;:;:::::::.:.:..:.: :.::::..::.::.::.:.::.::::.:: |
||||
|
::::::.:.:.......:.: :.:.:::::::.:...:::.;GDDEKEWKWW#WW#KKKLLjtjtj;....:,,;;;;;;;.,,:.......;;LKLtjtt;;,,;;it;tiij;.:;: ,;;,..:.: .:.:;.::::...::.:....::.:.:::...: : :..: ::.::...: |
||||
|
::::::.:: :::: ...:.:.:.. :::.:..:.:.....:LGEDWWWWW#KWKWKEEjjtjjjLt;.. .;;;;;,:,::::..::..:.:jKELttt;;;;:;;ttt;t;;:,:...:;;;.:.. .:::..:: ::.::.:.:::...: .: :.:..:.:.::.:..:::.:.. |
||||
|
.::.:.: ::: : : :.:.:.:..::...::: :.:..:.:LGDDE#WWW##WWWKKGLjjtttjLt;:.:,;,;;;;,,;:::.:..:.:,LGEGjttt;;;;t;tj;ttt;;...:.:;;,:.... :...;..::: : :: : ...::.:: :....:....:.: :.: :... |
||||
|
....: : .: :.:...:..: : :::....:: ::..:: :jDWKWWWEWWWWKKDDGjtjttit;;;;;;tt;t;;;,;:,.:.. :..:,;LGLttjt;;,;tLLDDDGGDLff;..::;;:..:. ..: .: :..::: ... ..:: : ...: ::........ :: :.: .. |
||||
|
.....:.:: :.: :...:: ::.. : :..:: : ..::..fKWWKWWWKEKKKEDGGjji;;t;;;,;;;;ttt;;;;.;....:..:,,;tGLLtit;;;.;tGELLLGLfffLjt,.;;,..:. ::...;... : :: :. :.: ::: :............: : ..... |
||||
|
:: :....: :.: ..: :.....: :: ::.........iEWWWKWWKKKEKEGGGj;jt;i;,,:.;tijt;;;;;;.;.:..:...,:tGLjtti;;,;;;LGLjt;;;t;ffft;;,;:.... :: :: : ....: : .: .... : ............ :: :: :: |
||||
|
: : : :.........: ::...................;GKWEKEKEKEGGGGGjjti;;;;,,.;;;tttjt;;;,:...:...,:;;;LLtjttt;;.;;;DGL,;:...:tfLf;;:..: .. : :...............:: : : ...........: :: :: :: |
||||
|
:: ::.. :: : : :: :: :: : : : :: :...:iDKGGGGGGGLGjjjjti;i;,,;:;:,;jjttti;;,,,..:..,:,,;:.;jtttt;;,;;itLDGLfft,,,Lft;;,.... : :. : .. . : : :...: . .. : : :: :: : : : : |
||||
|
........: .....: : : : ...: :: : : : :LGGGGGGGLLjjjtj;jt;;,;,,.,;;tjtjt;;;;;:,::..::,:,:..;;;i;;;;;;ttjfGDLffjjjjt,;,;:.:.: .. : : .. :: :: .... : : : : :: .. : : .. :...: |
||||
|
:: :: ::.....: : :: :: :: : .......: :: :: ;i;ijjjjjjjj;jtt;i;;,,::,.;;;jjiit;;;,,:..,.,.:;,...:;tiit;;;;;itjfGGLffjti..;;..... .. :. ...: . : .. .. : .. .........: .. : ..... |
||||
|
:: :: :: : : : :...: ... :: :: : : : . ::.:,:i::::::;t;;;,,;;::,,:;itjitit;;;;,:,:,,:,; :..:,;ti;;t;;;;;,;;;,;....;.:..... :: : .. :: :: :.. :: ... : : .. :.. ..... .... |
||||
|
: .......... :: : : ..........: .. : .. :..::i;,:;::::.:;;;;,;:::..:.,;;ttt;;;;,;;;:,,,,,, : ...:;t;jiit;;;;;;;,;...:.:..: .: .. :.. ..: :........... . : .. ....... : :: :: :: |
||||
|
:: :.......... : :: :: :... .. : :: :: :itfGDGffjii;::.:. ::;;.;:,:.,::,;;tittt;;;;;;,,,:;.. : ...;;ti;t;;;,,:.::.:: .:.:.... ...: :: : ..: .. .... ..... :: :: :... : : : : |
||||
|
.: ...... :: :: ....... .. .. : :...:ifLDDDWDWWEWKWKWEDf;. : .;:::.,.,;,;;;;t;;;;;;;;;;. . : ..:.:.;;tit;;;:,:..... :.... : : :: : : . : : : :..... :.. : .. . : ...: :.. .. |
||||
|
:.. .. : :... ..... ....... .. .. .. ;tfGGDEEEKWK#W#KWWKKEGf:.. :,.:...:::;;;:.. ...: ...... .:. ..:;;itt;;:;.::.::. :...: . .. .. . ........ . :: ..: .. : : :: .. : .... :: |
||||
|
. : ..... .. ... . ..... : .. .. : : iffDDDDDWKKWWKEWWEW#KKKKi...:::,.::;,,:. .. ... .. ..: ...:.:::;;;;jit;;:;.: ...... ..: ..: ... :.. : : :: .... : : .. .....: : : : . . |
||||
|
..: . : . .........: :.. ..... :: ..: :jffLDEDEEKKKK##WWKKEEKKEDL: ..:,:::.::; :: :.. :.. ... . :.:.:,,;;;itj;;;.:.....:: .. :... ... .. : : : : . ..... : ....: : : :: .. .. |
||||
|
. .... ...: . : ... .... . . ....ijLfLGDDDDKKWWWWKWKKKWEKWEEEKD: ..,.:.::. :.. :.:.. .. : :.::.;.;;iititt;;;;:::... :......... : : ..... : : .. : .... :.. : .... : . |
||||
|
.. ... ... : .... : : .. .....: : itjfGDDDEEEKKKWEW#KWWKKWEWEEKDDGi :.::,: .. .... . . : : : .::.::;;tttjttiti;:;..... :.. . : . .. : : : ...... : : :: : :.... ...... |
||||
|
..: : .. : : . :: : . : : ..fLfDDDDEEDKDEEKKKWWWKWWWEWEEEEEEDj..::.;: :: . : . : .. :.:.:.;;;titjtit;;:;:...:.... :....: .... ...: : : . : ... : .. ... ... .... . |
||||
|
....... . ....: :: . : : . : : tGfDDEWEWEWWW##WW###W###K#KKEEEEDEf:.,: : .. ... .. : ....:.,:,:;;tit;t;,,,.,...... .: .... . : . .: . . . . : ...: . : ... ... . . . |
||||
|
.. :: :: : . . : .... .........: :ifffDDEEWEK#KEW#WK#WWWW#W#WWEKEEEEKf.:. : . : : . .. .. . :,:;;;jttt;;;;,::....:. : : : .. : . ... ... . : ... .. . .. : .. . ..... .. . |
||||
|
........ : .. :. : . ....: ........:ffffGLDDDKKKWK#E##W##W#W####WKWDEEEEf ..: ... :.. .. : ... : ..::.;;;j;;i;;:;::.::.... . ........ : . ... ........ : .... . .. :... . . .. |
||||
|
.. :: : .... ... . .. : :: .:iiffffGDGDDEDKKKK#KK#WWK#KK#KKEW##WKDWDEi.... .... ... ..... : ...:,;;tti;i;;,;.:.,::.:,:. :. : .......: .. :... : ....: : : :: .. : : . |
||||
|
.... : ....: ... .: :.. : .::tifDGLfGDDDGDDWEWKWKWWWWWWK#WK#WEKK##KDEWEi : :.. .. :...: .: ...,;;;;iti;;;;,.;:..:.:::::.. : ::..: : : : ..... : : .........:. :...... ::..:. |
||||
|
..: :... ....... ........... iiiitfEDDDfGDGGDDEEWWWWWWKKWWWK#KKEWEEED#WEDDG: .... :: : ....... : . ,;;;;j;t;t;;,;..:::..:.;....: : ... : .. :: ....::..: : .....: : ....:. : . .. |
||||
|
... :: :: : ......:: :...: :ititifLDGDfLGDfGLDWEWWKKK#EWK#KKKK#KKKKEKDWKEDDf............. : : . :;;;;tt;tt;;;:,..;..::.;.;;.:: .:::..::. :..:.:.....:..:. :.....::..:::...::.:: .. |
||||
|
::.:: ::... :. :....:...:tDLifjtfDEDGGDDffffDKWEEWEWWEWWEWWEKKWKKEWEKEDEEDG:.: .:::....:::.:.: . .;t;ttt;ttt;;:;..,.:.,.:;;;;;.:. ::..::.:.:::::.::::::::::..:::.::.::::::.:.::.::. |
||||
|
: .: : .:::.:.:: :: :: :iDDfifffGDEDLLDLLffLDKEKKEWEEWEKEKKKWKKWEKWEWWEKDDLL..:: :..::::.:: .: . ;t;itt;tt;t;;,;,,.,,,:,;,;,;;;:: ::::: ::..:::..:::.::.::.:.::::.:.:.:::::::::: |
||||
|
.: :::.::: .:.: ::..:.:;iGDLtfffLDGDfLGLGLffGDKEKEWEEEDEKKKKKKEEWWKK#KKKKEDDLfff;::.::.:.:.::: : .;;ti;ijit;;;,;:.,..,:;;;;;,;;:;::.. :.:::.::.::::::.:::::::::::.:.:::.::::.::.::: |
||||
|
.:.:..::::.::::::.:.::tfGGfftDffLDfDGfffLLfDKEEDEEDKEKKKKKKEWEKWKKEWEWWEWKEKDDLDi::::::.::::: . . .;;;;i;j;;t;;;;..:.::;;;;;;;i;;:.. :.. .:::::::;::::;;:::::;:;:;:::;:;::;;::;: |
||||
|
:.:::::.:.::::.:.:::iitDfGfGfLffGLDDfLGGffDEDKEDEEWKKWEWWEDWEKKKKKKKKKKKKWEEEDDLi::;::::::::. .....:;;t;;titit;,,,;.;,;,;;;;;t;;;::.:..::.::. ::;::;::;i;,:ii;i;i:i:::;;:::;:::;,,; |
||||
|
:::.:::::::.:::.:::iitfDfGDfDDfffDGDLDLLLGKDKEKEEKKKKKKKKKEEKKKK#KWKKEEKKEWEDEDLLi;:;:;:;::: . . .,;;;;j;tt;;;;;;:;::;;;;;;;;;.:;::.:::;;;:::..;,:ii,i,;iiii,iiiii:i:i::i:;i:ii;iii |
||||
|
;iii;;:;;:;::;:iiiijffKffGfLWGfLDGDLLDGDDEEEEDWEKKKKKKK#EKKKWE##WKKKKKKKEKDEDEWEEDDii;i:: : : .: :,;;;;j;t;;t;;:;;;;:;:;,;;;;;;;;:;,:;;;;::::.:.::ii:i,;,;;i:,i::i:i;,;:i:::;,,;ii, |
||||
|
,;,;,,ii;,;,,:iiittttGDtGDfD#LLGLDfDLDGDEEDEDWEWEKKKKKKEEKDKKKKEWW#KKWKEWDKKKWEWWEEEGt: :...:. ;;;;;;jtt;;;:;;;;,;;;;,;;;;;j;:,,:;,;;;;,::.:: :::;:;;;::,;;:i;,;:::,:::;::,:i::; |
||||
|
iiii;;;;:i,;;iG,itiffWLfDLDWEDfLGDDLDDDEKKEEEEEKKKKKKKKKEWEKKKKWKKKKKWWEEKKK#EWEEKDEEDG . ...:.:. :,;;;;t;;;;;,;;;;;;;;,;;;;itj;;;:;;;;;;;::....: ::,;::,;:;::;::::::;:::::;::::;i: |
||||
|
;,,;;,;ii:i:LEttijffDWffDDDWWDGLGDfDGDEEDEEEKEEWEKEWEKKKWEWWEWEE#WWEWEEWEKE#EWEKDEEDEDEi. ...::;:..;;;;t;;;;;;,;;;;;;;;;;;;;tij;;:;;,;i;;;;.:.:. .: ::::;:::::::::;::::::::::::;:::: |
||||
|
:::::::::::jGiittffDKWtLDEWKKDLDLLDLGDDEEDDKKEKEWWEWEKKKWEWWEWKWW#KWKKEKK#KKEWEWDEEDWDKEDj::..: : ;,;t;;;;;;;;;;;;;i;;;;;;;;;j;;,:;;;;;i;;,:..:.: : :::::::::::::::::::::::::::::::: |
||||
|
::::::::::tKjijtffjE#EffDKKKDDGfGLGLDDEKDEDEKKWEWEWEWWEKKKKW#E##KWEWKKEWWEWEKEEEKKEKDEDEED.:::.:.:;;;;:.;;t;;;;;;it;;;;;;i;it;;:;;,;;;;;,;:.:.. . . :::::::::::::::::::.:::::::::.:. |
||||
|
::::::::::D#iftffffWWDfGDKKKEDLDLLLLLDDDEEEWEKKEWWEWEKKKKKKKKW#WWKKKKKEWKEWEKKKKEEEKDEEDED::....:,;;;,:;;t;;t;;i;;;i;;;;;;;;j;;,;,;;;i;;;;;.::... : :::::::::::.:::.:.::::...::.:... |
||||
|
:::.:::::EKfffjfffGWWLjDDEWDEDGfLLGGGDDDEEKKEWWEWWEWEKKEEWEWW#KWWKKKWEWWKWEKKKEKEEDEDKEKDED;..;::.;,,;;;t;;;;;;;;;;;;;;;;;;;;;;;;:;;;i;;,;:.::.. . .:.::::::::::::::::.::.:..::::::. |
||||
|
..:.:.:.jWGfffffjfD#DDfDEKKEEDLDLLGLDDEDEKDEKKWKEEWEWWEWKKKKK#W#EWKWEWWK#WKKEKEEEEEEKDEDEDDt ::.;;,;:;;;;;;;;;;;;;;i;;;;;;;;,;,;:;;;i;;;;,.:.. :.:. :::.:::.:...:..:::.::.::::::..:. |
||||
|
:::.:::.DKfGfffffLEWDDfDEKKEEGfDLDLGDDEEKDKKDWWEWWWWKKWEE#W#WK#WWWWKK##EWWEKKKEKEEEDEKEKDEED:..;:;;,;;;;;;;;;;;;;;;;;;;;;;;,;;;;;;;;;;;;,;:.:.: ....:::: ::::::::::::::::::::::::.: |
||||
|
:::.::::WfDLLffDfGKEDDfDEEWEDGDDDGGLDEDEEKKKEKKEWWEWWEWEEW#E#WEWWWKWWWKKKEKKKEDKKEWDEKDDEEEDG,::,:;,;;;;;:;;,;;;;,;:;;;,;:;,;;;;;i;;;i;;;,:.::. .....::.:..::::.::::::::;::;:;:;:::: |
||||
|
: :::: iELDDfffGfDWDGEfDDEDKEDLDDfDDDEDKEDEDKKKKWE#KWWWW#KK#WE#WW#KK#E#EWWEWKKKKKDEEKDEEDKDED::;:i;;;;,;:;::;;;,;;,;;;:;;;;;;;;;;;;;i;;,:,.:...... .::.:::..:..:::::::;;:;,;i:i,;i;: |
||||
|
:::.:::fGDDDGffLjD#GDEfDDDKEDGDDLDGLEEEDKEDKKKKKKKKKKWEWWK#E#KK#WKW#KWKWEKKKKKKEKKKKEKDDEDDDD.:;GG;;:;;::;::;:;;:;;;;;;,;;;;;i;;i;;j;;;;;::.:: .. ..:.:.:.::::::.:::;;iiii;i;i;;i;i; |
||||
|
.:::...DGDEWLtGffD#LDDfGEEDEDLDDDfDDDEDKDEEKKEEWKKWE#WKKKWEWKK#K#W#K#W#K#WKKEWEWKEDDKDKEEDEDE::jWG;;;;:;,:;;,;;:;;:,;,;;;i;ii;;;;;i;i;;:.:... : : ...:..::..::::::;:iiiiiiiiiiiii;i |
||||
|
:.::..fWDKKKLfDtLKWLKDfDDDDDGLDDDGDDEWEDEKEWEKKKKE#EWWKWKWWKKKW#KEWK#KWW##KKKKKDKDEEEEEDEDDDD::;;it;;:;:;;::;;;;;:;,;;;;;;;;tji;;;iti;;:...: ...... ....: ::......::;;iiitijiiiii;i; |
||||
|
.:::.:GWEKKKDfDiDEWGKKfGDEDDEGDDDGDEKDEKKDKEEWWKKKKWEK#KWWKWWWWW#KWWWKWKKKKKEWEKKEWKKEKEKDDED;:::;;;;:;:::;;;,;:;;;;;;;;;i;;;jji;iti;;:;;::.:.. . ...:...: :.:.:::::iiiiiiii;iiii;i |
||||
|
:...:iKDEW#ELDDiDWEDEKfDDGDEEDDDDDDEEEKEDKKEWEWKWWKKW#EWWWKKWE##KWEWWWWW#WWKKKKKKEDEEDEKDEEDDi.:;;;;:;:;;:;;,;:;;;;;i;;;;;;;tLjj;;;t;;;::.. . : ...:: ::....: :.:.;:i;iiii;ii;;iii; |
||||
|
.....fWLW#WEDDDjDKDKKKfDEDEWDDDEEEKDEEKEDWKKK##EWWKKWW#WWKKKWW#WK#WKWW#KWWWWWEKKKKEKDEDKDEKDE;:;::;:::;:;:;;;:;;;;;;;;;;;,;;jLj;;i;i;;;,.:...: : :.::..: : ....:.::::;iiiii;i;ii;i,; |
||||
|
:..: GWLWWW#DDLfDDLKKKLGDEDEDEDDEDEKKDEWDEWEWKK#K#KWWWK#KKKKWWWEWWK#WKKK#KKEEKKKKDEEKDKEDEEDEi;:;;:;:;:;:;;;;;;;;i;i;;;;;;;;jGji;ti;;;,,:...:. .. .. : :.::......:::;iii;iii;i;i,i; |
||||
|
:..:DEDW#WELEffDDDWKKfDEEDKDGEDDWDKDKEEWEEWE#KKWWK#W#WWWEK#W#WK#KKK#KWEWWEWWKKKKKKEKEDEKDDDEj::;:;:;:;:;;;tLGGGLL;;;;;;:;,;LLLti;t;;;;:.:.. : :...::..: : t,....:::;:i;ii;i;,;i;i;, |
||||
|
:...EEK##WEDDfLDEEW#DfDEEKDGDDDDKDEDKEDKWWWWKKKKE#WEW#EEKEWWW#K#W#KKWKKKKWEWKKKKKEKEEEEEDDEDj;:;:::;,tLEEEEEEKEKEDj;;;:;;;;ELj;i;t;;,:.:... : . .:::....,D,: ...:::;ii,ii;,;,ii;i,: |
||||
|
: ..iWDE#K##EDffGDKKWELDDDEDDDEDKDEKKEEKKEEWWK#WW#KW#WW#WEKW#K#WWWWK#W#WEKKWKK#KKKEEEDEEEDEDEi:;::,;fGEEEEEEEEEEEEEDG;;;;;;;GGjtti;;;;;:.:: : : .... : .,jD..::...:::,;ii:iiii;:iii; |
||||
|
: iEDEWW#WEEDjfDEE#EDfDDEDGDDEDDKEDKEWWEWWEWKKEWK#WWW#WEKW#K#W#W##KK#EWWWWK#WEWWEKEDEDDEWEEGj;::;jLEEEEEEEEDDEEKWEEEf,;,;;;GLjt;;i;;,:.:. . . :.::..,iDL : : :::;ii;i;i:;,iii;;, |
||||
|
::iWWWEE#K#WDLfLEDKK#DGGDDGDEDEDKEEKKKKKWWKK#KWW##WWW#KWKK#W#W#W#KWW#EWKWWKWWE#KKEKDEEDEDEDEDi;,tLLDEEEEEEDEDEDEEKKEEDEf;;;iELjij;;,;;,:.::..: :: : . ;ijG, : :..:::i;,,;ii;i;,;ii; |
||||
|
:W#KWEEW##WKLfGDKKEWDLDDDDEDDEEKDKDKKKWKWKWWWE#KK#W#WWWWWWW#KWWWWWWWWE#WWWWK#K#KKEEDEKEEEKDEffLGEEEEEEEDEDDDDDDEEWKKEEDDf;fDjtiti;;:;.:...:. . ...:iijDi. : . ::::;ii;i;i;i;,i,;i: |
||||
|
:f##DWDWWWWKELfGDWWWEELDELDDEEWEDEKKWWWKWKKWKKWEWK#K##EKWW##K#EW#WEWWWWKK#KWKKWEKEKEEEEKEDEKDLDEEEEEEEKDDDDDDDDDDEEKEEEDDELLGLjt;;;:,::.:.. ..: ....,ijDf.... : :.::;iiiii,ii;;iii; |
||||
|
iEW#DWEEW##KDDfDEKKWKDLDDGDEDWEDKEWE#WKKWEKKKEWW#W#W##WKW#W#KWK#E##W#WW#WWWWWW#WKEDWDKEDWEEDEDDEDEEEDEDEEDDDDDDDDDEKKKKEDEEKLjj;i;;;;::.:..... : ::.jijDj.: :.: :::::i:ii:i;;iiiiii: |
||||
|
EWW#D#EEW#WWDDfDEKKWEDfDDDEDEWDEEKKKK#WKWKKKKKWWW#W#K#KWW#WWE#EWWW#E#W#WKWWWWKKKDEKEEKDDEEDWEDEEEEEEEDDEDDDDDDDDDDEEKKWKEDDWLjt;;;,;:,.:..... :.:.,tijLf. :.......::::;,:;,;,;;;,;;: |
||||
|
K###DWKK#W#EELfDK#KKKGGDEDDEWKKKKEW##WWWWWEKEW#K#WW#WKK##K#E#WKW#WWW#KW#KK#WKKKEKKDEDEEEWDKKDDEEEDEDDDDDDDDDGDDDDDDEEEKKEEDEGLt;;;;;.::... ... .,,iijjDi : ....::::::::i:::;::::;:: |
||||
|
EWW#D#WDWWW#DLLDKWEKKGGDDEDEKWEKKKWKWW#WWEEWEWWWWWWWWWE###WW#KKWWWW#E##K##WWWWEEDEEEDKDEEKKEEGEGEDDEDDDDDDDDDDGDGDDDEWKWKEEDLjt;;;;.,....::.....,t,ijfD,...: :.: .:.:::::::::::::::: |
||||
|
WEW#E#WEW#WWDGLDKKKWDLLDGDEDKWEKK#WW#W##WKEKEWW#KWWWKWWWW#W#WEW#W##K#WW#KW#WWEEEDEEDEEEKKKEEDKEDDDDDDDDDDGDGDDDGDGDDDEEKWWEELft;;,;;:...:....: .i,ijGDD.... .......: .:..:.:::.:.::: |
||||
|
E##WE#EWWWKWDDfD#W#WELDLGEEEKKKEK#W#WW#EWEWEWWWWW#WWKW#WW##WWWWWWWWWWWWW##KEEDKEKKKEEEEK#WWEEWWEDDDDDDGGGDGDDGDDGDDDDEKKEKEWDft;;,:.:.: .... . .i,jfDDf: ....::..: :.... ::...:::... |
||||
|
KE##W#WEW##WDGfDWWWKDLDfDEEEKKEKKWKW#W#WKWEWEWKK##EW#W#K##WW#EK#W##W#WWWWK#WEKEWEKEDEEKWWEEDK##WEDDDDGDDDGDGDDGDGDDDDEEEKWKEEEf;;;::.::.: ... ..iijLDDi: :..: : : ::.:: :.:. : :. |
||||
|
WE#KKWWD#KWEDGLEWWWEKfLDDDKKKKKK#W#WK#KWKKEWWKW#WK#WEW#WWW##WE##K###E##W#KKEEEEKWEWKEWKWWWEE###WKDGGGDGDGDGDDDDGGGDDDDEEKEKKEED;::;:.....:.. ..,iiLLDD;......::..:... ...: : ::: :: |
||||
|
#KK##WWEWWEWDDLEW#KEEfDDEKKKKWE##W#WK#KWKK#KW#WWWE#W##W#W#WW#EWWW##WWWW#KEKEEDEKKWEEWW#WEEDE####WEDGGGGDDGDGDGGDGGDDDDEEEKEWKEEf;::.:. .: . . .iijLDDi.: : ....:..: :: :..: ..:: ::. |
||||
|
###KW#WEW##WDDfKEW#WDLLDKKDKEWWKWW#K#W#K#KKWKKKWW#K#KK###W#W#K#W#KK#W##W#EKDKKEEKKKKK#KWWEDKWWW##WEDDGDGGDGDGGGDGDGDDDDEEKKKKKKD,.;:..: .......tjfGDD,....:: :.....: ....: :.: : .. |
||||
|
#WW#KWWDK#KWDDLD#W#EDfDDKWEWEKK#W#K##K#EWKWKK#KWWKW#KW#W#W###KKWWWW##W##WWEKDEEWKKKW#W#EKDEE###W#WKDGDGGGDGGDGGGDGDGDEEEEEKKEEKDf,,:.:.:. ... ,jjLDDf ::... :.:....:.:.:...:..::.... |
||||
|
#K####WD#E#EDDLEW#WEDfGEWEWEW#K##K#WW#EWKKWEWWWK##W#WW#W#WW#W#K#K###W#WKKEKDKEWK#W##W#WEDEKEW#WKWW#KDDGGDGGGGDDGGDDDDDEEKKEKEKEEEi;.:.:.. ....ijLLDD,.. :....::....:..:....:...: ::. |
||||
|
W#K#WW#EK#WEDDfK#E#WDfDDWWEKKW#KW#K#WW##KWWWKWE#KWWWKK##W##W#WW#W#WWW#KKWKEKKKKKWE##W#KEDEEEKW##WWW#DGDDGDGDGGGGDGGDDDEDKEKEWEEEDL,:.:. : . .,tjfDDD : : :: :: :: : : :....:: :. |
||||
|
######WE#WEKDELEWW#EDfLEWKKKWW#WWWW#W#KKKKE#WKWWKW#W###W#W##WWW#K####KWEKKKKKKW##W##KKKDEKKEKWWWW#WWEDDGGGGGGDGDGDGDDEEEEKEKKEKEEDt.:.:..... tjjfEDD : ... : :.............. ...: |
||||
|
#WWW#E#D#WEDEDLWWWWKDffKKWKK#W#WWWW##K##EWEW#K#K##W#W#W#W#WK#WEK##W#EKWEKWEW#K#WK#WKWKEEEDDEWWKWWWWWWKDDGGGGGDGDGDDDDEEEEEEEEEEEEDD :.:..:.: jjtDDDf. :.... : : :.... : ..... ....: |
||||
|
W###WW#EE#KEDDfEWWKKDfDDKKKWWK#WW#K##W#KKWWWWKKW#WWWKW#####W##W##W#KKKKKEEWWK#E##K##WWDDEDEDEWWEWWWWWKEDDGGGDGDGDGGDDEDEEKKKEEEEEED..:. . . .iijEDDj : .. ... . .. .: . .. . . |
||||
|
#WW###WKWWEDEDLKW#KEDfDEWKWK#W#KW#WWW#EWKKWWWWWKKK#W#W#W#K###W##W#KKKKKKKKWWWWW##W#KWEEEDEDEKKWKWWWWW#KDGDGGGGGGDGDDDDEEEEEEEEEEDEDi. :..::..jjjDDG,. . .. : .. : . :. ..: : : .. |
||||
|
W#K#W##EWWWEDDLKWKKEDfDEEEW#KWK#WW#WK#WKWEWWWWW#WK#WWW###W#K###W###EKKW#WWE#WWWWWWWWEWDDEDDEEWKKWK#KWWWEDGGGDGDGDGDDDEDKEKEEEEKEEDDf,:. . . .tijDDf.. .. .. .. : .. : . . . |
||||
|
#WWWW##EK#KEEDfKWKWEGfDEKKW#KKWW#K#KWWWWWEWW#E#K##K#KW###W#K#####KWEKKW#WWK##KKWKW#KKKDDDDDDDKWKKKKWW#WWDDGGDGDGGDDDDEDEEEKEEEDEDEDDL, .:...,jjGDDt : .: : ...... : ... : ....: .. |
||||
|
#W#W#W#WKKEDDDLKWW#EDfGKK#KW###WW#K#K#KKKWW#KWW#WW#K##K##K###W#W##EKKW#K#E#E#WWWWEKKWWEEDEEDEKKKKKWWKWWWEDDGGGGDDGDDDDEEEEEEKEEDEDDDDj.: ...tjDEDG,. .. . .: .: ....:.... : ... : .. |
||||
|
WWW#W###EWKEDDLKKWKDDfGKKKW#WK#KWWWW#W#KWWWWEWK#WKW#KW##W###W####WWEWWW#WWE#K#WK#KWKWWEDEDEDEWKWKKKKWWWWWEDGDGGGDGDDDEEDEEEEEEDDDDEDDD.... .tDEDDD, ... :......... : : .: :: ..... |
||||
|
WW###W##EWEEDDLKEWEKGfDEWW#W##WWW#KW#W#WE#WWWEW#WE#K###WK#WWK###WWEKWW#W#KWW#W#EEKKKW#WDDDDEDEKKKKKKKW#WWWWGGGGGDGDDDDEDEEEEEEDDDDDDDDj. ..;DEDDDL...:..:...:...::.........:..::..: |
||||
|
##W#KW##EKWDGDfKKKKEDfDKEWWWWW#WK#K#WWWKWKW#KKK#WW#W##W#######W##WW#K##K##KW#KW#WEK#KKEEDKEDEDEWKWKWWKWKW#WDDGGGDGDDDEEEEEEEEDDDDDDDDDL,.. tEEDDDf..: ::..:: ::.::.::::..:..:..:.::. |
||||
|
WWK#W###DEEEGDLEKKKKDfDEWK#K##W##W#EW#KWWW#KKW#W##WWWW##W#W#W##W#KEWKWW#KWK##W#KEEWW##KDEDDDEEDKWKWKWWWWWWWEDGDGGDDDDDEDEEEEDEDDDDDDDDGL .,tEDKDGf.:.:. :...:. : :..:.::..: :. :... |
||||
|
W#W#W###DEWEDGGEDKKEDLDKK#K#WW###W#WK#KWWW#EWW#W##W#K##WW#W#WW##WKKKKKWWWWWWK#KWKKK##KKEDEEDEEEDWKKKWKW#WWWWKDGGGDGDDDEDEEEEEDEDDDGDGDDDD.LDEEDDDj:..:::....::.:..: ::.:.... :...:.: |
||||
|
#KW#WW##EEKDGDfDEKWEDLEK#K#K##W##K#KWWWWW#K#KWK###WW#W##W####W#KWE#EW##WWWW##WKKKK#WWKKDEDKKEEDEKWWWWKWKWWW#KEGGGGGDDEDEEEDEDDDDDDDDDGGGDjGDEDDDGj.:: ::.::: ::..::...: :.:::.....: |
@ -0,0 +1,49 @@ |
|||||
|
-- -------------------------------------以下是pos业务库开始------------------------------------------- |
||||
|
CREATE DATABASE IF NOT EXISTS pos default charset utf8 COLLATE utf8_general_ci; |
||||
|
SET FOREIGN_KEY_CHECKS=0; |
||||
|
USE pos; |
||||
|
|
||||
|
-- 后台管理用户表 |
||||
|
DROP TABLE IF EXISTS `t_user`; |
||||
|
CREATE TABLE `t_user` ( |
||||
|
`id` INT(11) PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID', |
||||
|
`username` VARCHAR(32) NOT NULL COMMENT '账号', |
||||
|
`name` VARCHAR(16) DEFAULT '' COMMENT '名字', |
||||
|
`password` VARCHAR(128) DEFAULT '' COMMENT '密码', |
||||
|
`salt` VARCHAR(64) DEFAULT '' COMMENT 'md5密码盐', |
||||
|
`phone` VARCHAR(32) DEFAULT '' COMMENT '联系电话', |
||||
|
`tips` VARCHAR(255) COMMENT '备注', |
||||
|
`state` TINYINT(1) DEFAULT 1 COMMENT '状态 1:正常 2:禁用', |
||||
|
`created_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', |
||||
|
`updated_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' |
||||
|
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='后台管理用户表'; |
||||
|
|
||||
|
-- 下面是pos数据库中的插入数据 |
||||
|
INSERT INTO `t_user` VALUES (1,'admin','系统管理员','123456','www', '17890908889', '系统管理员', 1, '2017-12-12 09:46:12', '2017-12-12 09:46:12'); |
||||
|
INSERT INTO `t_user` VALUES (2,'aix','张三','123456','eee', '17859569358', '', 1, '2017-12-12 09:46:12', '2017-12-12 09:46:12'); |
||||
|
|
||||
|
|
||||
|
-- -------------------------------------以下biz业务库开始------------------------------------------- |
||||
|
CREATE DATABASE IF NOT EXISTS biz default charset utf8 COLLATE utf8_general_ci; |
||||
|
SET FOREIGN_KEY_CHECKS=0; |
||||
|
USE biz; |
||||
|
|
||||
|
-- 后台管理用户表 |
||||
|
DROP TABLE IF EXISTS `t_user`; |
||||
|
CREATE TABLE `t_user` ( |
||||
|
`id` INT(11) PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID', |
||||
|
`username` VARCHAR(32) NOT NULL COMMENT '账号', |
||||
|
`name` VARCHAR(16) DEFAULT '' COMMENT '名字', |
||||
|
`password` VARCHAR(128) DEFAULT '' COMMENT '密码', |
||||
|
`salt` VARCHAR(64) DEFAULT '' COMMENT 'md5密码盐', |
||||
|
`phone` VARCHAR(32) DEFAULT '' COMMENT '联系电话', |
||||
|
`tips` VARCHAR(255) COMMENT '备注', |
||||
|
`state` TINYINT(1) DEFAULT 1 COMMENT '状态 1:正常 2:禁用', |
||||
|
`created_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', |
||||
|
`updated_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' |
||||
|
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='后台管理用户表'; |
||||
|
|
||||
|
|
||||
|
-- 下面是biz数据库中的插入数据 |
||||
|
INSERT INTO `t_user` VALUES (1,'admin1','系统管理员','123456','www', '17890908889', '系统管理员', 1, '2017-12-12 09:46:12', '2017-12-12 09:46:12'); |
||||
|
INSERT INTO `t_user` VALUES (2,'aix1','张三','123456','eee', '17859569358', '', 1, '2017-12-12 09:46:12', '2017-12-12 09:46:12'); |
@ -0,0 +1,42 @@ |
|||||
|
package com.woniu.pos; |
||||
|
|
||||
|
import com.woniu.pos.common.dao.entity.User; |
||||
|
import com.woniu.pos.service.UserService; |
||||
|
import org.junit.Test; |
||||
|
import org.junit.runner.RunWith; |
||||
|
import org.slf4j.Logger; |
||||
|
import org.slf4j.LoggerFactory; |
||||
|
import org.springframework.boot.test.context.SpringBootTest; |
||||
|
import org.springframework.test.context.junit4.SpringRunner; |
||||
|
|
||||
|
import javax.annotation.Resource; |
||||
|
|
||||
|
import static org.hamcrest.MatcherAssert.assertThat; |
||||
|
import static org.hamcrest.Matchers.is; |
||||
|
import static org.hamcrest.Matchers.nullValue; |
||||
|
|
||||
|
/** |
||||
|
* 测试 |
||||
|
*/ |
||||
|
@RunWith(SpringRunner.class) |
||||
|
@SpringBootTest |
||||
|
public class ApplicationTests { |
||||
|
private static final Logger log = LoggerFactory.getLogger(ApplicationTests.class); |
||||
|
|
||||
|
@Resource |
||||
|
private UserService userService; |
||||
|
|
||||
|
/** |
||||
|
* 测试增删改查 |
||||
|
*/ |
||||
|
@Test |
||||
|
public void test() { |
||||
|
// 核心数据库中的用户id=1
|
||||
|
User user = userService.findById(1); |
||||
|
assertThat(user.getUsername(), is("admin")); |
||||
|
|
||||
|
// biz数据库中的用户id=1
|
||||
|
User user1 = userService.findById1(1); |
||||
|
assertThat(user1.getUsername(), is("admin1")); |
||||
|
} |
||||
|
} |
@ -0,0 +1,23 @@ |
|||||
|
|
||||
|
# Build and Release Folders |
||||
|
bin-debug/ |
||||
|
bin-release/ |
||||
|
[Oo]bj/ |
||||
|
[Bb]in/ |
||||
|
|
||||
|
# Other files and folders |
||||
|
.settings/ |
||||
|
|
||||
|
# Executables |
||||
|
*.swf |
||||
|
*.air |
||||
|
*.ipa |
||||
|
*.apk |
||||
|
*.iml |
||||
|
|
||||
|
/.idea/ |
||||
|
/target/ |
||||
|
|
||||
|
# Project files, i.e. `.project`, `.actionScriptProperties` and `.flexProperties` |
||||
|
# should NOT be excluded as they contain compiler settings and other important |
||||
|
# information for Eclipse / Flash Builder. |
Loading…
Reference in new issue