Compare commits

..

28 Commits

Author SHA1 Message Date
Saisai Liu 85cca29ca5 商品模块添加修改 2024-03-23 09:50:28 +08:00
Saisai Liu b063dfca72 品类组件响应,属性组bug修改 2024-03-22 21:09:07 +08:00
Saisai Liu 8733328cb1 品类组件响应,属性组bug修改 2024-03-22 10:18:29 +08:00
Saisai Liu 9fec99677e Merge remote-tracking branch 'serve/day-05' into day-05
# Conflicts:
#	muyu-common/muyu-common-system/src/main/java/com/muyu/common/system/domain/SysRole.java
#	muyu-common/muyu-common-system/src/main/java/com/muyu/common/system/domain/SysUser.java
2024-03-22 08:01:26 +08:00
Saisai Liu cb700cf596 品类组件响应,属性组bug修改 2024-03-22 07:59:41 +08:00
Saisai Liu 9d9e457d7a 2024-03-21 20:40:53 +08:00
Saisai Liu 007aa4c276 品类组件响应,属性组bug修改 2024-03-14 21:22:49 +08:00
Saisai Liu ababc20a27 属性组删除 2024-03-10 15:34:28 +08:00
Saisai Liu df01c0a5ee 规格前台回显,单规格查询,多于数据清除 2024-03-10 15:02:54 +08:00
Saisai Liu cbfe72810e 规格前台回显,单规格查询 2024-03-10 11:13:34 +08:00
Saisai Liu 0d68b51739 品类添加 2024-03-09 16:28:29 +08:00
Saisai Liu a640ca19d2 品类添加方法,构建体 2024-03-05 20:48:02 +08:00
Saisai Liu 7597af50aa 属性组完成 2024-03-04 21:13:02 +08:00
Saisai Liu a7adac6613 业务层修改,属性组前台数据获取 2024-03-04 15:52:54 +08:00
Saisai Liu bdbfc8ed3a 业务层修改,属性组前台数据获取 2024-03-03 16:01:13 +08:00
Saisai Liu 7b0ea31558 业务层修改,属性组前台数据获取 2024-03-03 11:53:04 +08:00
Saisai Liu d3c9aeee59 builder构建体 2024-03-01 21:27:57 +08:00
Saisai Liu 8cee0c4e43 属性功能完善 2024-02-29 11:32:07 +08:00
Saisai Liu fd28a8fbc8 跟项目,生成器文件带入服务 2024-02-29 09:46:33 +08:00
Saisai Liu bf7239464e oss插件完善,代码生成器扫描数据库表名 2024-02-28 14:49:03 +08:00
Saisai Liu b7748c9606 oss封装插件 2024-02-27 21:39:37 +08:00
Saisai Liu a51d27fb72 清除book,开启电商业务 2024-02-27 14:18:38 +08:00
Saisai Liu d6c0538b01 区间查询,创建product项目 2024-02-27 08:28:51 +08:00
Saisai Liu 9100c76db4 区间查询,sentinel卫兵链接服务器 2024-02-26 09:15:48 +08:00
Saisai Liu a5f16646d4 book单表 2024-02-25 20:46:27 +08:00
Saisai Liu 11871c4b02 book单表 2024-02-25 11:09:17 +08:00
Saisai Liu cd8a13e2d9 book单表 2024-02-23 21:26:11 +08:00
Saisai Liu 9c612b837c book单表 2024-02-23 16:17:24 +08:00
216 changed files with 9901 additions and 541 deletions

View File

@ -52,6 +52,7 @@
<artifactId>muyu-common-security</artifactId> <artifactId>muyu-common-security</artifactId>
</dependency> </dependency>
</dependencies> </dependencies>
<build> <build>

View File

@ -21,9 +21,9 @@ public class SysPasswordService {
@Autowired @Autowired
private RedisService redisService; private RedisService redisService;
private int maxRetryCount = CacheConstants.PASSWORD_MAX_RETRY_COUNT; private final int maxRetryCount = CacheConstants.PASSWORD_MAX_RETRY_COUNT;
private Long lockTime = CacheConstants.PASSWORD_LOCK_TIME; private final Long lockTime = CacheConstants.PASSWORD_LOCK_TIME;
@Autowired @Autowired
private SysRecordLogService recordLogService; private SysRecordLogService recordLogService;

View File

@ -14,10 +14,10 @@ spring:
nacos: nacos:
discovery: discovery:
# 服务注册地址 # 服务注册地址
server-addr: 127.0.0.1:8848 server-addr: 43.142.100.73:8848
config: config:
# 配置中心地址 # 配置中心地址
server-addr: 127.0.0.1:8848 server-addr: 43.142.100.73:8848
# 配置文件格式 # 配置文件格式
file-extension: yml file-extension: yml
# 共享配置 # 共享配置

View File

@ -21,134 +21,134 @@ public @interface Excel {
/** /**
* excel * excel
*/ */
public int sort () default Integer.MAX_VALUE; int sort() default Integer.MAX_VALUE;
/** /**
* Excel. * Excel.
*/ */
public String name () default ""; String name() default "";
/** /**
* , : yyyy-MM-dd * , : yyyy-MM-dd
*/ */
public String dateFormat () default ""; String dateFormat() default "";
/** /**
* (: 0=,1=,2=) * (: 0=,1=,2=)
*/ */
public String readConverterExp () default ""; String readConverterExp() default "";
/** /**
* *
*/ */
public String separator () default ","; String separator() default ",";
/** /**
* BigDecimal :-1(BigDecimal) * BigDecimal :-1(BigDecimal)
*/ */
public int scale () default -1; int scale() default -1;
/** /**
* BigDecimal :BigDecimal.ROUND_HALF_EVEN * BigDecimal :BigDecimal.ROUND_HALF_EVEN
*/ */
public int roundingMode () default BigDecimal.ROUND_HALF_EVEN; int roundingMode() default BigDecimal.ROUND_HALF_EVEN;
/** /**
* excel * excel
*/ */
public double height () default 14; double height() default 14;
/** /**
* excel * excel
*/ */
public double width () default 16; double width() default 16;
/** /**
* ,% 90 90% * ,% 90 90%
*/ */
public String suffix () default ""; String suffix() default "";
/** /**
* , * ,
*/ */
public String defaultValue () default ""; String defaultValue() default "";
/** /**
* *
*/ */
public String prompt () default ""; String prompt() default "";
/** /**
* . * .
*/ */
public String[] combo () default {}; String[] combo() default {};
/** /**
* ,:list) * ,:list)
*/ */
public boolean needMerge () default false; boolean needMerge() default false;
/** /**
* ,:,. * ,:,.
*/ */
public boolean isExport () default true; boolean isExport() default true;
/** /**
* ,, * ,,
*/ */
public String targetAttr () default ""; String targetAttr() default "";
/** /**
* , * ,
*/ */
public boolean isStatistics () default false; boolean isStatistics() default false;
/** /**
* 0 1 * 0 1
*/ */
public ColumnType cellType () default ColumnType.STRING; ColumnType cellType() default ColumnType.STRING;
/** /**
* *
*/ */
public IndexedColors headerBackgroundColor () default IndexedColors.GREY_50_PERCENT; IndexedColors headerBackgroundColor() default IndexedColors.GREY_50_PERCENT;
/** /**
* *
*/ */
public IndexedColors headerColor () default IndexedColors.WHITE; IndexedColors headerColor() default IndexedColors.WHITE;
/** /**
* *
*/ */
public IndexedColors backgroundColor () default IndexedColors.WHITE; IndexedColors backgroundColor() default IndexedColors.WHITE;
/** /**
* *
*/ */
public IndexedColors color () default IndexedColors.BLACK; IndexedColors color() default IndexedColors.BLACK;
/** /**
* *
*/ */
public HorizontalAlignment align () default HorizontalAlignment.CENTER; HorizontalAlignment align() default HorizontalAlignment.CENTER;
/** /**
* *
*/ */
public Class<?> handler () default ExcelHandlerAdapter.class; Class<?> handler() default ExcelHandlerAdapter.class;
/** /**
* *
*/ */
public String[] args () default {}; String[] args() default {};
/** /**
* 012 * 012
*/ */
Type type () default Type.ALL; Type type () default Type.ALL;
public enum Type { enum Type {
ALL(0), EXPORT(1), IMPORT(2); ALL(0), EXPORT(1), IMPORT(2);
private final int value; private final int value;
@ -161,7 +161,7 @@ public @interface Excel {
} }
} }
public enum ColumnType { enum ColumnType {
NUMERIC(0), STRING(1), IMAGE(2); NUMERIC(0), STRING(1), IMAGE(2);
private final int value; private final int value;

View File

@ -24,7 +24,7 @@ public class CacheConstants {
/** /**
* 10 * 10
*/ */
public final static long PASSWORD_LOCK_TIME = 10; public final static long PASSWORD_LOCK_TIME = 3;
/** /**
* *

View File

@ -43,9 +43,9 @@ public class ScheduleConstants {
*/ */
PAUSE("1"); PAUSE("1");
private String value; private final String value;
private Status (String value) { Status(String value) {
this.value = value; this.value = value;
} }

View File

@ -11,22 +11,22 @@ public class BaseException extends RuntimeException {
/** /**
* *
*/ */
private String module; private final String module;
/** /**
* *
*/ */
private String code; private final String code;
/** /**
* *
*/ */
private Object[] args; private final Object[] args;
/** /**
* *
*/ */
private String defaultMessage; private final String defaultMessage;
public BaseException (String module, String code, Object[] args, String defaultMessage) { public BaseException (String module, String code, Object[] args, String defaultMessage) {
this.module = module; this.module = module;

View File

@ -10,9 +10,9 @@ import java.util.Arrays;
public class InvalidExtensionException extends FileUploadException { public class InvalidExtensionException extends FileUploadException {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private String[] allowedExtension; private final String[] allowedExtension;
private String extension; private final String extension;
private String filename; private final String filename;
public InvalidExtensionException (String[] allowedExtension, String extension, String filename) { public InvalidExtensionException (String[] allowedExtension, String extension, String filename) {
super("filename : [" + filename + "], extension : [" + extension + "], allowed extension : [" + Arrays.toString(allowedExtension) + "]"); super("filename : [" + filename + "], extension : [" + extension + "], allowed extension : [" + Arrays.toString(allowedExtension) + "]");

View File

@ -8,7 +8,7 @@ package com.muyu.common.core.exception.job;
public class TaskException extends Exception { public class TaskException extends Exception {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private Code code; private final Code code;
public TaskException (String msg, Code code) { public TaskException (String msg, Code code) {
this(msg, code, null); this(msg, code, null);

View File

@ -27,11 +27,11 @@ public class CharsetKit {
/** /**
* ISO-8859-1 * ISO-8859-1
*/ */
public static final Charset CHARSET_ISO_8859_1 = Charset.forName(ISO_8859_1); public static final Charset CHARSET_ISO_8859_1 = StandardCharsets.ISO_8859_1;
/** /**
* UTF-8 * UTF-8
*/ */
public static final Charset CHARSET_UTF_8 = Charset.forName(UTF_8); public static final Charset CHARSET_UTF_8 = StandardCharsets.UTF_8;
/** /**
* GBK * GBK
*/ */

View File

@ -24,7 +24,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss"; public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
private static String[] parsePatterns = { private static final String[] parsePatterns = {
"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM",
"yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM", "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM",
"yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"}; "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"};

View File

@ -23,6 +23,7 @@ import java.io.IOException;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.net.URLDecoder; import java.net.URLDecoder;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.Collections; import java.util.Collections;
import java.util.Enumeration; import java.util.Enumeration;
import java.util.HashMap; import java.util.HashMap;
@ -212,11 +213,7 @@ public class ServletUtils {
* @return * @return
*/ */
public static String urlEncode (String str) { public static String urlEncode (String str) {
try { return URLEncoder.encode(str, StandardCharsets.UTF_8);
return URLEncoder.encode(str, Constants.UTF8);
} catch (UnsupportedEncodingException e) {
return StringUtils.EMPTY;
}
} }
/** /**
@ -227,11 +224,7 @@ public class ServletUtils {
* @return * @return
*/ */
public static String urlDecode (String str) { public static String urlDecode (String str) {
try { return URLDecoder.decode(str, StandardCharsets.UTF_8);
return URLDecoder.decode(str, Constants.UTF8);
} catch (UnsupportedEncodingException e) {
return StringUtils.EMPTY;
}
} }
/** /**

View File

@ -43,7 +43,7 @@ public final class SpringUtils implements BeanFactoryPostProcessor {
* @throws org.springframework.beans.BeansException * @throws org.springframework.beans.BeansException
*/ */
public static <T> T getBean (Class<T> clz) throws BeansException { public static <T> T getBean (Class<T> clz) throws BeansException {
T result = (T) beanFactory.getBean(clz); T result = beanFactory.getBean(clz);
return result; return result;
} }

View File

@ -125,17 +125,17 @@ public class FileUtils {
String filename = fileName; String filename = fileName;
if (agent.contains("MSIE")) { if (agent.contains("MSIE")) {
// IE浏览器 // IE浏览器
filename = URLEncoder.encode(filename, "utf-8"); filename = URLEncoder.encode(filename, StandardCharsets.UTF_8);
filename = filename.replace("+", " "); filename = filename.replace("+", " ");
} else if (agent.contains("Firefox")) { } else if (agent.contains("Firefox")) {
// 火狐浏览器 // 火狐浏览器
filename = new String(fileName.getBytes(), "ISO8859-1"); filename = new String(fileName.getBytes(), "ISO8859-1");
} else if (agent.contains("Chrome")) { } else if (agent.contains("Chrome")) {
// google浏览器 // google浏览器
filename = URLEncoder.encode(filename, "utf-8"); filename = URLEncoder.encode(filename, StandardCharsets.UTF_8);
} else { } else {
// 其它浏览器 // 其它浏览器
filename = URLEncoder.encode(filename, "utf-8"); filename = URLEncoder.encode(filename, StandardCharsets.UTF_8);
} }
return filename; return filename;
} }
@ -197,15 +197,14 @@ public class FileUtils {
public static void setAttachmentResponseHeader (HttpServletResponse response, String realFileName) throws UnsupportedEncodingException { public static void setAttachmentResponseHeader (HttpServletResponse response, String realFileName) throws UnsupportedEncodingException {
String percentEncodedFileName = percentEncode(realFileName); String percentEncodedFileName = percentEncode(realFileName);
StringBuilder contentDispositionValue = new StringBuilder(); String contentDispositionValue = "attachment; filename=" +
contentDispositionValue.append("attachment; filename=") percentEncodedFileName +
.append(percentEncodedFileName) ";" +
.append(";") "filename*=" +
.append("filename*=") "utf-8''" +
.append("utf-8''") percentEncodedFileName;
.append(percentEncodedFileName);
response.setHeader("Content-disposition", contentDispositionValue.toString()); response.setHeader("Content-disposition", contentDispositionValue);
response.setHeader("download-filename", percentEncodedFileName); response.setHeader("download-filename", percentEncodedFileName);
} }
@ -217,7 +216,7 @@ public class FileUtils {
* @return * @return
*/ */
public static String percentEncode (String s) throws UnsupportedEncodingException { public static String percentEncode (String s) throws UnsupportedEncodingException {
String encode = URLEncoder.encode(s, StandardCharsets.UTF_8.toString()); String encode = URLEncoder.encode(s, StandardCharsets.UTF_8);
return encode.replaceAll("\\+", "%20"); return encode.replaceAll("\\+", "%20");
} }
} }

View File

@ -124,7 +124,7 @@ public class EscapeUtil {
tmp.append(content.substring(lastPos)); tmp.append(content.substring(lastPos));
lastPos = content.length(); lastPos = content.length();
} else { } else {
tmp.append(content.substring(lastPos, pos)); tmp.append(content, lastPos, pos);
lastPos = pos; lastPos = pos;
} }
} }

View File

@ -225,7 +225,7 @@ public class IpUtils {
if (ip != null && ip.indexOf(",") > 0) { if (ip != null && ip.indexOf(",") > 0) {
final String[] ips = ip.trim().split(","); final String[] ips = ip.trim().split(",");
for (String subIp : ips) { for (String subIp : ips) {
if (false == isUnknown(subIp)) { if (!isUnknown(subIp)) {
ip = subIp; ip = subIp;
break; break;
} }

View File

@ -121,7 +121,7 @@ public class ExcelUtil<T> {
/** /**
* *
*/ */
private Map<Integer, Double> statistics = new HashMap<Integer, Double>(); private final Map<Integer, Double> statistics = new HashMap<Integer, Double>();
public ExcelUtil (Class<T> clazz) { public ExcelUtil (Class<T> clazz) {
this.clazz = clazz; this.clazz = clazz;
@ -531,7 +531,7 @@ public class ExcelUtil<T> {
rowNo = isSubList() ? (i > 1 ? rowNo + 1 : rowNo + i) : i + 1 + rownum - startNo; rowNo = isSubList() ? (i > 1 ? rowNo + 1 : rowNo + i) : i + 1 + rownum - startNo;
row = sheet.createRow(rowNo); row = sheet.createRow(rowNo);
// 得到导出对象. // 得到导出对象.
T vo = (T) list.get(i); T vo = list.get(i);
Collection<?> subList = null; Collection<?> subList = null;
if (isSubList()) { if (isSubList()) {
if (isSubListValue(vo)) { if (isSubListValue(vo)) {
@ -913,7 +913,7 @@ public class ExcelUtil<T> {
public String dataFormatHandlerAdapter (Object value, Excel excel, Cell cell) { public String dataFormatHandlerAdapter (Object value, Excel excel, Cell cell) {
try { try {
Object instance = excel.handler().newInstance(); Object instance = excel.handler().newInstance();
Method formatMethod = excel.handler().getMethod("format", new Class[]{Object.class, String[].class, Cell.class, Workbook.class}); Method formatMethod = excel.handler().getMethod("format", Object.class, String[].class, Cell.class, Workbook.class);
value = formatMethod.invoke(instance, value, excel.args(), cell, this.wb); value = formatMethod.invoke(instance, value, excel.args(), cell, this.wb);
} catch (Exception e) { } catch (Exception e) {
log.error("不能格式化数据 " + excel.handler(), e.getMessage()); log.error("不能格式化数据 " + excel.handler(), e.getMessage());
@ -1200,7 +1200,7 @@ public class ExcelUtil<T> {
public Collection<?> getListCellValue (Object obj) { public Collection<?> getListCellValue (Object obj) {
Object value; Object value;
try { try {
value = subMethod.invoke(obj, new Object[]{}); value = subMethod.invoke(obj);
} catch (Exception e) { } catch (Exception e) {
return new ArrayList<Object>(); return new ArrayList<Object>();
} }
@ -1221,7 +1221,7 @@ public class ExcelUtil<T> {
getMethodName.append(name.substring(1)); getMethodName.append(name.substring(1));
Method method = null; Method method = null;
try { try {
method = pojoClass.getMethod(getMethodName.toString(), new Class[]{}); method = pojoClass.getMethod(getMethodName.toString());
} catch (Exception e) { } catch (Exception e) {
log.error("获取对象异常{}", e.getMessage()); log.error("获取对象异常{}", e.getMessage());
} }

View File

@ -24,7 +24,7 @@ public class ReflectUtils {
private static final String CGLIB_CLASS_SEPARATOR = "$$"; private static final String CGLIB_CLASS_SEPARATOR = "$$";
private static Logger logger = LoggerFactory.getLogger(ReflectUtils.class); private static final Logger logger = LoggerFactory.getLogger(ReflectUtils.class);
/** /**
* Getter. * Getter.
@ -113,7 +113,7 @@ public class ReflectUtils {
try { try {
return (E) method.invoke(obj, args); return (E) method.invoke(obj, args);
} catch (Exception e) { } catch (Exception e) {
String msg = "method: " + method + ", obj: " + obj + ", args: " + args + ""; String msg = "method: " + method + ", obj: " + obj + ", args: " + args;
throw convertReflectionExceptionToUnchecked(msg, e); throw convertReflectionExceptionToUnchecked(msg, e);
} }
} }
@ -162,7 +162,7 @@ public class ReflectUtils {
} }
return (E) method.invoke(obj, args); return (E) method.invoke(obj, args);
} catch (Exception e) { } catch (Exception e) {
String msg = "method: " + method + ", obj: " + obj + ", args: " + args + ""; String msg = "method: " + method + ", obj: " + obj + ", args: " + args;
throw convertReflectionExceptionToUnchecked(msg, e); throw convertReflectionExceptionToUnchecked(msg, e);
} }
} }

View File

@ -46,8 +46,8 @@ public final class Base64 {
for (int i = 52, j = 0 ; i <= 61 ; i++, j++) { for (int i = 52, j = 0 ; i <= 61 ; i++, j++) {
lookUpBase64Alphabet[i] = (char) ('0' + j); lookUpBase64Alphabet[i] = (char) ('0' + j);
} }
lookUpBase64Alphabet[62] = (char) '+'; lookUpBase64Alphabet[62] = '+';
lookUpBase64Alphabet[63] = (char) '/'; lookUpBase64Alphabet[63] = '/';
} }
private static boolean isWhiteSpace (char octect) { private static boolean isWhiteSpace (char octect) {
@ -82,7 +82,7 @@ public final class Base64 {
int fewerThan24bits = lengthDataBits % TWENTYFOURBITGROUP; int fewerThan24bits = lengthDataBits % TWENTYFOURBITGROUP;
int numberTriplets = lengthDataBits / TWENTYFOURBITGROUP; int numberTriplets = lengthDataBits / TWENTYFOURBITGROUP;
int numberQuartet = fewerThan24bits != 0 ? numberTriplets + 1 : numberTriplets; int numberQuartet = fewerThan24bits != 0 ? numberTriplets + 1 : numberTriplets;
char encodedData[] = null; char[] encodedData = null;
encodedData = new char[numberQuartet * 4]; encodedData = new char[numberQuartet * 4];
@ -161,7 +161,7 @@ public final class Base64 {
return new byte[0]; return new byte[0];
} }
byte decodedData[] = null; byte[] decodedData = null;
byte b1 = 0, b2 = 0, b3 = 0, b4 = 0; byte b1 = 0, b2 = 0, b3 = 0, b4 = 0;
char d1 = 0, d2 = 0, d3 = 0, d4 = 0; char d1 = 0, d2 = 0, d3 = 0, d4 = 0;

View File

@ -17,9 +17,9 @@ public class Seq {
// 机器标识 // 机器标识
private static final String machineCode = "A"; private static final String machineCode = "A";
// 通用接口序列数 // 通用接口序列数
private static AtomicInteger commSeq = new AtomicInteger(1); private static final AtomicInteger commSeq = new AtomicInteger(1);
// 上传接口序列数 // 上传接口序列数
private static AtomicInteger uploadSeq = new AtomicInteger(1); private static final AtomicInteger uploadSeq = new AtomicInteger(1);
/** /**
* *

View File

@ -353,22 +353,22 @@ public final class UUID implements java.io.Serializable, Comparable<UUID> {
final StringBuilder builder = new StringBuilder(isSimple ? 32 : 36); final StringBuilder builder = new StringBuilder(isSimple ? 32 : 36);
// time_low // time_low
builder.append(digits(mostSigBits >> 32, 8)); builder.append(digits(mostSigBits >> 32, 8));
if (false == isSimple) { if (!isSimple) {
builder.append('-'); builder.append('-');
} }
// time_mid // time_mid
builder.append(digits(mostSigBits >> 16, 4)); builder.append(digits(mostSigBits >> 16, 4));
if (false == isSimple) { if (!isSimple) {
builder.append('-'); builder.append('-');
} }
// time_high_and_version // time_high_and_version
builder.append(digits(mostSigBits, 4)); builder.append(digits(mostSigBits, 4));
if (false == isSimple) { if (!isSimple) {
builder.append('-'); builder.append('-');
} }
// variant_and_sequence // variant_and_sequence
builder.append(digits(leastSigBits >> 48, 4)); builder.append(digits(leastSigBits >> 48, 4));
if (false == isSimple) { if (!isSimple) {
builder.append('-'); builder.append('-');
} }
// node // node

View File

@ -14,15 +14,15 @@ public @interface DataScope {
/** /**
* *
*/ */
public String deptAlias () default ""; String deptAlias() default "";
/** /**
* *
*/ */
public String userAlias () default ""; String userAlias() default "";
/** /**
* @RequiresPermissions * @RequiresPermissions
*/ */
public String permission () default ""; String permission() default "";
} }

View File

@ -109,8 +109,7 @@ public class DataScopeAspect {
if (StringUtils.isNotBlank(sqlString.toString())) { if (StringUtils.isNotBlank(sqlString.toString())) {
Object params = joinPoint.getArgs()[0]; Object params = joinPoint.getArgs()[0];
if (StringUtils.isNotNull(params) && params instanceof BaseEntity) { if (StringUtils.isNotNull(params) && params instanceof BaseEntity baseEntity) {
BaseEntity baseEntity = (BaseEntity) params;
baseEntity.getParams().put(DATA_SCOPE, " AND (" + sqlString.substring(4) + ")"); baseEntity.getParams().put(DATA_SCOPE, " AND (" + sqlString.substring(4) + ")");
} }
} }
@ -141,8 +140,7 @@ public class DataScopeAspect {
*/ */
private void clearDataScope (final JoinPoint joinPoint) { private void clearDataScope (final JoinPoint joinPoint) {
Object params = joinPoint.getArgs()[0]; Object params = joinPoint.getArgs()[0];
if (StringUtils.isNotNull(params) && params instanceof BaseEntity) { if (StringUtils.isNotNull(params) && params instanceof BaseEntity baseEntity) {
BaseEntity baseEntity = (BaseEntity) params;
baseEntity.getParams().put(DATA_SCOPE, ""); baseEntity.getParams().put(DATA_SCOPE, "");
} }
} }

View File

@ -17,30 +17,30 @@ public @interface Log {
/** /**
* *
*/ */
public String title () default ""; String title() default "";
/** /**
* *
*/ */
public BusinessType businessType () default BusinessType.OTHER; BusinessType businessType() default BusinessType.OTHER;
/** /**
* *
*/ */
public OperatorType operatorType () default OperatorType.MANAGE; OperatorType operatorType() default OperatorType.MANAGE;
/** /**
* *
*/ */
public boolean isSaveRequestData () default true; boolean isSaveRequestData() default true;
/** /**
* *
*/ */
public boolean isSaveResponseData () default true; boolean isSaveResponseData() default true;
/** /**
* *
*/ */
public String[] excludeParamNames () default {}; String[] excludeParamNames() default {};
} }

View File

@ -169,12 +169,12 @@ public class LogAspect {
*/ */
private String argsArrayToString (Object[] paramsArray, String[] excludeParamNames) { private String argsArrayToString (Object[] paramsArray, String[] excludeParamNames) {
String params = ""; String params = "";
if (paramsArray != null && paramsArray.length > 0) { if (paramsArray != null) {
for (Object o : paramsArray) { for (Object o : paramsArray) {
if (StringUtils.isNotNull(o) && !isFilterObject(o)) { if (StringUtils.isNotNull(o) && !isFilterObject(o)) {
try { try {
String jsonObj = JSON.toJSONString(o, excludePropertyPreFilter(excludeParamNames)); String jsonObj = JSON.toJSONString(o, excludePropertyPreFilter(excludeParamNames));
params += jsonObj.toString() + " "; params += jsonObj + " ";
} catch (Exception e) { } catch (Exception e) {
} }
} }

View File

@ -9,6 +9,7 @@ import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.SerializationException; import org.springframework.data.redis.serializer.SerializationException;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
/** /**
* Redis使FastJson * Redis使FastJson
@ -16,11 +17,11 @@ import java.nio.charset.Charset;
* @author muyu * @author muyu
*/ */
public class FastJson2JsonRedisSerializer<T> implements RedisSerializer<T> { public class FastJson2JsonRedisSerializer<T> implements RedisSerializer<T> {
public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8"); public static final Charset DEFAULT_CHARSET = StandardCharsets.UTF_8;
static final Filter AUTO_TYPE_FILTER = JSONReader.autoTypeFilter(Constants.JSON_WHITELIST_STR); static final Filter AUTO_TYPE_FILTER = JSONReader.autoTypeFilter(Constants.JSON_WHITELIST_STR);
private Class<T> clazz; private final Class<T> clazz;
public FastJson2JsonRedisSerializer (Class<T> clazz) { public FastJson2JsonRedisSerializer (Class<T> clazz) {
super(); super();

View File

@ -101,129 +101,129 @@ public class SysRole extends BaseEntity {
private Set<String> permissions; private Set<String> permissions;
public SysRole (Long roleId) { public SysRole(Long roleId) {
this.roleId = roleId; this.roleId = roleId;
} }
public static boolean isAdmin (Long roleId) { public static boolean isAdmin(Long roleId) {
return roleId != null && 1L == roleId; return roleId != null && 1L == roleId;
} }
public Long getRoleId () { public Long getRoleId() {
return roleId; return roleId;
} }
public void setRoleId (Long roleId) { public void setRoleId(Long roleId) {
this.roleId = roleId; this.roleId = roleId;
} }
public boolean isAdmin () { public boolean isAdmin() {
return isAdmin(this.roleId); return isAdmin(this.roleId);
} }
@NotBlank(message = "角色名称不能为空") @NotBlank(message = "角色名称不能为空")
@Size(min = 0, max = 30, message = "角色名称长度不能超过30个字符") @Size(min = 0, max = 30, message = "角色名称长度不能超过30个字符")
public String getRoleName () { public String getRoleName() {
return roleName; return roleName;
} }
public void setRoleName (String roleName) { public void setRoleName(String roleName) {
this.roleName = roleName; this.roleName = roleName;
} }
@NotBlank(message = "权限字符不能为空") @NotBlank(message = "权限字符不能为空")
@Size(min = 0, max = 100, message = "权限字符长度不能超过100个字符") @Size(min = 0, max = 100, message = "权限字符长度不能超过100个字符")
public String getRoleKey () { public String getRoleKey() {
return roleKey; return roleKey;
} }
public void setRoleKey (String roleKey) { public void setRoleKey(String roleKey) {
this.roleKey = roleKey; this.roleKey = roleKey;
} }
@NotNull(message = "显示顺序不能为空") @NotNull(message = "显示顺序不能为空")
public Integer getRoleSort () { public Integer getRoleSort() {
return roleSort; return roleSort;
} }
public void setRoleSort (Integer roleSort) { public void setRoleSort(Integer roleSort) {
this.roleSort = roleSort; this.roleSort = roleSort;
} }
public String getDataScope () { public String getDataScope() {
return dataScope; return dataScope;
} }
public void setDataScope (String dataScope) { public void setDataScope(String dataScope) {
this.dataScope = dataScope; this.dataScope = dataScope;
} }
public boolean isMenuCheckStrictly () { public boolean isMenuCheckStrictly() {
return menuCheckStrictly; return menuCheckStrictly;
} }
public void setMenuCheckStrictly (boolean menuCheckStrictly) { public void setMenuCheckStrictly(boolean menuCheckStrictly) {
this.menuCheckStrictly = menuCheckStrictly; this.menuCheckStrictly = menuCheckStrictly;
} }
public boolean isDeptCheckStrictly () { public boolean isDeptCheckStrictly() {
return deptCheckStrictly; return deptCheckStrictly;
} }
public void setDeptCheckStrictly (boolean deptCheckStrictly) { public void setDeptCheckStrictly(boolean deptCheckStrictly) {
this.deptCheckStrictly = deptCheckStrictly; this.deptCheckStrictly = deptCheckStrictly;
} }
public String getStatus () { public String getStatus() {
return status; return status;
} }
public void setStatus (String status) { public void setStatus(String status) {
this.status = status; this.status = status;
} }
public String getDelFlag () { public String getDelFlag() {
return delFlag; return delFlag;
} }
public void setDelFlag (String delFlag) { public void setDelFlag(String delFlag) {
this.delFlag = delFlag; this.delFlag = delFlag;
} }
public boolean isFlag () { public boolean isFlag() {
return flag; return flag;
} }
public void setFlag (boolean flag) { public void setFlag(boolean flag) {
this.flag = flag; this.flag = flag;
} }
public Long[] getMenuIds () { public Long[] getMenuIds() {
return menuIds; return menuIds;
} }
public void setMenuIds (Long[] menuIds) { public void setMenuIds(Long[] menuIds) {
this.menuIds = menuIds; this.menuIds = menuIds;
} }
public Long[] getDeptIds () { public Long[] getDeptIds() {
return deptIds; return deptIds;
} }
public void setDeptIds (Long[] deptIds) { public void setDeptIds(Long[] deptIds) {
this.deptIds = deptIds; this.deptIds = deptIds;
} }
public Set<String> getPermissions () { public Set<String> getPermissions() {
return permissions; return permissions;
} }
public void setPermissions (Set<String> permissions) { public void setPermissions(Set<String> permissions) {
this.permissions = permissions; this.permissions = permissions;
} }
@Override @Override
public String toString () { public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("roleId", getRoleId()) .append("roleId", getRoleId())
.append("roleName", getRoleName()) .append("roleName", getRoleName())

View File

@ -137,172 +137,172 @@ public class SysUser extends BaseEntity {
*/ */
private Long roleId; private Long roleId;
public SysUser (Long userId) { public SysUser(Long userId) {
this.userId = userId; this.userId = userId;
} }
public static boolean isAdmin (Long userId) { public static boolean isAdmin(Long userId) {
return userId != null && 1L == userId; return userId != null && 1L == userId;
} }
public Long getUserId () { public Long getUserId() {
return userId; return userId;
} }
public void setUserId (Long userId) { public void setUserId(Long userId) {
this.userId = userId; this.userId = userId;
} }
public boolean isAdmin () { public boolean isAdmin() {
return isAdmin(this.userId); return isAdmin(this.userId);
} }
public Long getDeptId () { public Long getDeptId() {
return deptId; return deptId;
} }
public void setDeptId (Long deptId) { public void setDeptId(Long deptId) {
this.deptId = deptId; this.deptId = deptId;
} }
@Xss(message = "用户昵称不能包含脚本字符") @Xss(message = "用户昵称不能包含脚本字符")
@Size(min = 0, max = 30, message = "用户昵称长度不能超过30个字符") @Size(min = 0, max = 30, message = "用户昵称长度不能超过30个字符")
public String getNickName () { public String getNickName() {
return nickName; return nickName;
} }
public void setNickName (String nickName) { public void setNickName(String nickName) {
this.nickName = nickName; this.nickName = nickName;
} }
@Xss(message = "用户账号不能包含脚本字符") @Xss(message = "用户账号不能包含脚本字符")
@NotBlank(message = "用户账号不能为空") @NotBlank(message = "用户账号不能为空")
@Size(min = 0, max = 30, message = "用户账号长度不能超过30个字符") @Size(min = 0, max = 30, message = "用户账号长度不能超过30个字符")
public String getUserName () { public String getUserName() {
return userName; return userName;
} }
public void setUserName (String userName) { public void setUserName(String userName) {
this.userName = userName; this.userName = userName;
} }
@Email(message = "邮箱格式不正确") @Email(message = "邮箱格式不正确")
@Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符") @Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符")
public String getEmail () { public String getEmail() {
return email; return email;
} }
public void setEmail (String email) { public void setEmail(String email) {
this.email = email; this.email = email;
} }
@Size(min = 0, max = 11, message = "手机号码长度不能超过11个字符") @Size(min = 0, max = 11, message = "手机号码长度不能超过11个字符")
public String getPhonenumber () { public String getPhonenumber() {
return phonenumber; return phonenumber;
} }
public void setPhonenumber (String phonenumber) { public void setPhonenumber(String phonenumber) {
this.phonenumber = phonenumber; this.phonenumber = phonenumber;
} }
public String getSex () { public String getSex() {
return sex; return sex;
} }
public void setSex (String sex) { public void setSex(String sex) {
this.sex = sex; this.sex = sex;
} }
public String getAvatar () { public String getAvatar() {
return avatar; return avatar;
} }
public void setAvatar (String avatar) { public void setAvatar(String avatar) {
this.avatar = avatar; this.avatar = avatar;
} }
public String getPassword () { public String getPassword() {
return password; return password;
} }
public void setPassword (String password) { public void setPassword(String password) {
this.password = password; this.password = password;
} }
public String getStatus () { public String getStatus() {
return status; return status;
} }
public void setStatus (String status) { public void setStatus(String status) {
this.status = status; this.status = status;
} }
public String getDelFlag () { public String getDelFlag() {
return delFlag; return delFlag;
} }
public void setDelFlag (String delFlag) { public void setDelFlag(String delFlag) {
this.delFlag = delFlag; this.delFlag = delFlag;
} }
public String getLoginIp () { public String getLoginIp() {
return loginIp; return loginIp;
} }
public void setLoginIp (String loginIp) { public void setLoginIp(String loginIp) {
this.loginIp = loginIp; this.loginIp = loginIp;
} }
public Date getLoginDate () { public Date getLoginDate() {
return loginDate; return loginDate;
} }
public void setLoginDate (Date loginDate) { public void setLoginDate(Date loginDate) {
this.loginDate = loginDate; this.loginDate = loginDate;
} }
public SysDept getDept () { public SysDept getDept() {
return dept; return dept;
} }
public void setDept (SysDept dept) { public void setDept(SysDept dept) {
this.dept = dept; this.dept = dept;
} }
public List<SysRole> getRoles () { public List<SysRole> getRoles() {
return roles; return roles;
} }
public void setRoles (List<SysRole> roles) { public void setRoles(List<SysRole> roles) {
this.roles = roles; this.roles = roles;
} }
public Long[] getRoleIds () { public Long[] getRoleIds() {
return roleIds; return roleIds;
} }
public void setRoleIds (Long[] roleIds) { public void setRoleIds(Long[] roleIds) {
this.roleIds = roleIds; this.roleIds = roleIds;
} }
public Long[] getPostIds () { public Long[] getPostIds() {
return postIds; return postIds;
} }
public void setPostIds (Long[] postIds) { public void setPostIds(Long[] postIds) {
this.postIds = postIds; this.postIds = postIds;
} }
public Long getRoleId () { public Long getRoleId() {
return roleId; return roleId;
} }
public void setRoleId (Long roleId) { public void setRoleId(Long roleId) {
this.roleId = roleId; this.roleId = roleId;
} }
@Override @Override
public String toString () { public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("userId", getUserId()) .append("userId", getUserId())
.append("deptId", getDeptId()) .append("deptId", getDeptId())

View File

@ -25,5 +25,5 @@ public interface RemoteFileService {
* @return * @return
*/ */
@PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public Result<SysFile> upload (@RequestPart(value = "file") MultipartFile file); Result<SysFile> upload(@RequestPart(value = "file") MultipartFile file);
} }

View File

@ -27,7 +27,7 @@ public interface RemoteLogService {
* @return * @return
*/ */
@PostMapping("/operlog") @PostMapping("/operlog")
public Result<Boolean> saveLog (@RequestBody SysOperLog sysOperLog, @RequestHeader(SecurityConstants.FROM_SOURCE) String source) throws Exception; Result<Boolean> saveLog(@RequestBody SysOperLog sysOperLog, @RequestHeader(SecurityConstants.FROM_SOURCE) String source) throws Exception;
/** /**
* 访 * 访
@ -38,5 +38,5 @@ public interface RemoteLogService {
* @return * @return
*/ */
@PostMapping("/logininfor") @PostMapping("/logininfor")
public Result<Boolean> saveLogininfor (@RequestBody SysLogininfor sysLogininfor, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); Result<Boolean> saveLogininfor(@RequestBody SysLogininfor sysLogininfor, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
} }

View File

@ -25,7 +25,7 @@ public interface RemoteUserService {
* @return * @return
*/ */
@GetMapping("/user/info/{username}") @GetMapping("/user/info/{username}")
public Result<LoginUser> getUserInfo (@PathVariable("username") String username, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); Result<LoginUser> getUserInfo(@PathVariable("username") String username, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
/** /**
* *
@ -36,5 +36,5 @@ public interface RemoteUserService {
* @return * @return
*/ */
@PostMapping("/user/register") @PostMapping("/user/register")
public Result<Boolean> registerUserInfo (@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); Result<Boolean> registerUserInfo(@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
} }

View File

@ -88,6 +88,17 @@
<version>${swagger.fox.version}</version> <version>${swagger.fox.version}</version>
</dependency> </dependency>
<!-- <dependency>-->
<!-- <groupId>com.alibaba.csp</groupId>-->
<!-- <artifactId>sentinel-core</artifactId>-->
<!-- <version>1.8.7</version>-->
<!-- </dependency>-->
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-transport-simple-http</artifactId>
<version>1.8.7</version>
</dependency>
</dependencies> </dependencies>
<build> <build>

View File

@ -36,7 +36,7 @@ public class BlackListUrlFilter extends AbstractGatewayFilterFactory<BlackListUr
public static class Config { public static class Config {
private List<String> blacklistUrl; private List<String> blacklistUrl;
private List<Pattern> blacklistUrlPattern = new ArrayList<>(); private final List<Pattern> blacklistUrlPattern = new ArrayList<>();
public boolean matchBlacklist (String url) { public boolean matchBlacklist (String url) {
return !blacklistUrlPattern.isEmpty() && blacklistUrlPattern.stream().anyMatch(p -> p.matcher(url).find()); return !blacklistUrlPattern.isEmpty() && blacklistUrlPattern.stream().anyMatch(p -> p.matcher(url).find());

View File

@ -34,8 +34,7 @@ public class GatewayExceptionHandler implements ErrorWebExceptionHandler {
if (ex instanceof NotFoundException) { if (ex instanceof NotFoundException) {
msg = "服务未找到"; msg = "服务未找到";
} else if (ex instanceof ResponseStatusException) { } else if (ex instanceof ResponseStatusException responseStatusException) {
ResponseStatusException responseStatusException = (ResponseStatusException) ex;
msg = responseStatusException.getMessage(); msg = responseStatusException.getMessage();
} else { } else {
msg = "内部服务器错误"; msg = "内部服务器错误";

View File

@ -14,10 +14,10 @@ public interface ValidateCodeService {
/** /**
* *
*/ */
public Result createCaptcha () throws IOException, CaptchaException; Result createCaptcha() throws IOException, CaptchaException;
/** /**
* *
*/ */
public void checkCaptcha (String key, String value) throws CaptchaException; void checkCaptcha(String key, String value) throws CaptchaException;
} }

View File

@ -1,6 +1,6 @@
# Tomcat # Tomcat
server: server:
port: 8080 port: 18080
# Spring # Spring
spring: spring:
@ -14,10 +14,10 @@ spring:
nacos: nacos:
discovery: discovery:
# 服务注册地址 # 服务注册地址
server-addr: 127.0.0.1:8848 server-addr: 43.142.100.73:8848
config: config:
# 配置中心地址 # 配置中心地址
server-addr: 127.0.0.1:8848 server-addr: 43.142.100.73:8848
# 配置文件格式 # 配置文件格式
file-extension: yml file-extension: yml
# 共享配置 # 共享配置
@ -28,12 +28,12 @@ spring:
eager: true eager: true
transport: transport:
# 控制台地址 # 控制台地址
dashboard: 127.0.0.1:8718 dashboard: 127.0.0.1:8858
# nacos配置持久化 # nacos配置持久化
datasource: datasource:
ds1: ds1:
nacos: nacos:
server-addr: 127.0.0.1:8848 server-addr: 43.142.100.73:8848
dataId: sentinel-muyu-gateway dataId: sentinel-muyu-gateway
groupId: DEFAULT_GROUP groupId: DEFAULT_GROUP
data-type: json data-type: json

View File

@ -67,6 +67,18 @@
<artifactId>muyu-common-system</artifactId> <artifactId>muyu-common-system</artifactId>
</dependency> </dependency>
<!--aliyun oos文件上传封装-->
<!-- 阿里云oss依赖 -->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.12.0</version>
</dependency>
<dependency>
<groupId>com.muyu</groupId>
<artifactId>muyu-common-security</artifactId>
</dependency>
</dependencies> </dependencies>
<build> <build>

View File

@ -0,0 +1,23 @@
package com.muyu.file.config;
public class OSSCloudConfig {
static final String ENDPOINT_INTER = "oss-cn-guangzhou-internal.aliyuncs.com"; //ECS 的经典网络访问(内网)
public static final String ENDPOINT = "oss-cn-guangzhou.aliyuncs.com"; //外网访问
public static final String ACCESSKEYID = "your accesskeyId";
public static final String ACCESSKEYSECRET = "your accesskeysecret";
public static final String BUCKETNAME = "your bucket name";
public String objectPrefixName = "static/images/"; //基础文件夹
public String filePathPrefix = "https://" + BUCKETNAME + "." + ENDPOINT + "/" + objectPrefixName; //带https的完整访问前缀
public String getObjectPrefixName() {
return objectPrefixName;
}
public void setObjectPrefixName(String objectPrefixName) {
this.objectPrefixName = objectPrefixName;
}
public String getFilePathPrefix() {
return filePathPrefix;
}
public void setFilePathPrefix(String filePathPrefix) {
this.filePathPrefix = filePathPrefix;
}
}

View File

@ -2,8 +2,10 @@ package com.muyu.file.controller;
import com.muyu.common.core.domain.Result; import com.muyu.common.core.domain.Result;
import com.muyu.common.core.utils.file.FileUtils; import com.muyu.common.core.utils.file.FileUtils;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.file.service.ISysFileService; import com.muyu.file.service.ISysFileService;
import com.muyu.common.system.domain.SysFile; import com.muyu.common.system.domain.SysFile;
import com.muyu.file.utils.OSSCloudClient;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -11,6 +13,10 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
/** /**
* *
* *
@ -40,4 +46,28 @@ public class SysFileController {
return Result.error(e.getMessage()); return Result.error(e.getMessage());
} }
} }
@PostMapping("imagesUpload")
public Result<SysFile> imagesUpload(MultipartFile file) {
OSSCloudClient client = OSSCloudClient.getInstance();
SysFile sysFile = new SysFile();
try {
String filePath = client.uploadFile(file.getName(), SecurityUtils.getUsername(), "D:\\muyu\\images");
System.out.println(filePath);
System.out.println(client.fileExist(filePath));
String format = new SimpleDateFormat("/yyyyMMdd/").format(new Date());
List<String> list = client.listFiles(format);
sysFile.setName(file.getName());
sysFile.setUrl(filePath);
for(String s : list) {
System.out.println(s);
client.deleteFile(s);
}
client.deleteFile("https://zhaohy-bucket.oss-cn-guangzhou.aliyuncs.com/static/images/1/"+format);
}catch (Exception e){
log.warn("文件上传异常{【】}",e.getMessage());
return Result.error(e.getMessage());
}
return Result.success(sysFile);
}
} }

View File

@ -17,5 +17,5 @@ public interface ISysFileService {
* *
* @throws Exception * @throws Exception
*/ */
public String uploadFile (MultipartFile file) throws Exception; String uploadFile(MultipartFile file) throws Exception;
} }

View File

@ -0,0 +1,43 @@
package com.muyu.file.utils;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/**
*
*
*
*
*
* @author Eric
* @create 2022-04-24 23:30
*/
@Component
public class ConstantPropertiesUtil implements InitializingBean { //当项目一启动,就会执行该接口的重写方法
@Value("${aliyun.oss.file.endpoint}")
private String endpoint;//地域节点
@Value("${aliyun.oss.file.keyid}")
private String keyId;//id
@Value("${aliyun.oss.file.keysecret}")
private String keySecret;//秘钥
@Value("${aliyun.oss.file.bucketname}")
private String bucketName;//项目名称
public static String END_POINT;
public static String ACCESS_KEY_ID;
public static String ACCESS_KEY_SECRET;
public static String BUCKET_NAME;
@Override
public void afterPropertiesSet() throws Exception {
END_POINT = endpoint;
ACCESS_KEY_ID = keyId;
ACCESS_KEY_SECRET = keySecret;
BUCKET_NAME = bucketName;
}
}

View File

@ -0,0 +1,193 @@
package com.muyu.file.utils;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.*;
import com.aliyun.oss.ClientBuilderConfiguration;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.common.comm.Protocol;
import com.aliyun.oss.model.OSSObjectSummary;
import com.aliyun.oss.model.ObjectListing;
import com.muyu.file.config.OSSCloudConfig;
public class OSSCloudClient {
private OSSCloudClient() {
super();
}
private static class SingletonContainer{
private static final OSSCloudClient instance = new OSSCloudClient();
}
public static OSSCloudClient getInstance() {
return SingletonContainer.instance;
}
private OSS createOSS() {
ClientBuilderConfiguration conf = new ClientBuilderConfiguration();
// 设置连接OSS所使用的协议HTTP或HTTPS默认为HTTP。
conf.setProtocol(Protocol.HTTPS);
// 创建OSSClient实例。
return new OSSClientBuilder().build(OSSCloudConfig.ENDPOINT, OSSCloudConfig.ACCESSKEYID, OSSCloudConfig.ACCESSKEYSECRET);
}
private Map<String, String> getObjectName(String fileName, String userId) {
Map<String, String> nameMap = new HashMap<>();
OSSCloudConfig config = new OSSCloudConfig();
String format = new SimpleDateFormat("yyyy/MM/dd").format(new Date());
String name = userId + "/" + format + "/" + UUID.randomUUID().toString().replace("-", "") + "_" + fileName;
nameMap.put("objectName", config.getObjectPrefixName() + name);
nameMap.put("filePath", config.getFilePathPrefix() + name);
return nameMap;
}
private String getObjectName(String filePath) {
OSSCloudConfig config = new OSSCloudConfig();
return config.getObjectPrefixName() + filePath.replace(config.getFilePathPrefix(), "");
}
/**
*
* @param fileName
* @param userId id
* @param bytes byte
* @throws Exception
*/
public String uploadFile(String fileName, String userId, byte[] bytes) throws Exception {
Map<String, String> nameMap = this.getObjectName(fileName, userId);
String objectName = nameMap.get("objectName");
OSS ossClient = createOSS();
try {
ossClient.putObject(OSSCloudConfig.BUCKETNAME, objectName, new ByteArrayInputStream(bytes));
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
return nameMap.get("filePath");
}
/**
*
* @param fileName
* @param userId id
* @param localPath
* @throws Exception
*/
public String uploadFile(String fileName, String userId, String localPath) throws Exception {
Map<String, String> nameMap = this.getObjectName(fileName, userId);
String objectName = nameMap.get("objectName");
OSS ossClient = createOSS();
try {
ossClient.putObject(OSSCloudConfig.BUCKETNAME, objectName, new FileInputStream(new File(localPath)));
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
return nameMap.get("filePath");
}
/**
*
* @param fileName
* @param userId id
* @throws Exception
*/
public String uploadFile(String fileName, String userId, InputStream is) throws Exception {
Map<String, String> nameMap = this.getObjectName(fileName, userId);
String objectName = nameMap.get("objectName");
OSS ossClient = createOSS();
try {
ossClient.putObject(OSSCloudConfig.BUCKETNAME, objectName, is);
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
return nameMap.get("filePath");
}
/**
*
* @param filePath 访(https)
* @return
*/
public Boolean fileExist(String filePath) {
String objectName = this.getObjectName(filePath);
OSS ossClient = createOSS();
try {
return ossClient.doesObjectExist(OSSCloudConfig.BUCKETNAME, objectName);
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
/**
*
* @param dirPath 1/20220415
* @return
*/
public List<String> listFiles(String dirPath) {
OSSCloudConfig config = new OSSCloudConfig();
String objectDir = config.getObjectPrefixName() + dirPath;
// String objectName = this.getObjectName(filePath);
OSS ossClient = createOSS();
try {
ObjectListing objectListing = ossClient.listObjects(OSSCloudConfig.BUCKETNAME, objectDir);
List<OSSObjectSummary> sums = objectListing.getObjectSummaries();
List<String> list = new ArrayList<>();
for (OSSObjectSummary s : sums) {
list.add(config.getFilePathPrefix() + (s.getKey().replace(config.getObjectPrefixName(), "")));
}
return list;
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
/**
*
* @param filePath (访)
* @throws Exception
*/
public void deleteFile(String filePath) throws Exception {
String objectName = this.getObjectName(filePath);
OSS ossClient = createOSS();
try {
ossClient.deleteObject(OSSCloudConfig.BUCKETNAME, objectName);
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
// public static void main(String[] args) throws Exception {
// OSSCloudClient client = OSSCloudClient.getInstance();
// String filePath = client.uploadFile("读书记录封面.png", "1", "C:\\Users\\墨白\\Desktop\\img\\nvpu.png");
// System.out.println(filePath);
// System.out.println(client.fileExist(filePath));
// List<String> list = client.listFiles("1/20220416/");
// for(String s : list) {
// System.out.println(s);
// client.deleteFile(s);
// }
// client.deleteFile("https://zhaohy-bucket.oss-cn-guangzhou.aliyuncs.com/static/images/1/20220415");
// }
}

View File

@ -14,12 +14,21 @@ spring:
nacos: nacos:
discovery: discovery:
# 服务注册地址 # 服务注册地址
server-addr: 127.0.0.1:8848 server-addr: 43.142.100.73:8848
config: config:
# 配置中心地址 # 配置中心地址
server-addr: 127.0.0.1:8848 server-addr: 43.142.100.73:8848
# 配置文件格式 # 配置文件格式
file-extension: yml file-extension: yml
# 共享配置 # 共享配置
shared-configs: shared-configs:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
#阿里云 OSS配置bucket信息
aliyun:
oss:
file:
endpoint: oss-cn-beijing.aliyuncs.com #地域节点
keyid: LTAI5tXLU13zKh4VHzXyz #ID
keysecret: ZgmX5vSqlMF4H5nliXErLxhDQ703HF #秘钥
bucketname: aly-item-eric #项目名称

View File

@ -72,6 +72,10 @@
<artifactId>muyu-common-swagger</artifactId> <artifactId>muyu-common-swagger</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
</dependencies> </dependencies>
<build> <build>

View File

@ -50,7 +50,7 @@ public class VelocityUtils {
VelocityContext velocityContext = new VelocityContext(); VelocityContext velocityContext = new VelocityContext();
velocityContext.put("tplCategory", genTable.getTplCategory()); velocityContext.put("tplCategory", genTable.getTplCategory());
velocityContext.put("tableName", genTable.getTableName()); velocityContext.put("tableName", genTable.getTableName());
velocityContext.put("functionName", StringUtils.isNotEmpty(functionName) ? functionName : "【请填写功能名称】"); velocityContext.put("functionName", StringUtils.isNotEmpty(functionName) ? functionName : "");
velocityContext.put("ClassName", genTable.getClassName()); velocityContext.put("ClassName", genTable.getClassName());
velocityContext.put("className", StringUtils.uncapitalize(genTable.getClassName())); velocityContext.put("className", StringUtils.uncapitalize(genTable.getClassName()));
velocityContext.put("moduleName", genTable.getModuleName()); velocityContext.put("moduleName", genTable.getModuleName());

View File

@ -14,10 +14,10 @@ spring:
nacos: nacos:
discovery: discovery:
# 服务注册地址 # 服务注册地址
server-addr: 127.0.0.1:8848 server-addr: 43.142.100.73:8848
config: config:
# 配置中心地址 # 配置中心地址
server-addr: 127.0.0.1:8848 server-addr: 43.142.100.73:8848
# 配置文件格式 # 配置文件格式
file-extension: yml file-extension: yml
# 共享配置 # 共享配置

View File

@ -117,7 +117,9 @@
<select id="selectDbTableListByNames" resultMap="GenTableResult"> <select id="selectDbTableListByNames" resultMap="GenTableResult">
select table_name, table_comment, create_time, update_time from information_schema.tables select table_name, table_comment, create_time, update_time from information_schema.tables
where table_name NOT LIKE 'qrtz_%' and table_name NOT LIKE 'gen_%' and table_schema = (select database()) where table_name NOT LIKE 'qrtz_%'
and table_name NOT LIKE 'gen_%'
and table_schema = (select database())
and table_name in and table_name in
<foreach collection="array" item="name" open="(" separator="," close=")"> <foreach collection="array" item="name" open="(" separator="," close=")">
#{name} #{name}

View File

@ -44,7 +44,7 @@ public class ${ClassName}Controller extends BaseController
@RequiresPermissions("${permissionPrefix}:list") @RequiresPermissions("${permissionPrefix}:list")
@GetMapping("/list") @GetMapping("/list")
#if($table.crud || $table.sub) #if($table.crud || $table.sub)
public Result<TableDataInfo> list(${ClassName} ${className}) public Result<TableDataInfo<${ClassName}>> list(${ClassName} ${className})
{ {
startPage(); startPage();
List<${ClassName}> list = ${className}Service.select${ClassName}List(${className}); List<${ClassName}> list = ${className}Service.select${ClassName}List(${className});

View File

@ -1,6 +1,7 @@
package ${packageName}.mapper; package ${packageName}.mapper;
import java.util.List; import java.util.List;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import ${packageName}.domain.${ClassName}; import ${packageName}.domain.${ClassName};
#if($table.sub) #if($table.sub)
import ${packageName}.domain.${subClassName}; import ${packageName}.domain.${subClassName};
@ -8,84 +9,84 @@ import ${packageName}.domain.${subClassName};
/** /**
* ${functionName}Mapper接口 * ${functionName}Mapper接口
* *
* @author ${author} * @author ${author}
* @date ${datetime} * @date ${datetime}
*/ */
public interface ${ClassName}Mapper public interface ${ClassName}Mapper extends BaseMapper<${ClassName}>
{ {
/** /**
* 查询${functionName} * 查询${functionName}
* *
* @param ${pkColumn.javaField} ${functionName}主键 * @param ${pkColumn.javaField} ${functionName}主键
* @return ${functionName} * @return ${functionName}
*/ */
public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}); ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
/** /**
* 查询${functionName}列表 * 查询${functionName}列表
* *
* @param ${className} ${functionName} * @param ${className} ${functionName}
* @return ${functionName}集合 * @return ${functionName}集合
*/ */
public List<${ClassName}> select${ClassName}List(${ClassName} ${className}); List<${ClassName}> select${ClassName}List(${ClassName} ${className});
/** /**
* 新增${functionName} * 新增${functionName}
* *
* @param ${className} ${functionName} * @param ${className} ${functionName}
* @return 结果 * @return 结果
*/ */
public int insert${ClassName}(${ClassName} ${className}); int insert${ClassName}(${ClassName} ${className});
/** /**
* 修改${functionName} * 修改${functionName}
* *
* @param ${className} ${functionName} * @param ${className} ${functionName}
* @return 结果 * @return 结果
*/ */
public int update${ClassName}(${ClassName} ${className}); int update${ClassName}(${ClassName} ${className});
/** /**
* 删除${functionName} * 删除${functionName}
* *
* @param ${pkColumn.javaField} ${functionName}主键 * @param ${pkColumn.javaField} ${functionName}主键
* @return 结果 * @return 结果
*/ */
public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}); int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
/** /**
* 批量删除${functionName} * 批量删除${functionName}
* *
* @param ${pkColumn.javaField}s 需要删除的数据主键集合 * @param ${pkColumn.javaField}s 需要删除的数据主键集合
* @return 结果 * @return 结果
*/ */
public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s); int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);
#if($table.sub) #if($table.sub)
/** /**
* 批量删除${subTable.functionName} * 批量删除${subTable.functionName}
* *
* @param ${pkColumn.javaField}s 需要删除的数据主键集合 * @param ${pkColumn.javaField}s 需要删除的数据主键集合
* @return 结果 * @return 结果
*/ */
public int delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaType}[] ${pkColumn.javaField}s); int delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);
/** /**
* 批量新增${subTable.functionName} * 批量新增${subTable.functionName}
* *
* @param ${subclassName}List ${subTable.functionName}列表 * @param ${subclassName}List ${subTable.functionName}列表
* @return 结果 * @return 结果
*/ */
public int batch${subClassName}(List<${subClassName}> ${subclassName}List); int batch${subClassName}(List<${subClassName}> ${subclassName}List);
/** /**
* 通过${functionName}主键删除${subTable.functionName}信息 * 通过${functionName}主键删除${subTable.functionName}信息
* *
* @param ${pkColumn.javaField} ${functionName}ID * @param ${pkColumn.javaField} ${functionName}ID
* @return 结果 * @return 结果
*/ */
public int delete${subClassName}By${subTableFkClassName}(${pkColumn.javaType} ${pkColumn.javaField}); int delete${subClassName}By${subTableFkClassName}(${pkColumn.javaType} ${pkColumn.javaField});
#end #end
} }

View File

@ -2,60 +2,61 @@ package ${packageName}.service;
import java.util.List; import java.util.List;
import ${packageName}.domain.${ClassName}; import ${packageName}.domain.${ClassName};
import com.baomidou.mybatisplus.extension.service.IService;
/** /**
* ${functionName}Service接口 * ${functionName}Service接口
* *
* @author ${author} * @author ${author}
* @date ${datetime} * @date ${datetime}
*/ */
public interface I${ClassName}Service public interface ${ClassName}Service extends IService<${ClassName}>
{ {
/** /**
* 查询${functionName} * 查询${functionName}
* *
* @param ${pkColumn.javaField} ${functionName}主键 * @param ${pkColumn.javaField} ${functionName}主键
* @return ${functionName} * @return ${functionName}
*/ */
public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}); ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
/** /**
* 查询${functionName}列表 * 查询${functionName}列表
* *
* @param ${className} ${functionName} * @param ${className} ${functionName}
* @return ${functionName}集合 * @return ${functionName}集合
*/ */
public List<${ClassName}> select${ClassName}List(${ClassName} ${className}); List<${ClassName}> select${ClassName}List(${ClassName} ${className});
/** /**
* 新增${functionName} * 新增${functionName}
* *
* @param ${className} ${functionName} * @param ${className} ${functionName}
* @return 结果 * @return 结果
*/ */
public int insert${ClassName}(${ClassName} ${className}); int insert${ClassName}(${ClassName} ${className});
/** /**
* 修改${functionName} * 修改${functionName}
* *
* @param ${className} ${functionName} * @param ${className} ${functionName}
* @return 结果 * @return 结果
*/ */
public int update${ClassName}(${ClassName} ${className}); int update${ClassName}(${ClassName} ${className});
/** /**
* 批量删除${functionName} * 批量删除${functionName}
* *
* @param ${pkColumn.javaField}s 需要删除的${functionName}主键集合 * @param ${pkColumn.javaField}s 需要删除的${functionName}主键集合
* @return 结果 * @return 结果
*/ */
public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s); int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);
/** /**
* 删除${functionName}信息 * 删除${functionName}信息
* *
* @param ${pkColumn.javaField} ${functionName}主键 * @param ${pkColumn.javaField} ${functionName}主键
* @return 结果 * @return 结果
*/ */
public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}); int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
} }

View File

@ -13,6 +13,7 @@ import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
import com.muyu.common.core.utils.StringUtils; import com.muyu.common.core.utils.StringUtils;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import ${packageName}.domain.${subClassName}; import ${packageName}.domain.${subClassName};
#end #end
import ${packageName}.mapper.${ClassName}Mapper; import ${packageName}.mapper.${ClassName}Mapper;
@ -26,7 +27,7 @@ import ${packageName}.service.I${ClassName}Service;
* @date ${datetime} * @date ${datetime}
*/ */
@Service @Service
public class ${ClassName}ServiceImpl implements I${ClassName}Service public class ${ClassName}ServiceImpl extends ServiceImpl<${ClassName}Mapper,${ClassName}> implements ${ClassName}Service
{ {
@Autowired @Autowired
private ${ClassName}Mapper ${className}Mapper; private ${ClassName}Mapper ${className}Mapper;

View File

@ -494,7 +494,7 @@ export default {
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {
this.#[[$modal]]#.confirm('是否确认删除${functionName}编号为"' + row.${pkColumn.javaField} + '"的数据项?').then(function() { this.#[[$modal]]#.confirm('是否确认删除${functionName}编号为"' + row.${pkColumn.javaField} + '"的数据项?').then(function() {
return del${BusinessName}(row.${pkColumn.javaField}); return del${BusinessName}(row.${pkColumn.javaField})
}).then(() => { }).then(() => {
this.getList(); this.getList();
this.#[[$modal]]#.msgSuccess("删除成功"); this.#[[$modal]]#.msgSuccess("删除成功");

View File

@ -170,7 +170,7 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination <pagination
v-show="total>0" v-show="total>0"
:total="total" :total="total"
@ -580,7 +580,7 @@ export default {
this.#[[$modal]]#.msgError("请先选择要删除的${subTable.functionName}数据"); this.#[[$modal]]#.msgError("请先选择要删除的${subTable.functionName}数据");
} else { } else {
const ${subclassName}List = this.${subclassName}List; const ${subclassName}List = this.${subclassName}List;
const checked${subClassName} = this.checked${subClassName}; const checked${subClassName} = this.checked${subClassName}
this.${subclassName}List = ${subclassName}List.filter(function(item) { this.${subclassName}List = ${subclassName}List.filter(function(item) {
return checked${subClassName}.indexOf(item.index) == -1 return checked${subClassName}.indexOf(item.index) == -1
}); });
@ -598,5 +598,5 @@ export default {
}, `${businessName}_#[[${new Date().getTime()}]]#.xlsx`) }, `${businessName}_#[[${new Date().getTime()}]]#.xlsx`)
} }
} }
}; }
</script> </script>

View File

@ -355,7 +355,7 @@ function getTreeselect() {
${businessName}Options.value.push(data); ${businessName}Options.value.push(data);
}); });
} }
// 取消按钮 // 取消按钮
function cancel() { function cancel() {
open.value = false; open.value = false;
@ -463,7 +463,7 @@ function submitForm() {
/** 删除按钮操作 */ /** 删除按钮操作 */
function handleDelete(row) { function handleDelete(row) {
proxy.#[[$modal]]#.confirm('是否确认删除${functionName}编号为"' + row.${pkColumn.javaField} + '"的数据项?').then(function() { proxy.#[[$modal]]#.confirm('是否确认删除${functionName}编号为"' + row.${pkColumn.javaField} + '"的数据项?').then(function() {
return del${BusinessName}(row.${pkColumn.javaField}); return del${BusinessName}(row.${pkColumn.javaField})
}).then(() => { }).then(() => {
getList(); getList();
proxy.#[[$modal]]#.msgSuccess("删除成功"); proxy.#[[$modal]]#.msgSuccess("删除成功");

View File

@ -153,7 +153,7 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination <pagination
v-show="total>0" v-show="total>0"
:total="total" :total="total"
@ -535,7 +535,7 @@ function submitForm() {
function handleDelete(row) { function handleDelete(row) {
const _${pkColumn.javaField}s = row.${pkColumn.javaField} || ids.value; const _${pkColumn.javaField}s = row.${pkColumn.javaField} || ids.value;
proxy.#[[$modal]]#.confirm('是否确认删除${functionName}编号为"' + _${pkColumn.javaField}s + '"的数据项?').then(function() { proxy.#[[$modal]]#.confirm('是否确认删除${functionName}编号为"' + _${pkColumn.javaField}s + '"的数据项?').then(function() {
return del${BusinessName}(_${pkColumn.javaField}s); return del${BusinessName}(_${pkColumn.javaField}s)
}).then(() => { }).then(() => {
getList(); getList();
proxy.#[[$modal]]#.msgSuccess("删除成功"); proxy.#[[$modal]]#.msgSuccess("删除成功");

View File

@ -3,8 +3,8 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="${packageName}.mapper.${ClassName}Mapper"> <mapper namespace="${packageName}.mapper.${ClassName}Mapper">
<resultMap type="${ClassName}" id="${ClassName}Result"> <resultMap type="${packageName}.${ClassName}" id="${ClassName}Result">
#foreach ($column in $columns) #foreach ($column in $columns)
<result property="${column.javaField}" column="${column.columnName}" /> <result property="${column.javaField}" column="${column.columnName}" />
#end #end
@ -26,9 +26,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select#foreach($column in $columns) $column.columnName#if($foreach.count != $columns.size()),#end#end from ${tableName} select#foreach($column in $columns) $column.columnName#if($foreach.count != $columns.size()),#end#end from ${tableName}
</sql> </sql>
<select id="select${ClassName}List" parameterType="${ClassName}" resultMap="${ClassName}Result"> <select id="select${ClassName}List" parameterType="${packageName}.${ClassName}" resultMap="${ClassName}Result">
<include refid="select${ClassName}Vo"/> <include refid="select${ClassName}Vo"/>
<where> <where>
#foreach($column in $columns) #foreach($column in $columns)
#set($queryType=$column.queryType) #set($queryType=$column.queryType)
#set($javaField=$column.javaField) #set($javaField=$column.javaField)
@ -57,7 +57,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#end #end
</where> </where>
</select> </select>
<select id="select${ClassName}By${pkColumn.capJavaField}" parameterType="${pkColumn.javaType}" resultMap="#if($table.sub)${ClassName}${subClassName}Result#else${ClassName}Result#end"> <select id="select${ClassName}By${pkColumn.capJavaField}" parameterType="${pkColumn.javaType}" resultMap="#if($table.sub)${ClassName}${subClassName}Result#else${ClassName}Result#end">
#if($table.crud || $table.tree) #if($table.crud || $table.tree)
<include refid="select${ClassName}Vo"/> <include refid="select${ClassName}Vo"/>
@ -71,8 +71,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where a.${pkColumn.columnName} = #{${pkColumn.javaField}} where a.${pkColumn.columnName} = #{${pkColumn.javaField}}
#end #end
</select> </select>
<insert id="insert${ClassName}" parameterType="${ClassName}"#if($pkColumn.increment) useGeneratedKeys="true" keyProperty="$pkColumn.javaField"#end> <insert id="insert${ClassName}" parameterType="${packageName}.${ClassName}"#if($pkColumn.increment) useGeneratedKeys="true" keyProperty="$pkColumn.javaField"#end>
insert into ${tableName} insert into ${tableName}
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
#foreach($column in $columns) #foreach($column in $columns)
@ -90,7 +90,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</trim> </trim>
</insert> </insert>
<update id="update${ClassName}" parameterType="${ClassName}"> <update id="update${ClassName}" parameterType="${packageName}.${ClassName}">
update ${tableName} update ${tableName}
<trim prefix="SET" suffixOverrides=","> <trim prefix="SET" suffixOverrides=",">
#foreach($column in $columns) #foreach($column in $columns)
@ -107,15 +107,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</delete> </delete>
<delete id="delete${ClassName}By${pkColumn.capJavaField}s" parameterType="String"> <delete id="delete${ClassName}By${pkColumn.capJavaField}s" parameterType="String">
delete from ${tableName} where ${pkColumn.columnName} in delete from ${tableName} where ${pkColumn.columnName} in
<foreach item="${pkColumn.javaField}" collection="array" open="(" separator="," close=")"> <foreach item="${pkColumn.javaField}" collection="array" open="(" separator="," close=")">
#{${pkColumn.javaField}} #{${pkColumn.javaField}}
</foreach> </foreach>
</delete> </delete>
#if($table.sub) #if($table.sub)
<delete id="delete${subClassName}By${subTableFkClassName}s" parameterType="String"> <delete id="delete${subClassName}By${subTableFkClassName}s" parameterType="String">
delete from ${subTableName} where ${subTableFkName} in delete from ${subTableName} where ${subTableFkName} in
<foreach item="${subTableFkclassName}" collection="array" open="(" separator="," close=")"> <foreach item="${subTableFkclassName}" collection="array" open="(" separator="," close=")">
#{${subTableFkclassName}} #{${subTableFkclassName}}
</foreach> </foreach>
@ -132,4 +132,4 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</foreach> </foreach>
</insert> </insert>
#end #end
</mapper> </mapper>

View File

@ -18,14 +18,14 @@ public interface SysJobLogMapper extends BaseMapper<SysJobLog> {
* *
* @return * @return
*/ */
public List<SysJobLog> selectJobLogList (SysJobLog jobLog); List<SysJobLog> selectJobLogList(SysJobLog jobLog);
/** /**
* *
* *
* @return * @return
*/ */
public List<SysJobLog> selectJobLogAll (); List<SysJobLog> selectJobLogAll();
/** /**
* ID * ID
@ -34,7 +34,7 @@ public interface SysJobLogMapper extends BaseMapper<SysJobLog> {
* *
* @return * @return
*/ */
public SysJobLog selectJobLogById (Long jobLogId); SysJobLog selectJobLogById(Long jobLogId);
/** /**
* *
@ -43,7 +43,7 @@ public interface SysJobLogMapper extends BaseMapper<SysJobLog> {
* *
* @return * @return
*/ */
public int insertJobLog (SysJobLog jobLog); int insertJobLog(SysJobLog jobLog);
/** /**
* *
@ -52,7 +52,7 @@ public interface SysJobLogMapper extends BaseMapper<SysJobLog> {
* *
* @return * @return
*/ */
public int deleteJobLogByIds (Long[] logIds); int deleteJobLogByIds(Long[] logIds);
/** /**
* *
@ -61,10 +61,10 @@ public interface SysJobLogMapper extends BaseMapper<SysJobLog> {
* *
* @return * @return
*/ */
public int deleteJobLogById (Long jobId); int deleteJobLogById(Long jobId);
/** /**
* *
*/ */
public void cleanJobLog (); void cleanJobLog();
} }

View File

@ -18,14 +18,14 @@ public interface SysJobMapper extends BaseMapper<SysJob> {
* *
* @return * @return
*/ */
public List<SysJob> selectJobList (SysJob job); List<SysJob> selectJobList(SysJob job);
/** /**
* *
* *
* @return * @return
*/ */
public List<SysJob> selectJobAll (); List<SysJob> selectJobAll();
/** /**
* ID * ID
@ -34,7 +34,7 @@ public interface SysJobMapper extends BaseMapper<SysJob> {
* *
* @return * @return
*/ */
public SysJob selectJobById (Long jobId); SysJob selectJobById(Long jobId);
/** /**
* ID * ID
@ -43,7 +43,7 @@ public interface SysJobMapper extends BaseMapper<SysJob> {
* *
* @return * @return
*/ */
public int deleteJobById (Long jobId); int deleteJobById(Long jobId);
/** /**
* *
@ -52,7 +52,7 @@ public interface SysJobMapper extends BaseMapper<SysJob> {
* *
* @return * @return
*/ */
public int deleteJobByIds (Long[] ids); int deleteJobByIds(Long[] ids);
/** /**
* *
@ -61,7 +61,7 @@ public interface SysJobMapper extends BaseMapper<SysJob> {
* *
* @return * @return
*/ */
public int updateJob (SysJob job); int updateJob(SysJob job);
/** /**
* *
@ -70,5 +70,5 @@ public interface SysJobMapper extends BaseMapper<SysJob> {
* *
* @return * @return
*/ */
public int insertJob (SysJob job); int insertJob(SysJob job);
} }

View File

@ -17,7 +17,7 @@ public interface ISysJobLogService {
* *
* @return * @return
*/ */
public List<SysJobLog> selectJobLogList (SysJobLog jobLog); List<SysJobLog> selectJobLogList(SysJobLog jobLog);
/** /**
* ID * ID
@ -26,14 +26,14 @@ public interface ISysJobLogService {
* *
* @return * @return
*/ */
public SysJobLog selectJobLogById (Long jobLogId); SysJobLog selectJobLogById(Long jobLogId);
/** /**
* *
* *
* @param jobLog * @param jobLog
*/ */
public void addJobLog (SysJobLog jobLog); void addJobLog(SysJobLog jobLog);
/** /**
* *
@ -42,7 +42,7 @@ public interface ISysJobLogService {
* *
* @return * @return
*/ */
public int deleteJobLogByIds (Long[] logIds); int deleteJobLogByIds(Long[] logIds);
/** /**
* *
@ -51,10 +51,10 @@ public interface ISysJobLogService {
* *
* @return * @return
*/ */
public int deleteJobLogById (Long jobId); int deleteJobLogById(Long jobId);
/** /**
* *
*/ */
public void cleanJobLog (); void cleanJobLog();
} }

View File

@ -19,7 +19,7 @@ public interface ISysJobService {
* *
* @return * @return
*/ */
public List<SysJob> selectJobList (SysJob job); List<SysJob> selectJobList(SysJob job);
/** /**
* ID * ID
@ -28,7 +28,7 @@ public interface ISysJobService {
* *
* @return * @return
*/ */
public SysJob selectJobById (Long jobId); SysJob selectJobById(Long jobId);
/** /**
* *
@ -37,7 +37,7 @@ public interface ISysJobService {
* *
* @return * @return
*/ */
public int pauseJob (SysJob job) throws SchedulerException; int pauseJob(SysJob job) throws SchedulerException;
/** /**
* *
@ -46,7 +46,7 @@ public interface ISysJobService {
* *
* @return * @return
*/ */
public int resumeJob (SysJob job) throws SchedulerException; int resumeJob(SysJob job) throws SchedulerException;
/** /**
* trigger * trigger
@ -55,7 +55,7 @@ public interface ISysJobService {
* *
* @return * @return
*/ */
public int deleteJob (SysJob job) throws SchedulerException; int deleteJob(SysJob job) throws SchedulerException;
/** /**
* *
@ -64,7 +64,7 @@ public interface ISysJobService {
* *
* @return * @return
*/ */
public void deleteJobByIds (Long[] jobIds) throws SchedulerException; void deleteJobByIds(Long[] jobIds) throws SchedulerException;
/** /**
* *
@ -73,7 +73,7 @@ public interface ISysJobService {
* *
* @return * @return
*/ */
public int changeStatus (SysJob job) throws SchedulerException; int changeStatus(SysJob job) throws SchedulerException;
/** /**
* *
@ -82,7 +82,7 @@ public interface ISysJobService {
* *
* @return * @return
*/ */
public boolean run (SysJob job) throws SchedulerException; boolean run(SysJob job) throws SchedulerException;
/** /**
* *
@ -91,7 +91,7 @@ public interface ISysJobService {
* *
* @return * @return
*/ */
public int insertJob (SysJob job) throws SchedulerException, TaskException; int insertJob(SysJob job) throws SchedulerException, TaskException;
/** /**
* *
@ -100,7 +100,7 @@ public interface ISysJobService {
* *
* @return * @return
*/ */
public int updateJob (SysJob job) throws SchedulerException, TaskException; int updateJob(SysJob job) throws SchedulerException, TaskException;
/** /**
* cron * cron
@ -109,5 +109,5 @@ public interface ISysJobService {
* *
* @return * @return
*/ */
public boolean checkCronExpressionIsValid (String cronExpression); boolean checkCronExpressionIsValid(String cronExpression);
} }

View File

@ -27,7 +27,7 @@ public abstract class AbstractQuartzJob implements Job {
/** /**
* 线 * 线
*/ */
private static ThreadLocal<Date> threadLocal = new ThreadLocal<>(); private static final ThreadLocal<Date> threadLocal = new ThreadLocal<>();
@Override @Override
public void execute (JobExecutionContext context) throws JobExecutionException { public void execute (JobExecutionContext context) throws JobExecutionException {

View File

@ -157,7 +157,7 @@ public class JobInvokeUtil {
Object[] classs = new Object[methodParams.size()]; Object[] classs = new Object[methodParams.size()];
int index = 0; int index = 0;
for (Object[] os : methodParams) { for (Object[] os : methodParams) {
classs[index] = (Object) os[0]; classs[index] = os[0];
index++; index++;
} }
return classs; return classs;

View File

@ -14,10 +14,10 @@ spring:
nacos: nacos:
discovery: discovery:
# 服务注册地址 # 服务注册地址
server-addr: 127.0.0.1:8848 server-addr: 43.142.100.73:8848
config: config:
# 配置中心地址 # 配置中心地址
server-addr: 127.0.0.1:8848 server-addr: 43.142.100.73:8848
# 配置文件格式 # 配置文件格式
file-extension: yml file-extension: yml
# 共享配置 # 共享配置

View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.muyu</groupId>
<artifactId>muyu-product</artifactId>
<version>3.6.3</version>
</parent>
<artifactId>muyu-product-common</artifactId>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!--系统核心包-->
<dependency>
<groupId>com.muyu</groupId>
<artifactId>muyu-common-core</artifactId>
</dependency>
<dependency>
<groupId>com.muyu</groupId>
<artifactId>muyu-common-security</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,81 @@
package com.muyu.product.domain;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.TreeEntity;
import com.muyu.common.security.utils.SecurityUtils;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* address
*
* @author Saisai
* @date 2024-02-29
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class Address extends TreeEntity
{
private static final long serialVersionUID = 1L;
/** 主键 */
private Long id;
/** 地区名 */
@Excel(name = "地区名")
private String addressName;
/** 子级地区 */
@Excel(name = "子级地区")
private Long sonId;
public void setId(Long id)
{
this.id = id;
}
public Long getId()
{
return id;
}
public void setAddressName(String addressName)
{
this.addressName = addressName;
}
public String getAddressName()
{
return addressName;
}
public void setSonId(Long sonId)
{
this.sonId = sonId;
}
public Long getSonId()
{
return sonId;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("addressName", getAddressName())
.append("sonId", getSonId())
.append("createBy", SecurityUtils.getUsername())
.append("createTime", getCreateTime())
.append("updateBy", SecurityUtils.getUsername())
.append("updateTime", getUpdateTime())
.toString();
}
}

View File

@ -0,0 +1,49 @@
package com.muyu.product.domain;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.common.security.utils.SecurityUtils;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.util.List;
/**
* as_attribute_group
*
* @author Saisai
* @date 2024-02-29
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class AsAttributeGroup extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键 */
private Long id;
/** 属性编号 */
@Excel(name = "属性编号")
private Long attributeId;
/** 分组编号 */
@Excel(name = "分组编号")
private Long groupId;
public static AsAttributeGroup saveBuilder(Long id, Long attributeId) {
return AsAttributeGroup.builder()
.groupId(id)
.attributeId(attributeId)
.build();
}
}

View File

@ -0,0 +1,72 @@
package com.muyu.product.domain;
import com.muyu.common.security.utils.SecurityUtils;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.BaseEntity;
/**
* attribute
*
* @author saisai
* @date 2024-02-29
*/
public class Attribute extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键 */
private Long id;
/** 属性编码 */
@Excel(name = "属性编码")
private String code;
/** 属性名 */
@Excel(name = "属性名")
private String name;
public void setId(Long id)
{
this.id = id;
}
public Long getId()
{
return id;
}
public void setCode(String code)
{
this.code = code;
}
public String getCode()
{
return code;
}
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("code", getCode())
.append("name", getName())
.append("remark", getRemark())
.append("createBy", SecurityUtils.getUsername())
.append("createTime", getCreateTime())
.append("updateBy", SecurityUtils.getUsername())
.append("updateTime", getUpdateTime())
.toString();
}
}

View File

@ -0,0 +1,76 @@
package com.muyu.product.domain;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.product.domain.req.AttributeGroupReq;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.util.Date;
import java.util.List;
/**
* attribute_group
*
* @author muyu
* @date 2024-02-29
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class AttributeGroup extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键 */
private Long id;
/** 组名 */
@Excel(name = "组名")
private String name;
/** 状态 */
@Excel(name = "状态")
private String states;
//创建添加属性组构建体
public static AttributeGroup saveBuilder(AttributeGroupReq attributeGroupReq) {
return AttributeGroup.builder()
.name(attributeGroupReq.getName())
.states(attributeGroupReq.getStates())
.createBy(SecurityUtils.getUsername())
.createTime(new Date())
.build();
}
//创建修改属性组构建体
public static AttributeGroup editBuilder(AttributeGroupReq attributeGroupReq) {
return AttributeGroup.builder()
.id(attributeGroupReq.getId())
.name(attributeGroupReq.getName())
.states(attributeGroupReq.getStates())
.updateBy(SecurityUtils.getUsername())
.updateTime(new Date())
.build();
}
public static AttributeGroup createBuilder(AttributeGroupReq attributeGroupReq) {
return AttributeGroup.builder()
.name(attributeGroupReq.getName())
.states(attributeGroupReq.getStates())
.createTime(new Date())
.createBy(SecurityUtils.getUsername())
.build();
}
}

View File

@ -0,0 +1,55 @@
package com.muyu.product.domain;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.product.domain.model.AttrValueModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.util.function.Supplier;
/**
* attribute_product
*
* @author Saisai
* @date 2024-02-29
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class AttributeProduct extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键 */
private Long id;
/** 商品编号 */
@Excel(name = "商品编号")
private Long productId;
/** 属性编号 */
@Excel(name = "属性编号")
private Long attributeId;
/** 属性值 */
@Excel(name = "属性值")
private String value;
public static AttributeProduct attrValueModelBuild(AttrValueModel attrValueModel, Supplier<Long> productId) {
return AttributeProduct.builder()
.attributeId(attrValueModel.getId())
.productId(productId.get())
.value(attrValueModel.getValue())
.build();
}
}

View File

@ -0,0 +1,94 @@
package com.muyu.product.domain;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.product.domain.req.BrandReq;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.util.Date;
/**
* brand
*
* @author Saisai
* @date 2024-02-29
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class Brand extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
*
*/
private Long id;
/**
*
*/
@Excel(name = "品牌名称")
private String name;
/**
*
*/
@Excel(name = "图像标识")
private String logo;
/**
*
*/
@Excel(name = "描述")
private String introduction;
/**
*
*/
@Excel(name = "品牌启用")
private String status;
/**
*
*/
@Excel(name = "公司地址")
private String addressName;
//添加数据构造体
public static Brand saveBuilder(BrandReq brandReq) {
return Brand.builder()
.name(brandReq.getName())
.logo(brandReq.getLogo())
.introduction(brandReq.getIntroduction())
.status(brandReq.getStatus())
.createBy(SecurityUtils.getUsername())
.createTime(new Date())
.build();
}
//修改构建体
public static Brand updateBuilder(BrandReq brandReq) {
return Brand.builder()
.id(brandReq.getId())
.name(brandReq.getName())
.logo(brandReq.getLogo())
.introduction(brandReq.getIntroduction())
.status(brandReq.getStatus())
.updateBy(SecurityUtils.getUsername())
.updateTime(new Date())
.build();
}
}

View File

@ -0,0 +1,66 @@
package com.muyu.product.domain;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.product.domain.req.CategoryReq;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.Date;
import java.util.List;
import java.util.function.Supplier;
/**
* brand_category
*
* @author Saisai
* @date 2024-02-29
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class BrandCategory extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键 */
private Long id;
/** 品类编号 */
@Excel(name = "品类编号")
private Long categoryId;
/** 品牌编号 */
@Excel(name = "品牌编号")
private Long brandId;
public static List<BrandCategory> saveBuilderList(CategoryReq categoryReq, Supplier<String> getUsername) {
return categoryReq.getCheckedBrandIds().stream().map(
brandId -> BrandCategory.saveBuilder(categoryReq.getId(),brandId,getUsername)
).toList();
}
public static BrandCategory saveBuilder(Long categoryId, Long brandId, Supplier<String> getUsername) {
return BrandCategory.builder()
.brandId(brandId)
.categoryId(categoryId)
.createBy(getUsername.get())
.createTime(new Date())
.build();
}
public static BrandCategory saveBrandBuilder(Long id, Long brandId, Supplier<String> username) {
return BrandCategory.builder()
.categoryId(id)
.brandId(brandId)
.createBy(username.get())
.createTime(new Date())
.build();
}
}

View File

@ -0,0 +1,56 @@
package com.muyu.product.domain;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.product.domain.req.CategoryReq;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.Date;
import java.util.List;
import java.util.function.Supplier;
/**
* category_attribute
*
* @author Saisai
* @date 2024-02-29
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class CategoryAttribute extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键 */
private Long id;
/** 属性编号 */
@Excel(name = "属性编号")
private Long attributeId;
/** 品类编号 */
@Excel(name = "品类编号")
private Long categoryId;
public static CategoryAttribute categoryBuilder(Long categoryId, Long attributeId, Supplier<String> username) {
return CategoryAttribute.builder()
.categoryId(categoryId)
.attributeId(attributeId)
.createBy(username.get())
.createTime(new Date())
.build();
}
public static List<CategoryAttribute> saveBuilder(CategoryReq categoryReq, Supplier<String> username) {
return categoryReq.getCheckedAttributeIds().stream().map(
attributeId -> categoryBuilder(categoryReq.getId(),attributeId,username)
).toList();
}
}

View File

@ -0,0 +1,69 @@
package com.muyu.product.domain;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.product.domain.req.CategoryReq;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.Date;
import java.util.List;
import java.util.function.Supplier;
/**
* category_attribute_group
*
* @author saisai
* @date 2024-02-29
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class CategoryAttributeGroup extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
*
*/
private Long id;
/**
*
*/
@Excel(name = "属性组编号")
private Long attributeGroupId;
/**
*
*/
@Excel(name = "品类编号")
private Long categoryId;
/**
*
*
*
* @param id
* @param groupId
* @return
*/
public static CategoryAttributeGroup saveBuilder(Long id, Long groupId, Supplier<String> username) {
return CategoryAttributeGroup.builder()
.attributeGroupId(groupId)
.categoryId(id)
.createBy(username.get())
.createTime(new Date())
.build();
}
public static List<CategoryAttributeGroup> saveBuilderList(CategoryReq categoryReq, Supplier<String> username) {
return categoryReq.getCheckedAttributeGroupIds().stream().map(
groupId -> saveBuilder(categoryReq.getId(), groupId, username)
).toList();
}
}

View File

@ -0,0 +1,84 @@
package com.muyu.product.domain;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.TreeEntity;
import com.muyu.product.domain.req.CategoryReq;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* category_info
*
* @author Saisai
* @date 2024-02-29
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class CategoryInfo extends TreeEntity
{
private static final long serialVersionUID = 1L;
/** 主键 */
private Long id;
/** 品类名称 */
@Excel(name = "品类名称")
private String name;
/** 图片 */
@Excel(name = "图片")
private String image;
/** 是否启用 */
@Excel(name = "是否启用")
private String status;
/**
*
* @param req
* @return
*/
public static CategoryInfo queryBuilder(CategoryReq req){
return CategoryInfo.builder()
.name(req.getName())
.image(req.getImage())
.status(req.getStatus())
.remark(req.getRemark())
.parentId(req.getParentId())
.build();
}
/** 响应值对象 */
public static CategoryInfo saveCategoryBuilder(CategoryReq req){
return CategoryInfo.builder()
.name(req.getName())
.status(req.getStatus())
.image(req.getImage())
.parentId(req.getParentId())
.remark(req.getRemark())
.createBy(req.getCreateBy())
.createTime(req.getCreateTime())
.build();
}
public static CategoryInfo saveBuilder(CategoryReq categoryReq) {
return CategoryInfo.builder()
.id(categoryReq.getId())
.name(categoryReq.getName())
.status(categoryReq.getStatus())
.image(categoryReq.getImage())
.parentId(categoryReq.getParentId())
.status(categoryReq.getStatus())
.remark(categoryReq.getRemark())
.createBy(categoryReq.getCreateBy())
.createTime(categoryReq.getCreateTime())
.build();
}
}

View File

@ -0,0 +1,81 @@
package com.muyu.product.domain;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.common.security.utils.SecurityUtils;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* product_category
*
* @author Saisai
* @date 2024-02-29
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class ProductCategory extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键 */
private Long id;
/** 品类id */
@Excel(name = "品类id")
private Long categoryId;
/** 商品id */
@Excel(name = "商品id")
private Long productId;
public void setId(Long id)
{
this.id = id;
}
public Long getId()
{
return id;
}
public void setCategoryId(Long categoryId)
{
this.categoryId = categoryId;
}
public Long getCategoryId()
{
return categoryId;
}
public void setProductId(Long productId)
{
this.productId = productId;
}
public Long getProductId()
{
return productId;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("categoryId", getCategoryId())
.append("productId", getProductId())
.append("remark", getRemark())
.append("createBy", SecurityUtils.getUsername())
.append("createTime", getCreateTime())
.append("updateBy", SecurityUtils.getUsername())
.append("updateTime", getUpdateTime())
.toString();
}
}

View File

@ -0,0 +1,111 @@
package com.muyu.product.domain;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.product.domain.model.ProductAddModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.Date;
import java.util.function.Supplier;
/**
* ; product_info
*
* @author Saisai
* @date 2024-02-29
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class ProductInfo extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
*
*/
private Long id;
/**
*
*/
@Excel(name = "商品名")
private String name;
/**
*
*/
@Excel(name = "商品信息")
private String introduction;
/**
*
*/
@Excel(name = "品牌编号")
private Long brandId;
/**
*
*/
@Excel(name = "图片")
private String images;
/**
*
*/
@Excel(name = "轮播图")
private String slideshow;
private String status;
/**
*
*/
private String createdBy;
/**
*
*/
private Date createdTime;
private Date updatedTime;
/**
*
*/
private String updatedBy;
public static ProductInfo saveModelBuild(ProductAddModel productAddModel, Supplier<String> createBy) {
return ProductInfo.builder()
.id(productAddModel.getId())
.name(productAddModel.getName())
.status(productAddModel.getStatus())
.images(productAddModel.getImages())
.brandId(productAddModel.getBrandId())
.slideshow(productAddModel.getSlideshow())
.introduction(productAddModel.getIntroduction())
.createdBy(createBy.get())
.createdTime(new Date())
.build();
}
public static ProductInfo updateBuilder(ProductAddModel model, Supplier<String> username) {
return ProductInfo.builder()
.id(model.getId())
.name(model.getName())
.status(model.getStatus())
.images(model.getImages())
.brandId(model.getBrandId())
.slideshow(model.getSlideshow())
.introduction(model.getIntroduction())
.updatedBy(username.get())
.updatedTime(new Date())
.build();
}
}

View File

@ -0,0 +1,59 @@
package com.muyu.product.domain;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.product.domain.req.RuleAttrReq;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.util.Date;
import java.util.function.Supplier;
/**
* rule
*
* @author saisai
* @date 2024-02-29
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class Rule extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键 */
private Long id;
/** 规格名称 */
@Excel(name = "规格名称")
private String name;
private String states;
public static Rule saveBuilder(RuleAttrReq req, Supplier<String> username){
return Rule.builder()
.name(req.getName())
.states(req.getStates()==null? null: req.getStates())
.createBy(username.get())
.createTime(new Date())
.build();
}
public static Rule updateBuilder(RuleAttrReq ruleAttrReq) {
return Rule.builder()
.id(ruleAttrReq.getId())
.states(ruleAttrReq.getStates())
.name(ruleAttrReq.getName())
.build();
}
}

View File

@ -0,0 +1,76 @@
package com.muyu.product.domain;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.product.domain.model.RuleAttrAddModel;
import com.muyu.product.domain.req.RuleAttrReq;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.function.Supplier;
/**
* rule
*
* @author saisai
* @date 2024-02-29
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class RuleAttr extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
*
*/
private Long id;
/**
*
*/
private Long ruleId;
/**
*
*/
@Excel(name = "规格属性")
private String attrName;
private String attrValue;
/**
*
*
* @return
*/
public static List<RuleAttr> saveBuilder(RuleAttrReq req,Supplier<String> username) {
ArrayList<RuleAttr> ruleAttrs = new ArrayList<>();
List<RuleAttrAddModel> ruleAttrAddModels = req.getRuleAttrList();
ruleAttrAddModels.stream().map(
ruleAttrAddModel -> ruleAttrs.addAll(RuleAttr.constructBuilder(ruleAttrAddModel,username,req.getId())
)).toList();
return ruleAttrs;
}
public static List<RuleAttr> constructBuilder(RuleAttrAddModel ruleAttrAddModel, Supplier<String> username, Long ruleId) {
return (List<RuleAttr>) ruleAttrAddModel.getValueList().stream().map(
value -> RuleAttr.builder().attrName(ruleAttrAddModel.getAttrName())
.id(null)
.ruleId(ruleId)
.createBy(username.get())
.createTime(new Date())
.attrValue(value)
.build()
).toList();
}
}

View File

@ -0,0 +1,55 @@
package com.muyu.product.domain;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.product.domain.model.ProductSkuModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.math.BigDecimal;
import java.util.function.Supplier;
/**
* rule_product
*
* @author saisai
* @date 2024-02-29
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class RuleProduct extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键 */
private Long id;
/** 商品编号 */
@Excel(name = "商品编号")
private Long productId;
/** 规格编号 */
@Excel(name = "规格编号")
private String sku;
private Long stock;
private BigDecimal price;
public static RuleProduct productSkuModelBuild(ProductSkuModel productSkuModel, Supplier<Long> productId) {
return RuleProduct.builder()
.productId(productId.get())
.sku(productSkuModel.getSku())
.stock(productSkuModel.getStock())
.price(productSkuModel.getPrice())
.build();
}
}

View File

@ -0,0 +1,35 @@
package com.muyu.product.domain.demo;
import com.muyu.product.domain.Attribute;
import com.muyu.product.domain.AttributeGroup;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.List;
/**
* @ClassName Product
* @Description
* @Author SaiSai.Liu
* @Date 2024/3/6/0006 14:12
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class Product {
/**
*
*/
private List<AttributeGroup> attributeGroupList;
/**
*
*/
private List<Attribute> attributeList;
/**
*
*/
private List<Attribute> selfAttributeList;
}

View File

@ -0,0 +1,21 @@
package com.muyu.product.domain.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @ClassName AttrValueModel
* @Description
* @Author SaiSai.Liu
* @Date 2024/3/22/0022 20:11
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AttrValueModel {
private Long id;
private String value;
}

View File

@ -0,0 +1,76 @@
package com.muyu.product.domain.model;
import com.muyu.common.core.web.domain.TreeEntity;
import com.muyu.product.domain.req.CategoryReq;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.Date;
import java.util.List;
import java.util.function.Supplier;
/**
* @ClassName CategoryInfoSaveModel
* @Description
* @Author SaiSai.Liu
* @Date 2024/3/5/0005 17:17
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class CategoryInfoSaveModel extends TreeEntity {
/** 主键 */
private Long id;
/** 品类名称 */
private String name;
/** 图片 */
private String image;
/** 父级品类 */
private Long parentId;
/** 是否启用 */
private String status;
/** 说明 */
private String remark;
private String createBy;
private Date createTime;
/**
*
*/
private List<Long> checkedAttributeGroupIds;
/**
*
*/
private List<Long> checkedAttributeIds;
/**
*
*/
private List<Long> checkedBrandIds;
/**
*
*/
public static CategoryInfoSaveModel saveBuilder(CategoryReq req, Supplier<String> username){
return CategoryInfoSaveModel.builder()
.checkedAttributeIds(req.getCheckedAttributeIds())
.checkedAttributeGroupIds(req.getCheckedAttributeGroupIds())
.checkedBrandIds(req.getCheckedBrandIds())
.image(req.getImage())
.name(req.getName())
.parentId(req.getParentId())
.createBy(username.get())
.createTime(new Date())
.status(req.getStatus())
.remark(req.getRemark())
.build();
}
}

View File

@ -0,0 +1,62 @@
package com.muyu.product.domain.model;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.Date;
/**
* @ClassName ProductAddModel
* @Description
* @Author SaiSai.Liu
* @Date 2024/3/22/0022 20:22
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "ProjectInfoSaveReq", description = "商品信息")
public class ProductAddModel extends BaseEntity {
/** 主键 */
private Long id;
/** 商品名 */
@Excel(name = "商品名")
private String name;
/** 商品信息 */
@Excel(name = "商品信息")
private String introduction;
/** 品牌编号 */
@Excel(name = "品牌编号")
private Long brandId;
/** 图片 */
@Excel(name = "图片")
private String images;
/** 发货地 */
@Excel(name = "轮播图")
private String slideshow;
/** 商品状态 */
@Excel(name = "商品状态")
private String status;
/** 创建人 */
private String createdBy;
/** 创建时间 */
private Date createdTime;
/** 更新人 */
private String updatedBy;
}

View File

@ -0,0 +1,25 @@
package com.muyu.product.domain.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
/**
* @ClassName ProductSkuModel
* @Description
* @Author SaiSai.Liu
* @Date 2024/3/22/0022 20:12
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ProductSkuModel {
private String sku;
private Long stock;
private BigDecimal price;
private String image;
}

View File

@ -0,0 +1,45 @@
package com.muyu.product.domain.model;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.product.domain.Rule;
import com.muyu.product.domain.RuleAttr;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.*;
/**
* @ClassName RuleAttrAddModel
* @Description
* @Author SaiSai.Liu
* @Date 2024/3/7/0007 11:53
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class RuleAttrAddModel extends BaseEntity {
private String attrName;
private List<String> valueList;
public static List<RuleAttrAddModel> saveBuilder(List<RuleAttr> rules) {
HashMap<String, List<String>> stringListHashMap = new HashMap<>();
for (RuleAttr rule : rules) {
if (stringListHashMap.containsKey(rule.getAttrName())){
stringListHashMap.get(rule.getAttrName()).add(rule.getAttrValue());
}else {
ArrayList<String> strings = new ArrayList<>();
strings.add(rule.getAttrValue());
stringListHashMap.put(rule.getAttrName(),strings);
}
}
return stringListHashMap.keySet().stream()
.map(key -> new RuleAttrAddModel
(key, stringListHashMap.get(key)))
.toList();
}
}

View File

@ -0,0 +1,26 @@
package com.muyu.product.domain.model;
import com.muyu.common.core.web.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @ClassName RuleAttrFindId
* @Description
* @Author SaiSai.Liu
* @Date 2024/3/9/0009 16:46
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class RuleAttrFindId extends BaseEntity {
private Long id;
private String ruleName;
private String ruleValue;
}

View File

@ -0,0 +1,70 @@
package com.muyu.product.domain.req;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.common.security.utils.SecurityUtils;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.util.Date;
import java.util.List;
/**
* as_attribute_group
*
* @author Saisai
* @date 2024-02-29
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class AsAttributeGroupReq extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键 */
private Long id;
/** 属性编号 */
@Excel(name = "属性编号")
private Long attributeId;
/**
* id
*/
private List<Long> attributeIds;
/** 分组编号 */
@Excel(name = "分组编号")
private Long groupId;
//添加组内属性构造体
public static AsAttributeGroupReq saveBuilder(AttributeGroupReq attributeGroupReq){
return AsAttributeGroupReq.builder()
.attributeIds(attributeGroupReq.getCheckedAttributeIds())
.groupId(attributeGroupReq.getId())
.createBy(SecurityUtils.getUsername())
.createTime(new Date())
.build();
}
//修改组内属性构造体
public static AsAttributeGroupReq updateBuilder(AttributeGroupReq attributeGroupReq){
return AsAttributeGroupReq.builder()
.attributeIds(attributeGroupReq.getCheckedAttributeIds())
.groupId(attributeGroupReq.getId())
.createBy(SecurityUtils.getUsername())
.createTime(new Date())
.build();
}
}

View File

@ -0,0 +1,67 @@
package com.muyu.product.domain.req;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.product.domain.AttributeGroup;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.util.Date;
import java.util.List;
/**
* attribute_group
*
* @author muyu
* @date 2024-02-29
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class AttributeGroupReq extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键 */
private Long id;
/** 组名 */
@Excel(name = "组名")
private String name;
private List<Long> checkedAttributeIds;
/** 状态 */
@Excel(name = "状态")
private String states;
//添加构建体
public static AttributeGroup saveBuilder(AttributeGroupReq attributeGroupReq) {
return AttributeGroup.builder()
.name(attributeGroupReq.getName())
.states(attributeGroupReq.getStates())
.createBy(SecurityUtils.getUsername())
.createTime(new Date())
.build();
}
//修改构建体
public static AttributeGroup updateBuilder(AttributeGroupReq attributeGroupReq) {
return AttributeGroup.builder()
.id(attributeGroupReq.getId())
.name(attributeGroupReq.getName())
.states(attributeGroupReq.getStates())
.updateBy(SecurityUtils.getUsername())
.updateTime(new Date())
.build();
}
}

View File

@ -0,0 +1,70 @@
package com.muyu.product.domain.req;
import lombok.AccessLevel;
import lombok.Builder;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.common.security.utils.SecurityUtils;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.lang.annotation.Annotation;
/**
* @ClassName BrandReq
* @Description
* @Author SaiSai.Liu
* @Date 2024/3/1/0001 9:59
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class BrandReq extends BaseEntity{
private static final long serialVersionUID = 1L;
/**
*
*/
private Long id;
/**
*
*/
@Excel(name = "品牌名称")
private String name;
/**
*
*/
@Excel(name = "图像标识")
private String logo;
/**
*
*/
@Excel(name = "描述")
private String introduction;
/**
*
*/
@Excel(name = "品牌启用")
private String status;
/**
*
*/
@Excel(name = "公司地址")
private String addressName;
}

View File

@ -0,0 +1,74 @@
package com.muyu.product.domain.req;
import com.muyu.common.core.web.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.List;
/**
* @ClassName CategoryReq
* @Description
* @Author SaiSai.Liu
* @Date 2024/3/5/0005 12:35
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class CategoryReq extends BaseEntity {
/**
*
*/
private Long id;
/**
*
*/
private String name;
/**
*
*/
private String image;
/**
*
*/
private Long parentId;
/**
*
*/
private String status;
/**
*
*/
private String remark;
/**
*
*/
private List<Long> checkedAttributeGroupIds;
/**
*
*/
private List<Long> checkedAttributeIds;
/**
*
*/
private List<Long> checkedBrandIds;
}

View File

@ -0,0 +1,34 @@
package com.muyu.product.domain.req;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.product.domain.model.AttrValueModel;
import com.muyu.product.domain.model.ProductAddModel;
import com.muyu.product.domain.model.ProductSkuModel;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.List;
/**
* @ClassName ProductInfoSaveReq
* @Description
* @Author SaiSai.Liu
* @Date 2024/3/22/0022 20:17
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "ProjectInfoSaveReq", description = "商品信息")
public class ProductInfoSaveReq extends BaseEntity {
private static final long serialVersionUID = 1L;
private ProductAddModel productAddModel;
private List<AttrValueModel> attrValueList;
private List<ProductSkuModel> productSkuModelList;
}

View File

@ -0,0 +1,30 @@
package com.muyu.product.domain.req;
import com.muyu.common.core.web.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.math.BigDecimal;
/**
* @ClassName ProductSkuInfoEditReq
* @Description
* @Author SaiSai.Liu
* @Date 2024/3/22/0022 19:52
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "ProjectSkuInfoEditReq", description = "商品SKU")
public class ProductSkuInfoEditReq extends BaseEntity {
private static final long serialVersionUID = 1L;
private Long projectId;
private String sku;
private Long stock;
private BigDecimal price;
private String image;
}

View File

@ -0,0 +1,38 @@
package com.muyu.product.domain.req;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.product.domain.model.RuleAttrAddModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.Date;
import java.util.List;
/**
* @ClassName RuleAttrReq
* @Description
* @Author SaiSai.Liu
* @Date 2024/3/7/0007 9:02
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class RuleAttrReq extends BaseEntity {
private static final long serialVersionUID = 1L;
/** 主键 */
private Long id;
/**规格名称*/
private String name;
/** 属性组 */
private List<RuleAttrAddModel> ruleAttrList;
/** 是否启用 */
private String states;
}

View File

@ -0,0 +1,85 @@
package com.muyu.product.domain.resp;
import com.muyu.common.core.annotation.Excel;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.product.domain.Attribute;
import com.muyu.product.domain.AttributeGroup;
import com.muyu.product.domain.req.AttributeGroupReq;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.List;
/**
* @ClassName AttributeGroupResp
* @Description
* @Author SaiSai.Liu
* @Date 2024/3/14/0014 20:46
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class AttributeGroupResp extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
*
*/
private Long id;
/**
*
*/
@Excel(name = "组名")
private String name;
private List<Attribute> attributeList;
private List<Long> getAsAttributeIds;
/**
*
*/
@Excel(name = "状态")
private String states;
//创建添加属性组构建体
public static AttributeGroupResp saveBuilder(AttributeGroupReq attributeGroupReq) {
return AttributeGroupResp.builder()
.name(attributeGroupReq.getName())
.states(attributeGroupReq.getStates())
.build();
}
//创建修改属性组构建体
public static AttributeGroupResp editBuilder(AttributeGroupReq attributeGroupReq) {
return AttributeGroupResp.builder()
.id(attributeGroupReq.getId())
.name(attributeGroupReq.getName())
.states(attributeGroupReq.getStates())
.build();
}
public static AttributeGroupResp createBuilder(AttributeGroupReq attributeGroupReq) {
return AttributeGroupResp.builder()
.name(attributeGroupReq.getName())
.states(attributeGroupReq.getStates())
.build();
}
public static AttributeGroupResp saveBuilder(AttributeGroup attributeGroup1, List<Attribute> attributes) {
return AttributeGroupResp.builder()
.name(attributeGroup1.getName())
.states(attributeGroup1.getStates())
.id(attributeGroup1.getId())
.attributeList(attributes)
.build();
}
}

View File

@ -0,0 +1,80 @@
package com.muyu.product.domain.resp;
import com.muyu.common.core.web.domain.TreeEntity;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.product.domain.Attribute;
import com.muyu.product.domain.AttributeGroup;
import com.muyu.product.domain.Brand;
import com.muyu.product.domain.CategoryInfo;
import com.muyu.product.domain.req.CategoryReq;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.Date;
import java.util.List;
import java.util.function.Supplier;
/**
* @ClassName CategoryResp
* @Description
* @Author SaiSai.Liu
* @Date 2024/3/5/0005 12:35
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class CategoryResp extends TreeEntity {
/** 主键 */
private Long id;
/** 品类名称 */
private String name;
/** 图片 */
private String image;
/** 是否启用 */
private String status;
private List<Attribute> checkAttributeList;
private List<AttributeGroup> checkedAttributeGroupList;
private List<Brand> brandList;
/**
*
* @param categoryReq
* @return
*/
public static CategoryResp saveBuilder(CategoryReq categoryReq, Supplier<String> username){
return CategoryResp.builder()
.name(categoryReq.getName())
.image(categoryReq.getImage())
.status(categoryReq.getStatus())
.createBy(username.get())
.createTime(new Date())
.build();
}
/**
*
* @param categoryReq
* @return
*/
public static CategoryResp updateBuilder(CategoryReq categoryReq,Supplier<String> username){
return CategoryResp.builder()
.name(categoryReq.getName())
.image(categoryReq.getImage())
.status(categoryReq.getStatus())
.updateBy(username.get())
.updateTime(new Date())
.build();
}
}

View File

@ -0,0 +1,24 @@
package com.muyu.product.domain.resp;
import com.muyu.common.core.web.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.List;
/**
* @ClassName ProductInfoResp
* @Description
* @Author SaiSai.Liu
* @Date 2024/3/23/0023 9:47
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class ProductInfoResp extends BaseEntity {
private Long id;
}

View File

@ -0,0 +1,42 @@
package com.muyu.product.domain.resp;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.product.domain.Rule;
import com.muyu.product.domain.RuleAttr;
import com.muyu.product.domain.model.RuleAttrAddModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.List;
import java.util.function.Function;
/**
* @ClassName RuleAttrResp
* @Description
* @Author SaiSai.Liu
* @Date 2024/3/7/0007 15:56
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class RuleAttrResp extends BaseEntity {
private Long id;
private String name;
private String states;
private List<RuleAttrAddModel> ruleAttrList;
public static RuleAttrResp saveBuilder(Rule rule, Function<Long,List<RuleAttrAddModel>> ruleAttrs){
return RuleAttrResp.builder()
.id(rule.getId())
.name(rule.getName())
.ruleAttrList(ruleAttrs==null? null : ruleAttrs.apply(rule.getId()))
.states(rule.getStates())
.build();
}
}

View File

@ -0,0 +1,152 @@
{
"categoryInfoId": 1,
"states": "y",
"categoryName": "节点",
"remark": null,
"images": null,
"req": {
"asAttributeCategoryList": [
],
"asAttributeGroupList": [
属性组
],
"asBrandCategoryList":[
品类品牌
]
}
}
{
"categoryInfoId": 1,
"categoryName": "节点",
"remark": null,
"req": {
"asAttributeCategoryList": [
"attributeInfo": {
"id": 1
"attributeName": null
}
],
"attributeGroupList": [
"attributeInfoGroup": {
"id": 1,
"attributeInfoList": []
}
]
}
}
{
"product": {
"name": null,
"brandId": 1,
"remark": null,
"image": null,
"images": [],
"description": null
},
"attribute": {
"attributeGroup": {
"attributeGroupId": 1,
},
"attributeList": [
{
"id": 1,
"attributeValue": null
}
]
},
"rule": {
"ruleId": 1,
"ruleValueList": [
{
"ruleName1": null,
"ruleName2":null,
...
"image": null,
"stork": 1,
"price": 1
}
],
}
}
{createBy: null, createTime: "2024-02-29 21:37:52", updateBy: null, updateTime: "2024-03-10 16:06:52",…}
ancestors:null
checkedAttributeGroupIds:[2]
checkedAttributeIds:[5, 3]
checkedBrandIds:[2]
children:[]
createBy:null
createTime:"2024-02-29 21:37:52"
id:1
image:"http://127.0.0.1:9300/statics/2024/02/29/8000030_20240229213748A003.jpg"
name:"电子产品"
orderNum:null
parentId:0
parentName:null
remark: null
status: "Y"
updateBy: null
updateTime: "2024-03-10 16:06:52"
{
"product": {
"id":null,
"name":null,
"states":null,
"brandId":null,
"remark":null,
"image":null,
"imgs":null,
},
"attributeGroupList":[
{
"id":null
}
],
"attributeList":[
{
"attributeId":null,
"attributeValue":bull
}
],
"rule":[
{
"sku":null, ("1,2,3")
"image":null,
"inventoryValue":null,
"priceValue":null
}
]
}

View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.muyu</groupId>
<artifactId>muyu-product</artifactId>
<version>3.6.3</version>
</parent>
<artifactId>muyu-product-remote</artifactId>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>com.muyu</groupId>
<artifactId>muyu-product-common</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,7 @@
package com.muyu;
public class Main {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}

Some files were not shown because too many files have changed in this diff Show More