diff --git a/dm_web/pom.xml b/dm_web/pom.xml
new file mode 100644
index 0000000..c90b4f5
--- /dev/null
+++ b/dm_web/pom.xml
@@ -0,0 +1,285 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ demay
+ com.ssm
+ 1.0-SNAPSHOT
+ ../pom.xml
+
+ 4.0.0
+ dm_web
+ jar
+ dm_web
+
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-aop
+
+
+ org.aspectj
+ aspectjweaver
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ com.github.xiaoymin
+ knife4j-spring-boot-starter
+ 2.0.5
+
+
+
+ org.springframework.boot
+ spring-boot-starter-aop
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ com.alibaba
+ fastjson
+
+
+ javax.servlet
+ servlet-api
+
+
+ io.springfox
+ springfox-swagger-ui
+
+
+ io.springfox
+ springfox-swagger2
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-data-redis
+
+
+
+ org.springframework.session
+ spring-session-data-redis
+
+
+ commons-fileupload
+ commons-fileupload
+ 1.2.1
+
+
+ commons-io
+ commons-io
+ 2.2
+
+
+ org.apache.commons
+ commons-lang3
+
+
+ org.apache.poi
+ poi
+
+
+ org.apache.poi
+ poi-ooxml
+
+
+ net.oschina.zcx7878
+ fastdfs-client-java
+
+
+ commons-net
+ commons-net
+ 3.6
+ compile
+
+
+ org.apache.commons
+ commons-pool2
+ 2.6.2
+ compile
+
+
+
+ com.ssm
+ redis
+ 1.0-SNAPSHOT
+
+
+ com.ssm
+ dm_api
+ 1.0-SNAPSHOT
+
+
+ tk.mybatis
+ mapper-spring-boot-starter
+
+
+
+
+ com.ssm
+ dm_service
+ 1.0-SNAPSHOT
+
+
+ tk.mybatis
+ mapper-spring
+ 1.1.5
+
+
+ org.jetbrains
+ annotations
+ RELEASE
+ compile
+
+
+
+
+
+
+
+
+ org.quartz-scheduler
+ quartz
+ 2.2.3
+
+
+ com.alibaba
+ easyexcel
+ 2.2.7
+
+
+
+
+
+
+
+
+ com.github.ulisesbocchio
+ jasypt-spring-boot-starter
+ 2.0.0
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-thymeleaf
+
+
+
+ net.sourceforge.nekohtml
+ nekohtml
+ 1.9.22
+
+
+ org.jetbrains
+ annotations
+ 24.1.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+ dm_web
+
+ compile
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+ 2.6
+
+
+
+ com.ssm.DmWebApp
+ true
+ lib/
+
+
+ ./
+
+
+
+ config/**
+
+ F:/workPlace/target/dm_web
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ copy
+ package
+
+ copy-dependencies
+
+
+ F:/workPlace/target/dm_web/lib
+
+
+
+
+
+ maven-resources-plugin
+ 3.0.2
+
+
+ copy-resources
+ package
+
+ copy-resources
+
+
+ true
+ F:/workPlace/target/dm_web/config
+
+
+ src/main/resources/config
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+
+
+
+
\ No newline at end of file
diff --git a/dm_web/src/main/java/com/ssm/annotation/RedissonAspect.java b/dm_web/src/main/java/com/ssm/annotation/RedissonAspect.java
new file mode 100644
index 0000000..563781f
--- /dev/null
+++ b/dm_web/src/main/java/com/ssm/annotation/RedissonAspect.java
@@ -0,0 +1,39 @@
+//package com.ssm.annotation;
+//
+//import com.ssm.manage.utils.StringUtils;
+//import org.aspectj.lang.ProceedingJoinPoint;
+//import org.aspectj.lang.annotation.Around;
+//import org.aspectj.lang.annotation.Aspect;
+//import org.aspectj.lang.reflect.MethodSignature;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.boot.SpringApplication;
+//import org.springframework.boot.context.event.SpringApplicationEvent;
+//import org.springframework.context.ApplicationEventPublisher;
+//import org.springframework.core.annotation.Order;
+//import org.springframework.stereotype.Component;
+//
+//import java.lang.reflect.Method;
+//import java.util.Optional;
+//
+//@Component
+//@Aspect
+//@Order(0)
+//public class RedissonAspect {
+// @Autowired
+// private RedissonLockService redissonLockService;
+// @Autowired
+// private ApplicationEventPublisher applicationEventPublisher;
+//
+//
+// @Around("@annotation(redissonLock)")
+// public Object around(ProceedingJoinPoint joinPoint,RedissonLock redissonLock) throws Throwable {
+// Method method = ((MethodSignature) joinPoint.getSignature()).getMethod();
+// //获取前缀
+// applicationEventPublisher.publishEvent(new SmsSendEvent(this,"15913619401"));
+// String prefix = StringUtils.isBlank(redissonLock.prefix())?SpELUtils.getMethodKey(method):redissonLock.prefix();
+// String key = SpELUtils.parseSpEl(method,joinPoint.getArgs(),redissonLock.key());
+// Object lock = redissonLockService.lock(prefix + key, redissonLock.timeout(), redissonLock.timeUnit(), joinPoint::proceed);
+// return lock;
+// }
+//
+//}
diff --git a/dm_web/src/main/java/com/ssm/annotation/RedissonLock.java b/dm_web/src/main/java/com/ssm/annotation/RedissonLock.java
new file mode 100644
index 0000000..d3f0ffa
--- /dev/null
+++ b/dm_web/src/main/java/com/ssm/annotation/RedissonLock.java
@@ -0,0 +1,16 @@
+//package com.ssm.annotation;
+//
+//import java.lang.annotation.ElementType;
+//import java.lang.annotation.Retention;
+//import java.lang.annotation.RetentionPolicy;
+//import java.lang.annotation.Target;
+//import java.util.concurrent.TimeUnit;
+//
+//@Target(ElementType.METHOD)
+//@Retention(RetentionPolicy.RUNTIME)
+//public @interface RedissonLock {
+// String prefix() default "";
+// String key();
+// int timeout() default -1;
+// TimeUnit timeUnit() default TimeUnit.MILLISECONDS;
+//}
diff --git a/dm_web/src/main/java/com/ssm/annotation/RedissonLockService.java b/dm_web/src/main/java/com/ssm/annotation/RedissonLockService.java
new file mode 100644
index 0000000..208782c
--- /dev/null
+++ b/dm_web/src/main/java/com/ssm/annotation/RedissonLockService.java
@@ -0,0 +1,44 @@
+//package com.ssm.annotation;
+//
+//import com.ssm.manage.entity.SmsException;
+//import com.ssm.manage.response.ResponseCode;
+//import lombok.SneakyThrows;
+//import org.apache.poi.ss.formula.functions.T;
+//import org.redisson.api.RLock;
+//import org.redisson.api.RedissonClient;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.stereotype.Component;
+//
+//import java.util.concurrent.TimeUnit;
+//
+//@Component
+//public class RedissonLockService {
+// @Autowired
+// private RedissonClient redissonClient;
+//
+// @SneakyThrows
+// public T lock(String key, int timeout, TimeUnit timeUnit, Supplier supplier) throws SmsException {
+// RLock lock = redissonClient.getLock(key);
+// boolean tryLock = lock.tryLock(timeout,timeUnit);
+// if (!tryLock) {
+// throw new SmsException(ResponseCode.MSG,"请求太频繁了");
+// }
+// try {
+// return supplier.get();
+// }finally {
+// lock.unlock();
+// }
+// }
+//
+//
+// @FunctionalInterface
+// public interface Supplier {
+//
+// /**
+// * Gets a result.
+// *
+// * @return a result
+// */
+// T get() throws Throwable;
+// }
+//}
diff --git a/dm_web/src/main/java/com/ssm/annotation/SmsSendEvent.java b/dm_web/src/main/java/com/ssm/annotation/SmsSendEvent.java
new file mode 100644
index 0000000..7cea534
--- /dev/null
+++ b/dm_web/src/main/java/com/ssm/annotation/SmsSendEvent.java
@@ -0,0 +1,18 @@
+//package com.ssm.annotation;
+//
+//import lombok.Getter;
+//import org.springframework.context.ApplicationEvent;
+//
+//@Getter
+//public class SmsSendEvent extends ApplicationEvent {
+// private String phone;
+// /**
+// * Create a new ApplicationEvent.
+// *
+// * @param source the object on which the event initially occurred (never {@code null})
+// */
+// public SmsSendEvent(Object source,String phone) {
+// super(source);
+// this.phone = phone;
+// }
+//}
diff --git a/dm_web/src/main/java/com/ssm/annotation/SmsSendLister.java b/dm_web/src/main/java/com/ssm/annotation/SmsSendLister.java
new file mode 100644
index 0000000..86952a5
--- /dev/null
+++ b/dm_web/src/main/java/com/ssm/annotation/SmsSendLister.java
@@ -0,0 +1,16 @@
+//package com.ssm.annotation;
+//
+//import org.springframework.context.event.EventListener;
+//import org.springframework.stereotype.Component;
+//import org.springframework.transaction.event.TransactionPhase;
+//import org.springframework.transaction.event.TransactionalEventListener;
+//
+//@Component
+//public class SmsSendLister {
+//
+// @EventListener(SmsSendEvent.class)
+// @TransactionalEventListener(value = SmsSendEvent.class,phase = TransactionPhase.AFTER_COMMIT)
+// public void SmsSendLister() {
+// System.out.println("SmsSendLister");
+// }
+//}
diff --git a/dm_web/src/main/java/com/ssm/annotation/SpELUtils.java b/dm_web/src/main/java/com/ssm/annotation/SpELUtils.java
new file mode 100644
index 0000000..6345adf
--- /dev/null
+++ b/dm_web/src/main/java/com/ssm/annotation/SpELUtils.java
@@ -0,0 +1,30 @@
+//package com.ssm.annotation;
+//
+//import org.springframework.core.DefaultParameterNameDiscoverer;
+//import org.springframework.expression.EvaluationContext;
+//import org.springframework.expression.Expression;
+//import org.springframework.expression.ExpressionParser;
+//import org.springframework.expression.spel.standard.SpelExpressionParser;
+//import org.springframework.expression.spel.support.StandardEvaluationContext;
+//
+//import java.lang.reflect.Method;
+//import java.util.Optional;
+//
+//public class SpELUtils {
+// private static final ExpressionParser PARSER = new SpelExpressionParser();
+// private static final DefaultParameterNameDiscoverer PARAMETER_NAME_DISCOVERER = new DefaultParameterNameDiscoverer();
+// public static String getMethodKey(Method method){
+// return method.getDeclaringClass() + "#" + method.getName();
+// }
+//
+// public static String parseSpEl(Method method,Object[] args,String spEL){
+// //获取方法的参数名,可能为空
+// String[] parameterNames = Optional.ofNullable(PARAMETER_NAME_DISCOVERER.getParameterNames(method)).orElse(new String[]{});
+// EvaluationContext context = new StandardEvaluationContext();
+// for (int i = 0; i < parameterNames.length; i++) {
+// context.setVariable(parameterNames[i], args[i]);
+// }
+// Expression expression = PARSER.parseExpression(spEL);
+// return expression.getValue(context,String.class);
+// }
+//}
diff --git a/dm_web/src/main/resources/banner.txt b/dm_web/src/main/resources/banner.txt
new file mode 100644
index 0000000..e0663c9
--- /dev/null
+++ b/dm_web/src/main/resources/banner.txt
@@ -0,0 +1,27 @@
+${AnsiColor.BRIGHT_YELLOW}
+ 鸡你太美
+ 鸡你实在太美
+ 鸡你是太美
+ 鸡你太美
+ 实在是太美鸡你
+ 鸡你 实在是太美鸡你 美
+ 鸡你 实在是太美鸡美 太美
+ 鸡你 实在是太美鸡美 太美
+ 鸡你 实在是太美鸡美 太美
+ 鸡你 鸡你实在是美太美 美蓝球球
+鸡 鸡 鸡你实在是太美 篮球篮球球
+ 鸡 鸡你太美裆鸡太啊 蓝篮球
+ 鸡你太美裆裆鸡美
+ 鸡你美裆 裆鸡美
+ 鸡太美 鸡太美
+ 鸡美 鸡美
+ 鸡美 鸡美
+ 鸡美 鸡美
+ 鸡太 鸡太
+ 金 猴 金猴
+ 皮 鞋 皮鞋金猴
+ 金光 金光 大道
+ 大道
+ 坤坤保佑 永不宕机 永无BUG
+${AnsiColor.BRIGHT_BLUE}
+${AnsiColor.BRIGHT_WHITE}
diff --git a/dm_web/src/main/resources/templates/index.html b/dm_web/src/main/resources/templates/index.html
new file mode 100644
index 0000000..b27f83a
--- /dev/null
+++ b/dm_web/src/main/resources/templates/index.html
@@ -0,0 +1,279 @@
+
+
+
+
+
+测试项目线上发布成功与否
+
+
+
+
+
+
+
+
+
+
+
+
+
+