diff --git a/pom.xml b/pom.xml
index 01bb32e..a455028 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,7 +24,7 @@
21
UTF-8
- 3.5.5
+ 3.5.7
8.5.7
0.12.3
5.8.26
@@ -86,7 +86,7 @@
com.mysql
mysql-connector-j
- runtime
+ 8.2.0
@@ -149,12 +149,6 @@
spring-boot-starter-test
test
-
- org.springframework.boot
- spring-boot-devtools
- runtime
- true
-
diff --git a/src/main/java/com/aida/seller/AidaSellerApplication.java b/src/main/java/com/aida/seller/AidaSellerApplication.java
index a2e5e6e..7195cc5 100644
--- a/src/main/java/com/aida/seller/AidaSellerApplication.java
+++ b/src/main/java/com/aida/seller/AidaSellerApplication.java
@@ -5,11 +5,13 @@ import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
+import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication
@MapperScan("com.aida.seller.module.*.mapper")
@EnableFeignClients
@EnableDiscoveryClient
+@ComponentScan(basePackages = "com.aida.seller")
public class AidaSellerApplication {
public static void main(String[] args) {
diff --git a/src/main/java/com/aida/seller/config/MyBatisPlusConfig.java b/src/main/java/com/aida/seller/config/MyBatisPlusConfig.java
deleted file mode 100644
index 8bc8277..0000000
--- a/src/main/java/com/aida/seller/config/MyBatisPlusConfig.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.aida.seller.config;
-
-import com.baomidou.mybatisplus.annotation.DbType;
-import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
-import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
-import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
-import org.apache.ibatis.reflection.MetaObject;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-import java.time.LocalDateTime;
-
-@Configuration
-public class MyBatisPlusConfig {
-
- @Bean
- public MybatisPlusInterceptor mybatisPlusInterceptor() {
- MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
- interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
- return interceptor;
- }
-
- @Bean
- public MetaObjectHandler metaObjectHandler() {
- return new MetaObjectHandler() {
- @Override
- public void insertFill(MetaObject metaObject) {
- this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime::now);
- this.strictInsertFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime::now);
- }
-
- @Override
- public void updateFill(MetaObject metaObject) {
- this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime::now);
- }
- };
- }
-}
diff --git a/src/main/java/com/aida/seller/config/MyMetaObjectHandler.java b/src/main/java/com/aida/seller/config/MyMetaObjectHandler.java
new file mode 100644
index 0000000..36f08e0
--- /dev/null
+++ b/src/main/java/com/aida/seller/config/MyMetaObjectHandler.java
@@ -0,0 +1,23 @@
+package com.aida.seller.config;
+
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import org.apache.ibatis.reflection.MetaObject;
+import org.springframework.stereotype.Component;
+import java.time.LocalDateTime;
+
+@Component
+public class MyMetaObjectHandler implements MetaObjectHandler {
+
+ @Override
+ public void insertFill(MetaObject metaObject) {
+ this.setFieldValByName("createTime", LocalDateTime.now(), metaObject);
+ this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
+ this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now());
+ this.strictInsertFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
+ }
+
+ @Override
+ public void updateFill(MetaObject metaObject) {
+ this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/aida/seller/config/PrimaryDataSourceConfig.java b/src/main/java/com/aida/seller/config/PrimaryDataSourceConfig.java
index decf195..79c0e40 100644
--- a/src/main/java/com/aida/seller/config/PrimaryDataSourceConfig.java
+++ b/src/main/java/com/aida/seller/config/PrimaryDataSourceConfig.java
@@ -1,7 +1,10 @@
package com.aida.seller.config;
+import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.config.GlobalConfig;
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionTemplate;
@@ -14,16 +17,28 @@ import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.sql.DataSource;
@Configuration
+@EnableTransactionManagement
@MapperScan(basePackages = "com.aida.seller.module.*.mapper", sqlSessionFactoryRef = "primarySqlSessionFactory")
public class PrimaryDataSourceConfig {
+ @Bean
+ public MybatisPlusInterceptor mybatisPlusInterceptor() {
+ MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+ interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+ return interceptor;
+ }
+
@Autowired
private MybatisPlusInterceptor mybatisPlusInterceptor;
+ @Autowired
+ private MetaObjectHandler myMetaObjectHandler;
+
@Primary
@Bean(name = "primaryDataSource")
@ConfigurationProperties(prefix = "spring.datasource.primary")
@@ -42,6 +57,7 @@ public class PrimaryDataSourceConfig {
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setBanner(false);
+ globalConfig.setMetaObjectHandler(myMetaObjectHandler);
bean.setGlobalConfig(globalConfig);
bean.setPlugins(mybatisPlusInterceptor);
diff --git a/src/main/java/com/aida/seller/module/designer/dto/DesignerAuditDTO.java b/src/main/java/com/aida/seller/module/designer/dto/DesignerAuditDTO.java
index cbe79fd..51f544a 100644
--- a/src/main/java/com/aida/seller/module/designer/dto/DesignerAuditDTO.java
+++ b/src/main/java/com/aida/seller/module/designer/dto/DesignerAuditDTO.java
@@ -1,5 +1,7 @@
package com.aida.seller.module.designer.dto;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
diff --git a/src/main/java/com/aida/seller/module/designer/entity/DesignerEntity.java b/src/main/java/com/aida/seller/module/designer/entity/DesignerEntity.java
index 9521f58..3edbfa5 100644
--- a/src/main/java/com/aida/seller/module/designer/entity/DesignerEntity.java
+++ b/src/main/java/com/aida/seller/module/designer/entity/DesignerEntity.java
@@ -1,6 +1,8 @@
package com.aida.seller.module.designer.entity;
import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@@ -16,6 +18,7 @@ public class DesignerEntity implements Serializable {
/** 设计师ID */
@TableId(type = IdType.ASSIGN_ID)
+ @JsonSerialize(using = ToStringSerializer.class)
private Long id;
/** 用户ID(关联用户表) */
diff --git a/src/main/java/com/aida/seller/module/designer/vo/DesignerApplyDetailVo.java b/src/main/java/com/aida/seller/module/designer/vo/DesignerApplyDetailVo.java
index fc8ea27..7a98684 100644
--- a/src/main/java/com/aida/seller/module/designer/vo/DesignerApplyDetailVo.java
+++ b/src/main/java/com/aida/seller/module/designer/vo/DesignerApplyDetailVo.java
@@ -1,5 +1,7 @@
package com.aida.seller.module.designer.vo;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
@@ -14,8 +16,6 @@ public class DesignerApplyDetailVo implements Serializable {
private static final long serialVersionUID = 1L;
- @Schema(description = "设计师ID")
- private Long id;
@Schema(description = "店铺名称")
private String shopName;
diff --git a/src/main/java/com/aida/seller/module/listing/controller/ListingController.java b/src/main/java/com/aida/seller/module/listing/controller/ListingController.java
index 70ebba4..c9e2954 100644
--- a/src/main/java/com/aida/seller/module/listing/controller/ListingController.java
+++ b/src/main/java/com/aida/seller/module/listing/controller/ListingController.java
@@ -68,15 +68,6 @@ public class ListingController {
return Response.success();
}
- @Operation(summary = "批量设置库存", description = "入参为商品ID和库存值列表")
- @PutMapping("/stock/batch")
- public Response batchUpdateStock(
- @Parameter(description = "库存更新列表") @RequestBody List list) {
- Long sellerId = UserContext.getUserId();
- listingService.batchUpdateStock(list, sellerId);
- return Response.success();
- }
-
@Operation(summary = "设置弹窗提醒标志", description = "在Redis中设置7天过期的弹窗提醒标志")
@PostMapping("/popup/set")
public Response setPopupReminder() {
diff --git a/src/main/java/com/aida/seller/module/listing/dto/ListingImageDTO.java b/src/main/java/com/aida/seller/module/listing/dto/ListingImageDTO.java
index 1f4a433..26a9b34 100644
--- a/src/main/java/com/aida/seller/module/listing/dto/ListingImageDTO.java
+++ b/src/main/java/com/aida/seller/module/listing/dto/ListingImageDTO.java
@@ -1,5 +1,7 @@
package com.aida.seller.module.listing.dto;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@@ -15,6 +17,7 @@ public class ListingImageDTO implements Serializable {
/** 图片ID,有值则更新,无则新增 */
@Schema(description = "图片ID,有值则更新,无则新增")
+ @JsonSerialize(using = ToStringSerializer.class)
private Long id;
/** 图片类别: cover/main_product/product/sketch/apparel */
diff --git a/src/main/java/com/aida/seller/module/listing/dto/ListingSaveDTO.java b/src/main/java/com/aida/seller/module/listing/dto/ListingSaveDTO.java
index 2ecb898..51070a7 100644
--- a/src/main/java/com/aida/seller/module/listing/dto/ListingSaveDTO.java
+++ b/src/main/java/com/aida/seller/module/listing/dto/ListingSaveDTO.java
@@ -1,5 +1,7 @@
package com.aida.seller.module.listing.dto;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@@ -17,6 +19,7 @@ public class ListingSaveDTO implements Serializable {
/** 商品ID,无则新建,有则更新 */
@Schema(description = "商品ID,无则新建,有则更新")
+ @JsonSerialize(using = ToStringSerializer.class)
private Long id;
/** 商品标题 */
@@ -31,9 +34,6 @@ public class ListingSaveDTO implements Serializable {
@Schema(description = "价格")
private BigDecimal price;
- /** 库存 */
- @Schema(description = "库存")
- private Integer stock;
/** 浏览量(更新时传入) */
@Schema(description = "浏览量(更新时传入)")
diff --git a/src/main/java/com/aida/seller/module/listing/dto/ListingStockDTO.java b/src/main/java/com/aida/seller/module/listing/dto/ListingStockDTO.java
deleted file mode 100644
index 97af457..0000000
--- a/src/main/java/com/aida/seller/module/listing/dto/ListingStockDTO.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.aida.seller.module.listing.dto;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * 批量库存更新 DTO
- */
-@Data
-public class ListingStockDTO implements Serializable {
-
- private static final long serialVersionUID = 1L;
-
- /** 商品ID */
- @Schema(description = "商品ID")
- private Long id;
-
- /** 库存值 */
- @Schema(description = "库存值")
- private Integer stock;
-}
diff --git a/src/main/java/com/aida/seller/module/listing/entity/ListingEntity.java b/src/main/java/com/aida/seller/module/listing/entity/ListingEntity.java
index 5a3ca81..742b9c5 100644
--- a/src/main/java/com/aida/seller/module/listing/entity/ListingEntity.java
+++ b/src/main/java/com/aida/seller/module/listing/entity/ListingEntity.java
@@ -3,6 +3,9 @@ package com.aida.seller.module.listing.entity;
import com.aida.seller.module.listing.enums.ProductCategoryEnum;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import java.io.Serializable;
@@ -21,6 +24,7 @@ public class ListingEntity implements Serializable {
/** 商品ID */
@TableId(type = IdType.ASSIGN_ID)
+ @JsonSerialize(using = ToStringSerializer.class)
private Long id;
/** 卖家ID */
@@ -35,8 +39,8 @@ public class ListingEntity implements Serializable {
/** 价格 */
private BigDecimal price;
- /** 库存数量 */
- private Integer stock;
+ /** 销量 */
+ private Integer salesVolume;
/** 封面图URL(列表页展示用) */
private String cover;
@@ -48,11 +52,13 @@ public class ListingEntity implements Serializable {
private Integer status;
/** 创建时间 */
- @TableField(fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @TableField(value = "create_time", fill = FieldFill.INSERT_UPDATE)
private LocalDateTime createTime;
/** 更新时间 */
- @TableField(fill = FieldFill.INSERT_UPDATE)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
/** 是否删除:0-否,1-是 */
diff --git a/src/main/java/com/aida/seller/module/listing/entity/ListingImageEntity.java b/src/main/java/com/aida/seller/module/listing/entity/ListingImageEntity.java
index a3b6f6d..0838f89 100644
--- a/src/main/java/com/aida/seller/module/listing/entity/ListingImageEntity.java
+++ b/src/main/java/com/aida/seller/module/listing/entity/ListingImageEntity.java
@@ -1,6 +1,9 @@
package com.aida.seller.module.listing.entity;
import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import java.io.Serializable;
@@ -17,9 +20,11 @@ public class ListingImageEntity implements Serializable {
/** 图片ID */
@TableId(type = IdType.ASSIGN_ID)
+ @JsonSerialize(using = ToStringSerializer.class)
private Long id;
/** 商品ID */
+ @JsonSerialize(using = ToStringSerializer.class)
private Long listingId;
/** 图片类别: cover/main_product/product/sketch/apparel */
@@ -35,6 +40,7 @@ public class ListingImageEntity implements Serializable {
private Integer isSelected;
/** 创建时间 */
- @TableField(fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @TableField(value = "create_time", fill = FieldFill.INSERT_UPDATE)
private LocalDateTime createTime;
}
diff --git a/src/main/java/com/aida/seller/module/listing/service/ListingService.java b/src/main/java/com/aida/seller/module/listing/service/ListingService.java
index 6afba2b..761379b 100644
--- a/src/main/java/com/aida/seller/module/listing/service/ListingService.java
+++ b/src/main/java/com/aida/seller/module/listing/service/ListingService.java
@@ -58,14 +58,6 @@ public interface ListingService extends IService {
*/
void updateStatus(Long id, Integer status, Long sellerId);
- /**
- * 批量更新库存
- *
- * @param list 库存列表
- * @param sellerId 卖家ID
- */
- void batchUpdateStock(java.util.List list, Long sellerId);
-
/**
* 设置弹窗提醒标志(7天过期)
*
diff --git a/src/main/java/com/aida/seller/module/listing/service/ListingServiceImpl.java b/src/main/java/com/aida/seller/module/listing/service/ListingServiceImpl.java
index 9d0ee09..287a6d5 100644
--- a/src/main/java/com/aida/seller/module/listing/service/ListingServiceImpl.java
+++ b/src/main/java/com/aida/seller/module/listing/service/ListingServiceImpl.java
@@ -187,26 +187,6 @@ public class ListingServiceImpl extends ServiceImpl list, Long sellerId) {
- if (CollectionUtils.isEmpty(list)) {
- return;
- }
- List ids = list.stream().map(ListingStockDTO::getId).collect(Collectors.toList());
- List existing = this.list(
- new LambdaQueryWrapper()
- .eq(ListingEntity::getSellerId, sellerId)
- .in(ListingEntity::getId, ids));
- if (existing.size() != ids.size()) {
- throw new BusinessException("部分商品不存在或无权操作");
- }
- Map stockMap = list.stream()
- .collect(Collectors.toMap(ListingStockDTO::getId, ListingStockDTO::getStock));
- existing.forEach(e -> e.setStock(stockMap.get(e.getId())));
- this.updateBatchById(existing);
- }
-
private void handleImages(Long listingId, List images) {
Map> byCategory = images.stream()
.collect(Collectors.groupingBy(img -> img.getCategory() == null ? "" : img.getCategory()));
diff --git a/src/main/java/com/aida/seller/module/listing/vo/ListingPageVO.java b/src/main/java/com/aida/seller/module/listing/vo/ListingPageVO.java
index 3fd0017..56782a3 100644
--- a/src/main/java/com/aida/seller/module/listing/vo/ListingPageVO.java
+++ b/src/main/java/com/aida/seller/module/listing/vo/ListingPageVO.java
@@ -1,5 +1,7 @@
package com.aida.seller.module.listing.vo;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import java.io.Serializable;
@@ -15,6 +17,7 @@ public class ListingPageVO implements Serializable {
private static final long serialVersionUID = 1L;
/** 商品ID */
+ @JsonSerialize(using = ToStringSerializer.class)
private Long id;
/** 封面图URL(列表页直返,无须关联图片表) */
@@ -26,8 +29,8 @@ public class ListingPageVO implements Serializable {
/** 价格 */
private BigDecimal price;
- /** 库存 */
- private Integer stock;
+ /** 销量 */
+ private Integer salesVolume;
/** 浏览量 */
private Integer viewCount;
diff --git a/src/main/java/com/aida/seller/module/order/entity/OrderInfoEntity.java b/src/main/java/com/aida/seller/module/order/entity/OrderInfoEntity.java
index b662d00..589a06b 100644
--- a/src/main/java/com/aida/seller/module/order/entity/OrderInfoEntity.java
+++ b/src/main/java/com/aida/seller/module/order/entity/OrderInfoEntity.java
@@ -1,6 +1,8 @@
package com.aida.seller.module.order.entity;
import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import java.io.Serializable;
@@ -17,6 +19,7 @@ public class OrderInfoEntity implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.ASSIGN_ID)
+ @JsonSerialize(using = ToStringSerializer.class)
private Long id;
/** 卖家ID */
diff --git a/src/main/java/com/aida/seller/module/order/entity/OrderItemEntity.java b/src/main/java/com/aida/seller/module/order/entity/OrderItemEntity.java
index ee8f82a..3a9bbf4 100644
--- a/src/main/java/com/aida/seller/module/order/entity/OrderItemEntity.java
+++ b/src/main/java/com/aida/seller/module/order/entity/OrderItemEntity.java
@@ -1,6 +1,8 @@
package com.aida.seller.module.order.entity;
import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import java.io.Serializable;
@@ -18,12 +20,15 @@ public class OrderItemEntity implements Serializable {
/** 主键ID */
@TableId(type = IdType.ASSIGN_ID)
+ @JsonSerialize(using = ToStringSerializer.class)
private Long id;
/** 订单ID(关联 seller_orders) */
+ @JsonSerialize(using = ToStringSerializer.class)
private Long orderId;
/** 商品ID */
+ @JsonSerialize(using = ToStringSerializer.class)
private Long productId;
/** 商品名称 */
diff --git a/src/main/java/com/aida/seller/module/order/vo/OrderVO.java b/src/main/java/com/aida/seller/module/order/vo/OrderVO.java
index 117696b..6ef66b0 100644
--- a/src/main/java/com/aida/seller/module/order/vo/OrderVO.java
+++ b/src/main/java/com/aida/seller/module/order/vo/OrderVO.java
@@ -1,5 +1,7 @@
package com.aida.seller.module.order.vo;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@@ -15,6 +17,7 @@ public class OrderVO implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "订单唯一标识")
+ @JsonSerialize(using = ToStringSerializer.class)
private Long orderId;
@Schema(description = "商品明细列表")
@@ -36,6 +39,7 @@ public class OrderVO implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "商品ID")
+ @JsonSerialize(using = ToStringSerializer.class)
private Long productId;
@Schema(description = "商品名")