Commit f5dd4bff by Lizh

重新生成商品相关的entity对象和vo对象

parent 65aef922
...@@ -13,4 +13,5 @@ ...@@ -13,4 +13,5 @@
.trae/ .trae/
.vscode/ .vscode/
CLAUDE.md CLAUDE.md
docs
...@@ -3,9 +3,17 @@ package com.jomalls.custom.app.annotation; ...@@ -3,9 +3,17 @@ package com.jomalls.custom.app.annotation;
import java.lang.annotation.*; import java.lang.annotation.*;
/** /**
* 防重复提交切面
* 基于Redis SET NX EX实现,在指定时间间隔(毫秒)内同一用户对同一接口的相同参数请求只允许执行一次
* 使用方法:
* 在需要防止重复提交的方法上添加@RepeatSubmit注解,指定间隔时间(毫秒)和提示消息
* 示例:
* @RepeatSubmit(interval = 5000, message = "请勿重复提交")
* @PostMapping("/save")
* public R<Void> save(@RequestBody XxxVO vo) { ... }
*
* @Author: Lizh * @Author: Lizh
* @Date: 2026/6/2 10:58 * @Date: 2026/6/2 10:58
* @Description: 需要验证重复提交的注解
* @Version: 1.0 * @Version: 1.0
*/ */
@Inherited @Inherited
......
...@@ -9,6 +9,24 @@ import java.lang.annotation.Target; ...@@ -9,6 +9,24 @@ import java.lang.annotation.Target;
/** /**
* 权限控制注解 * 权限控制注解
* 用于标注需要权限校验的 Controller 方法 * 用于标注需要权限校验的 Controller 方法
* 新老用法对照
* ┌─────────────────────────────────────────┬──────────────────────────────────────────────────────────────┐
* ├ custom-back │ custom-server(迁移后) │
* ├─────────────────────────────────────────┼──────────────────────────────────────────────────────────────┼
* │ @PreAuthorize("@ss.hasPermi('x')") │ @RequiresPermissions("x") │
* ├─────────────────────────────────────────┼──────────────────────────────────────────────────────────────┼
* │ @PreAuthorize("@ss.hasAnyPermi('a,b')") │ @RequiresPermissions(value="a,b", mode=ANY) │
* ├─────────────────────────────────────────┼──────────────────────────────────────────────────────────────┼
* │ @PreAuthorize("@ss.hasRole('admin')") │ @RequiresRoles("admin") │
* ├─────────────────────────────────────────┼──────────────────────────────────────────────────────────────┤
* │ @PreAuthorize("@ss.hasAnyRoles('a,b')") │ @RequiresRoles(value="a,b", mode=ANY) │
* ├─────────────────────────────────────────┼──────────────────────────────────────────────────────────────┤
* │ 权限+角色 AND 组合 │ @RequiresPermissions("x") + @RequiresRoles("admin") 同时使用 │
* └─────────────────────────────────────────┴──────────────────────────────────────────────────────────────┴
*
* @author Lizh
* @version 0.01
* @date 2026-06-03
*/ */
@Target(ElementType.METHOD) @Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME) @Retention(RetentionPolicy.RUNTIME)
......
package com.jomalls.custom.app.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 角色校验注解 — 等价于 @PreAuthorize("@ss.hasRole('xxx')") / @PreAuthorize("@ss.hasAnyRoles('xxx')")
* 用于标注需要角色校验的 Controller 方法
* 新老用法对照
* ┌─────────────────────────────────────────┬──────────────────────────────────────────────────────────────┐
* ├ custom-back │ custom-server(迁移后) │
* ├─────────────────────────────────────────┼──────────────────────────────────────────────────────────────┼
* │ @PreAuthorize("@ss.hasPermi('x')") │ @RequiresPermissions("x") │
* ├─────────────────────────────────────────┼──────────────────────────────────────────────────────────────┼
* │ @PreAuthorize("@ss.hasAnyPermi('a,b')") │ @RequiresPermissions(value="a,b", mode=ANY) │
* ├─────────────────────────────────────────┼──────────────────────────────────────────────────────────────┼
* │ @PreAuthorize("@ss.hasRole('admin')") │ @RequiresRoles("admin") │
* ├─────────────────────────────────────────┼──────────────────────────────────────────────────────────────┤
* │ @PreAuthorize("@ss.hasAnyRoles('a,b')") │ @RequiresRoles(value="a,b", mode=ANY) │
* ├─────────────────────────────────────────┼──────────────────────────────────────────────────────────────┤
* │ 权限+角色 AND 组合 │ @RequiresPermissions("x") + @RequiresRoles("admin") 同时使用 │
* └─────────────────────────────────────────┴──────────────────────────────────────────────────────────────┴
*
* @author Lizh
* @version 0.01
* @date 2026-06-03
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequiresRoles {
/**
* 角色标识,支持多个角色(逗号分隔)
* 例如: "admin" 或 "admin,system:dept:manager"
*/
String value();
/**
* 角色校验模式
* ALL - 必须拥有所有角色
* ANY - 拥有任意一个角色即可
*/
RequiresPermissions.RequireMode mode() default RequiresPermissions.RequireMode.ANY;
/**
* 角色校验失败时的错误信息
*/
String message() default "无访问权限,角色不匹配";
}
package com.jomalls.custom.app.aspect; package com.jomalls.custom.app.aspect;
import com.jomalls.custom.app.annotation.RequiresPermissions; import com.jomalls.custom.app.annotation.RequiresPermissions;
import com.jomalls.custom.app.annotation.RequiresRoles;
import com.jomalls.custom.app.enums.CodeEnum; import com.jomalls.custom.app.enums.CodeEnum;
import com.jomalls.custom.app.exception.ServiceException; import com.jomalls.custom.app.exception.ServiceException;
import com.jomalls.custom.app.service.PermissionService; import com.jomalls.custom.app.service.PermissionService;
...@@ -15,7 +16,11 @@ import org.springframework.stereotype.Component; ...@@ -15,7 +16,11 @@ import org.springframework.stereotype.Component;
import java.lang.reflect.Method; import java.lang.reflect.Method;
/** /**
* 权限校验切面 * 操作权限校验切面
*
* @author Lizh
* @version 0.01
* @date 2026-05-29 10:43:28
*/ */
@Slf4j @Slf4j
@Aspect @Aspect
...@@ -31,6 +36,15 @@ public class PermissionAspect { ...@@ -31,6 +36,15 @@ public class PermissionAspect {
} }
/** /**
* 角色校验切点 — 拦截 @RequiresRoles 注解
* 等价于 @PreAuthorize("@ss.hasRole('xxx')") 和 @PreAuthorize("@ss.hasAnyRoles('xxx')")
*/
@Before("@annotation(com.jomalls.custom.app.annotation.RequiresRoles)")
public void doBeforeRoles(JoinPoint point) throws Throwable {
checkRoles(point);
}
/**
* 权限校验 * 权限校验
* *
* @param joinPoint 切点 * @param joinPoint 切点
...@@ -67,4 +81,44 @@ public class PermissionAspect { ...@@ -67,4 +81,44 @@ public class PermissionAspect {
throw new ServiceException(message, CodeEnum.FORBIDDEN.getCode()); throw new ServiceException(message, CodeEnum.FORBIDDEN.getCode());
} }
} }
/**
* 角色校验
*
* @param joinPoint 切点
*/
private void checkRoles(JoinPoint joinPoint) {
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
Method method = signature.getMethod();
RequiresRoles requiresRoles = method.getAnnotation(RequiresRoles.class);
if (requiresRoles == null) {
return;
}
String roles = requiresRoles.value();
RequiresPermissions.RequireMode mode = requiresRoles.mode();
String message = requiresRoles.message();
boolean hasRole;
if (mode == RequiresPermissions.RequireMode.ALL) {
// 必须拥有所有角色
String[] roleArray = roles.split(",");
hasRole = true;
for (String r : roleArray) {
if (!permissionService.hasRole(r.trim())) {
hasRole = false;
break;
}
}
} else {
// 拥有任意一个角色即可(默认)
hasRole = permissionService.hasAnyRoles(roles);
}
if (!hasRole) {
log.warn("用户无匹配角色,要求角色: {},校验模式: {},方法: {}", roles, mode, method.getName());
throw new ServiceException(message, CodeEnum.FORBIDDEN.getCode());
}
}
} }
...@@ -21,14 +21,10 @@ import java.util.concurrent.TimeUnit; ...@@ -21,14 +21,10 @@ import java.util.concurrent.TimeUnit;
/** /**
* 防重复提交切面 * 防重复提交切面
* 基于Redis SET NX EX实现,在指定时间间隔(毫秒)内同一用户对同一接口的相同参数请求只允许执行一次
* 使用方法:
* 在需要防止重复提交的方法上添加@RepeatSubmit注解,指定间隔时间(毫秒)和提示消息
* 示例:
* @RepeatSubmit(interval = 5000, message = "请勿重复提交")
* @PostMapping("/save")
* public R<Void> save(@RequestBody XxxVO vo) { ... }
* *
* @author Lizh
* @version 0.01
* @date 2026-05-29 10:43:28
*/ */
@Slf4j @Slf4j
@Aspect @Aspect
......
package com.jomalls.custom.app.exception;
import lombok.Getter;
import java.io.Serial;
/**
* @Author: Lizh
* @Date: 2026/5/28 10:27
* @Description: 未登录或token无效异常
* @Version: 1.0
*/
@Getter
public class InvalidTokenException extends RuntimeException {
@Serial
private static final long serialVersionUID = 1L;
private Integer code = 401;
public InvalidTokenException() {
super("未登录或登录已过期");
}
public InvalidTokenException(String message) {
super(message);
}
public InvalidTokenException(Integer code, String message) {
super(message);
this.code = code;
}
}
\ No newline at end of file
...@@ -11,7 +11,7 @@ import java.io.Serializable; ...@@ -11,7 +11,7 @@ import java.io.Serializable;
* PageModel * PageModel
* *
* @author Lizh * @author Lizh
* @date 2026-05-29 10:25:15 * @date 2026-06-03 11:56:55
*/ */
@Data @Data
@Builder @Builder
......
package com.jomalls.custom.app.vo; package com.jomalls.custom.app.vo;
import lombok.*; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import io.swagger.v3.oas.annotations.media.Schema;
/** /**
* Model * Model
* *
* @author Lizh * @author Lizh
* @date 2026-05-29 10:25:15 * @date 2026-06-03 11:56:55
*/ */
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Schema(description = "CustomProductBlacklistVO") @Schema(description = "VO")
public class CustomProductBlacklistVO implements Serializable { public class CustomProductBlacklistVO implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
......
...@@ -12,7 +12,7 @@ import java.util.Date; ...@@ -12,7 +12,7 @@ import java.util.Date;
* PageModel * PageModel
* *
* @author Lizh * @author Lizh
* @date 2026-05-29 10:25:16 * @date 2026-06-03 11:56:56
*/ */
@Data @Data
@Builder @Builder
......
package com.jomalls.custom.app.vo; package com.jomalls.custom.app.vo;
import lombok.*; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import io.swagger.v3.oas.annotations.media.Schema;
/** /**
* Model * Model
* *
* @author Lizh * @author Lizh
* @date 2026-05-29 10:25:16 * @date 2026-06-03 11:56:56
*/ */
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Schema(description = "CustomProductCnRemarkVO") @Schema(description = "VO")
public class CustomProductCnRemarkVO implements Serializable { public class CustomProductCnRemarkVO implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
......
...@@ -11,7 +11,7 @@ import java.io.Serializable; ...@@ -11,7 +11,7 @@ import java.io.Serializable;
* PageModel * PageModel
* *
* @author Lizh * @author Lizh
* @date 2026-05-29 10:25:16 * @date 2026-06-03 11:56:57
*/ */
@Data @Data
@Builder @Builder
......
package com.jomalls.custom.app.vo; package com.jomalls.custom.app.vo;
import lombok.*; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import io.swagger.v3.oas.annotations.media.Schema;
/** /**
* Model * Model
* *
* @author Lizh * @author Lizh
* @date 2026-05-29 10:25:16 * @date 2026-06-03 11:56:57
*/ */
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Schema(description = "CustomProductCraftRelVO") @Schema(description = "VO")
public class CustomProductCraftRelVO implements Serializable { public class CustomProductCraftRelVO implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
......
...@@ -11,13 +11,13 @@ import java.io.Serializable; ...@@ -11,13 +11,13 @@ import java.io.Serializable;
* PageModel * PageModel
* *
* @author Lizh * @author Lizh
* @date 2026-05-29 10:25:16 * @date 2026-06-03 11:56:58
*/ */
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = true)
@Schema(description = "CustomProductDiyUserRelPageVo") @Schema(description = "CustomProductDiyUserRelPageVo")
public class CustomProductDiyUserRelPageVO extends PageRequest implements Serializable { public class CustomProductDiyUserRelPageVO extends PageRequest implements Serializable {
@Serial @Serial
......
package com.jomalls.custom.app.vo; package com.jomalls.custom.app.vo;
import lombok.*; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import io.swagger.v3.oas.annotations.media.Schema;
/** /**
* Model * Model
* *
* @author Lizh * @author Lizh
* @date 2026-05-29 10:25:16 * @date 2026-06-03 11:56:58
*/ */
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Schema(description = "CustomProductDiyUserRelVO") @Schema(description = "VO")
public class CustomProductDiyUserRelVO implements Serializable { public class CustomProductDiyUserRelVO implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
......
...@@ -12,7 +12,7 @@ import java.math.BigDecimal; ...@@ -12,7 +12,7 @@ import java.math.BigDecimal;
* PageModel * PageModel
* *
* @author Lizh * @author Lizh
* @date 2026-05-29 10:25:16 * @date 2026-06-03 11:56:59
*/ */
@Data @Data
@Builder @Builder
......
package com.jomalls.custom.app.vo; package com.jomalls.custom.app.vo;
import lombok.*; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import io.swagger.v3.oas.annotations.media.Schema;
/** /**
* Model * Model
* *
* @author Lizh * @author Lizh
* @date 2026-05-29 10:25:16 * @date 2026-06-03 11:56:59
*/ */
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Schema(description = "CustomProductFactoryPriceIntervalRelVO") @Schema(description = "VO")
public class CustomProductFactoryPriceIntervalRelVO implements Serializable { public class CustomProductFactoryPriceIntervalRelVO implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
......
...@@ -13,7 +13,7 @@ import java.util.Date; ...@@ -13,7 +13,7 @@ import java.util.Date;
* PageModel * PageModel
* *
* @author Lizh * @author Lizh
* @date 2026-05-29 10:25:16 * @date 2026-06-03 11:57:00
*/ */
@Data @Data
@Builder @Builder
......
package com.jomalls.custom.app.vo; package com.jomalls.custom.app.vo;
import lombok.*; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import io.swagger.v3.oas.annotations.media.Schema;
/** /**
* Model * Model
* *
* @author Lizh * @author Lizh
* @date 2026-05-29 10:25:16 * @date 2026-06-03 11:57:00
*/ */
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Schema(description = "CustomProductFactoryPriceRelVO") @Schema(description = "VO")
public class CustomProductFactoryPriceRelVO implements Serializable { public class CustomProductFactoryPriceRelVO implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
......
...@@ -12,7 +12,7 @@ import java.util.Date; ...@@ -12,7 +12,7 @@ import java.util.Date;
* PageModel * PageModel
* *
* @author Lizh * @author Lizh
* @date 2026-05-29 10:25:16 * @date 2026-06-03 11:57:01
*/ */
@Data @Data
@Builder @Builder
......
package com.jomalls.custom.app.vo; package com.jomalls.custom.app.vo;
import lombok.*; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import io.swagger.v3.oas.annotations.media.Schema;
/** /**
* Model * Model
* *
* @author Lizh * @author Lizh
* @date 2026-05-29 10:25:16 * @date 2026-06-03 11:57:01
*/ */
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Schema(description = "CustomProductImageVO") @Schema(description = "VO")
public class CustomProductImageVO implements Serializable { public class CustomProductImageVO implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
......
...@@ -13,7 +13,7 @@ import java.util.Date; ...@@ -13,7 +13,7 @@ import java.util.Date;
* PageModel * PageModel
* *
* @author Lizh * @author Lizh
* @date 2026-05-29 10:25:16 * @date 2026-06-03 11:57:02
*/ */
@Data @Data
@Builder @Builder
...@@ -50,24 +50,6 @@ public class CustomProductInfoPageVO extends PageRequest implements Serializable ...@@ -50,24 +50,6 @@ public class CustomProductInfoPageVO extends PageRequest implements Serializable
private String name; private String name;
/** /**
* 所属客户
*/
@Schema(description = "所属客户")
private String namespace;
/**
* 所属工厂
*/
@Schema(description = "所属工厂")
private Integer affiliatedFactory;
/**
* 第三方SKU
*/
@Schema(description = "第三方SKU")
private String thirdSku;
/**
* 商品主图 * 商品主图
*/ */
@Schema(description = "商品主图") @Schema(description = "商品主图")
...@@ -116,12 +98,6 @@ public class CustomProductInfoPageVO extends PageRequest implements Serializable ...@@ -116,12 +98,6 @@ public class CustomProductInfoPageVO extends PageRequest implements Serializable
private Integer status; private Integer status;
/** /**
* 挂起前的状态
*/
@Schema(description = "挂起前的状态")
private Integer preSuspendStatus;
/**
* *
*/ */
@Schema(description = "") @Schema(description = "")
...@@ -206,15 +182,15 @@ public class CustomProductInfoPageVO extends PageRequest implements Serializable ...@@ -206,15 +182,15 @@ public class CustomProductInfoPageVO extends PageRequest implements Serializable
private String currencyCode; private String currencyCode;
/** /**
* 币种 * 币种名称
*/ */
@Schema(description = "币种") @Schema(description = "币种名称")
private String currencyName; private String currencyName;
/** /**
* 平台直营 客户自营 * 产品类型(platform-平台直营 customer-客户自营)
*/ */
@Schema(description = "平台直营 客户自营") @Schema(description = "产品类型(platform-平台直营 customer-客户自营)")
private String productType; private String productType;
/** /**
......
...@@ -11,7 +11,7 @@ import java.io.Serializable; ...@@ -11,7 +11,7 @@ import java.io.Serializable;
* PageModel * PageModel
* *
* @author Lizh * @author Lizh
* @date 2026-05-29 10:25:16 * @date 2026-06-03 11:57:03
*/ */
@Data @Data
@Builder @Builder
......
package com.jomalls.custom.app.vo; package com.jomalls.custom.app.vo;
import lombok.*; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import io.swagger.v3.oas.annotations.media.Schema;
/** /**
* Model * Model
* *
* @author Lizh * @author Lizh
* @date 2026-05-29 10:25:16 * @date 2026-06-03 11:57:03
*/ */
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Schema(description = "CustomProductInfoPropertyVO") @Schema(description = "VO")
public class CustomProductInfoPropertyVO implements Serializable { public class CustomProductInfoPropertyVO implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
......
package com.jomalls.custom.app.vo; package com.jomalls.custom.app.vo;
import lombok.*; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import io.swagger.v3.oas.annotations.media.Schema;
/** /**
* Model * Model
* *
* @author Lizh * @author Lizh
* @date 2026-05-29 10:25:16 * @date 2026-06-03 11:57:02
*/ */
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Schema(description = "CustomProductInfoVO") @Schema(description = "VO")
public class CustomProductInfoVO implements Serializable { public class CustomProductInfoVO implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
...@@ -49,24 +51,6 @@ public class CustomProductInfoVO implements Serializable { ...@@ -49,24 +51,6 @@ public class CustomProductInfoVO implements Serializable {
private String name; private String name;
/** /**
* 所属客户
*/
@Schema(description = "所属客户")
private String namespace;
/**
* 所属工厂
*/
@Schema(description = "所属工厂")
private Integer affiliatedFactory;
/**
* 第三方SKU
*/
@Schema(description = "第三方SKU")
private String thirdSku;
/**
* 商品主图 * 商品主图
*/ */
@Schema(description = "商品主图") @Schema(description = "商品主图")
...@@ -115,12 +99,6 @@ public class CustomProductInfoVO implements Serializable { ...@@ -115,12 +99,6 @@ public class CustomProductInfoVO implements Serializable {
private Integer status; private Integer status;
/** /**
* 挂起前的状态
*/
@Schema(description = "挂起前的状态")
private Integer preSuspendStatus;
/**
* *
*/ */
@Schema(description = "") @Schema(description = "")
...@@ -205,15 +183,15 @@ public class CustomProductInfoVO implements Serializable { ...@@ -205,15 +183,15 @@ public class CustomProductInfoVO implements Serializable {
private String currencyCode; private String currencyCode;
/** /**
* 币种 * 币种名称
*/ */
@Schema(description = "币种") @Schema(description = "币种名称")
private String currencyName; private String currencyName;
/** /**
* 平台直营 客户自营 * 产品类型(platform-平台直营 customer-客户自营)
*/ */
@Schema(description = "平台直营 客户自营") @Schema(description = "产品类型(platform-平台直营 customer-客户自营)")
private String productType; private String productType;
/** /**
......
...@@ -13,7 +13,7 @@ import java.util.Date; ...@@ -13,7 +13,7 @@ import java.util.Date;
* PageModel * PageModel
* *
* @author Lizh * @author Lizh
* @date 2026-05-29 10:25:17 * @date 2026-06-03 11:57:04
*/ */
@Data @Data
@Builder @Builder
...@@ -170,12 +170,6 @@ public class CustomProductItemPageVO extends PageRequest implements Serializable ...@@ -170,12 +170,6 @@ public class CustomProductItemPageVO extends PageRequest implements Serializable
private BigDecimal skuWeight; private BigDecimal skuWeight;
/** /**
* 注册数量
*/
@Schema(description = "注册数量")
private Integer regCount;
/**
* 印花类型 0满印 1局部印 * 印花类型 0满印 1局部印
*/ */
@Schema(description = "印花类型 0满印 1局部印") @Schema(description = "印花类型 0满印 1局部印")
......
package com.jomalls.custom.app.vo; package com.jomalls.custom.app.vo;
import lombok.*; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import io.swagger.v3.oas.annotations.media.Schema;
/** /**
* Model * Model
* *
* @author Lizh * @author Lizh
* @date 2026-05-29 10:25:17 * @date 2026-06-03 11:57:04
*/ */
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Schema(description = "CustomProductItemVO") @Schema(description = "VO")
public class CustomProductItemVO implements Serializable { public class CustomProductItemVO implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
...@@ -169,12 +171,6 @@ public class CustomProductItemVO implements Serializable { ...@@ -169,12 +171,6 @@ public class CustomProductItemVO implements Serializable {
private BigDecimal skuWeight; private BigDecimal skuWeight;
/** /**
* 注册数量
*/
@Schema(description = "注册数量")
private Integer regCount;
/**
* 印花类型 0满印 1局部印 * 印花类型 0满印 1局部印
*/ */
@Schema(description = "印花类型 0满印 1局部印") @Schema(description = "印花类型 0满印 1局部印")
......
...@@ -12,7 +12,7 @@ import java.util.Date; ...@@ -12,7 +12,7 @@ import java.util.Date;
* PageModel * PageModel
* *
* @author Lizh * @author Lizh
* @date 2026-05-29 10:25:17 * @date 2026-06-03 11:57:05
*/ */
@Data @Data
@Builder @Builder
......
package com.jomalls.custom.app.vo; package com.jomalls.custom.app.vo;
import lombok.*; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import io.swagger.v3.oas.annotations.media.Schema;
/** /**
* Model * Model
* *
* @author Lizh * @author Lizh
* @date 2026-05-29 10:25:17 * @date 2026-06-03 11:57:05
*/ */
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Schema(description = "CustomProductRemarkVO") @Schema(description = "VO")
public class CustomProductRemarkVO implements Serializable { public class CustomProductRemarkVO implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
......
...@@ -11,7 +11,7 @@ import java.io.Serializable; ...@@ -11,7 +11,7 @@ import java.io.Serializable;
* PageModel * PageModel
* *
* @author Lizh * @author Lizh
* @date 2026-05-29 10:25:17 * @date 2026-06-03 11:57:06
*/ */
@Data @Data
@Builder @Builder
......
package com.jomalls.custom.app.vo; package com.jomalls.custom.app.vo;
import lombok.*; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import io.swagger.v3.oas.annotations.media.Schema;
/** /**
* Model * Model
* *
* @author Lizh * @author Lizh
* @date 2026-05-29 10:25:17 * @date 2026-06-03 11:57:06
*/ */
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Schema(description = "CustomProductWarehouseRelVO") @Schema(description = "VO")
public class CustomProductWarehouseRelVO implements Serializable { public class CustomProductWarehouseRelVO implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
......
...@@ -12,7 +12,7 @@ import java.util.Date; ...@@ -12,7 +12,7 @@ import java.util.Date;
* PageModel * PageModel
* *
* @author Lizh * @author Lizh
* @date 2026-05-29 10:25:17 * @date 2026-06-03 11:57:07
*/ */
@Data @Data
@Builder @Builder
...@@ -60,11 +60,5 @@ public class LogCustomProductPageVO extends PageRequest implements Serializable ...@@ -60,11 +60,5 @@ public class LogCustomProductPageVO extends PageRequest implements Serializable
@Schema(description = "创建时间") @Schema(description = "创建时间")
private Date createTime; private Date createTime;
/**
* 0 custom 1 factory 2都可以
*/
@Schema(description = "0 custom 1 factory 2都可以")
private Integer dataPermissions;
} }
package com.jomalls.custom.app.vo; package com.jomalls.custom.app.vo;
import lombok.*; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import io.swagger.v3.oas.annotations.media.Schema;
/** /**
* Model * Model
* *
* @author Lizh * @author Lizh
* @date 2026-05-29 10:25:17 * @date 2026-06-03 11:57:07
*/ */
@Data @Data
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@Schema(description = "LogCustomProductVO") @Schema(description = "VO")
public class LogCustomProductVO implements Serializable { public class LogCustomProductVO implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
...@@ -59,11 +61,5 @@ public class LogCustomProductVO implements Serializable { ...@@ -59,11 +61,5 @@ public class LogCustomProductVO implements Serializable {
@Schema(description = "创建时间") @Schema(description = "创建时间")
private Date createTime; private Date createTime;
/**
* 0 custom 1 factory 2都可以
*/
@Schema(description = "0 custom 1 factory 2都可以")
private Integer dataPermissions;
} }
...@@ -40,7 +40,10 @@ public class TokenHandle { ...@@ -40,7 +40,10 @@ public class TokenHandle {
public LoginUser getLoginUser(HttpServletRequest request) { public LoginUser getLoginUser(HttpServletRequest request) {
// 获取请求携带的令牌 // 获取请求携带的令牌
String token = getToken(request); String token = getToken(request);
if (StringUtils.hasText(token)) { // 获取token失败, 返回null
if (!StringUtils.hasText(token)) {
return null;
}
try { try {
Claims claims = parseToken(token); Claims claims = parseToken(token);
// 解析用户信息 // 解析用户信息
...@@ -65,7 +68,6 @@ public class TokenHandle { ...@@ -65,7 +68,6 @@ public class TokenHandle {
} catch (Exception e) { } catch (Exception e) {
log.error("获取用户信息异常: {}", e.getMessage()); log.error("获取用户信息异常: {}", e.getMessage());
} }
}
return null; return null;
} }
......
...@@ -10,12 +10,11 @@ import lombok.Data; ...@@ -10,12 +10,11 @@ import lombok.Data;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
/** /**
* Entity * Entity
* *
* @author Lizh * @author Lizh
* @date 2026-05-28 19:07:12 * @date 2026-06-03 11:56:55
*/ */
@Data @Data
@TableName("custom_product_blacklist") @TableName("custom_product_blacklist")
...@@ -24,17 +23,15 @@ public class CustomProductBlacklistEntity implements Serializable { ...@@ -24,17 +23,15 @@ public class CustomProductBlacklistEntity implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* 主键 *
*/ */
@TableId(value = "id",type= IdType.ASSIGN_ID) @TableId(value = "id",type= IdType.ASSIGN_ID)
private Integer id; private Integer id;
/** /**
* custom_product_info的id * custom_product_info的id
*/ */
@TableField("product_id") @TableField("product_id")
private Integer productId; private Integer productId;
/** /**
* db_diy_user的id * db_diy_user的id
*/ */
......
...@@ -15,7 +15,7 @@ import java.util.Date; ...@@ -15,7 +15,7 @@ import java.util.Date;
* Entity * Entity
* *
* @author Lizh * @author Lizh
* @date 2026-05-28 19:07:12 * @date 2026-06-03 11:56:56
*/ */
@Data @Data
@TableName("custom_product_cn_remark") @TableName("custom_product_cn_remark")
...@@ -28,19 +28,16 @@ public class CustomProductCnRemarkEntity implements Serializable { ...@@ -28,19 +28,16 @@ public class CustomProductCnRemarkEntity implements Serializable {
*/ */
@TableId(value = "id",type= IdType.ASSIGN_ID) @TableId(value = "id",type= IdType.ASSIGN_ID)
private Integer id; private Integer id;
/** /**
* custom_product_info表id * custom_product_info表id
*/ */
@TableField("product_id") @TableField("product_id")
private Integer productId; private Integer productId;
/** /**
* 内容 * 内容
*/ */
@TableField("remark") @TableField("remark")
private String remark; private String remark;
/** /**
* 创建时间 * 创建时间
*/ */
......
...@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableId; ...@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
...@@ -13,7 +14,7 @@ import java.io.Serializable; ...@@ -13,7 +14,7 @@ import java.io.Serializable;
* Entity * Entity
* *
* @author Lizh * @author Lizh
* @date 2026-05-28 19:07:12 * @date 2026-06-03 11:56:57
*/ */
@Data @Data
@TableName("custom_product_craft_rel") @TableName("custom_product_craft_rel")
...@@ -22,17 +23,15 @@ public class CustomProductCraftRelEntity implements Serializable { ...@@ -22,17 +23,15 @@ public class CustomProductCraftRelEntity implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* 主键ID *
*/ */
@TableId(value = "id",type= IdType.ASSIGN_ID) @TableId(value = "id",type= IdType.ASSIGN_ID)
private Integer id; private Integer id;
/** /**
* custom_product_info 的id * custom_product_info 的id
*/ */
@TableField("product_id") @TableField("product_id")
private Integer productId; private Integer productId;
/** /**
* craft_center 的id * craft_center 的id
*/ */
......
...@@ -6,15 +6,15 @@ import com.baomidou.mybatisplus.annotation.TableId; ...@@ -6,15 +6,15 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
/** /**
* Entity * Entity
* *
* @author Lizh * @author Lizh
* @date 2026-05-28 19:07:12 * @date 2026-06-03 11:56:58
*/ */
@Data @Data
@TableName("custom_product_diy_user_rel") @TableName("custom_product_diy_user_rel")
...@@ -23,17 +23,15 @@ public class CustomProductDiyUserRelEntity implements Serializable { ...@@ -23,17 +23,15 @@ public class CustomProductDiyUserRelEntity implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* 主键ID *
*/ */
@TableId(value = "id",type= IdType.ASSIGN_ID) @TableId(value = "id",type= IdType.ASSIGN_ID)
private Integer id; private Integer id;
/** /**
* custom_product_info的id * custom_product_info的id
*/ */
@TableField("product_id") @TableField("product_id")
private Integer productId; private Integer productId;
/** /**
* db_diy_user的id * db_diy_user的id
*/ */
......
...@@ -6,16 +6,16 @@ import com.baomidou.mybatisplus.annotation.TableId; ...@@ -6,16 +6,16 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
/** /**
* Entity * Entity
* *
* @author Lizh * @author Lizh
* @date 2026-05-28 19:07:12 * @date 2026-06-03 11:56:59
*/ */
@Data @Data
@TableName("custom_product_factory_price_interval_rel") @TableName("custom_product_factory_price_interval_rel")
...@@ -24,11 +24,10 @@ public class CustomProductFactoryPriceIntervalRelEntity implements Serializable ...@@ -24,11 +24,10 @@ public class CustomProductFactoryPriceIntervalRelEntity implements Serializable
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* 主键ID *
*/ */
@TableId(value = "id",type= IdType.ASSIGN_ID) @TableId(value = "id",type= IdType.ASSIGN_ID)
private Integer id; private Integer id;
/** /**
* custom_product_info 表id * custom_product_info 表id
*/ */
...@@ -39,13 +38,11 @@ public class CustomProductFactoryPriceIntervalRelEntity implements Serializable ...@@ -39,13 +38,11 @@ public class CustomProductFactoryPriceIntervalRelEntity implements Serializable
*/ */
@TableField("currency_code") @TableField("currency_code")
private String currencyCode; private String currencyCode;
/** /**
* (系统成本)最大值 * (系统成本)最大值
*/ */
@TableField("price_max") @TableField("price_max")
private BigDecimal priceMax; private BigDecimal priceMax;
/** /**
* (系统成本)最小值 * (系统成本)最小值
*/ */
......
...@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableId; ...@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
...@@ -15,7 +16,7 @@ import java.util.Date; ...@@ -15,7 +16,7 @@ import java.util.Date;
* Entity * Entity
* *
* @author Lizh * @author Lizh
* @date 2026-05-28 19:07:12 * @date 2026-06-03 11:57:00
*/ */
@Data @Data
@TableName("custom_product_factory_price_rel") @TableName("custom_product_factory_price_rel")
...@@ -24,67 +25,57 @@ public class CustomProductFactoryPriceRelEntity implements Serializable { ...@@ -24,67 +25,57 @@ public class CustomProductFactoryPriceRelEntity implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* 主键ID *
*/ */
@TableId(value = "id",type= IdType.ASSIGN_ID) @TableId(value = "id",type= IdType.ASSIGN_ID)
private Integer id; private Integer id;
/** /**
* custom_product_info表id * custom_product_info表id
*/ */
@TableField("product_id") @TableField("product_id")
private Integer productId; private Integer productId;
/** /**
* custom_product_item表id * custom_product_item表id
*/ */
@TableField("item_id") @TableField("item_id")
private Integer itemId; private Integer itemId;
/** /**
* custom_product_item表sku * custom_product_item表sku
*/ */
@TableField("item_sku") @TableField("item_sku")
private String itemSku; private String itemSku;
/** /**
* db_diy表id * db_diy表id
*/ */
@TableField("factory_id") @TableField("factory_id")
private Integer factoryId; private Integer factoryId;
/** /**
* 工厂价格 * 工厂价格
*/ */
@TableField("factory_price") @TableField("factory_price")
private BigDecimal factoryPrice; private BigDecimal factoryPrice;
/** /**
* 销售价 * 销售价
*/ */
@TableField("sales_price") @TableField("sales_price")
private BigDecimal salesPrice; private BigDecimal salesPrice;
/** /**
* 工厂币种 * 工厂币种
*/ */
@TableField("factory_currency_code") @TableField("factory_currency_code")
private String factoryCurrencyCode; private String factoryCurrencyCode;
/** /**
* 售卖币种 * 售卖币种
*/ */
@TableField("sales_currency_code") @TableField("sales_currency_code")
private String salesCurrencyCode; private String salesCurrencyCode;
/** /**
* 创建时间 *
*/ */
@TableField("create_time") @TableField("create_time")
private Date createTime; private Date createTime;
/** /**
* 更新时间 *
*/ */
@TableField("update_time") @TableField("update_time")
private Date updateTime; private Date updateTime;
......
...@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableId; ...@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
...@@ -14,7 +15,7 @@ import java.util.Date; ...@@ -14,7 +15,7 @@ import java.util.Date;
* Entity * Entity
* *
* @author Lizh * @author Lizh
* @date 2026-05-28 19:07:12 * @date 2026-06-03 11:57:01
*/ */
@Data @Data
@TableName("custom_product_image") @TableName("custom_product_image")
...@@ -23,37 +24,32 @@ public class CustomProductImageEntity implements Serializable { ...@@ -23,37 +24,32 @@ public class CustomProductImageEntity implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* 主键ID *
*/ */
@TableId(value = "id",type= IdType.ASSIGN_ID) @TableId(value = "id",type= IdType.ASSIGN_ID)
private Integer id; private Integer id;
/** /**
* 商品ID * 商品ID
*/ */
@TableField("product_id") @TableField("product_id")
private Integer productId; private Integer productId;
/** /**
* 图片地址 * 图片地址
*/ */
@TableField("image_url") @TableField("image_url")
private String imageUrl; private String imageUrl;
/** /**
* 排序 * 排序
*/ */
@TableField("sort") @TableField("sort")
private Integer sort; private Integer sort;
/** /**
* 类型 0普通图片 1尺码图 * 类型 0普通图片 1尺码图
*/ */
@TableField("type") @TableField("type")
private Integer type; private Integer type;
/** /**
* 创建时间 *
*/ */
@TableField("create_time") @TableField("create_time")
private Date createTime; private Date createTime;
......
...@@ -6,17 +6,17 @@ import com.baomidou.mybatisplus.annotation.TableId; ...@@ -6,17 +6,17 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
/** /**
* Entity * Entity
* *
* @author Lizh * @author Lizh
* @date 2026-05-28 19:07:12 * @date 2026-06-03 11:57:02
*/ */
@Data @Data
@TableName("custom_product_info") @TableName("custom_product_info")
...@@ -29,235 +29,176 @@ public class CustomProductInfoEntity implements Serializable { ...@@ -29,235 +29,176 @@ public class CustomProductInfoEntity implements Serializable {
*/ */
@TableId(value = "id",type= IdType.ASSIGN_ID) @TableId(value = "id",type= IdType.ASSIGN_ID)
private Integer id; private Integer id;
/** /**
* sku * sku
*/ */
@TableField("sku") @TableField("sku")
private String sku; private String sku;
/** /**
* *
*/ */
@TableField("title") @TableField("title")
private String title; private String title;
/** /**
* 商品名称 * 商品名称
*/ */
@TableField("name") @TableField("name")
private String name; private String name;
/** /**
* 所属客户
*/
@TableField("namespace")
private String namespace;
/**
* 所属工厂
*/
@TableField("affiliated_factory")
private Integer affiliatedFactory;
/**
* 第三方SKU
*/
@TableField("third_sku")
private String thirdSku;
/**
* 商品主图 * 商品主图
*/ */
@TableField("img_url") @TableField("img_url")
private String imgUrl; private String imgUrl;
/** /**
* 商品类别ID * 商品类别ID
*/ */
@TableField("category_id") @TableField("category_id")
private Integer categoryId; private Integer categoryId;
/** /**
* 重量kg * 重量kg
*/ */
@TableField("weight") @TableField("weight")
private BigDecimal weight; private BigDecimal weight;
/** /**
* 最小采购量 * 最小采购量
*/ */
@TableField("purchasing_min") @TableField("purchasing_min")
private Integer purchasingMin; private Integer purchasingMin;
/** /**
* 工厂价(¥) * 工厂价(¥)
*/ */
@TableField("factory_price") @TableField("factory_price")
private BigDecimal factoryPrice; private BigDecimal factoryPrice;
/** /**
* 销售价(¥) * 销售价(¥)
*/ */
@TableField("sales_price") @TableField("sales_price")
private BigDecimal salesPrice; private BigDecimal salesPrice;
/** /**
* 销售价最大值(¥) * 销售价最大值(¥)
*/ */
@TableField("sales_price_max") @TableField("sales_price_max")
private BigDecimal salesPriceMax; private BigDecimal salesPriceMax;
/** /**
* 1待上架 10已上架 20已下架 30待下架 40已作废 * 1待上架 10已上架 20已下架 30待下架 40已作废
*/ */
@TableField("status") @TableField("status")
private Integer status; private Integer status;
/**
* 挂起前的状态
*/
@TableField("pre_suspend_status")
private Integer preSuspendStatus;
/** /**
* *
*/ */
@TableField("property1_cate_id") @TableField("property1_cate_id")
private Integer property1CateId; private Integer property1CateId;
/** /**
* *
*/ */
@TableField("property2_cate_id") @TableField("property2_cate_id")
private Integer property2CateId; private Integer property2CateId;
/** /**
* *
*/ */
@TableField("property3_cate_id") @TableField("property3_cate_id")
private Integer property3CateId; private Integer property3CateId;
/** /**
* *
*/ */
@TableField("property1_enname") @TableField("property1_enname")
private String property1Enname; private String property1Enname;
/** /**
* *
*/ */
@TableField("property2_enname") @TableField("property2_enname")
private String property2Enname; private String property2Enname;
/** /**
* *
*/ */
@TableField("property3_enname") @TableField("property3_enname")
private String property3Enname; private String property3Enname;
/** /**
* 颜色图 * 颜色图
*/ */
@TableField("color_images") @TableField("color_images")
private String colorImages; private String colorImages;
/** /**
* 材质 * 材质
*/ */
@TableField("material") @TableField("material")
private String material; private String material;
/** /**
* 印花类型 0满印 1局部印 * 印花类型 0满印 1局部印
*/ */
@TableField("print_type") @TableField("print_type")
private Integer printType; private Integer printType;
/** /**
* 货号 * 货号
*/ */
@TableField("product_no") @TableField("product_no")
private String productNo; private String productNo;
/** /**
* 产地code * 产地code
*/ */
@TableField("origin_code") @TableField("origin_code")
private String originCode; private String originCode;
/** /**
* 产地中文名字 * 产地中文名字
*/ */
@TableField("origin_name_cn") @TableField("origin_name_cn")
private String originNameCn; private String originNameCn;
/** /**
* 产地英文名字 * 产地英文名字
*/ */
@TableField("origin_name_en") @TableField("origin_name_en")
private String originNameEn; private String originNameEn;
/** /**
* 币种code * 币种code
*/ */
@TableField("currency_code") @TableField("currency_code")
private String currencyCode; private String currencyCode;
/** /**
* 币种 * 币种名称
*/ */
@TableField("currency_name") @TableField("currency_name")
private String currencyName; private String currencyName;
/** /**
* 平台直营 客户自营 * 产品类型(platform-平台直营 customer-客户自营)
*/ */
@TableField("product_type") @TableField("product_type")
private String productType; private String productType;
/** /**
* 工厂id * 工厂id
*/ */
@TableField("factory_id") @TableField("factory_id")
private Integer factoryId; private Integer factoryId;
/** /**
* 工厂编码 * 工厂编码
*/ */
@TableField("factory_code") @TableField("factory_code")
private String factoryCode; private String factoryCode;
/** /**
* 是否九猫处理 * 是否九猫处理
*/ */
@TableField("processing") @TableField("processing")
private Boolean processing; private Boolean processing;
/** /**
* 创建时间 * 创建时间
*/ */
@TableField("create_time") @TableField("create_time")
private Date createTime; private Date createTime;
/** /**
* *
*/ */
@TableField("update_time") @TableField("update_time")
private Date updateTime; private Date updateTime;
/** /**
* *
*/ */
@TableField("sort") @TableField("sort")
private Integer sort; private Integer sort;
/** /**
* 默认模ID * 默认模ID
*/ */
@TableField("diy_id") @TableField("diy_id")
private Integer diyId; private Integer diyId;
/** /**
* 默认模SKU * 默认模SKU
*/ */
......
...@@ -10,12 +10,11 @@ import lombok.Data; ...@@ -10,12 +10,11 @@ import lombok.Data;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
/** /**
* Entity * Entity
* *
* @author Lizh * @author Lizh
* @date 2026-05-28 19:07:12 * @date 2026-06-03 11:57:03
*/ */
@Data @Data
@TableName("custom_product_info_property") @TableName("custom_product_info_property")
...@@ -28,25 +27,21 @@ public class CustomProductInfoPropertyEntity implements Serializable { ...@@ -28,25 +27,21 @@ public class CustomProductInfoPropertyEntity implements Serializable {
*/ */
@TableId(value = "id",type= IdType.ASSIGN_ID) @TableId(value = "id",type= IdType.ASSIGN_ID)
private Integer id; private Integer id;
/** /**
* custom_product_info表id * custom_product_info表id
*/ */
@TableField("info_id") @TableField("info_id")
private Integer infoId; private Integer infoId;
/** /**
* 属性类ID * 属性类ID
*/ */
@TableField("property_id") @TableField("property_id")
private Integer propertyId; private Integer propertyId;
/** /**
* 属性值ID * 属性值ID
*/ */
@TableField("value_id") @TableField("value_id")
private Integer valueId; private Integer valueId;
/** /**
* 是否为SKU属性 * 是否为SKU属性
*/ */
......
...@@ -6,17 +6,17 @@ import com.baomidou.mybatisplus.annotation.TableId; ...@@ -6,17 +6,17 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
/** /**
* Entity * Entity
* *
* @author Lizh * @author Lizh
* @date 2026-05-28 19:07:13 * @date 2026-06-03 11:57:04
*/ */
@Data @Data
@TableName("custom_product_item") @TableName("custom_product_item")
...@@ -29,181 +29,146 @@ public class CustomProductItemEntity implements Serializable { ...@@ -29,181 +29,146 @@ public class CustomProductItemEntity implements Serializable {
*/ */
@TableId(value = "id",type= IdType.ASSIGN_ID) @TableId(value = "id",type= IdType.ASSIGN_ID)
private Integer id; private Integer id;
/** /**
* 商品ID * 商品ID
*/ */
@TableField("product_id") @TableField("product_id")
private Integer productId; private Integer productId;
/** /**
* sku * sku
*/ */
@TableField("sku") @TableField("sku")
private String sku; private String sku;
/** /**
* sku商品名称 * sku商品名称
*/ */
@TableField("sku_name") @TableField("sku_name")
private String skuName; private String skuName;
/** /**
* 封面图 * 封面图
*/ */
@TableField("image") @TableField("image")
private String image; private String image;
/** /**
* 图片集 * 图片集
*/ */
@TableField("image_ary") @TableField("image_ary")
private String imageAry; private String imageAry;
/** /**
* 属性分类ID1 * 属性分类ID1
*/ */
@TableField("property_cate_id1") @TableField("property_cate_id1")
private Integer propertyCateId1; private Integer propertyCateId1;
/** /**
* 属性分类ID2 * 属性分类ID2
*/ */
@TableField("property_cate_id2") @TableField("property_cate_id2")
private Integer propertyCateId2; private Integer propertyCateId2;
/** /**
* 属性分类ID3 * 属性分类ID3
*/ */
@TableField("property_cate_id3") @TableField("property_cate_id3")
private Integer propertyCateId3; private Integer propertyCateId3;
/** /**
* *
*/ */
@TableField("property1_id") @TableField("property1_id")
private Integer property1Id; private Integer property1Id;
/** /**
* *
*/ */
@TableField("property2_id") @TableField("property2_id")
private Integer property2Id; private Integer property2Id;
/** /**
* *
*/ */
@TableField("property3_id") @TableField("property3_id")
private Integer property3Id; private Integer property3Id;
/** /**
* 属性编码1 * 属性编码1
*/ */
@TableField("property_code1") @TableField("property_code1")
private String propertyCode1; private String propertyCode1;
/** /**
* 属性编码2 * 属性编码2
*/ */
@TableField("property_code2") @TableField("property_code2")
private String propertyCode2; private String propertyCode2;
/** /**
* *
*/ */
@TableField("property_code3") @TableField("property_code3")
private String propertyCode3; private String propertyCode3;
/** /**
* 属性名称1 * 属性名称1
*/ */
@TableField("option_enname1") @TableField("option_enname1")
private String optionEnname1; private String optionEnname1;
/** /**
* 属性名称2 * 属性名称2
*/ */
@TableField("option_enname2") @TableField("option_enname2")
private String optionEnname2; private String optionEnname2;
/** /**
* *
*/ */
@TableField("option_enname3") @TableField("option_enname3")
private String optionEnname3; private String optionEnname3;
/** /**
* *
*/ */
@TableField("custom_value1") @TableField("custom_value1")
private String customValue1; private String customValue1;
/** /**
* *
*/ */
@TableField("custom_value2") @TableField("custom_value2")
private String customValue2; private String customValue2;
/** /**
* *
*/ */
@TableField("custom_value3") @TableField("custom_value3")
private String customValue3; private String customValue3;
/** /**
* 工厂价 * 工厂价
*/ */
@TableField("factory_price") @TableField("factory_price")
private BigDecimal factoryPrice; private BigDecimal factoryPrice;
/** /**
* 销售价 * 销售价
*/ */
@TableField("sales_price") @TableField("sales_price")
private BigDecimal salesPrice; private BigDecimal salesPrice;
/** /**
* sku克重 * sku克重
*/ */
@TableField("sku_weight") @TableField("sku_weight")
private BigDecimal skuWeight; private BigDecimal skuWeight;
/**
* 注册数量
*/
@TableField("reg_count")
private Integer regCount;
/** /**
* 印花类型 0满印 1局部印 * 印花类型 0满印 1局部印
*/ */
@TableField("print_type") @TableField("print_type")
private Integer printType; private Integer printType;
/** /**
* 排序 * 排序
*/ */
@TableField("sort") @TableField("sort")
private Integer sort; private Integer sort;
/** /**
* 货号 * 货号
*/ */
@TableField("product_no") @TableField("product_no")
private String productNo; private String productNo;
/** /**
* 1正常码 2大码 * 1正常码 2大码
*/ */
@TableField("size_type") @TableField("size_type")
private Integer sizeType; private Integer sizeType;
/** /**
* 创建时间 * 创建时间
*/ */
@TableField("create_time") @TableField("create_time")
private Date createTime; private Date createTime;
/** /**
* 更新时间 * 更新时间
*/ */
......
...@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableId; ...@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
...@@ -14,7 +15,7 @@ import java.util.Date; ...@@ -14,7 +15,7 @@ import java.util.Date;
* Entity * Entity
* *
* @author Lizh * @author Lizh
* @date 2026-05-28 19:07:13 * @date 2026-06-03 11:57:05
*/ */
@Data @Data
@TableName("custom_product_remark") @TableName("custom_product_remark")
...@@ -27,19 +28,16 @@ public class CustomProductRemarkEntity implements Serializable { ...@@ -27,19 +28,16 @@ public class CustomProductRemarkEntity implements Serializable {
*/ */
@TableId(value = "id",type= IdType.ASSIGN_ID) @TableId(value = "id",type= IdType.ASSIGN_ID)
private Integer id; private Integer id;
/** /**
* custom_product_info表id * custom_product_info表id
*/ */
@TableField("product_id") @TableField("product_id")
private Integer productId; private Integer productId;
/** /**
* 内容 * 内容
*/ */
@TableField("remark") @TableField("remark")
private String remark; private String remark;
/** /**
* 创建时间 * 创建时间
*/ */
......
...@@ -6,15 +6,15 @@ import com.baomidou.mybatisplus.annotation.TableId; ...@@ -6,15 +6,15 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
/** /**
* Entity * Entity
* *
* @author Lizh * @author Lizh
* @date 2026-05-28 19:07:13 * @date 2026-06-03 11:57:06
*/ */
@Data @Data
@TableName("custom_product_warehouse_rel") @TableName("custom_product_warehouse_rel")
...@@ -27,13 +27,11 @@ public class CustomProductWarehouseRelEntity implements Serializable { ...@@ -27,13 +27,11 @@ public class CustomProductWarehouseRelEntity implements Serializable {
*/ */
@TableId(value = "id",type= IdType.ASSIGN_ID) @TableId(value = "id",type= IdType.ASSIGN_ID)
private Integer id; private Integer id;
/** /**
* *
*/ */
@TableField("product_id") @TableField("product_id")
private Integer productId; private Integer productId;
/** /**
* *
*/ */
......
...@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableId; ...@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
...@@ -14,7 +15,7 @@ import java.util.Date; ...@@ -14,7 +15,7 @@ import java.util.Date;
* Entity * Entity
* *
* @author Lizh * @author Lizh
* @date 2026-05-28 19:07:13 * @date 2026-06-03 11:57:07
*/ */
@Data @Data
@TableName("log_custom_product") @TableName("log_custom_product")
...@@ -27,41 +28,30 @@ public class LogCustomProductEntity implements Serializable { ...@@ -27,41 +28,30 @@ public class LogCustomProductEntity implements Serializable {
*/ */
@TableId(value = "id",type= IdType.ASSIGN_ID) @TableId(value = "id",type= IdType.ASSIGN_ID)
private Long id; private Long id;
/** /**
* 商品id(custom_product_info表id) * 商品id(custom_product_info表id)
*/ */
@TableField("product_id") @TableField("product_id")
private Integer productId; private Integer productId;
/** /**
* 操作人id * 操作人id
*/ */
@TableField("employee_id") @TableField("employee_id")
private Integer employeeId; private Integer employeeId;
/** /**
* 操作人账号 * 操作人账号
*/ */
@TableField("employee_account") @TableField("employee_account")
private String employeeAccount; private String employeeAccount;
/** /**
* 操作描述 * 操作描述
*/ */
@TableField("description") @TableField("description")
private String description; private String description;
/** /**
* 创建时间 * 创建时间
*/ */
@TableField("create_time") @TableField("create_time")
private Date createTime; private Date createTime;
/**
* 0 custom 1 factory 2都可以
*/
@TableField("data_permissions")
private Integer dataPermissions;
} }
package com.jomalls.custom.config; package com.jomalls.custom.config;
import com.jomalls.custom.app.enums.CodeEnum; import com.jomalls.custom.app.enums.CodeEnum;
import com.jomalls.custom.app.exception.InvalidTokenException;
import com.jomalls.custom.app.exception.PermissionDeniedException; import com.jomalls.custom.app.exception.PermissionDeniedException;
import com.jomalls.custom.app.exception.ServiceException; import com.jomalls.custom.app.exception.ServiceException;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
...@@ -12,6 +13,15 @@ import org.springframework.web.bind.annotation.RestControllerAdvice; ...@@ -12,6 +13,15 @@ import org.springframework.web.bind.annotation.RestControllerAdvice;
public class CommonExceptionHandlerAdvice { public class CommonExceptionHandlerAdvice {
/** /**
* token验证失败(返回401 未登录或登录已过期)
*/
@ExceptionHandler(InvalidTokenException.class)
public ResponseEntity<com.jomalls.custom.app.utils.R<Object>> handleInvalidTokenException(PermissionDeniedException e) {
return ResponseEntity.status(HttpStatus.UNAUTHORIZED)
.body(com.jomalls.custom.app.utils.R.fail(CodeEnum.UNAUTHORIZED.getCode(), e.getMessage()));
}
/**
* 权限异常处理(返回403 Forbidden) * 权限异常处理(返回403 Forbidden)
*/ */
@ExceptionHandler(PermissionDeniedException.class) @ExceptionHandler(PermissionDeniedException.class)
......
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
package com.jomalls.custom.config; package com.jomalls.custom.config;
import com.jomalls.custom.app.enums.CodeEnum;
import com.jomalls.custom.app.exception.InvalidTokenException;
import com.jomalls.custom.app.utils.RequestHolder; import com.jomalls.custom.app.utils.RequestHolder;
import com.jomalls.custom.security.LoginUser; import com.jomalls.custom.security.LoginUser;
import com.jomalls.custom.security.SecurityUtils; import com.jomalls.custom.security.SecurityUtils;
...@@ -47,8 +49,11 @@ public class SecurityInterceptor implements HandlerInterceptor { ...@@ -47,8 +49,11 @@ public class SecurityInterceptor implements HandlerInterceptor {
// 获取登录用户信息 // 获取登录用户信息
LoginUser loginUser = tokenHandle.getLoginUser(request); LoginUser loginUser = tokenHandle.getLoginUser(request);
// 如果有登录用户,保存到线程本地变量 // 如果用户没有登录,返回提示
if (loginUser != null) { if (loginUser == null) {
throw new InvalidTokenException(CodeEnum.UNAUTHORIZED.getCode(), "未登录或登录已过期");
}
// 验证token是否有效 // 验证token是否有效
if (tokenHandle.verifyToken(loginUser)) { if (tokenHandle.verifyToken(loginUser)) {
SecurityUtils.setLoginUser(loginUser); SecurityUtils.setLoginUser(loginUser);
...@@ -57,11 +62,7 @@ public class SecurityInterceptor implements HandlerInterceptor { ...@@ -57,11 +62,7 @@ public class SecurityInterceptor implements HandlerInterceptor {
} else { } else {
log.warn("用户[{}]token已过期,请求URI: {}", loginUser.getUsername(), request.getRequestURI()); log.warn("用户[{}]token已过期,请求URI: {}", loginUser.getUsername(), request.getRequestURI());
} }
} return false;
// 未登录或token无效,允许继续(由后续业务逻辑决定是否需要登录)
// 如果需要强制登录,这里可以抛出异常或返回401
return true;
} }
/** /**
......
package com.jomalls.custom.webapp.controller; package com.jomalls.custom.webapp.controller;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jomalls.custom.app.annotation.RequiresPermissions;
import com.jomalls.custom.app.vo.CustomProductCraftRelPageVO; import com.jomalls.custom.app.vo.CustomProductCraftRelPageVO;
import com.jomalls.custom.app.vo.CustomProductCraftRelVO; import com.jomalls.custom.app.vo.CustomProductCraftRelVO;
import com.jomalls.custom.app.service.CustomProductCraftRelService; import com.jomalls.custom.app.service.CustomProductCraftRelService;
...@@ -37,6 +38,7 @@ public class CustomProductCraftRelController { ...@@ -37,6 +38,7 @@ public class CustomProductCraftRelController {
* @return list集合 * @return list集合
*/ */
@Operation(summary = "列表查询接口", description = "根据条件查询列表接口(不分页)") @Operation(summary = "列表查询接口", description = "根据条件查询列表接口(不分页)")
@RequiresPermissions(value = "demo:permission:edit", mode = RequiresPermissions.RequireMode.ANY)
@RequestMapping(value = "/list", method = RequestMethod.POST) @RequestMapping(value = "/list", method = RequestMethod.POST)
public List<CustomProductCraftRelVO> list(@RequestBody CustomProductCraftRelVO customProductCraftRelVO) { public List<CustomProductCraftRelVO> list(@RequestBody CustomProductCraftRelVO customProductCraftRelVO) {
return customProductCraftRelService.list(customProductCraftRelVO); return customProductCraftRelService.list(customProductCraftRelVO);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment