2204-11-20 列表 添加

yingxiao
笨蛋 2024-11-22 23:12:18 +08:00
parent c40c0bc0cf
commit e083e409db
51 changed files with 381 additions and 159 deletions

25
doc/doc.json 100644
View File

@ -0,0 +1,25 @@
{
"商品id(projectId)": "Long",
"商品图片(projectImage)": "String",
"活动名称(activityName)": "String",
"活动介绍(activities)": "Test",
"商品单位(projectUnit)": "Long",
"轮播图(carouselImages)": [
"String",
"String"
],
"拼团策略id(strategyId)": "Long",
"拼团策略类型(strategyType)": "String",
"商品规格List(projectSkuList)": [
{
"商品sku(productSku)": "String",
"拼团价格(teamPrice)": "decimal",
"库存库存(teamStock)": "int"
}
],
"全重(weight)": "Long",
"商品详情goodsDetails": "String"
}

View File

@ -69,7 +69,7 @@ public class SysLoginService {
if (StringUtils.isNull(userResult) || StringUtils.isNull(userResult.getData())) { if (StringUtils.isNull(userResult) || StringUtils.isNull(userResult.getData())) {
recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "登录用户不存在"); recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "登录用户不存在");
throw new ServiceException("登录用户" + username + " 不存在"); throw new ServiceException("登录用户:" + username + " 不存在");
} }
if (Result.FAIL == userResult.getCode()) { if (Result.FAIL == userResult.getCode()) {
@ -80,11 +80,11 @@ public class SysLoginService {
SysUser user = userResult.getData().getSysUser(); SysUser user = userResult.getData().getSysUser();
if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) { if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) {
recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "对不起,您的账号已被删除"); recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "对不起,您的账号已被删除");
throw new ServiceException("对不起,您的账号" + username + " 已被删除"); throw new ServiceException("对不起,您的账号:" + username + " 已被删除");
} }
if (UserStatus.DISABLE.getCode().equals(user.getStatus())) { if (UserStatus.DISABLE.getCode().equals(user.getStatus())) {
recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户已停用,请联系管理员"); recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户已停用,请联系管理员");
throw new ServiceException("对不起,您的账号" + username + " 已停用"); throw new ServiceException("对不起,您的账号:" + username + " 已停用");
} }
passwordService.validate(user, password); passwordService.validate(user, password);
recordLogService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "登录成功"); recordLogService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "登录成功");

View File

@ -15,7 +15,7 @@
<!-- 系统日志输出 --> <!-- 系统日志输出 -->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/info.log</file> <file>${log.path}/info.log</file>
<!-- 循环政策基于时间创建日志文件 --> <!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 --> <!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern> <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
@ -28,16 +28,16 @@
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 --> <!-- 过滤的级别 -->
<level>INFO</level> <level>INFO</level>
<!-- 匹配时的操作接收(记录) --> <!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch> <onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作拒绝(不记录) --> <!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch> <onMismatch>DENY</onMismatch>
</filter> </filter>
</appender> </appender>
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/error.log</file> <file>${log.path}/error.log</file>
<!-- 循环政策基于时间创建日志文件 --> <!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 --> <!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern> <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
@ -50,9 +50,9 @@
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 --> <!-- 过滤的级别 -->
<level>ERROR</level> <level>ERROR</level>
<!-- 匹配时的操作接收(记录) --> <!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch> <onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作拒绝(不记录) --> <!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch> <onMismatch>DENY</onMismatch>
</filter> </filter>
</appender> </appender>

View File

@ -144,7 +144,7 @@ public @interface Excel {
public String[] args () default {}; public String[] args () default {};
/** /**
* 012 * 0:1:2:
*/ */
Type type () default Type.ALL; Type type () default Type.ALL;

View File

@ -10,7 +10,7 @@ import java.util.concurrent.ConcurrentHashMap;
/** /**
* 线 idToken * 线 idToken
* HeaderInterceptor * : HeaderInterceptor
* *
* @author muyu * @author muyu
*/ */

View File

@ -480,7 +480,7 @@ public class Convert {
/** /**
* boolean<br> * boolean<br>
* Stringtruefalseyesokno1,0 <br> * String:truefalseyesokno1,0 <br>
* *
* *
* @param value * @param value

View File

@ -17,10 +17,10 @@ public class StrFormatter {
* <br> * <br>
* {} <br> * {} <br>
* {} 使 \\ { {} \ 使 \\\\ <br> * {} 使 \\ { {} \ 使 \\\\ <br>
* <br> * :<br>
* 使format("this is {} for {}", "a", "b") -> this is a for b<br> * 使:format("this is {} for {}", "a", "b") -> this is a for b<br>
* {} format("this is \\{} for {}", "a", "b") -> this is \{} for a<br> * {}: format("this is \\{} for {}", "a", "b") -> this is \{} for a<br>
* \ format("this is \\\\{} for {}", "a", "b") -> this is \a for b<br> * \: format("this is \\\\{} for {}", "a", "b") -> this is \a for b<br>
* *
* @param strPattern * @param strPattern
* @param argArray * @param argArray

View File

@ -40,7 +40,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
* *
* @param coll Collection * @param coll Collection
* *
* @return true false * @return true: false:
*/ */
public static boolean isEmpty (Collection<?> coll) { public static boolean isEmpty (Collection<?> coll) {
return isNull(coll) || coll.isEmpty(); return isNull(coll) || coll.isEmpty();
@ -51,7 +51,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
* *
* @param coll Collection * @param coll Collection
* *
* @return true false * @return true: false:
*/ */
public static boolean isNotEmpty (Collection<?> coll) { public static boolean isNotEmpty (Collection<?> coll) {
return !isEmpty(coll); return !isEmpty(coll);
@ -61,7 +61,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
* * * *
* *
* @param objects * @param objects
* * @return true false * * @return true: false:
*/ */
public static boolean isEmpty (Object[] objects) { public static boolean isEmpty (Object[] objects) {
return isNull(objects) || (objects.length == 0); return isNull(objects) || (objects.length == 0);
@ -72,7 +72,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
* *
* @param objects * @param objects
* *
* @return true false * @return true: false:
*/ */
public static boolean isNotEmpty (Object[] objects) { public static boolean isNotEmpty (Object[] objects) {
return !isEmpty(objects); return !isEmpty(objects);
@ -83,7 +83,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
* *
* @param map Map * @param map Map
* *
* @return true false * @return true: false:
*/ */
public static boolean isEmpty (Map<?, ?> map) { public static boolean isEmpty (Map<?, ?> map) {
return isNull(map) || map.isEmpty(); return isNull(map) || map.isEmpty();
@ -94,7 +94,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
* *
* @param map Map * @param map Map
* *
* @return true false * @return true: false:
*/ */
public static boolean isNotEmpty (Map<?, ?> map) { public static boolean isNotEmpty (Map<?, ?> map) {
return !isEmpty(map); return !isEmpty(map);
@ -105,7 +105,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
* *
* @param str String * @param str String
* *
* @return true false * @return true: false:
*/ */
public static boolean isEmpty (String str) { public static boolean isEmpty (String str) {
return isNull(str) || NULLSTR.equals(str.trim()); return isNull(str) || NULLSTR.equals(str.trim());
@ -116,7 +116,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
* *
* @param str String * @param str String
* *
* @return true false * @return true: false:
*/ */
public static boolean isNotEmpty (String str) { public static boolean isNotEmpty (String str) {
return !isEmpty(str); return !isEmpty(str);
@ -127,7 +127,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
* *
* @param object Object * @param object Object
* *
* @return true false * @return true: false:
*/ */
public static boolean isNull (Object object) { public static boolean isNull (Object object) {
return object == null; return object == null;
@ -138,7 +138,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
* *
* @param object Object * @param object Object
* *
* @return true false * @return true: false:
*/ */
public static boolean isNotNull (Object object) { public static boolean isNotNull (Object object) {
return !isNull(object); return !isNull(object);
@ -149,7 +149,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
* *
* @param object * @param object
* *
* @return true false * @return true: false:
*/ */
public static boolean isArray (Object object) { public static boolean isArray (Object object) {
return isNotNull(object) && object.getClass().isArray(); return isNotNull(object) && object.getClass().isArray();
@ -253,10 +253,10 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
* , {} <br> * , {} <br>
* {} <br> * {} <br>
* {} 使 \\ { {} \ 使 \\\\ <br> * {} 使 \\ { {} \ 使 \\\\ <br>
* <br> * :<br>
* 使format("this is {} for {}", "a", "b") -> this is a for b<br> * 使:format("this is {} for {}", "a", "b") -> this is a for b<br>
* {} format("this is \\{} for {}", "a", "b") -> this is \{} for a<br> * {}: format("this is \\{} for {}", "a", "b") -> this is \{} for a<br>
* \ format("this is \\\\{} for {}", "a", "b") -> this is \a for b<br> * \: format("this is \\\\{} for {}", "a", "b") -> this is \a for b<br>
* *
* @param template {} * @param template {}
* @param params * @param params
@ -361,7 +361,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
} }
/** /**
* 线线 HELLO_WORLD->HelloWorld * 线线 :HELLO_WORLD->HelloWorld
* *
* @param name 线 * @param name 线
* *
@ -393,7 +393,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
/** /**
* *
* user_name->userName * :user_name->userName
*/ */
public static String toCamelCase (String s) { public static String toCamelCase (String s) {
if (s == null) { if (s == null) {

View File

@ -16,12 +16,12 @@ import java.nio.charset.StandardCharsets;
*/ */
public class FileUtils { public class FileUtils {
/** /**
* {@code '/'} * : {@code '/'}
*/ */
public static final char SLASH = '/'; public static final char SLASH = '/';
/** /**
* {@code '\\'} * : {@code '\\'}
*/ */
public static final char BACKSLASH = '\\'; public static final char BACKSLASH = '\\';

View File

@ -67,7 +67,7 @@ public class ExcelUtil<T> {
*/ */
private String sheetName; private String sheetName;
/** /**
* EXPORT:IMPORT * EXPORT:IMPORT:
*/ */
private Type type; private Type type;
/** /**
@ -764,7 +764,7 @@ public class ExcelUtil<T> {
* *
*/ */
public void setDataValidation (Excel attr, Row row, int column) { public void setDataValidation (Excel attr, Row row, int column) {
if (attr.name().indexOf("注") >= 0) { if (attr.name().indexOf("注:") >= 0) {
sheet.setColumnWidth(column, 6000); sheet.setColumnWidth(column, 6000);
} else { } else {
// 设置列宽 // 设置列宽
@ -880,7 +880,7 @@ public class ExcelUtil<T> {
DataValidationHelper helper = sheet.getDataValidationHelper(); DataValidationHelper helper = sheet.getDataValidationHelper();
// 加载下拉列表内容 // 加载下拉列表内容
DataValidationConstraint constraint = helper.createFormulaListConstraint(hideSheetName + "_data"); DataValidationConstraint constraint = helper.createFormulaListConstraint(hideSheetName + "_data");
// 设置数据有效性加载在哪个单元格上,四个参数分别是起始行、终止行、起始列、终止列 // 设置数据有效性加载在哪个单元格上,四个参数分别是:起始行、终止行、起始列、终止列
CellRangeAddressList regions = new CellRangeAddressList(firstRow, endRow, firstCol, endCol); CellRangeAddressList regions = new CellRangeAddressList(firstRow, endRow, firstCol, endCol);
// 数据有效性对象 // 数据有效性对象
DataValidation dataValidation = helper.createValidation(constraint, regions); DataValidation dataValidation = helper.createValidation(constraint, regions);

View File

@ -28,7 +28,7 @@ public class ReflectUtils {
/** /**
* Getter. * Getter.
* .. * :..
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public static <E> E invokeGetter (Object obj, String propertyName) { public static <E> E invokeGetter (Object obj, String propertyName) {
@ -42,7 +42,7 @@ public class ReflectUtils {
/** /**
* Setter, * Setter,
* .. * :..
*/ */
public static <E> void invokeSetter (Object obj, String propertyName, E value) { public static <E> void invokeSetter (Object obj, String propertyName, E value) {
Object object = obj; Object object = obj;

View File

@ -219,7 +219,7 @@ public final class UUID implements java.io.Serializable, Comparable<UUID> {
/** /**
* {@code UUID} {@code UUID} * {@code UUID} {@code UUID}
* <p> * <p>
* * :
* <ul> * <ul>
* <li>0 NCS * <li>0 NCS
* <li>2 <a href="http://www.ietf.org/rfc/rfc4122.txt">IETF&nbsp;RFC&nbsp;4122</a>(Leach-Salz), * <li>2 <a href="http://www.ietf.org/rfc/rfc4122.txt">IETF&nbsp;RFC&nbsp;4122</a>(Leach-Salz),
@ -298,7 +298,7 @@ public final class UUID implements java.io.Serializable, Comparable<UUID> {
* {@code UUID} * {@code UUID}
* *
* <p> * <p>
* UUID BNF * UUID BNF :
* *
* <pre> * <pre>
* {@code * {@code
@ -328,7 +328,7 @@ public final class UUID implements java.io.Serializable, Comparable<UUID> {
* {@code UUID} * {@code UUID}
* *
* <p> * <p>
* UUID BNF * UUID BNF :
* *
* <pre> * <pre>
* {@code * {@code

View File

@ -6,7 +6,7 @@ import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target; import java.lang.annotation.Target;
/** /**
* * :
* *
* @author muyu * @author muyu
*/ */

View File

@ -6,7 +6,7 @@ import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target; import java.lang.annotation.Target;
/** /**
* * :
* *
* @author muyu * @author muyu
*/ */
@ -19,7 +19,7 @@ public @interface RequiresPermissions {
String[] value () default {}; String[] value () default {};
/** /**
* AND | ORAND * :AND | ORAND
*/ */
Logical logical () default Logical.AND; Logical logical () default Logical.AND;
} }

View File

@ -6,7 +6,7 @@ import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target; import java.lang.annotation.Target;
/** /**
* * :
* *
* @author muyu * @author muyu
*/ */
@ -19,7 +19,7 @@ public @interface RequiresRoles {
String[] value () default {}; String[] value () default {};
/** /**
* AND | ORAND * :AND | ORAND
*/ */
Logical logical () default Logical.AND; Logical logical () default Logical.AND;
} }

View File

@ -86,7 +86,7 @@ public class GlobalExceptionHandler {
public Result handleMethodArgumentTypeMismatchException (MethodArgumentTypeMismatchException e, HttpServletRequest request) { public Result handleMethodArgumentTypeMismatchException (MethodArgumentTypeMismatchException e, HttpServletRequest request) {
String requestURI = request.getRequestURI(); String requestURI = request.getRequestURI();
log.error("请求参数类型不匹配'{}',发生系统异常.", requestURI, e); log.error("请求参数类型不匹配'{}',发生系统异常.", requestURI, e);
return Result.error(String.format("请求参数类型不匹配,参数[%s]要求类型为'%s',但输入值为:'%s'", e.getName(), e.getRequiredType().getName(), e.getValue())); return Result.error(String.format("请求参数类型不匹配,参数[%s]要求类型为:'%s',但输入值为:'%s'", e.getName(), e.getRequiredType().getName(), e.getValue()));
} }
/** /**

View File

@ -15,7 +15,7 @@ import javax.servlet.http.HttpServletResponse;
/** /**
* Header线便 * Header线便
* * :
* *
* @author muyu * @author muyu
*/ */

View File

@ -54,18 +54,18 @@ public class SysRole extends BaseEntity {
private Integer roleSort; private Integer roleSort;
/** /**
* 12345 * 1:2:3:4:5:
*/ */
@Excel(name = "数据范围", readConverterExp = "1=所有数据权限,2=自定义数据权限,3=本部门数据权限,4=本部门及以下数据权限,5=仅本人数据权限") @Excel(name = "数据范围", readConverterExp = "1=所有数据权限,2=自定义数据权限,3=本部门数据权限,4=本部门及以下数据权限,5=仅本人数据权限")
private String dataScope; private String dataScope;
/** /**
* 0 1 * 0: 1:
*/ */
private boolean menuCheckStrictly; private boolean menuCheckStrictly;
/** /**
* 0 1 * 0: 1:
*/ */
private boolean deptCheckStrictly; private boolean deptCheckStrictly;

View File

@ -15,7 +15,7 @@
<!-- 系统日志输出 --> <!-- 系统日志输出 -->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/info.log</file> <file>${log.path}/info.log</file>
<!-- 循环政策基于时间创建日志文件 --> <!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 --> <!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern> <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
@ -28,16 +28,16 @@
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 --> <!-- 过滤的级别 -->
<level>INFO</level> <level>INFO</level>
<!-- 匹配时的操作接收(记录) --> <!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch> <onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作拒绝(不记录) --> <!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch> <onMismatch>DENY</onMismatch>
</filter> </filter>
</appender> </appender>
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/error.log</file> <file>${log.path}/error.log</file>
<!-- 循环政策基于时间创建日志文件 --> <!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 --> <!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern> <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
@ -50,9 +50,9 @@
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 --> <!-- 过滤的级别 -->
<level>ERROR</level> <level>ERROR</level>
<!-- 匹配时的操作接收(记录) --> <!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch> <onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作拒绝(不记录) --> <!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch> <onMismatch>DENY</onMismatch>
</filter> </filter>
</appender> </appender>

View File

@ -15,7 +15,7 @@
<!-- 系统日志输出 --> <!-- 系统日志输出 -->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/info.log</file> <file>${log.path}/info.log</file>
<!-- 循环政策基于时间创建日志文件 --> <!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 --> <!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern> <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
@ -28,16 +28,16 @@
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 --> <!-- 过滤的级别 -->
<level>INFO</level> <level>INFO</level>
<!-- 匹配时的操作接收(记录) --> <!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch> <onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作拒绝(不记录) --> <!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch> <onMismatch>DENY</onMismatch>
</filter> </filter>
</appender> </appender>
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/error.log</file> <file>${log.path}/error.log</file>
<!-- 循环政策基于时间创建日志文件 --> <!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 --> <!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern> <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
@ -50,9 +50,9 @@
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 --> <!-- 过滤的级别 -->
<level>ERROR</level> <level>ERROR</level>
<!-- 匹配时的操作接收(记录) --> <!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch> <onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作拒绝(不记录) --> <!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch> <onMismatch>DENY</onMismatch>
</filter> </filter>
</appender> </appender>

View File

@ -187,7 +187,7 @@ public class GenTableServiceImpl implements IGenTableService {
} }
} }
} catch (Exception e) { } catch (Exception e) {
throw new ServiceException("导入失败" + e.getMessage()); throw new ServiceException("导入失败:" + e.getMessage());
} }
} }
@ -269,7 +269,7 @@ public class GenTableServiceImpl implements IGenTableService {
String path = getGenPath(table, template); String path = getGenPath(table, template);
FileUtils.writeStringToFile(new File(path), sw.toString(), CharsetKit.UTF_8); FileUtils.writeStringToFile(new File(path), sw.toString(), CharsetKit.UTF_8);
} catch (IOException e) { } catch (IOException e) {
throw new ServiceException("渲染模板失败,表名" + table.getTableName()); throw new ServiceException("渲染模板失败,表名:" + table.getTableName());
} }
} }
} }
@ -370,7 +370,7 @@ public class GenTableServiceImpl implements IGenTableService {
zip.flush(); zip.flush();
zip.closeEntry(); zip.closeEntry();
} catch (IOException e) { } catch (IOException e) {
log.error("渲染模板失败,表名" + table.getTableName(), e); log.error("渲染模板失败,表名:" + table.getTableName(), e);
} }
} }
} }

View File

@ -15,7 +15,7 @@
<!-- 系统日志输出 --> <!-- 系统日志输出 -->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/info.log</file> <file>${log.path}/info.log</file>
<!-- 循环政策基于时间创建日志文件 --> <!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 --> <!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern> <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
@ -28,16 +28,16 @@
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 --> <!-- 过滤的级别 -->
<level>INFO</level> <level>INFO</level>
<!-- 匹配时的操作接收(记录) --> <!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch> <onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作拒绝(不记录) --> <!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch> <onMismatch>DENY</onMismatch>
</filter> </filter>
</appender> </appender>
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/error.log</file> <file>${log.path}/error.log</file>
<!-- 循环政策基于时间创建日志文件 --> <!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 --> <!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern> <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
@ -50,9 +50,9 @@
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 --> <!-- 过滤的级别 -->
<level>ERROR</level> <level>ERROR</level>
<!-- 匹配时的操作接收(记录) --> <!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch> <onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作拒绝(不记录) --> <!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch> <onMismatch>DENY</onMismatch>
</filter> </filter>
</appender> </appender>

View File

@ -31,7 +31,7 @@ public class SysJobServiceImpl implements ISysJobService {
private SysJobMapper jobMapper; private SysJobMapper jobMapper;
/** /**
* ID * :ID
*/ */
@PostConstruct @PostConstruct
public void init () throws SchedulerException, TaskException { public void init () throws SchedulerException, TaskException {

View File

@ -11,11 +11,11 @@ import org.springframework.stereotype.Component;
@Component("myTask") @Component("myTask")
public class MyTask { public class MyTask {
public void ryMultipleParams (String s, Boolean b, Long l, Double d, Integer i) { public void ryMultipleParams (String s, Boolean b, Long l, Double d, Integer i) {
System.out.println(StringUtils.format("执行多参方法 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i)); System.out.println(StringUtils.format("执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i));
} }
public void ryParams (String params) { public void ryParams (String params) {
System.out.println("执行有参方法" + params); System.out.println("执行有参方法:" + params);
} }
public void ryNoParams () { public void ryNoParams () {

View File

@ -40,7 +40,7 @@ public abstract class AbstractQuartzJob implements Job {
} }
after(context, sysJob, null); after(context, sysJob, null);
} catch (Exception e) { } catch (Exception e) {
log.error("任务执行异常 - ", e); log.error("任务执行异常 - :", e);
after(context, sysJob, e); after(context, sysJob, e);
} }
} }
@ -72,7 +72,7 @@ public abstract class AbstractQuartzJob implements Job {
sysJobLog.setStartTime(startTime); sysJobLog.setStartTime(startTime);
sysJobLog.setStopTime(new Date()); sysJobLog.setStopTime(new Date());
long runMs = sysJobLog.getStopTime().getTime() - sysJobLog.getStartTime().getTime(); long runMs = sysJobLog.getStopTime().getTime() - sysJobLog.getStartTime().getTime();
sysJobLog.setJobMessage(sysJobLog.getJobName() + " 总共耗时" + runMs + "毫秒"); sysJobLog.setJobMessage(sysJobLog.getJobName() + " 总共耗时:" + runMs + "毫秒");
if (e != null) { if (e != null) {
sysJobLog.setStatus("1"); sysJobLog.setStatus("1");
String errorMsg = StringUtils.substring(ExceptionUtil.getExceptionMessage(e), 0, 2000); String errorMsg = StringUtils.substring(ExceptionUtil.getExceptionMessage(e), 0, 2000);

View File

@ -15,7 +15,7 @@
<!-- 系统日志输出 --> <!-- 系统日志输出 -->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/info.log</file> <file>${log.path}/info.log</file>
<!-- 循环政策基于时间创建日志文件 --> <!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 --> <!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern> <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
@ -28,16 +28,16 @@
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 --> <!-- 过滤的级别 -->
<level>INFO</level> <level>INFO</level>
<!-- 匹配时的操作接收(记录) --> <!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch> <onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作拒绝(不记录) --> <!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch> <onMismatch>DENY</onMismatch>
</filter> </filter>
</appender> </appender>
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/error.log</file> <file>${log.path}/error.log</file>
<!-- 循环政策基于时间创建日志文件 --> <!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 --> <!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern> <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
@ -50,9 +50,9 @@
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 --> <!-- 过滤的级别 -->
<level>ERROR</level> <level>ERROR</level>
<!-- 匹配时的操作接收(记录) --> <!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch> <onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作拒绝(不记录) --> <!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch> <onMismatch>DENY</onMismatch>
</filter> </filter>
</appender> </appender>

View File

@ -11,9 +11,11 @@ import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder; import lombok.experimental.SuperBuilder;
import java.awt.*;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.sql.Date; import java.sql.Date;
import java.sql.Time; import java.sql.Time;
import java.util.List;
/** 商品拼团*/ /** 商品拼团*/
@Data @Data
@ -51,7 +53,4 @@ public class ActivityTeamInfo extends BaseEntity {
private String strategyType; private String strategyType;
/** 策略ID*/ /** 策略ID*/
private long strategyId; private long strategyId;
} }

View File

@ -11,6 +11,7 @@ import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder; import lombok.experimental.SuperBuilder;
import java.math.BigDecimal;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.sql.Date; import java.sql.Date;
import java.sql.Time; import java.sql.Time;
@ -25,17 +26,17 @@ import java.sql.Time;
public class ActivityTeamProductSkuInfo extends BaseEntity { public class ActivityTeamProductSkuInfo extends BaseEntity {
@TableId(type = IdType.AUTO) @TableId(type = IdType.AUTO)
/** 主键*/ /** 主键*/
private long id; private Long id;
/** 活动ID*/ /** 活动ID*/
private long teamId; private Long teamId;
/** 商品ID*/ /** 商品ID*/
private String productId; private Long productId;
/** 商品SKU*/ /** 商品SKU*/
private String productSku; private String productSku;
/** 拼团库存*/ /** 拼团库存*/
private String teamStock; private Long teamStock;
/** 拼团价格*/ /** 拼团价格*/
private String teamPrice; private BigDecimal teamPrice;
} }

View File

@ -1,17 +0,0 @@
package com.muyu.marketing.domain.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/** 团购活动 优惠模型*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TeamDiscountModel {
}

View File

@ -0,0 +1,38 @@
package com.muyu.marketing.domain.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.math.RoundingMode;
/** 团购活动 优惠模型*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TeamProductDiscountPriceModel {
/** 商品价格*/
private BigDecimal productPrice;
/** 团购优惠价*/
private BigDecimal teamPrice;
/** 优惠力度*/
private Double discount;
public static TeamProductDiscountPriceModel of (BigDecimal productPrice,BigDecimal teamPrice){
TeamProductDiscountPriceModel teamProductDiscountPriceModel = TeamProductDiscountPriceModel.builder()
.productPrice(productPrice)
.teamPrice(teamPrice)
.discount(
productPrice.subtract(teamPrice).divide(productPrice, 2, RoundingMode.HALF_DOWN).doubleValue()
)
.build();
return teamProductDiscountPriceModel;
}
}

View File

@ -1,9 +1,10 @@
package com.muyu.marketing.domain.resp; package com.muyu.marketing.domain.req;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder; import lombok.experimental.SuperBuilder;
@ -14,11 +15,11 @@ import java.sql.Timestamp;
* resp * resp
*/ */
@Data @Data
@SuperBuilder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
@ApiModel(value = "ActivityTeamInfoListReq", description = "拼团") @ApiModel(value = "ActivityTeamInfoListReq", description = "拼团")
public class ActivityTeamInfoListResp { public class ActivityTeamInfoListReq {
@TableId(type = IdType.AUTO) @TableId(type = IdType.AUTO)
/** 主键*/ /** 主键*/

View File

@ -0,0 +1,21 @@
package com.muyu.marketing.domain.req;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.poi.hpsf.Decimal;
/** 添加拼团(商品规格List)Resp*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class AddProjectSkuList {
/** 商品sku*/
private String productSku;
/** 拼团价格*/
private Decimal teamPrice;
/** 库存库存*/
private Integer teamStock;
}

View File

@ -0,0 +1,54 @@
package com.muyu.marketing.domain.resp;
import com.muyu.marketing.domain.req.AddProjectSkuList;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* Resp
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "ActivityTeamInfoReq", description = "添加拼团")
public class ActivityTeamInfoAddResp {
/** 商品id*/
private Long projectId;
/** 商品图片*/
private String projectImage;
/** 活动名称*/
private String activityName;
/** 活动介绍*/
private String activities;
/** 商品单位*/
private String projectUnit;
/** 轮播图*/
private String carouselImages;
/** 拼团策略id*/
private Long strategyId;
/** 拼团策略类型*/
private String strategyType;
/** 商品规格List*/
private List<AddProjectSkuList> projectSkuList;
/** 全重*/
private Long weight;
/** 商品详情*/
private String goodsDetails;
}

View File

@ -48,6 +48,14 @@
<artifactId>dynamic-datasource-spring-boot-starter</artifactId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>${dynamic-ds.version}</version> <version>${dynamic-ds.version}</version>
</dependency> </dependency>
<dependency>
<groupId>com.muyu</groupId>
<artifactId>muyu-product-cache</artifactId>
</dependency>
<dependency>
<groupId>com.muyu</groupId>
<artifactId>muyu-common-security</artifactId>
</dependency>
</dependencies> </dependencies>

View File

@ -2,6 +2,7 @@ package com.muyu.marketing;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
/** /**
@ -11,6 +12,7 @@ import org.springframework.stereotype.Component;
*/ */
@SpringBootApplication @SpringBootApplication
@Component @Component
@EnableFeignClients
public class MuYuMarketIngApplication { public class MuYuMarketIngApplication {
public static void main(String[] args) { public static void main(String[] args) {
SpringApplication.run(MuYuMarketIngApplication.class,args); SpringApplication.run(MuYuMarketIngApplication.class,args);

View File

@ -8,10 +8,12 @@ import com.muyu.marketing.domain.model.ActivityTeamInfoListModel;
import com.muyu.marketing.domain.model.ActivityTeamInfoListQueryModel; import com.muyu.marketing.domain.model.ActivityTeamInfoListQueryModel;
import com.muyu.marketing.domain.req.TeamInfoListReq; import com.muyu.marketing.domain.req.TeamInfoListReq;
import com.muyu.marketing.domain.resp.ActivityTeamInfoAddResp;
import com.muyu.marketing.service.ActivityTeamInfoService; import com.muyu.marketing.service.ActivityTeamInfoService;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@ -40,6 +42,16 @@ public class ActivityTeamInfoController {
return Result.success(tableDataInfo); return Result.success(tableDataInfo);
} }
/**
*
*/
@ApiOperation("添加拼团")
@PostMapping("add")
public Result<String> add(@RequestBody ActivityTeamInfoAddResp activityTeamInfoAddResp) {
activityTeamInfoService.addActivityTeamInfo(activityTeamInfoAddResp);
return Result.success("创建成功");
}

View File

@ -5,10 +5,24 @@ import com.muyu.common.core.web.page.TableDataInfo;
import com.muyu.marketing.domain.ActivityTeamInfo; import com.muyu.marketing.domain.ActivityTeamInfo;
import com.muyu.marketing.domain.model.ActivityTeamInfoListModel; import com.muyu.marketing.domain.model.ActivityTeamInfoListModel;
import com.muyu.marketing.domain.model.ActivityTeamInfoListQueryModel; import com.muyu.marketing.domain.model.ActivityTeamInfoListQueryModel;
import com.muyu.marketing.domain.resp.ActivityTeamInfoAddResp;
/** 拼团*/ /** 拼团*/
public interface ActivityTeamInfoService extends IService<ActivityTeamInfo> { public interface ActivityTeamInfoService extends IService<ActivityTeamInfo> {
/**
*
* @param activityTeamInfoListQueryModel
* @return
*/
TableDataInfo<ActivityTeamInfoListModel> tabDateInfo(ActivityTeamInfoListQueryModel activityTeamInfoListQueryModel); TableDataInfo<ActivityTeamInfoListModel> tabDateInfo(ActivityTeamInfoListQueryModel activityTeamInfoListQueryModel);
/**
*
*/
void addActivityTeamInfo(ActivityTeamInfoAddResp activityTeamInfoAddResp);
} }

View File

@ -1,4 +1,7 @@
package com.muyu.marketing.service; package com.muyu.marketing.service;
import com.muyu.marketing.domain.model.TeamProductDiscountPriceModel;
public interface ActivityTeamProductSkuInfoService { public interface ActivityTeamProductSkuInfoService {
public TeamProductDiscountPriceModel getDiscountPrice(Long teamId);
} }

View File

@ -8,9 +8,11 @@ import com.muyu.common.core.web.page.TableDataInfo;
import com.muyu.marketing.domain.ActivityTeamInfo; import com.muyu.marketing.domain.ActivityTeamInfo;
import com.muyu.marketing.domain.model.ActivityTeamInfoListModel; import com.muyu.marketing.domain.model.ActivityTeamInfoListModel;
import com.muyu.marketing.domain.model.ActivityTeamInfoListQueryModel; import com.muyu.marketing.domain.model.ActivityTeamInfoListQueryModel;
import com.muyu.marketing.domain.resp.ActivityTeamInfoAddResp;
import com.muyu.marketing.mapper.ActivityTeamInfoMapper; import com.muyu.marketing.mapper.ActivityTeamInfoMapper;
import com.muyu.marketing.service.ActivityTeamInfoService; import com.muyu.marketing.service.ActivityTeamInfoService;
import com.muyu.marketing.service.ActivityTeamOpenInfoService; import com.muyu.marketing.service.ActivityTeamOpenInfoService;
import com.muyu.marketing.service.ActivityTeamProductSkuInfoService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -30,6 +32,7 @@ implements ActivityTeamInfoService {
@Autowired @Autowired
private ActivityTeamOpenInfoService activityTeamOpenInfoService; private ActivityTeamOpenInfoService activityTeamOpenInfoService;
/** /**
* *
*/ */
@ -71,5 +74,30 @@ implements ActivityTeamInfoService {
return tableDataInfo; return tableDataInfo;
} }
/**
*
*/
@Override
public void addActivityTeamInfo(ActivityTeamInfoAddResp addResp) {
//查询 商品
ActivityTeamInfo build = ActivityTeamInfo.builder()
.name(addResp.getActivityName())
.productId(addResp.getProjectId())
.productImage(addResp.getProjectImage())
.introduction(addResp.getCarouselImages())
.unit(addResp.getProjectUnit())
.imageList(addResp.getCarouselImages())
.strategyType(addResp.getStrategyType())
.strategyId(addResp.getStrategyId())
.build();
activityTeamInfoMapper.insert(build);
}
} }

View File

@ -1,13 +1,46 @@
package com.muyu.marketing.service.impl; package com.muyu.marketing.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.marketing.domain.ActivityTeamProductSkuInfo; import com.muyu.marketing.domain.ActivityTeamProductSkuInfo;
import com.muyu.marketing.domain.model.TeamProductDiscountPriceModel;
import com.muyu.marketing.mapper.ActivityTeamProductSkuInfoMapper; import com.muyu.marketing.mapper.ActivityTeamProductSkuInfoMapper;
import com.muyu.marketing.service.ActivityTeamProductSkuInfoService; import com.muyu.marketing.service.ActivityTeamProductSkuInfoService;
import com.muyu.product.cache.ProjectSkuCache;
import com.muyu.product.domain.ProjectSkuInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
@Service @Service
public class ActivityTeamProductSkuInfoServiceImpl extends ServiceImpl<ActivityTeamProductSkuInfoMapper, ActivityTeamProductSkuInfo> public class ActivityTeamProductSkuInfoServiceImpl extends ServiceImpl<ActivityTeamProductSkuInfoMapper, ActivityTeamProductSkuInfo>
implements ActivityTeamProductSkuInfoService { implements ActivityTeamProductSkuInfoService {
@Autowired
private ProjectSkuCache projectSkuCache;
@Override //
public TeamProductDiscountPriceModel getDiscountPrice(Long teamId) {
LambdaQueryWrapper<ActivityTeamProductSkuInfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ActivityTeamProductSkuInfo :: getTeamId , teamId);
List<ActivityTeamProductSkuInfo> teamProductSkuInfoList = this.list(queryWrapper);
//优惠模型集合
Optional<TeamProductDiscountPriceModel> discountPriceModelOptional = teamProductSkuInfoList.stream()
.map(activityTeamProductSkuInfo -> {
ProjectSkuInfo projectSkuInfo = projectSkuCache.get(activityTeamProductSkuInfo.getProductId(), activityTeamProductSkuInfo.getProductSku());
return TeamProductDiscountPriceModel.of(projectSkuInfo.getPrice(), activityTeamProductSkuInfo.getTeamPrice());
}).min((o1, o2) -> Double.valueOf(o1.getDiscount() *100 - o2.getDiscount() * 100). intValue());
if (discountPriceModelOptional.isEmpty()){
throw new RuntimeException("团队下没有绑定商品");
}
return discountPriceModelOptional.get();
}
} }

View File

@ -15,7 +15,7 @@
<!-- 系统日志输出 --> <!-- 系统日志输出 -->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/info.log</file> <file>${log.path}/info.log</file>
<!-- 循环政策基于时间创建日志文件 --> <!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 --> <!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern> <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
@ -28,16 +28,16 @@
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 --> <!-- 过滤的级别 -->
<level>INFO</level> <level>INFO</level>
<!-- 匹配时的操作接收(记录) --> <!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch> <onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作拒绝(不记录) --> <!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch> <onMismatch>DENY</onMismatch>
</filter> </filter>
</appender> </appender>
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/error.log</file> <file>${log.path}/error.log</file>
<!-- 循环政策基于时间创建日志文件 --> <!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 --> <!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern> <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
@ -50,9 +50,9 @@
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 --> <!-- 过滤的级别 -->
<level>ERROR</level> <level>ERROR</level>
<!-- 匹配时的操作接收(记录) --> <!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch> <onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作拒绝(不记录) --> <!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch> <onMismatch>DENY</onMismatch>
</filter> </filter>
</appender> </appender>

View File

@ -1,17 +1,18 @@
package com.muyu.product.cache.datasource.impl; package com.muyu.product.cache.datasource.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.muyu.common.core.domain.Result; import com.muyu.common.core.domain.Result;
import com.muyu.product.cache.datasource.ProjectSkuData; import com.muyu.product.cache.datasource.ProjectSkuData;
import com.muyu.product.domain.ProjectSkuInfo; import com.muyu.product.domain.ProjectSkuInfo;
import com.muyu.product.remote.RemoteProjectSkuService; import com.muyu.product.remote.RemoteProjectSkuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -22,7 +23,7 @@ import java.util.stream.Collectors;
@Service @Service
public class ProjectSkuDataRemoteImpl implements ProjectSkuData { public class ProjectSkuDataRemoteImpl implements ProjectSkuData {
@Autowired @Resource
private RemoteProjectSkuService remoteProjectSkuService; private RemoteProjectSkuService remoteProjectSkuService;
/** /**

View File

@ -21,6 +21,7 @@ import java.util.List;
fallbackFactory = RemoteProjectSkuFactory.class, fallbackFactory = RemoteProjectSkuFactory.class,
path = "/sku" path = "/sku"
) )
public interface RemoteProjectSkuService { public interface RemoteProjectSkuService {
/** /**

View File

@ -1,9 +1,7 @@
package com.muyu.product.remote.factory; package com.muyu.product.remote.factory;
import com.muyu.common.core.domain.Result; import com.muyu.common.core.domain.Result;
import com.muyu.product.domain.ProjectSkuInfo;
import com.muyu.product.domain.RuleInfo; import com.muyu.product.domain.RuleInfo;
import com.muyu.product.remote.RemoteProjectSkuService;
import com.muyu.product.remote.RemoteRuleService; import com.muyu.product.remote.RemoteRuleService;
import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.cloud.openfeign.FallbackFactory;

View File

@ -15,7 +15,7 @@
<!-- 系统日志输出 --> <!-- 系统日志输出 -->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/info.log</file> <file>${log.path}/info.log</file>
<!-- 循环政策基于时间创建日志文件 --> <!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 --> <!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern> <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
@ -28,16 +28,16 @@
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 --> <!-- 过滤的级别 -->
<level>INFO</level> <level>INFO</level>
<!-- 匹配时的操作接收(记录) --> <!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch> <onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作拒绝(不记录) --> <!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch> <onMismatch>DENY</onMismatch>
</filter> </filter>
</appender> </appender>
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/error.log</file> <file>${log.path}/error.log</file>
<!-- 循环政策基于时间创建日志文件 --> <!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 --> <!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern> <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
@ -50,9 +50,9 @@
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 --> <!-- 过滤的级别 -->
<level>ERROR</level> <level>ERROR</level>
<!-- 匹配时的操作接收(记录) --> <!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch> <onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作拒绝(不记录) --> <!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch> <onMismatch>DENY</onMismatch>
</filter> </filter>
</appender> </appender>

View File

@ -15,7 +15,7 @@
<!-- 系统日志输出 --> <!-- 系统日志输出 -->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/info.log</file> <file>${log.path}/info.log</file>
<!-- 循环政策基于时间创建日志文件 --> <!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 --> <!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern> <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
@ -28,16 +28,16 @@
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 --> <!-- 过滤的级别 -->
<level>INFO</level> <level>INFO</level>
<!-- 匹配时的操作接收(记录) --> <!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch> <onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作拒绝(不记录) --> <!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch> <onMismatch>DENY</onMismatch>
</filter> </filter>
</appender> </appender>
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/error.log</file> <file>${log.path}/error.log</file>
<!-- 循环政策基于时间创建日志文件 --> <!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 --> <!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern> <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
@ -50,9 +50,9 @@
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 --> <!-- 过滤的级别 -->
<level>ERROR</level> <level>ERROR</level>
<!-- 匹配时的操作接收(记录) --> <!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch> <onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作拒绝(不记录) --> <!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch> <onMismatch>DENY</onMismatch>
</filter> </filter>
</appender> </appender>

View File

@ -37,7 +37,7 @@ public class RouterVo {
private String component; private String component;
/** /**
* {"id": 1, "name": "ry"} * : {"id": 1, "name": "ry"}
*/ */
private String query; private String query;

View File

@ -486,16 +486,16 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
} }
} catch (Exception e) { } catch (Exception e) {
failureNum++; failureNum++;
String msg = "<br/>" + failureNum + "、账号 " + user.getUserName() + " 导入失败"; String msg = "<br/>" + failureNum + "、账号 " + user.getUserName() + " 导入失败:";
failureMsg.append(msg + e.getMessage()); failureMsg.append(msg + e.getMessage());
log.error(msg, e); log.error(msg, e);
} }
} }
if (failureNum > 0) { if (failureNum > 0) {
failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下"); failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
throw new ServiceException(failureMsg.toString()); throw new ServiceException(failureMsg.toString());
} else { } else {
successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下"); successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
} }
return successMsg.toString(); return successMsg.toString();
} }

View File

@ -15,7 +15,7 @@
<!-- 系统日志输出 --> <!-- 系统日志输出 -->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/info.log</file> <file>${log.path}/info.log</file>
<!-- 循环政策基于时间创建日志文件 --> <!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 --> <!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern> <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
@ -28,16 +28,16 @@
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 --> <!-- 过滤的级别 -->
<level>INFO</level> <level>INFO</level>
<!-- 匹配时的操作接收(记录) --> <!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch> <onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作拒绝(不记录) --> <!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch> <onMismatch>DENY</onMismatch>
</filter> </filter>
</appender> </appender>
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/error.log</file> <file>${log.path}/error.log</file>
<!-- 循环政策基于时间创建日志文件 --> <!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 --> <!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern> <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
@ -50,9 +50,9 @@
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 --> <!-- 过滤的级别 -->
<level>ERROR</level> <level>ERROR</level>
<!-- 匹配时的操作接收(记录) --> <!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch> <onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作拒绝(不记录) --> <!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch> <onMismatch>DENY</onMismatch>
</filter> </filter>
</appender> </appender>

View File

@ -15,7 +15,7 @@
<!-- 系统日志输出 --> <!-- 系统日志输出 -->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/info.log</file> <file>${log.path}/info.log</file>
<!-- 循环政策基于时间创建日志文件 --> <!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 --> <!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern> <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
@ -28,16 +28,16 @@
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 --> <!-- 过滤的级别 -->
<level>INFO</level> <level>INFO</level>
<!-- 匹配时的操作接收(记录) --> <!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch> <onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作拒绝(不记录) --> <!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch> <onMismatch>DENY</onMismatch>
</filter> </filter>
</appender> </appender>
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/error.log</file> <file>${log.path}/error.log</file>
<!-- 循环政策基于时间创建日志文件 --> <!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 --> <!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern> <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
@ -50,9 +50,9 @@
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 --> <!-- 过滤的级别 -->
<level>ERROR</level> <level>ERROR</level>
<!-- 匹配时的操作接收(记录) --> <!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch> <onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作拒绝(不记录) --> <!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch> <onMismatch>DENY</onMismatch>
</filter> </filter>
</appender> </appender>

View File

@ -721,9 +721,9 @@ CREATE TABLE `sys_job_log` (
-- ---------------------------- -- ----------------------------
-- Records of sys_job_log -- Records of sys_job_log
-- ---------------------------- -- ----------------------------
INSERT INTO `sys_job_log` VALUES (1, '系统默认(无参)', 'DEFAULT', 'myTask.ryNoParams', '系统默认(无参) 总共耗时2毫秒', '0', '', '2024-03-08 20:51:30'); INSERT INTO `sys_job_log` VALUES (1, '系统默认(无参)', 'DEFAULT', 'myTask.ryNoParams', '系统默认(无参) 总共耗时:2毫秒', '0', '', '2024-03-08 20:51:30');
INSERT INTO `sys_job_log` VALUES (2, '系统默认(无参)', 'DEFAULT', 'myTask.ryNoParams', '系统默认(无参) 总共耗时0毫秒', '0', '', '2024-03-08 20:51:38'); INSERT INTO `sys_job_log` VALUES (2, '系统默认(无参)', 'DEFAULT', 'myTask.ryNoParams', '系统默认(无参) 总共耗时:0毫秒', '0', '', '2024-03-08 20:51:38');
INSERT INTO `sys_job_log` VALUES (3, '系统默认(无参)', 'DEFAULT', 'myTask.ryNoParams', '系统默认(无参) 总共耗时0毫秒', '0', '', '2024-03-08 21:22:37'); INSERT INTO `sys_job_log` VALUES (3, '系统默认(无参)', 'DEFAULT', 'myTask.ryNoParams', '系统默认(无参) 总共耗时:0毫秒', '0', '', '2024-03-08 21:22:37');
-- ---------------------------- -- ----------------------------
-- Table structure for sys_logininfor -- Table structure for sys_logininfor
@ -1388,8 +1388,8 @@ CREATE TABLE `sys_notice` (
-- ---------------------------- -- ----------------------------
-- Records of sys_notice -- Records of sys_notice
-- ---------------------------- -- ----------------------------
INSERT INTO `sys_notice` VALUES (1, '温馨提醒2018-07-01 若依新版本发布啦', '1', 0xE696B0E78988E69CACE58685E5AEB9, '0', 'admin', '2023-11-12 15:57:50', 'admin', '2024-03-08 20:52:38', '管理员'); INSERT INTO `sys_notice` VALUES (1, '温馨提醒:2018-07-01 若依新版本发布啦', '1', 0xE696B0E78988E69CACE58685E5AEB9, '0', 'admin', '2023-11-12 15:57:50', 'admin', '2024-03-08 20:52:38', '管理员');
INSERT INTO `sys_notice` VALUES (2, '维护通知2018-07-01 若依系统凌晨维护', '1', 0xE7BBB4E68AA4E58685E5AEB9, '0', 'admin', '2023-11-12 15:57:50', '', NULL, '管理员'); INSERT INTO `sys_notice` VALUES (2, '维护通知:2018-07-01 若依系统凌晨维护', '1', 0xE7BBB4E68AA4E58685E5AEB9, '0', 'admin', '2023-11-12 15:57:50', '', NULL, '管理员');
-- ---------------------------- -- ----------------------------
-- Table structure for sys_oper_log -- Table structure for sys_oper_log
@ -1696,7 +1696,7 @@ CREATE TABLE `sys_role` (
`role_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '角色名称', `role_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '角色名称',
`role_key` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '角色权限字符串', `role_key` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '角色权限字符串',
`role_sort` int(4) NOT NULL COMMENT '显示顺序', `role_sort` int(4) NOT NULL COMMENT '显示顺序',
`data_scope` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '1' COMMENT '数据范围1:全部数据权限 2自定数据权限 3本部门数据权限 4本部门及以下数据权限)', `data_scope` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '1' COMMENT '数据范围1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限)',
`menu_check_strictly` tinyint(1) NULL DEFAULT 1 COMMENT '菜单树选择项是否关联显示', `menu_check_strictly` tinyint(1) NULL DEFAULT 1 COMMENT '菜单树选择项是否关联显示',
`dept_check_strictly` tinyint(1) NULL DEFAULT 1 COMMENT '部门树选择项是否关联显示', `dept_check_strictly` tinyint(1) NULL DEFAULT 1 COMMENT '部门树选择项是否关联显示',
`status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '角色状态0正常 1停用', `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '角色状态0正常 1停用',