diff --git a/IDEA/src/main/java/com/example/api/controller/CommodityController.java b/IDEA/src/main/java/com/example/api/controller/CommodityController.java new file mode 100644 index 00000000..db020a30 --- /dev/null +++ b/IDEA/src/main/java/com/example/api/controller/CommodityController.java @@ -0,0 +1,86 @@ +package com.example.api.controller; + +import com.example.api.annotation.Log; +import com.example.api.model.entity.Commodity; +import com.example.api.model.enums.BusinessType; +import com.example.api.service.CommodityService; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * CommodityController 类是商品管理的 RESTful API 控制器。 + */ +@RestController // 表明这是一个 REST 控制器,其方法的返回值会自动作为 HTTP 响应体 +@RequestMapping("/api/commodity") // 定义类级别的路由:/api/commodity +@PreAuthorize("hasAnyRole('ROLE_SUPER_ADMIN','ROLE_COMMODITY','ROLE_SALE')") // 权限注解,只有具有指定角色的用户才能访问 +public class CommodityController { + + @Resource // 自动注入 CommodityService + private CommodityService commodityService; + + /** + * 保存商品信息。 + * @param commodity 商品实体 + * @return 保存后的商品实体 + */ + @Log(module = "商品管理", type = BusinessType.INSERT) // 记录日志,标记为插入操作 + @PostMapping("") // 定义 POST 请求的路由 + public Commodity save(@RequestBody Commodity commodity) { + return commodityService.save(commodity); + } + + /** + * 删除商品信息。 + * @param id 商品的 ID + */ + @Log(module = "商品管理", type = BusinessType.DELETE) // 记录日志,标记为删除操作 + @DeleteMapping("") // 定义 DELETE 请求的路由 + public void delete(String id) { + commodityService.delete(id); + } + + /** + * 更新商品信息。 + * @param commodity 商品实体 + */ + @Log(module = "商品管理", type = BusinessType.UPDATE) // 记录日志,标记为更新操作 + @PutMapping("") // 定义 PUT 请求的路由 + public void update(@RequestBody Commodity commodity) { + commodityService.update(commodity); + } + + /** + * 查询所有商品信息。 + * @return 商品列表 + */ + @Log(module = "商品管理", type = BusinessType.QUERY) // 记录日志,标记为查询操作 + @GetMapping("") // 定义 GET 请求的路由 + public List findAll() { + return commodityService.findAll(); + } + + /** + * 根据名称模糊查询商品信息。 + * @param name 名称关键字 + * @return 匹配的商品列表 + */ + @Log(module = "商品管理", type = BusinessType.QUERY) // 记录日志,标记为查询操作 + @GetMapping("/search/{name}") // 定义 GET 请求的路由,包含路径变量 + public List findByLikeName(@PathVariable String name) { + return commodityService.findAllByLikeName(name); + } + + /** + * 根据 ID 查询商品信息。 + * @param id 商品的 ID + * @return 商品实体 + */ + @Log(module = "商品管理", type = BusinessType.QUERY) // 记录日志,标记为查询操作 + @GetMapping("/{id}") // 定义 GET 请求的路由,包含路径变量 + public Commodity findById(@PathVariable String id) { + return commodityService.findById(id); + } +} diff --git a/IDEA/src/main/java/com/example/api/model/entity/Code.java b/IDEA/src/main/java/com/example/api/model/entity/Code.java new file mode 100644 index 00000000..f929975e --- /dev/null +++ b/IDEA/src/main/java/com/example/api/model/entity/Code.java @@ -0,0 +1,50 @@ +package com.example.api.model.entity; + +// 导入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; + +/** + * 验证码实体类,用于表示数据库中的验证码表 + */ +// @Data注解自动生成getter和setter方法,以及toString(), equals()和hashCode()方法 +@Data +// @Entity注解标记这个类是一个JPA实体,可以被持久化到数据库 +@Entity +// @NoArgsConstructor注解生成一个无参数的构造函数 +@NoArgsConstructor +public class Code { + + // 使用@Id标记email字段为主键 + @Id + private String email; + + // value字段,用于存储验证码的值 + private String value; + + // exp字段,用于存储验证码的过期时间(毫秒值) + private long exp; + + /** + * Code类的构造函数,用于创建验证码实例 + * @param email 验证码绑定的邮箱 + * @param value 验证码的值 + */ + public Code(String email, String value) { + this.email = email; + this.value = value; + // 设置验证码的过期时间为当前时间加上15分钟(15分钟 = 15 * 60秒 = 15 * 60 * 1000毫秒) + this.exp = System.currentTimeMillis() + 1000 * 60 * 15; + } + +} diff --git a/IDEA/src/main/java/com/example/api/model/entity/Commodity.java b/IDEA/src/main/java/com/example/api/model/entity/Commodity.java new file mode 100644 index 00000000..b58ea6a5 --- /dev/null +++ b/IDEA/src/main/java/com/example/api/model/entity/Commodity.java @@ -0,0 +1,54 @@ +package com.example.api.model.entity; + +// 导入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; + +/** + * 商品实体类,用于表示数据库中的商品表 + */ +// @Data注解自动生成getter和setter方法,以及toString(), equals()和hashCode()方法 +@Data +// @Entity注解标记这个类是一个JPA实体,可以被持久化到数据库 +@Entity +// @NoArgsConstructor注解生成一个无参数的构造函数 +@NoArgsConstructor +public class Commodity { + + // 使用@Id标记id字段为主键 + @Id + // 使用@GeneratedValue指定主键值的生成策略,这里使用"uuid2"生成器 + @GeneratedValue(generator = "uuid2") + // 使用@GenericGenerator定义一个名为"uuid2"的生成器,使用Hibernate的UUID生成策略 + @GenericGenerator(name = "uuid2", strategy = "org.hibernate.id.UUIDGenerator") + private String id; + + // name字段,用于存储商品的名称 + private String name; + + // price字段,用于存储商品的价格 + private double price; + + // description字段,用于存储商品的描述信息 + private String description; + + // count字段,用于存储商品的数量 + private int count; + + // createAt字段,用于存储商品的创建时间 + private String createAt; + + // updateAt字段,用于存储商品的更新时间 + private String updateAt; + +} \ No newline at end of file diff --git a/IDEA/src/main/java/com/example/api/model/enums/DistributionStatus.java b/IDEA/src/main/java/com/example/api/model/enums/DistributionStatus.java new file mode 100644 index 00000000..890ad5cb --- /dev/null +++ b/IDEA/src/main/java/com/example/api/model/enums/DistributionStatus.java @@ -0,0 +1,41 @@ +package com.example.api.model.enums; + +import lombok.Getter; +import lombok.Setter; + +/** + * 配送单状态枚举,用于表示配送单的不同状态。 + */ +public enum DistributionStatus { + + /** + * 正在审核状态,对应代码为0。 + */ + REVIEWING(0), + + /** + * 审核成功状态,对应代码为1。 + */ + REVIEW_SUCCESS(1), + + /** + * 订单完成状态,对应代码为2。 + */ + END(2); + + /** + * 构造函数,用于为枚举实例设置状态代码。 + * @param code 状态代码 + */ + DistributionStatus(Integer code) { + this.code = code; + } + + /** + * 通过lombok提供的@Getter和@Setter注解自动生成code属性的getter和setter方法。 + */ + @Getter + @Setter + private Integer code; + +} diff --git a/IDEA/src/main/java/com/example/api/model/vo/CommodityChartVo.java b/IDEA/src/main/java/com/example/api/model/vo/CommodityChartVo.java new file mode 100644 index 00000000..d32833bc --- /dev/null +++ b/IDEA/src/main/java/com/example/api/model/vo/CommodityChartVo.java @@ -0,0 +1,16 @@ +package com.example.api.model.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; + +@Data +@AllArgsConstructor +public class CommodityChartVo { + + //商品名 + private Integer value; + + //数量 + private String name; + +} diff --git a/IDEA/src/main/java/com/example/api/repository/CodeRepository.java b/IDEA/src/main/java/com/example/api/repository/CodeRepository.java new file mode 100644 index 00000000..8f9a0fe2 --- /dev/null +++ b/IDEA/src/main/java/com/example/api/repository/CodeRepository.java @@ -0,0 +1,22 @@ +package com.example.api.repository; + +import com.example.api.model.entity.Code; // 导入Code实体类 +import org.springframework.data.jpa.repository.JpaRepository; // 继承JPA仓库接口 +import org.springframework.stereotype.Repository; // 标识这是一个Repository组件 + +/** + * 验证码仓库接口,用于数据库操作。 + */ +// 使用@Repository注解标识这是一个Spring组件,通常用于数据访问层 +@Repository +public interface CodeRepository extends JpaRepository { + + /** + * 根据邮箱和值查找验证码。 + * @param email 用户的邮箱 + * @param value 验证码的值 + * @return 匹配的验证码对象,如果没有找到则返回null + */ + Code findByEmailAndValue(String email, String value); + +} diff --git a/IDEA/src/main/java/com/example/api/repository/CommodityRepository.java b/IDEA/src/main/java/com/example/api/repository/CommodityRepository.java new file mode 100644 index 00000000..be260209 --- /dev/null +++ b/IDEA/src/main/java/com/example/api/repository/CommodityRepository.java @@ -0,0 +1,30 @@ +package com.example.api.repository; + +import com.example.api.model.entity.Commodity; // 导入Commodity实体类 +import org.springframework.data.jpa.repository.JpaRepository; // 继承JPA仓库接口 +import org.springframework.stereotype.Repository; // 标识这是一个Repository组件 + +import java.util.List; // 导入List类,用于返回多个结果 + +/** + * 商品仓库接口,用于数据库操作。 + */ +// 使用@Repository注解标识这是一个Spring组件,通常用于数据访问层 +@Repository +public interface CommodityRepository extends JpaRepository { + + /** + * 根据商品名称精确查找商品。 + * @param name 商品的名称 + * @return 匹配的商品对象,如果没有找到则返回null + */ + Commodity findByName(String name); + + /** + * 根据商品名称模糊查找商品。 + * @param name 商品名称的模糊匹配字符串 + * @return 匹配的所有商品对象列表 + */ + List findByNameLike(String name); + +} \ No newline at end of file diff --git a/IDEA/src/main/java/com/example/api/repository/DistributionRepository.java b/IDEA/src/main/java/com/example/api/repository/DistributionRepository.java new file mode 100644 index 00000000..fc28e95e --- /dev/null +++ b/IDEA/src/main/java/com/example/api/repository/DistributionRepository.java @@ -0,0 +1,9 @@ +package com.example.api.repository; + +import com.example.api.model.entity.Distribution; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface DistributionRepository extends JpaRepository { +} diff --git a/IDEA/src/main/java/com/example/api/repository/DriverRepository.java b/IDEA/src/main/java/com/example/api/repository/DriverRepository.java new file mode 100644 index 00000000..65f33d73 --- /dev/null +++ b/IDEA/src/main/java/com/example/api/repository/DriverRepository.java @@ -0,0 +1,36 @@ +package com.example.api.repository; + +import com.example.api.model.entity.Driver; // 导入Driver实体类 +import org.springframework.data.jpa.repository.JpaRepository; // 继承JPA仓库接口 +import org.springframework.data.jpa.repository.Modifying; // 注解,用于标识修改数据库的操作 +import org.springframework.data.jpa.repository.Query; // 注解,用于执行自定义的JPQL或SQL查询 +import org.springframework.stereotype.Repository; // 标识这是一个Repository组件 +import org.springframework.transaction.annotation.Transactional; // 注解,用于声明事务性方法 + +import java.util.List; // 导入List类,用于返回多个结果 + +/** + * 驾驶员仓库接口,用于数据库操作。 + */ +// 使用@Repository注解标识这是一个Spring组件,通常用于数据访问层 +@Repository +public interface DriverRepository extends JpaRepository { + + /** + * 更新指定驾驶员的驾驶状态。 + * @param driving 新的驾驶状态 + * @param id 驾驶员的ID + */ + @Modifying // 标识这是一个修改操作 + @Transactional // 标识这是一个事务性方法 + @Query("update Driver d set d.driving = ?1 where d.id = ?2") // JPQL查询,用于更新操作 + void updateDriving(boolean driving, String id); + + /** + * 查找所有驾驶状态为指定值的驾驶员。 + * @param driving 驾驶状态 + * @return 匹配的驾驶员列表 + */ + List findAllByDriving(boolean driving); + +} diff --git a/IDEA/src/main/java/com/example/api/repository/EmployeeRepository.java b/IDEA/src/main/java/com/example/api/repository/EmployeeRepository.java new file mode 100644 index 00000000..89f4ae65 --- /dev/null +++ b/IDEA/src/main/java/com/example/api/repository/EmployeeRepository.java @@ -0,0 +1,9 @@ +package com.example.api.repository; + +import com.example.api.model.entity.Employee; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface EmployeeRepository extends JpaRepository { +} diff --git a/IDEA/src/main/java/com/example/api/repository/InventoryRecordRepository.java b/IDEA/src/main/java/com/example/api/repository/InventoryRecordRepository.java new file mode 100644 index 00000000..936a3f7d --- /dev/null +++ b/IDEA/src/main/java/com/example/api/repository/InventoryRecordRepository.java @@ -0,0 +1,37 @@ +package com.example.api.repository; + +import com.example.api.model.entity.InventoryRecord; // 导入InventoryRecord实体类 +import org.springframework.data.jpa.repository.JpaRepository; // 继承JPA仓库接口 +import org.springframework.stereotype.Repository; // 标识这是一个Repository组件 + +import java.util.List; // 导入List类,用于返回多个结果 + +/** + * 库存记录仓库接口,用于数据库操作。 + */ +// 使用@Repository注解标识这是一个Spring组件,通常用于数据访问层 +@Repository +public interface InventoryRecordRepository extends JpaRepository { + + /** + * 根据仓库ID查找所有库存记录。 + * @param wid 仓库ID + * @return 与指定仓库ID相关的所有库存记录列表 + */ + List findAllByWid(String wid); + + /** + * 根据库存记录类型查找所有库存记录。 + * @param type 库存记录类型(例如:-1表示出库,+1表示入库) + * @return 与指定类型相关的所有库存记录列表 + */ + List findAllByType(Integer type); + + /** + * 根据商品信息ID查找所有库存记录。 + * @param cid 商品信息ID + * @return 与指定商品信息ID相关的所有库存记录列表 + */ + List findAllByCid(String cid); + +} diff --git a/IDEA/src/main/java/com/example/api/repository/InventoryRepository.java b/IDEA/src/main/java/com/example/api/repository/InventoryRepository.java new file mode 100644 index 00000000..e9c06253 --- /dev/null +++ b/IDEA/src/main/java/com/example/api/repository/InventoryRepository.java @@ -0,0 +1,38 @@ +package com.example.api.repository; + +import com.example.api.model.entity.Inventory; // 导入Inventory实体类 +import org.springframework.data.jpa.repository.JpaRepository; // 继承JPA仓库接口 +import org.springframework.stereotype.Repository; // 标识这是一个Repository组件 + +import java.util.List; // 导入List类,用于返回多个结果 + +/** + * 库存仓库接口,用于数据库操作。 + */ +// 使用@Repository注解标识这是一个Spring组件,通常用于数据访问层 +@Repository +public interface InventoryRepository extends JpaRepository { + + /** + * 根据仓库ID和商品信息ID查找库存。 + * @param wid 仓库ID + * @param cid 商品信息ID + * @return 匹配的库存对象,如果没有找到则返回null + */ + Inventory findByWidAndCid(String wid, String cid); + + /** + * 根据商品信息ID查找所有库存记录。 + * @param cid 商品信息ID + * @return 与指定商品信息ID相关的所有库存记录列表 + */ + List findAllByCid(String cid); + + /** + * 根据仓库ID查找所有库存记录。 + * @param wid 仓库ID + * @return 与指定仓库ID相关的所有库存记录列表 + */ + List findAllByWid(String wid); + +} diff --git a/IDEA/src/main/java/com/example/api/repository/LoginLogRepository.java b/IDEA/src/main/java/com/example/api/repository/LoginLogRepository.java new file mode 100644 index 00000000..7b161267 --- /dev/null +++ b/IDEA/src/main/java/com/example/api/repository/LoginLogRepository.java @@ -0,0 +1,9 @@ +package com.example.api.repository; + +import com.example.api.model.entity.LoginLog; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface LoginLogRepository extends JpaRepository { +} diff --git a/IDEA/src/main/java/com/example/api/repository/SaleRepository.java b/IDEA/src/main/java/com/example/api/repository/SaleRepository.java new file mode 100644 index 00000000..010721c6 --- /dev/null +++ b/IDEA/src/main/java/com/example/api/repository/SaleRepository.java @@ -0,0 +1,18 @@ +package com.example.api.repository; + +import com.example.api.model.entity.Sale; // 导入Sale实体类 +import org.springframework.data.jpa.repository.JpaRepository; // 导入Spring Data JPA的JpaRepository接口 +import org.springframework.stereotype.Repository; // 导入Spring的@Repository注解,用于声明这是一个Repository + +import java.util.List; // 导入List接口,用于返回列表类型的数据 + +// 使用@Repository注解声明这是一个Repository,通常用于数据库操作 +@Repository +// 声明这是一个SaleRepository接口,它继承了JpaRepository接口 +public interface SaleRepository extends JpaRepository { + + // 定义一个方法findAllByCompanyLike,用于根据公司名称模糊查询销售记录 + // 这个方法会根据传入的参数name,查询company字段中包含name字符串的所有Sale记录 + List findAllByCompanyLike(String name); + +} diff --git a/IDEA/src/main/java/com/example/api/repository/SystemLogRepository.java b/IDEA/src/main/java/com/example/api/repository/SystemLogRepository.java new file mode 100644 index 00000000..f847ba94 --- /dev/null +++ b/IDEA/src/main/java/com/example/api/repository/SystemLogRepository.java @@ -0,0 +1,14 @@ +package com.example.api.repository; + +import com.example.api.model.entity.SystemLog; +import org.springframework.data.jpa.domain.Specification; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface SystemLogRepository extends JpaRepository, JpaSpecificationExecutor { +} diff --git a/IDEA/src/main/java/com/example/api/repository/UserRepository.java b/IDEA/src/main/java/com/example/api/repository/UserRepository.java new file mode 100644 index 00000000..2942c52c --- /dev/null +++ b/IDEA/src/main/java/com/example/api/repository/UserRepository.java @@ -0,0 +1,9 @@ +package com.example.api.repository; + +import com.example.api.model.entity.User; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface UserRepository extends JpaRepository { +} diff --git a/IDEA/src/main/java/com/example/api/repository/VehicleRepository.java b/IDEA/src/main/java/com/example/api/repository/VehicleRepository.java new file mode 100644 index 00000000..3b67432e --- /dev/null +++ b/IDEA/src/main/java/com/example/api/repository/VehicleRepository.java @@ -0,0 +1,36 @@ +package com.example.api.repository; + +import com.example.api.model.entity.Vehicle; // 导入Vehicle实体类 +import org.springframework.data.jpa.repository.JpaRepository; // 继承JPA仓库接口 +import org.springframework.data.jpa.repository.Modifying; // 注解,用于标识修改数据库的操作 +import org.springframework.data.jpa.repository.Query; // 注解,用于执行自定义的JPQL或SQL查询 +import org.springframework.stereotype.Repository; // 标识这是一个Repository组件 +import org.springframework.transaction.annotation.Transactional; // 注解,用于声明事务性方法 + +import java.util.List; // 导入List类,用于返回多个结果 + +/** + * 车辆仓库接口,用于数据库操作。 + */ +// 使用@Repository注解标识这是一个Spring组件,通常用于数据访问层 +@Repository +public interface VehicleRepository extends JpaRepository { + + /** + * 更新指定车辆的驾驶状态。 + * @param driving 新的驾驶状态,true表示正在驾驶,false表示未在驾驶 + * @param id 车辆的ID + */ + @Modifying // 标识这是一个修改操作 + @Transactional // 标识这是一个事务性方法 + @Query("update Vehicle v set v.driving = ?1 where v.id = ?2") // JPQL查询,用于更新操作 + void updateDriving(boolean driving, String id); + + /** + * 查找所有驾驶状态为指定值的车辆。 + * @param driving 驾驶状态,true表示正在驾驶,false表示未在驾驶 + * @return 匹配的 vehicles 列表 + */ + List findAllByDriving(boolean driving); + +} diff --git a/IDEA/src/main/java/com/example/api/repository/WareHouseRepository.java b/IDEA/src/main/java/com/example/api/repository/WareHouseRepository.java new file mode 100644 index 00000000..4e938dde --- /dev/null +++ b/IDEA/src/main/java/com/example/api/repository/WareHouseRepository.java @@ -0,0 +1,9 @@ +package com.example.api.repository; + +import com.example.api.model.entity.Warehouse; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface WareHouseRepository extends JpaRepository { +} diff --git a/IDEA/src/main/java/com/example/api/service/CommodityService.java b/IDEA/src/main/java/com/example/api/service/CommodityService.java new file mode 100644 index 00000000..25e74e3e --- /dev/null +++ b/IDEA/src/main/java/com/example/api/service/CommodityService.java @@ -0,0 +1,51 @@ +package com.example.api.service; + +import com.example.api.model.entity.Commodity; // 导入Commodity实体类,代表商品信息 + +import java.util.List; // 导入List类,用于处理列表数据 + +/** + * 商品服务接口,定义商品相关的业务操作。 + */ +public interface CommodityService { + + /** + * 保存商品信息。 + * @param commodity 商品实体对象,包含商品的各个属性 + * @return 保存后的商品实体对象,包含由数据库生成的ID等信息 + */ + Commodity save(Commodity commodity); + + /** + * 更新商品信息。 + * @param commodity 要更新的商品实体对象 + */ + void update(Commodity commodity); + + /** + * 根据ID删除商品信息。 + * @param id 要删除的商品ID + */ + void delete(String id); + + /** + * 根据ID查询商品信息。 + * @param id 要查询的商品ID + * @return 查询到的商品实体对象,如果没有找到则返回null + */ + Commodity findById(String id); + + /** + * 查询所有商品信息。 + * @return 商品实体对象列表,包含所有商品的详细信息 + */ + List findAll(); + + /** + * 根据商品名称模糊查询商品信息。 + * @param name 商品名称关键词 + * @return 与商品名称匹配的商品实体对象列表 + */ + List findAllByLikeName(String name); + +} \ No newline at end of file diff --git a/IDEA/src/main/java/com/example/api/service/impl/CommodityServiceImpl.java b/IDEA/src/main/java/com/example/api/service/impl/CommodityServiceImpl.java new file mode 100644 index 00000000..c75d7bb1 --- /dev/null +++ b/IDEA/src/main/java/com/example/api/service/impl/CommodityServiceImpl.java @@ -0,0 +1,80 @@ +package com.example.api.service.impl; + +import com.example.api.model.entity.Commodity; // 导入Commodity实体类 +import com.example.api.repository.CommodityRepository; // 导入CommodityRepository接口 +import com.example.api.service.CommodityService; // 导入CommodityService接口 +import com.example.api.utils.DataTimeUtil; // 导入日期时间工具类 +import org.springframework.stereotype.Service; // 导入Service注解 + +import javax.annotation.Resource; // 导入Resource注解,用于注入Spring管理的Bean +import java.util.List; // 导入List类,用于处理列表数据 + +/** + * 商品服务实现类,提供商品相关的业务逻辑。 + */ +@Service +public class CommodityServiceImpl implements CommodityService { + + @Resource + private CommodityRepository commodityRepository; // 注入Commodity仓库 + + /** + * 保存商品信息。 + * @param commodity 商品实体对象 + * @return 保存后的商品实体对象 + */ + @Override + public Commodity save(Commodity commodity) { + commodity.setCreateAt(DataTimeUtil.getNowTimeString()); // 设置创建时间 + return commodityRepository.save(commodity); // 保存商品信息 + } + + /** + * 更新商品信息。 + * @param commodity 商品实体对象 + */ + @Override + public void update(Commodity commodity) { + commodity.setUpdateAt(DataTimeUtil.getNowTimeString()); // 设置更新时间 + commodityRepository.save(commodity); // 更新商品信息 + } + + /** + * 根据ID删除商品信息。 + * @param id 商品ID + */ + @Override + public void delete(String id) { + commodityRepository.deleteById(id); // 根据ID删除商品信息 + } + + /** + * 根据ID查询商品信息。 + * @param id 商品ID + * @return 查询到的商品实体对象,如果没有找到则返回null + */ + @Override + public Commodity findById(String id) { + return commodityRepository.findById(id).orElse(null); // 根据ID查询商品信息 + } + + /** + * 查询所有商品信息。 + * @return 商品实体对象列表 + */ + @Override + public List findAll() { + return commodityRepository.findAll(); // 查询所有商品信息 + } + + /** + * 根据商品名称模糊查询商品信息。 + * @param name 商品名称关键词 + * @return 匹配的商品实体对象列表 + */ + @Override + public List findAllByLikeName(String name) { + return commodityRepository.findByNameLike("%" + name + "%"); // 模糊查询商品信息 + } + +} \ No newline at end of file