diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml
new file mode 100644
index 0000000..2b63946
--- /dev/null
+++ b/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/zoo/CodeGenerator.java b/src/main/java/zoo/CodeGenerator.java
new file mode 100644
index 0000000..c046871
--- /dev/null
+++ b/src/main/java/zoo/CodeGenerator.java
@@ -0,0 +1,37 @@
+package zoo;
+
+
+import com.baomidou.mybatisplus.generator.FastAutoGenerator;
+import com.baomidou.mybatisplus.generator.config.OutputFile;
+import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
+
+import java.util.Collections;
+
+public class CodeGenerator {
+ public static void main(String[] args) {
+ String url = "jdbc:mysql://localhost:3306/zoo";
+ String username = "root";
+ String password = "83363083a";
+ String moduleName = "zoo";
+ String table = "account,admin,animal,keeper,veterinary";
+ String mapperLocation = "C:\\Users\\16058\\IdeaProjects\\zooSystem\\src\\main\\resources\\mapper\\";
+ FastAutoGenerator.create(url, username, password)
+ .globalConfig(builder -> {
+ builder.author("DJ") // 设置作者
+ // .enableSwagger() // 开启 swagger 模式
+ // .fileOverride() // 覆盖已生成文件
+ .outputDir("C:\\Users\\16058\\IdeaProjects\\zooSystem\\src\\main\\java"); // 指定输出目录
+ })
+ .packageConfig(builder -> {
+ builder.parent("com") // 设置父包名
+ .moduleName(moduleName) // 设置父包模块名
+ .pathInfo(Collections.singletonMap(OutputFile.xml,mapperLocation)); // 设置mapperXml生成路径
+ })
+ .strategyConfig(builder -> {
+ builder.addInclude(table) // 设置需要生成的表名
+ .addTablePrefix(); // 设置过滤表前缀
+ })
+ .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
+ .execute();
+ }
+}
diff --git a/src/main/java/zoo/ThreadTest/Test.java b/src/main/java/zoo/ThreadTest/Test.java
new file mode 100644
index 0000000..640a553
--- /dev/null
+++ b/src/main/java/zoo/ThreadTest/Test.java
@@ -0,0 +1,52 @@
+package zoo.ThreadTest;
+
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.FutureTask;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+public class Test {
+ public static void main(String[] args) throws ExecutionException, InterruptedException, TimeoutException {
+ FutureTask futureTask = new FutureTask<>(()->{
+ System.out.println(Thread.currentThread().getName()+"/t ---come in");
+ TimeUnit.SECONDS.sleep(5);
+ return "task over";
+ });
+ Thread t1 = new Thread(futureTask, "t1");
+ t1.start();
+ System.out.println(Thread.currentThread()+"\t ----忙其他事情去了");
+ while (true){
+ if (futureTask.isDone()){
+ System.out.println(futureTask.get());
+ break;
+ }else {
+ //暂停毫秒
+ TimeUnit.MICROSECONDS.sleep(2000);
+ System.out.println("正在处理中,不要再催了");
+ }
+ }
+ new A(()->{
+ System.out.println("c");
+ }).a();
+
+ //System.out.println(futureTask.get());
+ // System.out.println(futureTask.get(3,TimeUnit.SECONDS));
+ }
+}
+class A implements B{
+ C c ;
+ public A(C c){
+ this.c = c;
+ }
+ @Override
+ public void a() {
+ c.c();
+ System.out.println(1);
+ }
+}
+interface B{
+ public abstract void a();
+}
+interface C{
+ public abstract void c();
+}
diff --git a/src/main/java/zoo/ThreadTest/Test1.java b/src/main/java/zoo/ThreadTest/Test1.java
new file mode 100644
index 0000000..e9235a1
--- /dev/null
+++ b/src/main/java/zoo/ThreadTest/Test1.java
@@ -0,0 +1,35 @@
+package zoo.ThreadTest;
+
+import java.util.concurrent.*;
+
+public class Test1 {
+ public static void main(String[] args) {
+ //CompletableFuture默认线程池是守护线程
+ ExecutorService executorService = Executors.newFixedThreadPool(3);
+ CompletableFuture.supplyAsync(()->{
+ System.out.println(Thread.currentThread().getName() + "...come in");
+ int result = ThreadLocalRandom.current().nextInt(10);
+ try{
+ TimeUnit.SECONDS.sleep(1);
+ }catch (InterruptedException e){
+ e.printStackTrace();
+ }
+ System.out.println("--1秒钟出结果"+result);
+ return result;
+ },executorService).whenComplete((v,e)->{
+ if (e==null){
+ System.out.println("==计算完成,更新系统updateValue"+v);
+ }
+ }).exceptionally(e->{
+ e.printStackTrace();
+ System.out.println("异常情况"+e.getCause()+"\t" + e.getMessage());
+ return null;
+ });
+ System.out.println(Thread.currentThread().getName()+"线程先去忙其他任务");
+// try {
+// TimeUnit.SECONDS.sleep(3);
+// } catch (InterruptedException e) {
+// throw new RuntimeException(e);
+// }
+ }
+}
diff --git a/src/main/java/zoo/ThreadTest/Test2.java b/src/main/java/zoo/ThreadTest/Test2.java
new file mode 100644
index 0000000..e41a186
--- /dev/null
+++ b/src/main/java/zoo/ThreadTest/Test2.java
@@ -0,0 +1,18 @@
+package zoo.ThreadTest;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.function.Predicate;
+
+public class Test2 {
+ public static void main(String[] args) {
+ List list = Arrays.asList(1,2,3,3,4);
+ list.stream().distinct().filter(new Predicate() {
+ @Override
+ public boolean test(Integer integer) {
+ return integer > 1;
+ }
+ }).filter(Integer->Integer < 4).forEach(Integer -> System.out.println(Integer));
+ }
+}
diff --git a/src/main/java/zoo/ZooSystemApplication.java b/src/main/java/zoo/ZooSystemApplication.java
new file mode 100644
index 0000000..1ac5a23
--- /dev/null
+++ b/src/main/java/zoo/ZooSystemApplication.java
@@ -0,0 +1,15 @@
+package zoo;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+@MapperScan("com.demo.zoo.mapper")
+public class ZooSystemApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(ZooSystemApplication.class, args);
+ }
+
+}
diff --git a/src/main/java/zoo/common/JacksonObjectMapper.java b/src/main/java/zoo/common/JacksonObjectMapper.java
new file mode 100644
index 0000000..366844c
--- /dev/null
+++ b/src/main/java/zoo/common/JacksonObjectMapper.java
@@ -0,0 +1,56 @@
+package zoo.common;
+
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.module.SimpleModule;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
+
+import java.math.BigInteger;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
+
+import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES;
+
+/**
+ * 对象映射器:基于jackson将Java对象转为json,或者将json转为Java对象
+ * 将JSON解析为Java对象的过程称为 [从JSON反序列化Java对象]
+ * 从Java对象生成JSON的过程称为 [序列化Java对象到JSON]
+ */
+public class JacksonObjectMapper extends ObjectMapper {
+
+ public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
+ public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
+ public static final String DEFAULT_TIME_FORMAT = "HH:mm:ss";
+
+ public JacksonObjectMapper() {
+ super();
+ //收到未知属性时不报异常
+ this.configure(FAIL_ON_UNKNOWN_PROPERTIES, false);
+
+ //反序列化时,属性不存在的兼容处理
+ this.getDeserializationConfig().withoutFeatures(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
+
+
+ SimpleModule simpleModule = new SimpleModule()
+ .addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))
+ .addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)))
+ .addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)))
+
+ .addSerializer(BigInteger.class, ToStringSerializer.instance)
+ .addSerializer(Long.class, ToStringSerializer.instance)
+ .addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)))
+ .addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)))
+ .addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)));
+
+ //注册功能模块 例如,可以添加自定义序列化器和反序列化器
+ this.registerModule(simpleModule);
+ }
+}
diff --git a/src/main/java/zoo/common/R.java b/src/main/java/zoo/common/R.java
new file mode 100644
index 0000000..45a824d
--- /dev/null
+++ b/src/main/java/zoo/common/R.java
@@ -0,0 +1,38 @@
+package zoo.common;
+
+import lombok.Data;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Data
+public class R {
+
+ private Integer code; //编码:1成功,0和其它数字为失败
+
+ private String msg; //错误信息
+
+ private T data; //数据
+
+ private Map map = new HashMap(); //动态数据
+
+ public static R success(T object) {
+ R r = new R();
+ r.data = object;
+ r.code = 1;
+ return r;
+ }
+
+ public static R error(String msg) {
+ R r = new R();
+ r.msg = msg;
+ r.code = 0;
+ return r;
+ }
+
+ public R add(String key, Object value) {
+ this.map.put(key, value);
+ return this;
+ }
+
+}
diff --git a/src/main/java/zoo/config/MyCorsConfig.java b/src/main/java/zoo/config/MyCorsConfig.java
new file mode 100644
index 0000000..e16d9a0
--- /dev/null
+++ b/src/main/java/zoo/config/MyCorsConfig.java
@@ -0,0 +1,27 @@
+package zoo.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+
+@Configuration
+public class MyCorsConfig {
+ //跨越处理
+ @Bean
+ public CorsFilter corsFilter(){
+ CorsConfiguration corsConfiguration = new CorsConfiguration();
+ //允许跨域的地址
+ corsConfiguration.addAllowedOrigin("http://localhost:8888");
+ //http://localhost:8080
+ //是否发送cookie信息
+ corsConfiguration.setAllowCredentials(true);
+ corsConfiguration.addAllowedMethod("*");
+ corsConfiguration.addAllowedHeader("*");
+ //添加映射路径,拦截一切请求
+ UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+ source.registerCorsConfiguration("/**",corsConfiguration);
+ return new CorsFilter(source);
+ }
+}
diff --git a/src/main/java/zoo/config/MybatisPlusConfig.java b/src/main/java/zoo/config/MybatisPlusConfig.java
new file mode 100644
index 0000000..eda7d28
--- /dev/null
+++ b/src/main/java/zoo/config/MybatisPlusConfig.java
@@ -0,0 +1,19 @@
+package zoo.config;
+
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 添加MybatisPlus分页插件
+ */
+@Configuration
+public class MybatisPlusConfig {
+ @Bean
+ public MybatisPlusInterceptor mybatisPlusInterceptor(){
+ MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
+ mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
+ return mybatisPlusInterceptor;
+ }
+}
diff --git a/src/main/java/zoo/config/WebMvcConfig.java b/src/main/java/zoo/config/WebMvcConfig.java
new file mode 100644
index 0000000..4db3144
--- /dev/null
+++ b/src/main/java/zoo/config/WebMvcConfig.java
@@ -0,0 +1,24 @@
+package zoo.config;
+
+import com.demo.zoo.common.JacksonObjectMapper;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
+
+import java.util.List;
+
+@Configuration
+public class WebMvcConfig extends WebMvcConfigurationSupport {
+
+
+ @Override
+ protected void extendMessageConverters(List> converters) {
+ //创建消息转化器对象
+ MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
+ //设置对象转换器,底层使用Jackson对象转换为java
+ mappingJackson2HttpMessageConverter.setObjectMapper(new JacksonObjectMapper());
+ //将上面的消息转换器对象追加到mvc框架的集合中
+ converters.add(0,mappingJackson2HttpMessageConverter);
+ }
+}
diff --git a/src/main/java/zoo/controller/AccountController.java b/src/main/java/zoo/controller/AccountController.java
new file mode 100644
index 0000000..0e8bba4
--- /dev/null
+++ b/src/main/java/zoo/controller/AccountController.java
@@ -0,0 +1,18 @@
+package zoo.controller;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author DJ
+ * @since 2024-05-17
+ */
+@Controller
+@RequestMapping("/zoo/account")
+public class AccountController {
+
+}
diff --git a/src/main/java/zoo/controller/AdminController.java b/src/main/java/zoo/controller/AdminController.java
new file mode 100644
index 0000000..4ef1420
--- /dev/null
+++ b/src/main/java/zoo/controller/AdminController.java
@@ -0,0 +1,18 @@
+package zoo.controller;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author DJ
+ * @since 2024-05-17
+ */
+@Controller
+@RequestMapping("/zoo/admin")
+public class AdminController {
+
+}
diff --git a/src/main/java/zoo/controller/AnimalController.java b/src/main/java/zoo/controller/AnimalController.java
new file mode 100644
index 0000000..2d50ef4
--- /dev/null
+++ b/src/main/java/zoo/controller/AnimalController.java
@@ -0,0 +1,18 @@
+package zoo.controller;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author DJ
+ * @since 2024-05-17
+ */
+@Controller
+@RequestMapping("/zoo/animal")
+public class AnimalController {
+
+}
diff --git a/src/main/java/zoo/controller/KeeperController.java b/src/main/java/zoo/controller/KeeperController.java
new file mode 100644
index 0000000..8b66e79
--- /dev/null
+++ b/src/main/java/zoo/controller/KeeperController.java
@@ -0,0 +1,18 @@
+package zoo.controller;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author DJ
+ * @since 2024-05-17
+ */
+@Controller
+@RequestMapping("/zoo/keeper")
+public class KeeperController {
+
+}
diff --git a/src/main/java/zoo/controller/LoginController.java b/src/main/java/zoo/controller/LoginController.java
new file mode 100644
index 0000000..6afc3f4
--- /dev/null
+++ b/src/main/java/zoo/controller/LoginController.java
@@ -0,0 +1,64 @@
+package zoo.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.demo.zoo.common.R;
+import com.demo.zoo.dto.AdminDto;
+import com.demo.zoo.dto.KeeperDto;
+import com.demo.zoo.dto.VeterinaryDto;
+import com.demo.zoo.entity.Account;
+import com.demo.zoo.entity.Admin;
+import com.demo.zoo.entity.Keeper;
+import com.demo.zoo.entity.Veterinary;
+import com.demo.zoo.service.IAccountService;
+import com.demo.zoo.service.IAdminService;
+import com.demo.zoo.service.IKeeperService;
+import com.demo.zoo.service.IVeterinaryService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/zoo/login")
+public class LoginController {
+ @Autowired
+ IAccountService iAccountService;
+ @Autowired
+ IAdminService iAdminService;
+ @Autowired
+ IKeeperService iKeeperService;
+ @Autowired
+ IVeterinaryService iVeterinaryService;
+
+ @PostMapping("/login")
+ public R login(String username,String password){
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("username",username);
+ queryWrapper.eq("password",password);
+ Account one = iAccountService.getOne(queryWrapper);
+ if (one == null){
+ return R.error("账号密码错误");
+ }
+ if (one.getPermissions()==0){
+ Admin admin = iAdminService.selectById(one.getRoleid());
+ AdminDto adminDto = new AdminDto();
+ BeanUtils.copyProperties(admin,adminDto);
+ adminDto.setPermissions(0);
+ return R.success(adminDto);
+ }else if (one.getPermissions()==1){
+ Keeper keeper = iKeeperService.selectById(one.getRoleid());
+ KeeperDto keeperDto = new KeeperDto();
+ BeanUtils.copyProperties(keeper,keeperDto);
+ keeperDto.setPermissions(1);
+ return R.success(keeperDto);
+ }else {
+ Veterinary veterinary = iVeterinaryService.selectById(one.getRoleid());
+ VeterinaryDto veterinaryDto = new VeterinaryDto();
+ BeanUtils.copyProperties(veterinary,veterinaryDto);
+ veterinaryDto.setPermissions(2);
+ return R.success(veterinaryDto);
+ }
+ }
+}
diff --git a/src/main/java/zoo/controller/VeterinaryController.java b/src/main/java/zoo/controller/VeterinaryController.java
new file mode 100644
index 0000000..53de7f9
--- /dev/null
+++ b/src/main/java/zoo/controller/VeterinaryController.java
@@ -0,0 +1,18 @@
+package zoo.controller;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.stereotype.Controller;
+
+/**
+ *
+ * 前端控制器
+ *
+ *
+ * @author DJ
+ * @since 2024-05-17
+ */
+@Controller
+@RequestMapping("/zoo/veterinary")
+public class VeterinaryController {
+
+}
diff --git a/src/main/java/zoo/dto/AdminDto.java b/src/main/java/zoo/dto/AdminDto.java
new file mode 100644
index 0000000..3a63159
--- /dev/null
+++ b/src/main/java/zoo/dto/AdminDto.java
@@ -0,0 +1,16 @@
+package zoo.dto;
+
+import zoo.entity.Admin;
+
+
+public class AdminDto extends Admin {
+ private Integer permissions;
+
+ public Integer getPermissions() {
+ return permissions;
+ }
+
+ public void setPermissions(Integer permissions) {
+ this.permissions = permissions;
+ }
+}
diff --git a/src/main/java/zoo/dto/KeeperDto.java b/src/main/java/zoo/dto/KeeperDto.java
new file mode 100644
index 0000000..a6bf4fe
--- /dev/null
+++ b/src/main/java/zoo/dto/KeeperDto.java
@@ -0,0 +1,15 @@
+package zoo.dto;
+
+import zoo.entity.Keeper;
+
+public class KeeperDto extends Keeper {
+ private Integer permissions;
+
+ public Integer getPermissions() {
+ return permissions;
+ }
+
+ public void setPermissions(Integer permissions) {
+ this.permissions = permissions;
+ }
+}
diff --git a/src/main/java/zoo/dto/VeterinaryDto.java b/src/main/java/zoo/dto/VeterinaryDto.java
new file mode 100644
index 0000000..f44b091
--- /dev/null
+++ b/src/main/java/zoo/dto/VeterinaryDto.java
@@ -0,0 +1,15 @@
+package zoo.dto;
+
+import zoo.entity.Veterinary;
+
+public class VeterinaryDto extends Veterinary {
+ private Integer permissions;
+
+ public Integer getPermissions() {
+ return permissions;
+ }
+
+ public void setPermissions(Integer permissions) {
+ this.permissions = permissions;
+ }
+}
diff --git a/src/main/java/zoo/entity/Account.java b/src/main/java/zoo/entity/Account.java
new file mode 100644
index 0000000..3457aef
--- /dev/null
+++ b/src/main/java/zoo/entity/Account.java
@@ -0,0 +1,88 @@
+package zoo.entity;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author DJ
+ * @since 2024-05-17
+ */
+public class Account implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 编号
+ */
+ private Integer id;
+
+ /**
+ * 角色id
+ */
+ private Integer roleid;
+
+ /**
+ * 角色账号
+ */
+ private String username;
+
+ /**
+ * 角色密码
+ */
+ private String password;
+
+ /**
+ * 权限
+ */
+ private Integer permissions;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+ public Integer getRoleid() {
+ return roleid;
+ }
+
+ public void setRoleid(Integer roleid) {
+ this.roleid = roleid;
+ }
+ 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 Integer getPermissions() {
+ return permissions;
+ }
+
+ public void setPermissions(Integer permissions) {
+ this.permissions = permissions;
+ }
+
+ @Override
+ public String toString() {
+ return "Account{" +
+ "id=" + id +
+ ", roleid=" + roleid +
+ ", username=" + username +
+ ", password=" + password +
+ ", permissions=" + permissions +
+ "}";
+ }
+}
diff --git a/src/main/java/zoo/entity/Admin.java b/src/main/java/zoo/entity/Admin.java
new file mode 100644
index 0000000..4614744
--- /dev/null
+++ b/src/main/java/zoo/entity/Admin.java
@@ -0,0 +1,49 @@
+package zoo.entity;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author DJ
+ * @since 2024-05-17
+ */
+public class Admin implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 角色id
+ */
+ private Integer roleid;
+
+ /**
+ * 管理员名称
+ */
+ private String name;
+
+ public Integer getRoleid() {
+ return roleid;
+ }
+
+ public void setRoleid(Integer roleid) {
+ this.roleid = roleid;
+ }
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public String toString() {
+ return "Admin{" +
+ "roleid=" + roleid +
+ ", name=" + name +
+ "}";
+ }
+}
diff --git a/src/main/java/zoo/entity/Animal.java b/src/main/java/zoo/entity/Animal.java
new file mode 100644
index 0000000..7e4cbc4
--- /dev/null
+++ b/src/main/java/zoo/entity/Animal.java
@@ -0,0 +1,166 @@
+package zoo.entity;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author DJ
+ * @since 2024-05-17
+ */
+public class Animal implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 动物ID
+ */
+ private Integer aId;
+
+ /**
+ * 动物名
+ */
+ private String name;
+
+ /**
+ * 性别
+ */
+ private String sex;
+
+ /**
+ * 种类
+ */
+ private String species;
+
+ /**
+ * 体重
+ */
+ private Double weight;
+
+ /**
+ * 身高
+ */
+ private Double height;
+
+ /**
+ * 状态(0正常 1异常)
+ */
+ private Integer state;
+
+ /**
+ * 饲养员ID
+ */
+ private Integer roleId;
+
+ /**
+ * 颜色
+ */
+ private String color;
+
+ /**
+ * 特征
+ */
+ private String features;
+
+ /**
+ * 生活习性
+ */
+ private String habit;
+
+ public Integer getaId() {
+ return aId;
+ }
+
+ public void setaId(Integer aId) {
+ this.aId = aId;
+ }
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+ public String getSex() {
+ return sex;
+ }
+
+ public void setSex(String sex) {
+ this.sex = sex;
+ }
+ public String getSpecies() {
+ return species;
+ }
+
+ public void setSpecies(String species) {
+ this.species = species;
+ }
+ public Double getWeight() {
+ return weight;
+ }
+
+ public void setWeight(Double weight) {
+ this.weight = weight;
+ }
+ public Double getHeight() {
+ return height;
+ }
+
+ public void setHeight(Double height) {
+ this.height = height;
+ }
+ public Integer getState() {
+ return state;
+ }
+
+ public void setState(Integer state) {
+ this.state = state;
+ }
+ public Integer getRoleId() {
+ return roleId;
+ }
+
+ public void setRoleId(Integer roleId) {
+ this.roleId = roleId;
+ }
+ public String getColor() {
+ return color;
+ }
+
+ public void setColor(String color) {
+ this.color = color;
+ }
+ public String getFeatures() {
+ return features;
+ }
+
+ public void setFeatures(String features) {
+ this.features = features;
+ }
+ public String getHabit() {
+ return habit;
+ }
+
+ public void setHabit(String habit) {
+ this.habit = habit;
+ }
+
+ @Override
+ public String toString() {
+ return "Animal{" +
+ "aId=" + aId +
+ ", name=" + name +
+ ", sex=" + sex +
+ ", species=" + species +
+ ", weight=" + weight +
+ ", height=" + height +
+ ", state=" + state +
+ ", roleId=" + roleId +
+ ", color=" + color +
+ ", features=" + features +
+ ", habit=" + habit +
+ "}";
+ }
+}
diff --git a/src/main/java/zoo/entity/Keeper.java b/src/main/java/zoo/entity/Keeper.java
new file mode 100644
index 0000000..7a0ae47
--- /dev/null
+++ b/src/main/java/zoo/entity/Keeper.java
@@ -0,0 +1,75 @@
+package zoo.entity;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author DJ
+ * @since 2024-05-17
+ */
+public class Keeper implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 角色id
+ */
+ private Integer roleid;
+
+ /**
+ * 性别
+ */
+ private String sex;
+
+ /**
+ * 饲养员名称
+ */
+ private String name;
+
+ /**
+ * 手机号码
+ */
+ private String phone;
+
+ public Integer getRoleid() {
+ return roleid;
+ }
+
+ public void setRoleid(Integer roleid) {
+ this.roleid = roleid;
+ }
+ public String getSex() {
+ return sex;
+ }
+
+ public void setSex(String sex) {
+ this.sex = sex;
+ }
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+ public String getPhone() {
+ return phone;
+ }
+
+ public void setPhone(String phone) {
+ this.phone = phone;
+ }
+
+ @Override
+ public String toString() {
+ return "Keeper{" +
+ "roleid=" + roleid +
+ ", sex=" + sex +
+ ", name=" + name +
+ ", phone=" + phone +
+ "}";
+ }
+}
diff --git a/src/main/java/zoo/entity/Veterinary.java b/src/main/java/zoo/entity/Veterinary.java
new file mode 100644
index 0000000..ca96573
--- /dev/null
+++ b/src/main/java/zoo/entity/Veterinary.java
@@ -0,0 +1,62 @@
+package zoo.entity;
+
+import java.io.Serializable;
+
+/**
+ *
+ *
+ *
+ *
+ * @author DJ
+ * @since 2024-05-17
+ */
+public class Veterinary implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 兽医角色id
+ */
+ private Integer roleid;
+
+ /**
+ * 名称
+ */
+ private String name;
+
+ /**
+ * 治疗记录
+ */
+ private String record;
+
+ public Integer getRoleid() {
+ return roleid;
+ }
+
+ public void setRoleid(Integer roleid) {
+ this.roleid = roleid;
+ }
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+ public String getRecord() {
+ return record;
+ }
+
+ public void setRecord(String record) {
+ this.record = record;
+ }
+
+ @Override
+ public String toString() {
+ return "Veterinary{" +
+ "roleid=" + roleid +
+ ", name=" + name +
+ ", record=" + record +
+ "}";
+ }
+}
diff --git a/src/main/java/zoo/mapper/AccountMapper.java b/src/main/java/zoo/mapper/AccountMapper.java
new file mode 100644
index 0000000..70fbc48
--- /dev/null
+++ b/src/main/java/zoo/mapper/AccountMapper.java
@@ -0,0 +1,16 @@
+package zoo.mapper;
+
+import com.demo.zoo.entity.Account;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author DJ
+ * @since 2024-05-17
+ */
+public interface AccountMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/zoo/mapper/AdminMapper.java b/src/main/java/zoo/mapper/AdminMapper.java
new file mode 100644
index 0000000..bbdf12e
--- /dev/null
+++ b/src/main/java/zoo/mapper/AdminMapper.java
@@ -0,0 +1,16 @@
+package zoo.mapper;
+
+import com.demo.zoo.entity.Admin;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author DJ
+ * @since 2024-05-17
+ */
+public interface AdminMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/zoo/mapper/AnimalMapper.java b/src/main/java/zoo/mapper/AnimalMapper.java
new file mode 100644
index 0000000..e692ba5
--- /dev/null
+++ b/src/main/java/zoo/mapper/AnimalMapper.java
@@ -0,0 +1,16 @@
+package zoo.mapper;
+
+import com.demo.zoo.entity.Animal;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author DJ
+ * @since 2024-05-17
+ */
+public interface AnimalMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/zoo/mapper/KeeperMapper.java b/src/main/java/zoo/mapper/KeeperMapper.java
new file mode 100644
index 0000000..29cf394
--- /dev/null
+++ b/src/main/java/zoo/mapper/KeeperMapper.java
@@ -0,0 +1,16 @@
+package zoo.mapper;
+
+import com.demo.zoo.entity.Keeper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author DJ
+ * @since 2024-05-17
+ */
+public interface KeeperMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/zoo/mapper/VeterinaryMapper.java b/src/main/java/zoo/mapper/VeterinaryMapper.java
new file mode 100644
index 0000000..db03748
--- /dev/null
+++ b/src/main/java/zoo/mapper/VeterinaryMapper.java
@@ -0,0 +1,16 @@
+package zoo.mapper;
+
+import com.demo.zoo.entity.Veterinary;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * Mapper 接口
+ *
+ *
+ * @author DJ
+ * @since 2024-05-17
+ */
+public interface VeterinaryMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/zoo/service/IAccountService.java b/src/main/java/zoo/service/IAccountService.java
new file mode 100644
index 0000000..61949b9
--- /dev/null
+++ b/src/main/java/zoo/service/IAccountService.java
@@ -0,0 +1,20 @@
+package zoo.service;
+
+import com.demo.zoo.entity.Account;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author DJ
+ * @since 2024-05-17
+ */
+public interface IAccountService extends IService {
+
+
+
+}
diff --git a/src/main/java/zoo/service/IAdminService.java b/src/main/java/zoo/service/IAdminService.java
new file mode 100644
index 0000000..cac5a0e
--- /dev/null
+++ b/src/main/java/zoo/service/IAdminService.java
@@ -0,0 +1,18 @@
+package zoo.service;
+
+import com.demo.zoo.entity.Admin;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author DJ
+ * @since 2024-05-17
+ */
+public interface IAdminService extends IService {
+ Admin selectById(int roleId);
+}
diff --git a/src/main/java/zoo/service/IAnimalService.java b/src/main/java/zoo/service/IAnimalService.java
new file mode 100644
index 0000000..aec3cdc
--- /dev/null
+++ b/src/main/java/zoo/service/IAnimalService.java
@@ -0,0 +1,16 @@
+package zoo.service;
+
+import com.demo.zoo.entity.Animal;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author DJ
+ * @since 2024-05-17
+ */
+public interface IAnimalService extends IService {
+
+}
diff --git a/src/main/java/zoo/service/IKeeperService.java b/src/main/java/zoo/service/IKeeperService.java
new file mode 100644
index 0000000..a1d38a0
--- /dev/null
+++ b/src/main/java/zoo/service/IKeeperService.java
@@ -0,0 +1,19 @@
+package zoo.service;
+
+import com.demo.zoo.entity.Admin;
+import com.demo.zoo.entity.Keeper;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author DJ
+ * @since 2024-05-17
+ */
+public interface IKeeperService extends IService {
+ Keeper selectById(int roleId);
+}
diff --git a/src/main/java/zoo/service/IVeterinaryService.java b/src/main/java/zoo/service/IVeterinaryService.java
new file mode 100644
index 0000000..3969f03
--- /dev/null
+++ b/src/main/java/zoo/service/IVeterinaryService.java
@@ -0,0 +1,19 @@
+package zoo.service;
+
+import com.demo.zoo.entity.Admin;
+import com.demo.zoo.entity.Veterinary;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author DJ
+ * @since 2024-05-17
+ */
+public interface IVeterinaryService extends IService {
+ Veterinary selectById(int roleId);
+}
diff --git a/src/main/java/zoo/service/impl/AccountServiceImpl.java b/src/main/java/zoo/service/impl/AccountServiceImpl.java
new file mode 100644
index 0000000..5303966
--- /dev/null
+++ b/src/main/java/zoo/service/impl/AccountServiceImpl.java
@@ -0,0 +1,20 @@
+package zoo.service.impl;
+
+import com.demo.zoo.entity.Account;
+import com.demo.zoo.mapper.AccountMapper;
+import zoo.service.IAccountService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author DJ
+ * @since 2024-05-17
+ */
+@Service
+public class AccountServiceImpl extends ServiceImpl implements IAccountService {
+
+}
diff --git a/src/main/java/zoo/service/impl/AdminServiceImpl.java b/src/main/java/zoo/service/impl/AdminServiceImpl.java
new file mode 100644
index 0000000..1878556
--- /dev/null
+++ b/src/main/java/zoo/service/impl/AdminServiceImpl.java
@@ -0,0 +1,28 @@
+package zoo.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.demo.zoo.entity.Admin;
+import com.demo.zoo.entity.Keeper;
+import com.demo.zoo.mapper.AdminMapper;
+import zoo.service.IAdminService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author DJ
+ * @since 2024-05-17
+ */
+@Service
+public class AdminServiceImpl extends ServiceImpl implements IAdminService {
+
+ @Override
+ public Admin selectById(int roleId) {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("roleId",roleId);
+ return this.getOne(queryWrapper);
+ }
+}
diff --git a/src/main/java/zoo/service/impl/AnimalServiceImpl.java b/src/main/java/zoo/service/impl/AnimalServiceImpl.java
new file mode 100644
index 0000000..f0705c7
--- /dev/null
+++ b/src/main/java/zoo/service/impl/AnimalServiceImpl.java
@@ -0,0 +1,20 @@
+package zoo.service.impl;
+
+import com.demo.zoo.entity.Animal;
+import com.demo.zoo.mapper.AnimalMapper;
+import zoo.service.IAnimalService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author DJ
+ * @since 2024-05-17
+ */
+@Service
+public class AnimalServiceImpl extends ServiceImpl implements IAnimalService {
+
+}
diff --git a/src/main/java/zoo/service/impl/KeeperServiceImpl.java b/src/main/java/zoo/service/impl/KeeperServiceImpl.java
new file mode 100644
index 0000000..1bf62a1
--- /dev/null
+++ b/src/main/java/zoo/service/impl/KeeperServiceImpl.java
@@ -0,0 +1,28 @@
+package zoo.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.demo.zoo.entity.Keeper;
+import com.demo.zoo.entity.Veterinary;
+import com.demo.zoo.mapper.KeeperMapper;
+import zoo.service.IKeeperService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author DJ
+ * @since 2024-05-17
+ */
+@Service
+public class KeeperServiceImpl extends ServiceImpl implements IKeeperService {
+
+ @Override
+ public Keeper selectById(int roleId) {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("roleId",roleId);
+ return this.getOne(queryWrapper);
+ }
+}
diff --git a/src/main/java/zoo/service/impl/VeterinaryServiceImpl.java b/src/main/java/zoo/service/impl/VeterinaryServiceImpl.java
new file mode 100644
index 0000000..2756276
--- /dev/null
+++ b/src/main/java/zoo/service/impl/VeterinaryServiceImpl.java
@@ -0,0 +1,27 @@
+package zoo.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.demo.zoo.entity.Veterinary;
+import com.demo.zoo.mapper.VeterinaryMapper;
+import zoo.service.IVeterinaryService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author DJ
+ * @since 2024-05-17
+ */
+@Service
+public class VeterinaryServiceImpl extends ServiceImpl implements IVeterinaryService {
+
+ @Override
+ public Veterinary selectById(int roleId) {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("roleId",roleId);
+ return this.getOne(queryWrapper);
+ }
+}