diff --git a/IDEA/src/main/java/com/example/api/controller/DistributionController.java b/IDEA/src/main/java/com/example/api/controller/DistributionController.java new file mode 100644 index 00000000..0b529e52 --- /dev/null +++ b/IDEA/src/main/java/com/example/api/controller/DistributionController.java @@ -0,0 +1,61 @@ +package com.example.api.controller; + +import com.example.api.annotation.Log; // 导入自定义的日志注解 +import com.example.api.model.entity.Distribution; // 导入配送实体类 +import com.example.api.model.enums.BusinessType; // 导入业务类型枚举 +import com.example.api.repository.DriverRepository; // 导入司机数据访问层接口 +import com.example.api.repository.VehicleRepository; // 导入车辆数据访问层接口 +import com.example.api.service.DistributionService; // 导入配送服务类 +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; // 导入资源注入注解 +import java.util.HashMap; // 导入HashMap类 +import java.util.List; // 导入List接口 +import java.util.Map; // 导入Map接口 + +// 定义RestController注解,表示该类是一个控制器,用于处理HTTP请求 +@RestController +// 定义RequestMapping注解,设置该控制器的基础URL路径 +@RequestMapping("/api/distribution") +public class DistributionController { + + // 通过@Resource注解自动注入DistributionService + @Resource + private DistributionService distributionService; + + // 通过@Resource注解自动注入DriverRepository + @Resource + private DriverRepository driverRepository; + + // 通过@Resource注解自动注入VehicleRepository + @Resource + private VehicleRepository vehicleRepository; + + // 使用@Log注解记录操作日志,模块为“配送管理”,操作类型为插入(BusinessType.INSERT) + @Log(module = "配送管理", type = BusinessType.INSERT) + // 处理POST请求,用于保存配送信息 + @PostMapping("") + public Distribution save(@RequestBody Distribution distribution) throws Exception { + return distributionService.save(distribution); + } + + // 使用@Log注解记录操作日志,模块为“配送管理”,操作类型为查询(BusinessType.QUERY) + @Log(module = "配送管理", type = BusinessType.QUERY) + // 处理GET请求,用于查询所有配送信息 + @GetMapping("") + public List findAll() { + return distributionService.findAll(); + } + + // 处理GET请求,用于获取可用于配送的司机和车辆信息 + @GetMapping("can") + public Map can() { + Map map = new HashMap<>(); + // 将所有司机信息放入map中 + map.put("drivers", driverRepository.findAll()); + // 将所有车辆信息放入map中 + map.put("vehicles", vehicleRepository.findAll()); + return map; + } + +} \ No newline at end of file diff --git a/IDEA/src/main/java/com/example/api/model/entity/Distribution.java b/IDEA/src/main/java/com/example/api/model/entity/Distribution.java new file mode 100644 index 00000000..f4e5d778 --- /dev/null +++ b/IDEA/src/main/java/com/example/api/model/entity/Distribution.java @@ -0,0 +1,81 @@ +package com.example.api.model.entity; + +// 导入Jackson库提供的@JsonFormat注解,用于定义JSON序列化和反序列化时的格式 +import com.fasterxml.jackson.annotation.JsonFormat; +// 导入Lombok提供的@Data注解,用于自动生成类的getter、setter、toString、equals和hashCode方法 +import lombok.Data; +// 导入Lombok提供的@NoArgsConstructor注解,用于生成无参构造函数 +import lombok.NoArgsConstructor; +// 导入Hibernate提供的GenericGenerator注解,用于自定义主键生成策略 +import org.hibernate.annotations.GenericGenerator; + +// 导入JPA提供的@Entity注解,用于标记类为JPA实体 +import javax.persistence.Entity; +// 导入JPA提供的@Id注解,用于标记类的字段为主键 +import javax.persistence.Id; +// 导入JPA提供的@GeneratedValue注解,用于指定主键的生成策略 +import javax.persistence.GeneratedValue; + +// 导入java.time.LocalDateTime,用于存储日期和时间 +import java.time.LocalDateTime; +// 导入java.util.Date,用于存储日期 +import java.util.Date; + +/** + * 配送实体类,用于表示数据库中的配送信息表 + */ +// @Data注解自动生成getter和setter方法,以及toString(), equals()和hashCode()方法 +@Data +// @Entity注解标记这个类是一个JPA实体,可以被持久化到数据库 +@Entity +// @NoArgsConstructor注解生成一个无参数的构造函数 +@NoArgsConstructor +public class Distribution { + + /** + * id字段,用于存储配送信息的唯一标识符。 + * 使用@Id注解标记为主键。 + * 使用@GeneratedValue注解和@GenericGenerator注解结合使用, + * 指定使用"uuid2"生成器,该生成器使用UUID作为主键的生成策略。 + */ + @Id + @GeneratedValue(generator = "uuid2") + @GenericGenerator(name = "uuid2", strategy = "org.hibernate.id.UUIDGenerator") + private String id; + + // 司机id + private String did; + + // 车辆id + private String vid; + + // 司机姓名 + private String driver; + + // 车牌号 + private String number; + + // 客户电话 + private String phone; + + // 客户地址 + private String address; + + // 是否加急处理 + private boolean urgent; + + // 关注事项 + private String care; + + /** + * 操作时间字段,用于存储配送的操作时间。 + * 使用@JsonFormat注解定义JSON序列化和反序列化时的格式, + * 格式为"yyyy-MM-dd HH:mm:ss",时区为"GMT+8"。 + */ + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime time; + + // 配送状态 + private Integer status; + +}