This commit is contained in:
quantulr
2023-10-29 18:37:44 +08:00
commit 373b3d9dff
1813 changed files with 131892 additions and 0 deletions

76
server/like-admin/pom.xml Normal file
View File

@ -0,0 +1,76 @@
<?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">
<!-- 父工程 -->
<parent>
<artifactId>likeadmin-java</artifactId>
<groupId>org.mdd</groupId>
<version>1.0.0</version>
</parent>
<!-- 模块信息 -->
<modelVersion>4.0.0</modelVersion>
<artifactId>like-admin</artifactId>
<packaging>jar</packaging>
<!-- 项目管理 -->
<dependencies>
<!-- 全局工具 -->
<dependency>
<groupId>org.mdd</groupId>
<artifactId>like-common</artifactId>
</dependency>
<!-- 代码生成 -->
<dependency>
<groupId>org.mdd</groupId>
<artifactId>like-generator</artifactId>
<version>1.0.0</version>
</dependency>
<!-- 验证码 -->
<dependency>
<groupId>com.github.penggle</groupId>
<artifactId>kaptcha</artifactId>
</dependency>
<!-- SaToken -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-boot-starter</artifactId>
</dependency>
<!-- SaToken-Redis -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-dao-redis-jackson</artifactId>
</dependency>
<!-- Quartz-Scheduler -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
</dependency>
</dependencies>
<!-- 插件管理 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.6.4</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,25 @@
package com.mdd.admin;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
* 启动器
*/
@Configuration
@ComponentScan(basePackages = {"com.mdd"})
@MapperScan(basePackages = {"com.mdd.*.mapper"})
@EnableTransactionManagement
@SpringBootApplication(exclude = {RedisRepositoriesAutoConfiguration.class})
public class LikeAdminApplication {
public static void main(String[] args) {
SpringApplication.run(LikeAdminApplication.class, args);
}
}

View File

@ -0,0 +1,214 @@
package com.mdd.admin;
import cn.dev33.satoken.stp.StpUtil;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.mdd.common.aop.NotPower;
import com.mdd.common.aop.NotLogin;
import com.mdd.common.core.AjaxResult;
import com.mdd.common.entity.system.SystemAuthAdmin;
import com.mdd.common.enums.ErrorEnum;
import com.mdd.common.exception.LoginException;
import com.mdd.common.mapper.system.SystemAuthAdminMapper;
import com.mdd.common.util.StringUtils;
import com.mdd.common.util.YmlUtils;
import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.List;
/**
* 拦截器
*/
@Component
public class LikeAdminInterceptor implements HandlerInterceptor {
@Resource
SystemAuthAdminMapper systemAuthAdminMapper;
/**
* 前置处理器
*
* @param request 请求
* @param response 响应
* @param handler 处理
* @return boolean
* @throws Exception 异常
*/
@Override
public boolean preHandle(@NotNull HttpServletRequest request,
@NotNull HttpServletResponse response,
@NotNull Object handler) throws Exception {
// 请求方法类型
String reqUri = request.getRequestURI();
if (!(handler instanceof HandlerMethod) || !reqUri.startsWith("/api")) {
return HandlerInterceptor.super.preHandle(request, response, handler);
}
// 登录权限校验
try {
response.setContentType("application/json;charset=utf-8");
Method method = this.obtainAop(handler);
this.checkLogin(method, reqUri);
} catch (LoginException e) {
AjaxResult<Object> result = AjaxResult.failed(e.getCode(), e.getMsg());
response.getWriter().print(JSON.toJSONString(result));
return false;
}
// 演示环境拦截
String env = YmlUtils.get("like.production");
if (StringUtils.isNotNull(env) && env.equals("true")) {
String prefix = "/api/";
String route = request.getRequestURI().replaceFirst(prefix, "");
String auths = route.replace("/", ":");
List<String> ignoreUrl = Arrays.asList("system:login", "system:logout");
if (request.getMethod().equals("POST") && !ignoreUrl.contains(auths)) {
String message = "演示环境不支持修改数据,请下载源码本地部署体验";
AjaxResult<Object> result = AjaxResult.failed(ErrorEnum.NO_PERMISSION.getCode(), message);
response.getWriter().print(JSON.toJSONString(result));
return false;
}
}
// 验证通过继续
return HandlerInterceptor.super.preHandle(request, response, handler);
}
/**
* 后置处理器
*
* @param request 请求
* @param response 响应
* @param handler 处理
* @param ex 异常
* @throws Exception 异常
*/
@Override
public void afterCompletion(@NotNull HttpServletRequest request,
@NotNull HttpServletResponse response,
@NotNull Object handler, Exception ex) throws Exception {
LikeAdminThreadLocal.remove();
HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
}
/**
* 提取注解
*
* @param handler 处理器
* @return Method
* @throws Exception 异常
*/
private Method obtainAop(@NotNull Object handler) throws Exception {
String[] objArr = handler.toString().split("#");
String methodStr = objArr[1].split("\\(")[0];
String classStr = objArr[0];
Class<?> clazz = Class.forName(classStr);
Method[] methods = clazz.getDeclaredMethods();
for (Method method : methods) {
if (method.getName().equals(methodStr)) {
return method;
}
}
return null;
}
/**
* 登录验证
*
* @param method 方法类
* @author fzr
*/
private void checkLogin(Method method, String reqUri) {
for (int i=0; i<=0; i++) {
// 免登校验
if (StringUtils.isNotNull(method) && method.isAnnotationPresent(NotLogin.class)) {
break;
}
// 令牌校验
String token = StpUtil.getTokenValue();
if (StringUtils.isNull(token) || StringUtils.isBlank(token)) {
Integer errCode = ErrorEnum.TOKEN_EMPTY.getCode();
String errMsg = ErrorEnum.TOKEN_EMPTY.getMsg();
throw new LoginException(errCode, errMsg);
}
// 登录校验
Object id = StpUtil.getLoginId();
if (StringUtils.isNull(id)) {
Integer errCode = ErrorEnum.TOKEN_INVALID.getCode();
String errMsg = ErrorEnum.TOKEN_INVALID.getMsg();
throw new LoginException(errCode, errMsg);
}
// 用户校验
SystemAuthAdmin adminUser = systemAuthAdminMapper.selectOne(
new QueryWrapper<SystemAuthAdmin>()
.select("id,username,role_ids,dept_ids,post_ids,is_disable")
.eq("id", Integer.parseInt(id.toString()))
.eq("is_delete", 0)
.last("limit 1"));
// 删除校验
if (StringUtils.isNull(adminUser)) {
Integer errCode = ErrorEnum.TOKEN_INVALID.getCode();
String errMsg = ErrorEnum.TOKEN_INVALID.getMsg();
throw new LoginException(errCode, errMsg);
}
// 禁用校验
if (adminUser.getIsDisable().equals(1)) {
Integer errCode = ErrorEnum.LOGIN_DISABLE_ERROR.getCode();
String errMsg = ErrorEnum.LOGIN_DISABLE_ERROR.getMsg();
throw new LoginException(errCode, errMsg);
}
// 写入线程
LikeAdminThreadLocal.put("adminId", id);
LikeAdminThreadLocal.put("username", adminUser.getUsername());
LikeAdminThreadLocal.put("roleIds", adminUser.getRoleIds());
LikeAdminThreadLocal.put("deptIds", adminUser.getDeptIds());
LikeAdminThreadLocal.put("postIds", adminUser.getPostIds());
// 权限校验
if (!adminUser.getId().equals(1)) {
this.checkAuth(method, reqUri);
}
}
}
/**
* 权限验证
*
* @param method 方法类
* @param uri 请求路由
* @author fzr
*/
private void checkAuth(Method method, String uri) {
for (int i=0; i<=0; i++) {
// 免权限校验
if (StringUtils.isNotNull(method) && method.isAnnotationPresent(NotPower.class)) {
break;
}
// 路由转权限
String prefix = "/api/";
String route = uri.replaceFirst(prefix, "");
String auths = route.replace("/", ":");
// 校验权限
StpUtil.checkPermission(auths);
}
}
}

View File

@ -0,0 +1,75 @@
package com.mdd.admin;
import com.mdd.common.util.ListUtils;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentSkipListMap;
/**
* 本地线程
*/
public class LikeAdminThreadLocal {
/**
* 构造方法
*/
public LikeAdminThreadLocal() {}
/**
* 取得本地线程对象
*/
private static final java.lang.ThreadLocal<Map<String, Object>> MY_LOCAL = new java.lang.ThreadLocal<>();
/**
* 写入本地线程
*/
public static void put(String key, Object val) {
Map<String, Object> map = MY_LOCAL.get();
if (map == null) {
synchronized (MY_LOCAL) {
map = new ConcurrentSkipListMap<>();
}
}
map.put(key, val);
MY_LOCAL.set(map);
}
/**
* 获取本地线程
*/
public static Object get(String key) {
return MY_LOCAL.get().getOrDefault(key, "");
}
/**
* 获取管理员ID
*/
public static Integer getAdminId() {
String adminId = LikeAdminThreadLocal.get("adminId").toString();
if (adminId.equals("")) {
return 0;
}
return Integer.parseInt(adminId);
}
/**
* 获取角色ID
*/
public static List<Integer> getRoleIds() {
String roleIds = LikeAdminThreadLocal.get("roleIds").toString();
if (roleIds.equals("") || roleIds.equals("0")) {
return Collections.emptyList();
}
return ListUtils.stringToListAsInt(roleIds, ",");
}
/**
* 删除本地线程
*/
public static void remove() {
MY_LOCAL.remove();
}
}

View File

@ -0,0 +1,29 @@
package com.mdd.admin.aop;
import com.mdd.admin.aop.aspect.RequestType;
import java.lang.annotation.*;
/**
* 日志记录类
*/
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Log {
/**
* 模块名称
*
* @return String
*/
String title() default "";
/**
* 请求类型
*
* @return String
*/
RequestType requestType() default RequestType.Default;
}

View File

@ -0,0 +1,170 @@
package com.mdd.admin.aop.aspect;
import com.alibaba.fastjson2.JSON;
import com.mdd.admin.LikeAdminThreadLocal;
import com.mdd.admin.aop.Log;
import com.mdd.common.entity.system.SystemLogOperate;
import com.mdd.common.mapper.system.SystemLogOperateMapper;
import com.mdd.common.util.IpUtils;
import com.mdd.common.util.RequestUtils;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.support.StandardMultipartHttpServletRequest;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Method;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.stream.Collectors;
@Aspect
@Component
public class LogAspect {
@Resource
SystemLogOperateMapper systemLogOperateMapper;
private static final Logger log = LoggerFactory.getLogger(LogAspect.class);
/**
* 线程本地变量
*/
private static final ThreadLocal<Long> threadLocal = new ThreadLocal<>();
/**
* 单线程化的线程池
*/
private final ExecutorService executor = Executors.newSingleThreadExecutor();
/**
* 声明切面点拦截那些类
*/
@Pointcut("@annotation(com.mdd.admin.aop.Log)")
private void pointCutMethodController() {}
/**
* 环绕通知前后增强
*/
@Around(value = "pointCutMethodController()")
public Object doAroundService(ProceedingJoinPoint joinPoint) throws Throwable {
// 开始时间
threadLocal.set(System.currentTimeMillis());
// 执行方法
Object result = joinPoint.proceed();
// 保存日志
recordLog(joinPoint, null);
// 返回结果
return result;
}
/**
* 拦截异常操作
*
* @param joinPoint 切点
* @param e 异常
*/
@AfterThrowing(value = "@annotation(controllerLog)", throwing = "e")
public void doAfterThrowing(JoinPoint joinPoint, Log controllerLog, Exception e) {
recordLog(joinPoint, e);
}
/**
* 记录日志信息
*
* @param joinPointObj joinPoint
* @param e Exception 错误异常
*/
private void recordLog(Object joinPointObj, final Exception e) {
try {
long beginTime = threadLocal.get();
long endTime = System.currentTimeMillis();
ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
if (requestAttributes != null) {
// 取得请求对象
HttpServletRequest request = requestAttributes.getRequest();
// 获取当前的用户
Integer adminId = LikeAdminThreadLocal.getAdminId();
// 获取日志注解
ProceedingJoinPoint joinPoint = (ProceedingJoinPoint) joinPointObj;
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
Method method = signature.getMethod();
Log logAnnotation = method.getAnnotation(Log.class);
// 方法名称
String className = joinPoint.getTarget().getClass().getName();
String methodName = joinPoint.getSignature().getName();
// 获取请求参数
String queryString = request.getQueryString();
Object[] args = joinPoint.getArgs();
String params = "";
if (args.length > 0) {
if("POST".equals(request.getMethod())){
if (RequestType.File.equals(logAnnotation.requestType())){
//文件类型获取文件名称作为参数
StandardMultipartHttpServletRequest standardMultipartHttpServletRequest = (StandardMultipartHttpServletRequest) args[0];
//提取文件名
params = standardMultipartHttpServletRequest
.getMultiFileMap()
.values()
.stream()
.map(m -> m.stream()
.map(MultipartFile::getOriginalFilename)
.collect(Collectors.joining(",")))
.collect(Collectors.joining(","));
} else {
params = JSON.toJSONString(args);
}
} else if("GET".equals(request.getMethod())){
params = queryString;
}
}
// 错误信息
String error = "";
int status = 1;
if (e != null) {
error = e.getMessage();
status = 2; // 1=成功, 2=失败
}
// 数据库日志
SystemLogOperate model = new SystemLogOperate();
model.setAdminId(adminId);
model.setTitle(logAnnotation.title());
model.setIp(IpUtils.getIpAddress());
model.setType(request.getMethod());
model.setMethod(className + "." + methodName + "()");
model.setUrl(RequestUtils.route());
model.setArgs(params);
model.setError(error);
model.setStatus(status);
model.setStartTime(beginTime / 1000);
model.setEndTime(endTime / 1000);
model.setTaskTime(endTime - beginTime);
model.setCreateTime(System.currentTimeMillis() / 1000);
executor.submit(() -> {
systemLogOperateMapper.insert(model);
});
}
} catch (Exception ex) {
log.error("异常信息:{}", ex.getMessage());
}
}
}

View File

@ -0,0 +1,16 @@
package com.mdd.admin.aop.aspect;
/**
* 请求参数类
*/
public enum RequestType {
/**
* 文件类型
*/
File,
/**
* 默认数据类型
*/
Default
}

View File

@ -0,0 +1,31 @@
package com.mdd.admin.cache;
import com.mdd.common.util.*;
/**
* 验证码缓存器
*/
public class CaptchaCache {
public static String get(String uuid) {
String ip = IpUtils.getIpAddress().replaceAll("\\.", "");
String captchaKey = YmlUtils.get("like.captcha.token") + ip + ":" + uuid;
Object code = RedisUtils.get(captchaKey);
if (StringUtils.isNull(code) || StringUtils.isEmpty(code.toString())) {
return "";
}
RedisUtils.del(captchaKey);
return code.toString();
}
public static void set(String code, String uuid) {
String ip = IpUtils.getIpAddress().replaceAll("\\.", "");
String verifyKey = YmlUtils.get("like.captcha.token") + ip + ":" + uuid;
long expireTime = Long.parseLong(YmlUtils.get("like.captcha.expire"));
RedisUtils.set(verifyKey, code.toLowerCase(), expireTime);
}
}

View File

@ -0,0 +1,45 @@
package com.mdd.admin.config;
import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Properties;
import static com.google.code.kaptcha.Constants.*;
/**
* 验证码配置
*/
@Configuration
public class KaptChaConfig {
@Bean(name = "captchaProducer")
public DefaultKaptcha getKaptchaBean() {
DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
Properties properties = new Properties();
// 是否边框
properties.setProperty(KAPTCHA_BORDER, "yes");
// 字符颜色
properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_COLOR, "black");
// 图片宽度
properties.setProperty(KAPTCHA_IMAGE_WIDTH, "160");
// 图片高度
properties.setProperty(KAPTCHA_IMAGE_HEIGHT, "60");
// 字符大小
properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_SIZE, "38");
// 验证键码
properties.setProperty(KAPTCHA_SESSION_CONFIG_KEY, "kaptchaCode");
// 字符长度
properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "4");
// 字体样式
properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_NAMES, "Arial,Courier");
// 图片样式
properties.setProperty(KAPTCHA_OBSCURIFICATOR_IMPL, "com.google.code.kaptcha.impl.ShadowGimpy");
Config config = new Config(properties);
defaultKaptcha.setConfig(config);
return defaultKaptcha;
}
}

View File

@ -0,0 +1,24 @@
package com.mdd.admin.config;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* MybatisPlus配置
*/
@Configuration
public class MybatisPlusConfig {
/**
* 分页插件集成
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return interceptor;
}
}

View File

@ -0,0 +1,49 @@
package com.mdd.admin.config;
import com.mdd.common.config.GlobalConfig;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.oas.annotations.EnableOpenApi;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
@Configuration
@EnableOpenApi
public class SwaggerConfig {
@Value("${like.swagger.enabled}")
private boolean enabled;
@Value("${like.swagger.pathMapping}")
private String pathMapping;
@Bean
public Docket createRestApi(){
return new Docket(DocumentationType.OAS_30)
.apiInfo(apiInfo())
.enable(enabled)
.select()
.apis(RequestHandlerSelectors.basePackage("com.mdd.admin.controller"))
.build()
.pathMapping(pathMapping);
}
private ApiInfo apiInfo(){
String author = "FZR";
String url = "https://gitee.com/likeadmin/likeadmin_java";
String email = "tinyants@163.com";
return new ApiInfoBuilder()
.title("LikeAdmin【后台】接口文档")
.description("likeadmin是一套使用流行的技术栈的快速开发管理后台")
.version(GlobalConfig.version)
.contact(new Contact(author, url, email))
.build();
}
}

View File

@ -0,0 +1,55 @@
package com.mdd.admin.config;
import com.mdd.admin.LikeAdminInterceptor;
import com.mdd.common.config.GlobalConfig;
import com.mdd.common.util.YmlUtils;
import org.jetbrains.annotations.NotNull;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import javax.annotation.Resource;
/**
* Web配置
*/
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Resource
LikeAdminInterceptor likeAdminInterceptor;
/**
* 配置允许跨域
*/
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedHeaders("*")
.allowedMethods("GET", "POST", "DELETE", "PUT")
.maxAge(3600);
}
/**
* 登录拦截器
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(likeAdminInterceptor)
.addPathPatterns("/**");
}
/**
* 资源目录映射
*/
@Override
public void addResourceHandlers(@NotNull ResourceHandlerRegistry registry) {
String directory = YmlUtils.get("like.upload-directory");
registry.addResourceHandler("/"+ GlobalConfig.publicPrefix +"/**")
.addResourceLocations("file:" + directory);
}
}

View File

@ -0,0 +1,54 @@
package com.mdd.admin.config.quartz;
import org.quartz.CronExpression;
import java.text.ParseException;
import java.util.Date;
/**
* 表达式工具
*/
public class CronUtils {
/**
* 验证表达式是否有效
*
* @param cronExpression 表达式
* @return true=有效,false=无效
*/
public static boolean isValid(String cronExpression) {
return CronExpression.isValidExpression(cronExpression);
}
/**
* 验证表达式消息无效给出有效性
*
* @param cronExpression 表达式
* @return null=有效, 其它=无效时的错误描述
*/
public static String invalidMessage(String cronExpression) {
try {
new CronExpression(cronExpression);
return null;
} catch (ParseException pe) {
return pe.getMessage();
}
}
/**
* 下一个执行时间点
*
* @param cronExpression n表达式
* @return Date下次表达式执行时间
*/
public static Date nextExecution(String cronExpression)
{
try {
CronExpression cron = new CronExpression(cronExpression);
return cron.getNextValidTimeAfter(new Date(System.currentTimeMillis()));
} catch (ParseException e) {
throw new IllegalArgumentException(e.getMessage());
}
}
}

View File

@ -0,0 +1,152 @@
package com.mdd.admin.config.quartz;
import com.mdd.common.entity.Crontab;
import com.mdd.common.util.SpringUtils;
import com.mdd.common.util.StringUtils;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.LinkedList;
import java.util.List;
/**
* 执行工具
*/
public class InvokeUtils {
/**
* 执行方法
*
* @param crontab 系统任务
*/
public static void invokeMethod(Crontab crontab) throws Exception {
String invokeTarget = crontab.getCommand();
String beanName = getBeanName(invokeTarget);
String methodName = getMethodName(invokeTarget);
List<Object[]> methodParams = getMethodParams(invokeTarget);
if (!isValidClassName(beanName)) {
Object bean = SpringUtils.getBean(beanName);
invokeMethod(bean, methodName, methodParams);
} else {
Object bean = Class.forName(beanName).newInstance();
invokeMethod(bean, methodName, methodParams);
}
}
/**
* 调用任务方法
*
* @param bean 目标对象
* @param methodName 方法名称
* @param methodParams 方法参数
*/
private static void invokeMethod(Object bean, String methodName, List<Object[]> methodParams)
throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException,
InvocationTargetException {
if (StringUtils.isNotNull(methodParams) && methodParams.size() > 0) {
Method method = bean.getClass().getMethod(methodName, getMethodParamsType(methodParams));
method.invoke(bean, getMethodParamsValue(methodParams));
} else {
Method method = bean.getClass().getMethod(methodName);
method.invoke(bean);
}
}
/**
* 校验是否为为class包名
*
* @param invokeTarget 名称
* @return true是 false否
*/
public static boolean isValidClassName(String invokeTarget) {
return StringUtils.countMatches(invokeTarget, ".") > 1;
}
/**
* 获取bean名称
*
* @param invokeTarget 目标字符串
* @return bean名称
*/
public static String getBeanName(String invokeTarget) {
String beanName = StringUtils.substringBefore(invokeTarget, "(");
return StringUtils.substringBeforeLast(beanName, ".");
}
/**
* 获取bean方法
*
* @param invokeTarget 目标字符串
* @return method方法
*/
public static String getMethodName(String invokeTarget) {
String methodName = StringUtils.substringBefore(invokeTarget, "(");
return StringUtils.substringAfterLast(methodName, ".");
}
/**
* 获取method方法参数相关列表
*
* @param invokeTarget 目标字符串
* @return method方法相关参数列表
*/
public static List<Object[]> getMethodParams(String invokeTarget) {
String methodStr = StringUtils.substringBetween(invokeTarget, "(", ")");
if (StringUtils.isEmpty(methodStr)) {
return null;
}
String[] methodParams = methodStr.split(",(?=([^\"']*[\"'][^\"']*[\"'])*[^\"']*$)");
List<Object[]> clazz = new LinkedList<>();
for (String methodParam : methodParams) {
String str = StringUtils.trimToEmpty(methodParam);
if (StringUtils.startsWithAny(str, "'", "\"")) {
clazz.add(new Object[]{StringUtils.substring(str, 1, str.length() - 1), String.class});
} else if ("true".equalsIgnoreCase(str) || "false".equalsIgnoreCase(str)) {
clazz.add(new Object[]{Boolean.valueOf(str), Boolean.class});
} else if (StringUtils.endsWith(str, "L")) {
clazz.add(new Object[]{Long.valueOf(StringUtils.substring(str, 0, str.length() - 1)), Long.class});
} else if (StringUtils.endsWith(str, "D")) {
clazz.add(new Object[]{Double.valueOf(StringUtils.substring(str, 0, str.length() - 1)), Double.class});
} else {
clazz.add(new Object[]{Integer.valueOf(str), Integer.class});
}
}
return clazz;
}
/**
* 获取参数类型
*
* @param methodParams 参数相关列表
* @return 参数类型列表
*/
public static Class<?>[] getMethodParamsType(List<Object[]> methodParams) {
Class<?>[] clazz = new Class<?>[methodParams.size()];
int index = 0;
for (Object[] os : methodParams)
{
clazz[index] = (Class<?>) os[1];
index++;
}
return clazz;
}
/**
* 获取参数值
*
* @param methodParams 参数相关列表
* @return 参数值列表
*/
public static Object[] getMethodParamsValue(List<Object[]> methodParams) {
Object[] clazz = new Object[methodParams.size()];
int index = 0;
for (Object[] os : methodParams) {
clazz[index] = os[0];
index++;
}
return clazz;
}
}

View File

@ -0,0 +1,104 @@
package com.mdd.admin.config.quartz;
import com.mdd.admin.config.quartz.exceution.QuartzDisExecution;
import com.mdd.admin.config.quartz.exceution.QuartzJobExecution;
import com.mdd.common.entity.Crontab;
import com.mdd.common.util.StringUtils;
import org.quartz.*;
/**
* 计划任务工具
*/
public class QuartzUtils {
/**
* 得到quartz任务类
*
* @param crontab 执行计划
* @return 具体执行任务类
*/
private static Class<? extends Job> getQuartzJobClass(Crontab crontab) {
boolean isConcurrent = crontab.getConcurrent().equals(0);
return isConcurrent ? QuartzJobExecution.class : QuartzDisExecution.class;
}
/**
* 构建任务对象Key
*
* @param jobId (任务ID)
* @param jobGroup (任务分组)
* @return JobKey
*/
public static JobKey getJobKey(Integer jobId, String jobGroup) {
return JobKey.jobKey(TaskConstants.TASK_CLASS_NAME + jobId, jobGroup);
}
/**
* 构建触发对象Key
*
* @param jobId (任务ID)
* @param jobGroup (任务分组)
* @return TriggerKey
*/
public static TriggerKey getTriggerKey(Integer jobId, String jobGroup) {
return TriggerKey.triggerKey(TaskConstants.TASK_PROPERTIES + jobId, jobGroup);
}
/**
* 创建定时任务
*
* @param scheduler 调度器
* @param job 任务
* @throws SchedulerException 调度异常
*/
public static void createScheduleJob(Scheduler scheduler, Crontab job) throws SchedulerException {
Integer jobId = job.getId();
String jobGroup = job.getTypes();
String expression = job.getRules();
// 构建任务
Class<? extends Job> jobClass = getQuartzJobClass(job);
JobDetail jobDetail = JobBuilder.newJob(jobClass)
.withIdentity(getJobKey(jobId, jobGroup))
.build();
// 构建时间
CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(expression);
switch (job.getStrategy()) {
case 1: // 立即执行
cronScheduleBuilder = cronScheduleBuilder.withMisfireHandlingInstructionIgnoreMisfires();
break;
case 2: // 执行一次
cronScheduleBuilder = cronScheduleBuilder.withMisfireHandlingInstructionFireAndProceed();
break;
case 3: // 放弃执行
cronScheduleBuilder = cronScheduleBuilder.withMisfireHandlingInstructionDoNothing();
break;
}
// 注入参数
jobDetail.getJobDataMap().put(TaskConstants.TASK_PROPERTIES, job);
// 构建目标
CronTrigger trigger = TriggerBuilder.newTrigger()
.withIdentity(getTriggerKey(jobId, jobGroup))
.withSchedule(cronScheduleBuilder)
.build();
// 如果存在则删除
if (scheduler.checkExists(getJobKey(jobId, jobGroup))) {
scheduler.deleteJob(getJobKey(jobId, jobGroup));
}
// 如果过期则调度
if (StringUtils.isNotNull(CronUtils.nextExecution(job.getRules()))) {
scheduler.scheduleJob(jobDetail, trigger);
}
// 如果暂停则停止
if (!job.getStatus().equals(TaskConstants.STATUS_RUN)) {
scheduler.pauseJob(getJobKey(jobId, jobGroup));
}
}
}

View File

@ -0,0 +1,20 @@
package com.mdd.admin.config.quartz;
/**
* 计划任务常量
*/
public class TaskConstants {
/** 执行任务名 */
public static final String TASK_CLASS_NAME = "TASK_CLASS_NAME";
/** 执行目标键 */
public static final String TASK_PROPERTIES = "TASK_PROPERTIES";
/** 状态: 运行 */
public static final Integer STATUS_RUN = 1;
/** 状态: 失败 */
public static final Integer STATUS_FAIL = 2;
}

View File

@ -0,0 +1,81 @@
package com.mdd.admin.config.quartz.exceution;
import com.mdd.admin.config.quartz.TaskConstants;
import com.mdd.common.entity.Crontab;
import com.mdd.common.mapper.CrontabMapper;
import com.mdd.common.util.SpringUtils;
import com.mdd.common.util.StringUtils;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
public abstract class AbstractQuartzJob implements Job {
private static final Logger log = LoggerFactory.getLogger(AbstractQuartzJob.class);
/**
* 线程本地变量
*/
private static final ThreadLocal<Long> threadLocal = new ThreadLocal<>();
/**
* 执行
*
* @param context 上下文
*/
@Override
public void execute(JobExecutionContext context) {
Crontab crontab = new Crontab();
BeanUtils.copyProperties(context.getMergedJobDataMap().get(TaskConstants.TASK_PROPERTIES), crontab);
try {
before();
doExecute(context, crontab);
after(crontab, null);
} catch (Exception e) {
log.error("任务执行异常:", e);
after(crontab, e);
}
}
/**
* 执行前
*/
protected void before() {
threadLocal.set(System.currentTimeMillis());
}
/**
* 执行后
*
* @param crontab 系统计划任务
*/
protected void after(Crontab crontab, Exception e)
{
long startTime = threadLocal.get();
long endTime = System.currentTimeMillis();
threadLocal.remove();
crontab.setError("");
crontab.setStartTime(startTime / 1000);
crontab.setEndTime(endTime / 1000);
crontab.setTaskTime(endTime - startTime);
if (StringUtils.isNotNull(e)) {
crontab.setError(e.getMessage());
crontab.setStatus(TaskConstants.STATUS_FAIL);
}
SpringUtils.getBean(CrontabMapper.class).updateById(crontab);
}
/**
* 执行方法
*
* @param context 工作执行上下文对象
* @param sysJob 系统计划任务
* @throws Exception 执行过程中的异常
*/
protected abstract void doExecute(JobExecutionContext context, Crontab sysJob) throws Exception;
}

View File

@ -0,0 +1,19 @@
package com.mdd.admin.config.quartz.exceution;
import com.mdd.admin.config.quartz.InvokeUtils;
import com.mdd.common.entity.Crontab;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext;
/**
* 禁止并发任务
*/
@DisallowConcurrentExecution
public class QuartzDisExecution extends AbstractQuartzJob {
@Override
protected void doExecute(JobExecutionContext context, Crontab crontab) throws Exception {
InvokeUtils.invokeMethod(crontab);
}
}

View File

@ -0,0 +1,17 @@
package com.mdd.admin.config.quartz.exceution;
import com.mdd.admin.config.quartz.InvokeUtils;
import com.mdd.common.entity.Crontab;
import org.quartz.JobExecutionContext;
/**
* 允许并发任务
*/
public class QuartzJobExecution extends AbstractQuartzJob {
@Override
protected void doExecute(JobExecutionContext context, Crontab crontab) throws Exception {
InvokeUtils.invokeMethod(crontab);
}
}

View File

@ -0,0 +1,42 @@
package com.mdd.admin.config.stp;
import cn.dev33.satoken.exception.NotLoginException;
import cn.dev33.satoken.exception.NotPermissionException;
import com.mdd.common.core.AjaxResult;
import com.mdd.common.enums.ErrorEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
/**
* Sa-Token的异常拦截
*/
@Slf4j
@ControllerAdvice
public class StpInException {
/**
* 拦截登录异常
*/
@ResponseStatus(HttpStatus.OK)
@ExceptionHandler(NotLoginException.class)
@ResponseBody
public AjaxResult<Object> handleNotLoginException(NotLoginException e){
String msg = e.getMessage().startsWith("Token无效") ? "尚未登录,请先登录!" : e.getMessage();
return AjaxResult.failed(ErrorEnum.TOKEN_INVALID.getCode(), msg);
}
/**
* 拦截权限异常
*/
@ResponseStatus(HttpStatus.OK)
@ExceptionHandler(NotPermissionException.class)
@ResponseBody
public AjaxResult<Object> handleNotPermissionException(){
return AjaxResult.failed(ErrorEnum.NO_PERMISSION.getCode(), ErrorEnum.NO_PERMISSION.getMsg());
}
}

View File

@ -0,0 +1,87 @@
package com.mdd.admin.config.stp;
import cn.dev33.satoken.stp.StpInterface;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.mdd.admin.LikeAdminThreadLocal;
import com.mdd.common.entity.system.SystemAuthMenu;
import com.mdd.common.entity.system.SystemAuthPerm;
import com.mdd.common.mapper.system.SystemAuthMenuMapper;
import com.mdd.common.mapper.system.SystemAuthPermMapper;
import com.mdd.common.util.StringUtils;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.*;
/**
* Sa-Token自定义权限验证接口
*/
@Component
public class StpInterConfig implements StpInterface {
@Resource
SystemAuthPermMapper systemAuthPermMapper;
@Resource
SystemAuthMenuMapper systemAuthMenuMapper;
/**
* 返回一个账号所拥有的权限码集合
*
* @param loginId 登录ID
* @param loginType 登录类型
* @return List<String>
*/
@Override
public List<String> getPermissionList(Object loginId, String loginType) {
List<Integer> roleIds = LikeAdminThreadLocal.getRoleIds();
List<String> perms = new LinkedList<>();
if (roleIds.isEmpty()) {
return perms;
}
List<SystemAuthPerm> permList = systemAuthPermMapper.selectList(
new QueryWrapper<SystemAuthPerm>()
.select("id,role_id,menu_id")
.in("role_id", roleIds));
if (permList.isEmpty()) {
return perms;
}
List<Integer> menuIds = new LinkedList<>();
for (SystemAuthPerm systemAuthPerm : permList) {
menuIds.add(systemAuthPerm.getMenuId());
}
List<SystemAuthMenu> systemAuthMenus = systemAuthMenuMapper.selectList(
new QueryWrapper<SystemAuthMenu>()
.select("id,perms")
.eq("is_disable", 0)
.in("id", menuIds)
.in("menu_type", Arrays.asList("C", "A"))
.orderByAsc(Arrays.asList("menu_sort", "id")));
for (SystemAuthMenu item : systemAuthMenus) {
if (StringUtils.isNotNull(item.getPerms()) && StringUtils.isNotEmpty(item.getPerms())) {
perms.add(item.getPerms().trim());
}
}
return perms;
}
/**
* 返回一个账号所拥有的角色标识集合
*
* @param loginId 登录ID
* @param loginType 登录类型
* @return List<String>
*/
@Override
public List<String> getRoleList(Object loginId, String loginType) {
return null;
}
}

View File

@ -0,0 +1,94 @@
package com.mdd.admin.controller;
import com.alibaba.fastjson2.JSONArray;
import com.mdd.admin.aop.Log;
import com.mdd.admin.service.IAlbumsService;
import com.mdd.admin.validate.album.AlbumCateValidate;
import com.mdd.admin.validate.album.AlbumMoveValidate;
import com.mdd.admin.validate.album.AlbumRenameValidate;
import com.mdd.admin.validate.album.AlbumSearchValidate;
import com.mdd.admin.validate.commons.IdValidate;
import com.mdd.admin.validate.commons.IdsValidate;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.vo.album.AlbumVo;
import com.mdd.common.core.AjaxResult;
import com.mdd.common.core.PageResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@RequestMapping("api/albums")
@Api(tags = "相册数据管理")
public class AlbumsController {
@Resource
IAlbumsService iAlbumsService;
@GetMapping("/albumList")
@ApiOperation(value="相册文件列表")
public AjaxResult<PageResult<AlbumVo>> albumList(@Validated PageValidate pageValidate,
@Validated AlbumSearchValidate searchValidate) {
PageResult<AlbumVo> voPageResult = iAlbumsService.albumList(pageValidate, searchValidate);
return AjaxResult.success(voPageResult);
}
@Log(title = "相册文件重命名")
@PostMapping("/albumRename")
@ApiOperation(value="相册文件重命名")
public AjaxResult<Object> albumRename(@Validated @RequestBody AlbumRenameValidate renameValidate) {
iAlbumsService.albumRename(renameValidate.getId(), renameValidate.getName());
return AjaxResult.success();
}
@Log(title = "相册文件移动")
@PostMapping("/albumMove")
@ApiOperation(value="相册文件移动")
public AjaxResult<Object> albumMove(@Validated @RequestBody AlbumMoveValidate moveValidate) {
iAlbumsService.albumMove(moveValidate.getIds(), moveValidate.getCid());
return AjaxResult.success();
}
@Log(title = "相册文件删除")
@PostMapping("/albumDel")
@ApiOperation(value="相册文件删除")
public AjaxResult<Object> albumDel(@Validated @RequestBody IdsValidate idsValidate) {
iAlbumsService.albumDel(idsValidate.getIds());
return AjaxResult.success();
}
@GetMapping("/cateList")
@ApiOperation(value="相册分类列表")
public AjaxResult<JSONArray> cateList(@Validated AlbumSearchValidate searchValidate) {
JSONArray jsonArray = iAlbumsService.cateList(searchValidate);
return AjaxResult.success(jsonArray);
}
@Log(title = "相册分类新增")
@PostMapping("/cateAdd")
@ApiOperation(value="相册分类新增")
public AjaxResult<Object> cateAdd(@Validated @RequestBody AlbumCateValidate cateValidate) {
iAlbumsService.cateAdd(cateValidate);
return AjaxResult.success();
}
@Log(title = "相册分类重命名")
@PostMapping("/cateRename")
@ApiOperation(value="相册分类重命名")
public AjaxResult<Object> cateRename(@Validated @RequestBody AlbumRenameValidate renameValidate) {
iAlbumsService.cateRename(renameValidate.getId(), renameValidate.getName());
return AjaxResult.success();
}
@Log(title = "相册分类删除")
@PostMapping("/cateDel")
@ApiOperation(value="相册分类删除")
public AjaxResult<Object> cateDel(@Validated @RequestBody IdValidate idValidate) {
iAlbumsService.cateDel(idValidate.getId());
return AjaxResult.success();
}
}

View File

@ -0,0 +1,86 @@
package com.mdd.admin.controller;
import com.mdd.admin.aop.Log;
import com.mdd.common.aop.NotPower;
import com.mdd.admin.service.IArtCateService;
import com.mdd.admin.validate.article.ArtCateCreateValidate;
import com.mdd.admin.validate.article.ArtCateUpdateValidate;
import com.mdd.admin.validate.article.ArtCateSearchValidate;
import com.mdd.admin.validate.commons.IdValidate;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.vo.article.ArticleCateVo;
import com.mdd.common.core.AjaxResult;
import com.mdd.common.core.PageResult;
import com.mdd.common.validator.annotation.IDMust;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@RestController
@RequestMapping("api/article/cate")
@Api(tags = "文章分类管理")
public class ArtCateController {
@Resource
IArtCateService iArtCateService;
@NotPower
@GetMapping("/all")
@ApiOperation(value="所有分类")
public AjaxResult<List<ArticleCateVo>> all() {
List<ArticleCateVo> list = iArtCateService.all();
return AjaxResult.success(list);
}
@GetMapping("/list")
@ApiOperation(value="分类列表")
public AjaxResult<PageResult<ArticleCateVo>> list(@Validated PageValidate pageValidate,
@Validated ArtCateSearchValidate searchValidate) {
PageResult<ArticleCateVo> list = iArtCateService.list(pageValidate, searchValidate);
return AjaxResult.success(list);
}
@GetMapping("/detail")
@ApiOperation(value="分类详情")
public AjaxResult<ArticleCateVo> detail(@Validated @IDMust() @RequestParam("id") Integer id) {
ArticleCateVo vo = iArtCateService.detail(id);
return AjaxResult.success(vo);
}
@Log(title = "文章分类新增")
@PostMapping("/add")
@ApiOperation(value="分类新增")
public AjaxResult<Object> add(@Validated @RequestBody ArtCateCreateValidate createValidate) {
iArtCateService.add(createValidate);
return AjaxResult.success();
}
@Log(title = "文章分类编辑")
@PostMapping("/edit")
@ApiOperation(value="分类编辑")
public AjaxResult<Object> edit(@Validated @RequestBody ArtCateUpdateValidate updateValidate) {
iArtCateService.edit(updateValidate);
return AjaxResult.success();
}
@Log(title = "文章分类删除")
@PostMapping("/del")
@ApiOperation(value="分类删除")
public AjaxResult<Object> del(@Validated @RequestBody IdValidate idValidate) {
iArtCateService.del(idValidate.getId());
return AjaxResult.success();
}
@Log(title = "文章分类状态")
@PostMapping("/change")
@ApiOperation(value="分类状态")
public AjaxResult<Object> change(@Validated @RequestBody IdValidate idValidate) {
iArtCateService.change(idValidate.getId());
return AjaxResult.success();
}
}

View File

@ -0,0 +1,78 @@
package com.mdd.admin.controller;
import com.mdd.admin.aop.Log;
import com.mdd.admin.service.IArticleService;
import com.mdd.admin.validate.article.ArticleCreateValidate;
import com.mdd.admin.validate.article.ArticleSearchValidate;
import com.mdd.admin.validate.article.ArticleUpdateValidate;
import com.mdd.admin.validate.commons.IdValidate;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.vo.article.ArticleDetailVo;
import com.mdd.admin.vo.article.ArticleListedVo;
import com.mdd.common.core.AjaxResult;
import com.mdd.common.core.PageResult;
import com.mdd.common.validator.annotation.IDMust;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@RequestMapping("api/article")
@Api(tags = "文章数据管理")
public class ArticleController {
@Resource
IArticleService iArticleService;
@GetMapping("/list")
@ApiOperation(value="文章列表")
public AjaxResult<PageResult<ArticleListedVo>> list(@Validated PageValidate pageValidate,
@Validated ArticleSearchValidate searchValidate) {
PageResult<ArticleListedVo> vos = iArticleService.list(pageValidate, searchValidate);
return AjaxResult.success(vos);
}
@GetMapping("/detail")
@ApiOperation(value="文章详情")
public AjaxResult<ArticleDetailVo> detail(@Validated @IDMust() @RequestParam("id") Integer id) {
ArticleDetailVo vo = iArticleService.detail(id);
return AjaxResult.success(vo);
}
@Log(title = "文章新增")
@PostMapping("/add")
@ApiOperation(value="文章新增")
public AjaxResult<Object> add(@Validated @RequestBody ArticleCreateValidate createValidate) {
iArticleService.add(createValidate);
return AjaxResult.success();
}
@Log(title = "文章编辑")
@PostMapping("/edit")
@ApiOperation(value="文章编辑")
public AjaxResult<Object> edit(@Validated @RequestBody ArticleUpdateValidate updateValidate) {
iArticleService.edit(updateValidate);
return AjaxResult.success();
}
@Log(title = "文章删除")
@PostMapping("/del")
@ApiOperation(value="文章删除")
public AjaxResult<Object> del(@Validated @RequestBody IdValidate idValidate) {
iArticleService.del(idValidate.getId());
return AjaxResult.success();
}
@Log(title = "文章状态")
@PostMapping("/change")
@ApiOperation(value="文章状态")
public AjaxResult<Object> change(@Validated @RequestBody IdValidate idValidate) {
iArticleService.change(idValidate.getId());
return AjaxResult.success();
}
}

View File

@ -0,0 +1,68 @@
package com.mdd.admin.controller;
import com.mdd.admin.aop.Log;
import com.mdd.admin.service.ICrontabService;
import com.mdd.admin.validate.crontab.CrontabCreateValidate;
import com.mdd.admin.validate.crontab.CrontabUpdateValidate;
import com.mdd.admin.validate.commons.IdValidate;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.vo.CrontabDetailVo;
import com.mdd.admin.vo.CrontabListedVo;
import com.mdd.common.core.AjaxResult;
import com.mdd.common.core.PageResult;
import com.mdd.common.validator.annotation.IDMust;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.quartz.SchedulerException;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@RequestMapping("api/crontab")
@Api(tags = "计划任务管理")
public class CrontabController {
@Resource
ICrontabService iCrontabService;
@GetMapping("/list")
@ApiOperation(value="计划任务列表")
public AjaxResult< PageResult<CrontabListedVo>> list(@Validated PageValidate pageValidate) {
PageResult<CrontabListedVo> list = iCrontabService.list(pageValidate);
return AjaxResult.success(list);
}
@GetMapping("/detail")
@ApiOperation(value="计划任务详情")
public AjaxResult<Object> detail(@Validated @IDMust() @RequestParam("id") Integer id) {
CrontabDetailVo vo = iCrontabService.detail(id);
return AjaxResult.success(vo);
}
@Log(title = "计划任务新增")
@PostMapping("/add")
@ApiOperation(value="计划任务新增")
public AjaxResult<Object> add(@Validated @RequestBody CrontabCreateValidate createValidate) throws SchedulerException {
iCrontabService.add(createValidate);
return AjaxResult.success();
}
@Log(title = "计划任务编辑")
@PostMapping("/edit")
@ApiOperation(value="计划任务编辑")
public AjaxResult<Object> edit(@Validated @RequestBody CrontabUpdateValidate updateValidate) throws SchedulerException {
iCrontabService.edit(updateValidate);
return AjaxResult.success();
}
@Log(title = "计划任务删除")
@PostMapping("/del")
@ApiOperation(value="计划任务删除")
public AjaxResult<Object> del(@Validated @RequestBody IdValidate idValidate) throws SchedulerException {
iCrontabService.del(idValidate.getId());
return AjaxResult.success();
}
}

View File

@ -0,0 +1,40 @@
package com.mdd.admin.controller;
import com.mdd.common.aop.NotLogin;
import com.mdd.admin.service.IIndexService;
import com.mdd.common.core.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.Map;
@Slf4j
@RestController
@RequestMapping("api/index")
@Api(tags = "主页数据管理")
public class IndexController {
@Resource
IIndexService iIndexService;
@GetMapping("/console")
@ApiOperation(value="控制台")
public AjaxResult<Map<String, Object>> console() {
Map<String, Object> map = iIndexService.console();
return AjaxResult.success(map);
}
@NotLogin
@GetMapping("/config")
@ApiOperation(value="公共配置")
public AjaxResult<Map<String, Object>> config() {
Map<String, Object> map = iIndexService.config();
return AjaxResult.success(map);
}
}

View File

@ -0,0 +1,100 @@
package com.mdd.admin.controller;
import com.mdd.admin.LikeAdminThreadLocal;
import com.mdd.admin.aop.Log;
import com.mdd.admin.aop.aspect.RequestType;
import com.mdd.admin.service.IAlbumsService;
import com.mdd.common.core.AjaxResult;
import com.mdd.common.enums.AlbumEnum;
import com.mdd.common.exception.OperateException;
import com.mdd.common.plugin.storage.StorageDriver;
import com.mdd.common.plugin.storage.UploadFilesVo;
import com.mdd.common.util.StringUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartRequest;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.LinkedHashMap;
import java.util.Map;
@RestController
@RequestMapping("api/upload")
@Api(tags = "上传文件管理")
public class UploadController {
@Resource
IAlbumsService iAlbumsService;
@Log(title = "上传图片", requestType = RequestType.File)
@PostMapping("/image")
@ApiOperation(value="上传图片")
public AjaxResult<UploadFilesVo> image(HttpServletRequest request) {
MultipartFile multipartFile;
try {
multipartFile = ((MultipartRequest) request).getFile("file");
} catch (Exception e) {
throw new OperateException("请正确选择上传图片!");
}
if (multipartFile == null) {
throw new OperateException("请选择上传图片!");
}
StorageDriver storageDriver = new StorageDriver();
UploadFilesVo vo = storageDriver.upload(multipartFile, "image", AlbumEnum.IMAGE.getCode());
String cid = StringUtils.isNotEmpty(request.getParameter("cid")) ? request.getParameter("cid") : "0";
Map<String, String> album = new LinkedHashMap<>();
album.put("aid", String.valueOf(LikeAdminThreadLocal.getAdminId()));
album.put("cid", cid);
album.put("type", String.valueOf(AlbumEnum.IMAGE.getCode()));
album.put("size", vo.getSize().toString());
album.put("ext", vo.getExt());
album.put("url", vo.getUrl());
album.put("name", vo.getName());
Integer id = iAlbumsService.albumAdd(album);
vo.setId(id);
return AjaxResult.success(vo);
}
@Log(title = "上传视频", requestType = RequestType.File)
@PostMapping("/video")
@ApiOperation(value="上传视频")
public AjaxResult<UploadFilesVo> video(HttpServletRequest request) {
MultipartFile multipartFile;
try {
multipartFile = ((MultipartRequest) request).getFile("file");
} catch (Exception e) {
throw new OperateException("请选择上传视频!");
}
if (multipartFile == null) {
throw new OperateException("请选择上传视频!");
}
StorageDriver storageDriver = new StorageDriver();
UploadFilesVo vo = storageDriver.upload(multipartFile, "video", AlbumEnum.Video.getCode());
String cid = StringUtils.isNotEmpty(request.getParameter("cid")) ? request.getParameter("cid") : "0";
Map<String, String> album = new LinkedHashMap<>();
album.put("cid", cid);
album.put("aid", String.valueOf(LikeAdminThreadLocal.getAdminId()));
album.put("type", String.valueOf(AlbumEnum.Video.getCode()));
album.put("ext", vo.getExt());
album.put("size", vo.getSize().toString());
album.put("url", vo.getUrl());
album.put("name", vo.getName());
Integer id = iAlbumsService.albumAdd(album);
vo.setId(id);
return AjaxResult.success(vo);
}
}

View File

@ -0,0 +1,59 @@
package com.mdd.admin.controller;
import com.mdd.admin.aop.Log;
import com.mdd.admin.service.IUserService;
import com.mdd.admin.validate.user.UserSearchValidate;
import com.mdd.admin.validate.user.UserUpdateValidate;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.validate.user.UserWalletValidate;
import com.mdd.admin.vo.user.UserVo;
import com.mdd.common.core.AjaxResult;
import com.mdd.common.core.PageResult;
import com.mdd.common.validator.annotation.IDMust;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@RequestMapping("api/user")
@Api(tags = "用户数据管理")
public class UserController {
@Resource
IUserService iUserService;
@GetMapping("/list")
@ApiOperation(value="用户列表")
public AjaxResult<PageResult<UserVo>> list(@Validated PageValidate pageValidate,
@Validated UserSearchValidate searchValidate) {
PageResult<UserVo> list = iUserService.list(pageValidate, searchValidate);
return AjaxResult.success(list);
}
@GetMapping("/detail")
@ApiOperation(value="用户详情")
public AjaxResult<UserVo> detail(@Validated @IDMust() @RequestParam("id") Integer id) {
UserVo vo = iUserService.detail(id);
return AjaxResult.success(vo);
}
@Log(title = "用户编辑")
@PostMapping("/edit")
@ApiOperation(value="用户编辑")
public AjaxResult<Object> edit(@Validated @RequestBody UserUpdateValidate updateValidate) {
iUserService.edit(updateValidate);
return AjaxResult.success();
}
@Log(title = "余额调整")
@PostMapping("/adjustWallet")
@ApiOperation(value="余额调整")
public AjaxResult<Object> adjustWallet(@Validated @RequestBody UserWalletValidate walletValidate) {
iUserService.adjustWallet(walletValidate);
return AjaxResult.success();
}
}

View File

@ -0,0 +1,38 @@
package com.mdd.admin.controller.channel;
import com.mdd.admin.aop.Log;
import com.mdd.admin.service.IChannelH5ConfigService;
import com.mdd.admin.validate.channel.ChannelH5Validate;
import com.mdd.admin.vo.channel.ChannelH5Vo;
import com.mdd.common.core.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@RequestMapping("api/channel/h5")
@Api(tags = "移动渠道设置")
public class ChannelH5Controller {
@Resource
IChannelH5ConfigService iChannelH5ConfigService;
@GetMapping("/detail")
@ApiOperation(value="H5渠道设置详情")
public AjaxResult<ChannelH5Vo> detail() {
ChannelH5Vo vo = iChannelH5ConfigService.detail();
return AjaxResult.success(vo);
}
@Log(title = "H5渠道设置保存")
@PostMapping("/save")
@ApiOperation(value="H5渠道设置保存")
public AjaxResult<Object> save(@Validated @RequestBody ChannelH5Validate channelH5Validate) {
iChannelH5ConfigService.save(channelH5Validate);
return AjaxResult.success();
}
}

View File

@ -0,0 +1,38 @@
package com.mdd.admin.controller.channel;
import com.mdd.admin.aop.Log;
import com.mdd.admin.service.IChannelMpConfigService;
import com.mdd.admin.validate.channel.ChannelMpValidate;
import com.mdd.admin.vo.channel.ChannelMpVo;
import com.mdd.common.core.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@RequestMapping("api/channel/mp")
@Api(tags = "微信程序渠道")
public class ChannelMpController {
@Resource
IChannelMpConfigService iChannelMpConfigService;
@GetMapping("/detail")
@ApiOperation(value="微信程序渠道设置详情")
public AjaxResult<ChannelMpVo> detail() {
ChannelMpVo vo = iChannelMpConfigService.detail();
return AjaxResult.success(vo);
}
@Log(title = "微信小程序渠道设置保存")
@PostMapping("/save")
@ApiOperation(value="微信程序渠道设置保存")
public AjaxResult<Object> save(@Validated @RequestBody ChannelMpValidate channelMpValidate) {
iChannelMpConfigService.save(channelMpValidate);
return AjaxResult.success();
}
}

View File

@ -0,0 +1,44 @@
package com.mdd.admin.controller.channel;
import com.mdd.admin.service.IChannelOaCallBackService;
import com.mdd.common.aop.NotLogin;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@RequestMapping("api/channel/oa/callback")
@Api(tags = "公众号服务器验证及消息回复")
public class ChannelOaCallBackController {
@Resource
private IChannelOaCallBackService iChannelOaCallBackService;
@NotLogin
@GetMapping(produces = "text/plain;charset=utf-8")
@ApiOperation(value="公众号服务器地址验证")
public String authGet(@RequestParam(name = "signature", required = false) String signature,
@RequestParam(name = "timestamp", required = false) String timestamp,
@RequestParam(name = "nonce", required = false) String nonce,
@RequestParam(name = "echostr", required = false) String echostr) {
return iChannelOaCallBackService.checkSignature(signature, timestamp, nonce, echostr);
}
@NotLogin
@PostMapping(produces = "application/xml; charset=UTF-8")
@ApiOperation(value="公众号消息回复")
public String post(@RequestBody String requestBody,
@RequestParam("signature") String signature,
@RequestParam("timestamp") String timestamp,
@RequestParam("nonce") String nonce,
@RequestParam(name = "encrypt_type", required = false) String encType,
@RequestParam(name = "msg_signature", required = false) String msgSignature) {
return iChannelOaCallBackService.post(requestBody, signature, timestamp, nonce, encType, msgSignature);
}
}

View File

@ -0,0 +1,38 @@
package com.mdd.admin.controller.channel;
import com.mdd.admin.aop.Log;
import com.mdd.admin.service.IChannelOaConfigService;
import com.mdd.admin.validate.channel.ChannelOaValidate;
import com.mdd.admin.vo.channel.ChannelOaVo;
import com.mdd.common.core.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@RequestMapping("api/channel/oa")
@Api(tags = "公众号渠道设置")
public class ChannelOaController {
@Resource
IChannelOaConfigService iChannelOaConfigService;
@GetMapping("/detail")
@ApiOperation(value="公众号渠道设置详情")
public AjaxResult<ChannelOaVo> detail() {
ChannelOaVo vo = iChannelOaConfigService.detail();
return AjaxResult.success(vo);
}
@Log(title = "公众号渠道设置保存")
@PostMapping("/save")
@ApiOperation(value="公众号渠道设置保存")
public AjaxResult<Object> save(@Validated @RequestBody ChannelOaValidate channelOaValidate) {
iChannelOaConfigService.save(channelOaValidate);
return AjaxResult.success();
}
}

View File

@ -0,0 +1,42 @@
package com.mdd.admin.controller.channel;
import com.alibaba.fastjson2.JSONArray;
import com.mdd.admin.service.IChannelOaMenusService;
import com.mdd.common.core.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@RestController
@RequestMapping("api/channel/oaMenu")
@Api(tags = "公众号菜单管理")
public class ChannelOaMenuController {
@Resource
IChannelOaMenusService iChannelOaMenusService;
@GetMapping("/detail")
@ApiOperation(value="菜单详情")
public AjaxResult<JSONArray> detail() {
JSONArray detail = iChannelOaMenusService.detail();
return AjaxResult.success(detail);
}
@PostMapping("/save")
@ApiOperation(value="仅是保存菜单")
public AjaxResult<Object> save(@RequestBody List<Object> params) {
iChannelOaMenusService.save(params, false);
return AjaxResult.success();
}
@PostMapping("/publish")
@ApiOperation(value="保存并发布菜单")
public AjaxResult<Object> publish(@RequestBody List<Object> params) {
iChannelOaMenusService.save(params, true);
return AjaxResult.success();
}
}

View File

@ -0,0 +1,68 @@
package com.mdd.admin.controller.channel;
import com.mdd.admin.service.IChannelOaReplyDefaultService;
import com.mdd.admin.validate.channel.ChannelRpDefaultValidate;
import com.mdd.admin.validate.commons.IdValidate;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.vo.channel.ChannelRpDefaultVo;
import com.mdd.common.core.AjaxResult;
import com.mdd.common.core.PageResult;
import com.mdd.common.validator.annotation.IDMust;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@RequestMapping("api/channel/oaReplyDefault")
@Api(tags = "公众号默认回复")
public class ChannelOaReplyDefaultController {
@Resource
IChannelOaReplyDefaultService iChannelOaReplyDefaultService;
@GetMapping("/list")
@ApiOperation(value="默认回复列表")
public AjaxResult<PageResult<ChannelRpDefaultVo>> list(@Validated PageValidate pageValidate) {
PageResult<ChannelRpDefaultVo> list = iChannelOaReplyDefaultService.list(pageValidate);
return AjaxResult.success(list);
}
@GetMapping("/detail")
@ApiOperation(value="默认回复详情")
public AjaxResult<ChannelRpDefaultVo> detail(@Validated @IDMust() @RequestParam("id") Integer id) {
ChannelRpDefaultVo vo = iChannelOaReplyDefaultService.detail(id);
return AjaxResult.success(vo);
}
@PostMapping("/add")
@ApiOperation(value="默认回复新增")
public AjaxResult<Object> add(@Validated @RequestBody ChannelRpDefaultValidate defaultValidate) {
iChannelOaReplyDefaultService.add(defaultValidate);
return AjaxResult.success();
}
@PostMapping("/edit")
@ApiOperation(value="默认回复编辑")
public AjaxResult<Object> edit(@Validated @RequestBody ChannelRpDefaultValidate defaultValidate) {
iChannelOaReplyDefaultService.edit(defaultValidate);
return AjaxResult.success();
}
@PostMapping("/del")
@ApiOperation(value="默认回复删除")
public AjaxResult<Object> del(@Validated @RequestBody IdValidate idValidate) {
iChannelOaReplyDefaultService.del(idValidate.getId());
return AjaxResult.success();
}
@PostMapping("/status")
@ApiOperation(value="默认回复状态")
public AjaxResult<Object> status(@Validated @RequestBody IdValidate idValidate) {
iChannelOaReplyDefaultService.status(idValidate.getId());
return AjaxResult.success();
}
}

View File

@ -0,0 +1,68 @@
package com.mdd.admin.controller.channel;
import com.mdd.admin.service.IChannelOaReplyFollowService;
import com.mdd.admin.validate.channel.ChannelRpFollowsValidate;
import com.mdd.admin.validate.commons.IdValidate;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.vo.channel.ChannelRpFollowsVo;
import com.mdd.common.core.AjaxResult;
import com.mdd.common.core.PageResult;
import com.mdd.common.validator.annotation.IDMust;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@RequestMapping("api/channel/oaReplyFollow")
@Api(tags = "公众号关注回复")
public class ChannelOaReplyFollowController {
@Resource
IChannelOaReplyFollowService iChannelOaReplyFollowService;
@GetMapping("/list")
@ApiOperation(value="关注回复列表")
public AjaxResult<PageResult<ChannelRpFollowsVo>> list(@Validated PageValidate pageValidate) {
PageResult<ChannelRpFollowsVo> list = iChannelOaReplyFollowService.list(pageValidate);
return AjaxResult.success(list);
}
@GetMapping("/detail")
@ApiOperation(value="关注回复详情")
public AjaxResult<ChannelRpFollowsVo> detail(@Validated @IDMust() @RequestParam("id") Integer id) {
ChannelRpFollowsVo vo = iChannelOaReplyFollowService.detail(id);
return AjaxResult.success(vo);
}
@PostMapping("/add")
@ApiOperation(value="关注回复新增")
public AjaxResult<Object> add(@Validated @RequestBody ChannelRpFollowsValidate followsValidate) {
iChannelOaReplyFollowService.add(followsValidate);
return AjaxResult.success();
}
@PostMapping("/edit")
@ApiOperation(value="关注回复编辑")
public AjaxResult<Object> edit(@Validated @RequestBody ChannelRpFollowsValidate followsValidate) {
iChannelOaReplyFollowService.edit(followsValidate);
return AjaxResult.success();
}
@PostMapping("/del")
@ApiOperation(value="关注回复删除")
public AjaxResult<Object> del(@Validated @RequestBody IdValidate idValidate) {
iChannelOaReplyFollowService.del(idValidate.getId());
return AjaxResult.success();
}
@PostMapping("/status")
@ApiOperation(value="关注回复状态")
public AjaxResult<Object> status(@Validated @RequestBody IdValidate idValidate) {
iChannelOaReplyFollowService.status(idValidate.getId());
return AjaxResult.success();
}
}

View File

@ -0,0 +1,68 @@
package com.mdd.admin.controller.channel;
import com.mdd.admin.service.IChannelOaReplyKeywordService;
import com.mdd.admin.validate.channel.ChannelRpKeywordValidate;
import com.mdd.admin.validate.commons.IdValidate;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.vo.channel.ChannelRpKeywordVo;
import com.mdd.common.core.AjaxResult;
import com.mdd.common.core.PageResult;
import com.mdd.common.validator.annotation.IDMust;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@RequestMapping("api/channel/oaReplyKeyword")
@Api(tags = "公众号关键回复")
public class ChannelOaReplyKeywordController {
@Resource
IChannelOaReplyKeywordService iChannelOaReplyKeywordService;
@GetMapping("/list")
@ApiOperation(value="关键词回复列表")
public AjaxResult<PageResult<ChannelRpKeywordVo>> list(@Validated PageValidate pageValidate) {
PageResult<ChannelRpKeywordVo> list = iChannelOaReplyKeywordService.list(pageValidate);
return AjaxResult.success(list);
}
@GetMapping("/detail")
@ApiOperation(value="关键词回复详情")
public AjaxResult<ChannelRpKeywordVo> detail(@Validated @IDMust() @RequestParam("id") Integer id) {
ChannelRpKeywordVo vo = iChannelOaReplyKeywordService.detail(id);
return AjaxResult.success(vo);
}
@PostMapping("/add")
@ApiOperation(value="关键词回复新增")
public AjaxResult<Object> add(@Validated @RequestBody ChannelRpKeywordValidate keywordValidate) {
iChannelOaReplyKeywordService.add(keywordValidate);
return AjaxResult.success();
}
@PostMapping("/edit")
@ApiOperation(value="关键词回复编辑")
public AjaxResult<Object> edit(@Validated @RequestBody ChannelRpKeywordValidate keywordValidate) {
iChannelOaReplyKeywordService.edit(keywordValidate);
return AjaxResult.success();
}
@PostMapping("/del")
@ApiOperation(value="关键词回复删除")
public AjaxResult<Object> del(@Validated @RequestBody IdValidate idValidate) {
iChannelOaReplyKeywordService.del(idValidate.getId());
return AjaxResult.success();
}
@PostMapping("/status")
@ApiOperation(value="关键词回复状态")
public AjaxResult<Object> status(@Validated @RequestBody IdValidate idValidate) {
iChannelOaReplyKeywordService.status(idValidate.getId());
return AjaxResult.success();
}
}

View File

@ -0,0 +1,36 @@
package com.mdd.admin.controller.channel;
import com.mdd.admin.service.IChannelOpService;
import com.mdd.admin.validate.channel.ChannelOpValidate;
import com.mdd.admin.vo.channel.ChannelOpVo;
import com.mdd.common.core.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@RequestMapping("api/channel/op")
@Api(tags = "微信开放渠道")
public class ChannelOpController {
@Resource
IChannelOpService iChannelOpService;
@GetMapping("/detail")
@ApiOperation(value="开放平台设置详情")
public AjaxResult<Object> detail() {
ChannelOpVo vo = iChannelOpService.detail();
return AjaxResult.success(vo);
}
@PostMapping("/save")
@ApiOperation(value="开放平台设置保存")
public AjaxResult<Object> save(@Validated @RequestBody ChannelOpValidate opValidate) {
iChannelOpService.save(opValidate);
return AjaxResult.success();
}
}

View File

@ -0,0 +1,33 @@
package com.mdd.admin.controller.decorate;
import com.mdd.common.aop.NotPower;
import com.mdd.admin.service.IDecorateDataService;
import com.mdd.admin.vo.decorate.DecorateDataArticleVo;
import com.mdd.common.core.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
@RestController
@RequestMapping("api/decorate/data")
@Api(tags = "装修数据管理")
public class DecorateDataController {
@Resource
IDecorateDataService iDecorateDataService;
@NotPower
@GetMapping("/article")
@ApiOperation(value="获取文章数据")
public AjaxResult<List<DecorateDataArticleVo>> article(@RequestParam(defaultValue = "10") Integer limit) {
List<DecorateDataArticleVo> list = iDecorateDataService.article(limit);
return AjaxResult.success(list);
}
}

View File

@ -0,0 +1,39 @@
package com.mdd.admin.controller.decorate;
import com.mdd.admin.aop.Log;
import com.mdd.admin.service.IDecoratePageService;
import com.mdd.admin.validate.decorate.DecoratePageValidate;
import com.mdd.admin.vo.decorate.DecoratePageVo;
import com.mdd.common.core.AjaxResult;
import com.mdd.common.validator.annotation.IDMust;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@RequestMapping("api/decorate/pages")
@Api(tags = "装修页面管理")
public class DecoratePagesController {
@Resource
IDecoratePageService iDecoratePageService;
@GetMapping("/detail")
@ApiOperation(value="页面装修详情")
public AjaxResult<DecoratePageVo> detail(@Validated @IDMust() @RequestParam("id") Integer id) {
DecoratePageVo vo = iDecoratePageService.detail(id);
return AjaxResult.success(vo);
}
@Log(title = "页面装修保存")
@PostMapping("/save")
@ApiOperation(value="页面装修保存")
public AjaxResult<Object> save(@RequestBody DecoratePageValidate decoratePageValidate) {
iDecoratePageService.save(decoratePageValidate);
return AjaxResult.success();
}
}

View File

@ -0,0 +1,38 @@
package com.mdd.admin.controller.decorate;
import com.mdd.admin.aop.Log;
import com.mdd.admin.service.IDecorateTabbarService;
import com.mdd.admin.validate.decorate.DecorateTabsValidate;
import com.mdd.admin.vo.decorate.DecorateTabbarVo;
import com.mdd.common.core.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@RequestMapping("api/decorate/tabbar")
@Api(tags = "装修导航管理")
public class DecorateTabbarController {
@Resource
IDecorateTabbarService iDecorateTabbarService;
@GetMapping("/detail")
@ApiOperation(value="底部导航详情")
public AjaxResult<DecorateTabbarVo> detail() {
DecorateTabbarVo vo = iDecorateTabbarService.detail();
return AjaxResult.success(vo);
}
@Log(title = "底部导航编辑")
@PostMapping("/save")
@ApiOperation(value="底部导航编辑")
public AjaxResult<Object> save(@Validated @RequestBody DecorateTabsValidate tabsValidate) {
iDecorateTabbarService.save(tabsValidate);
return AjaxResult.success();
}
}

View File

@ -0,0 +1,53 @@
package com.mdd.admin.controller.finance;
import com.mdd.admin.LikeAdminThreadLocal;
import com.mdd.admin.service.IFinanceRechargerService;
import com.mdd.admin.validate.commons.IdValidate;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.validate.finance.FinanceRechargeSearchValidate;
import com.mdd.admin.vo.finance.FinanceRechargeListVo;
import com.mdd.common.core.AjaxResult;
import com.mdd.common.core.PageResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@RequestMapping("api/finance/recharger")
@Api("充值记录管理")
public class FinanceRechargerController {
@Resource
IFinanceRechargerService iFinanceRechargerService;
@GetMapping("/list")
@ApiOperation("充值记录")
public AjaxResult<PageResult<FinanceRechargeListVo>> list(@Validated PageValidate pageValidate,
@Validated FinanceRechargeSearchValidate searchValidate) {
PageResult<FinanceRechargeListVo> list = iFinanceRechargerService.list(pageValidate, searchValidate);
return AjaxResult.success(list);
}
@PostMapping("/refund")
@ApiOperation("发起退款")
public AjaxResult<Object> refund(@Validated @RequestBody IdValidate idValidate) {
Integer adminId = LikeAdminThreadLocal.getAdminId();
iFinanceRechargerService.refund(idValidate.getId(), adminId);
return AjaxResult.success();
}
@PostMapping("/refundAgain")
@ApiModelProperty("重新退款")
public AjaxResult<Object> refundAgain(@Validated @RequestBody IdValidate idValidate) {
Integer adminId = LikeAdminThreadLocal.getAdminId();
iFinanceRechargerService.refundAgain(idValidate.getId(), adminId);
return AjaxResult.success();
}
}

View File

@ -0,0 +1,51 @@
package com.mdd.admin.controller.finance;
import com.mdd.admin.service.IFinanceRefundService;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.validate.finance.FinanceRefundSearchValidate;
import com.mdd.admin.vo.finance.FinanceRefundListVo;
import com.mdd.admin.vo.finance.FinanceRefundLogVo;
import com.mdd.common.core.AjaxResult;
import com.mdd.common.core.PageResult;
import com.mdd.common.validator.annotation.IDMust;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
@RestController
@RequestMapping("api/finance/refund")
@Api("退款记录管理")
public class FinanceRefundController {
@Resource
IFinanceRefundService iFinanceRefundService;
@GetMapping("/stat")
@ApiOperation("退还统计")
public AjaxResult<Object> stat() {
return AjaxResult.success();
}
@GetMapping("/list")
@ApiOperation("退款记录")
public AjaxResult<Object> list(@Validated PageValidate pageValidate,
@Validated FinanceRefundSearchValidate searchValidate) {
PageResult<FinanceRefundListVo> list = iFinanceRefundService.list(pageValidate, searchValidate);
return AjaxResult.success(list);
}
@GetMapping("/log")
@ApiOperation("退款日志")
public AjaxResult<Object> log(@Validated @IDMust() @RequestParam("id") Integer id) {
List<FinanceRefundLogVo> list = iFinanceRefundService.log(id);
return AjaxResult.success(list);
}
}

View File

@ -0,0 +1,34 @@
package com.mdd.admin.controller.finance;
import com.mdd.admin.service.IFinanceWalletService;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.validate.finance.FinanceWalletSearchValidate;
import com.mdd.admin.vo.finance.FinanceWalletListVo;
import com.mdd.common.core.AjaxResult;
import com.mdd.common.core.PageResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@RestController
@RequestMapping("api/finance/wallet")
@Api("余额明细管理")
public class FinanceWalletController {
@Resource
IFinanceWalletService iFinanceWalletService;
@GetMapping("/list")
@ApiOperation("记录列表")
public AjaxResult<Object> list(@Validated PageValidate pageValidate,
@Validated FinanceWalletSearchValidate searchValidate) {
PageResult<FinanceWalletListVo> list = iFinanceWalletService.list(pageValidate, searchValidate);
return AjaxResult.success(list);
}
}

View File

@ -0,0 +1,36 @@
package com.mdd.admin.controller.marketing;
import com.mdd.admin.service.IMarketingRechargeService;
import com.mdd.admin.validate.marketing.MarketingRechargeValidate;
import com.mdd.admin.vo.marketing.MarketingRechargeVo;
import com.mdd.common.core.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@RequestMapping("api/marketing/recharge")
@Api("营销充值管理")
public class MarketingRechargeController {
@Resource
IMarketingRechargeService iMarketingRechargeService;
@GetMapping("/detail")
@ApiModelProperty(value = "充值配置详情")
public AjaxResult<MarketingRechargeVo> detail() {
MarketingRechargeVo vo = iMarketingRechargeService.detail();
return AjaxResult.success(vo);
}
@PostMapping("/save")
@ApiModelProperty(value = "充值配置保存")
public AjaxResult<Object> save(@Validated @RequestBody MarketingRechargeValidate rechargeValidate) {
iMarketingRechargeService.save(rechargeValidate);
return AjaxResult.success();
}
}

View File

@ -0,0 +1,62 @@
package com.mdd.admin.controller.monitor;
import com.mdd.admin.aop.Log;
import com.mdd.common.core.AjaxResult;
import com.mdd.common.util.StringUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.data.redis.connection.RedisServerCommands;
import org.springframework.data.redis.core.RedisCallback;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.*;
@RestController
@RequestMapping("api/monitor")
@Api(tags = "监控缓存管理")
public class MonitorCacheController {
@Resource
private RedisTemplate<String, String> redisTemplate;
/**
* 缓存监控
*
* @author fzr
* @return AjaxResult<Object>
*/
@Log(title = "缓存监控")
@GetMapping("/cache")
@ApiOperation(value="缓存监控")
public AjaxResult<Object> info() {
Properties info = (Properties) redisTemplate.execute((RedisCallback<Object>) RedisServerCommands::info);
Properties commandStats = (Properties) redisTemplate.execute((RedisCallback<Object>) connection -> connection.info("commandstats"));
Object dbSize = redisTemplate.execute((RedisCallback<Object>) RedisServerCommands::dbSize);
if (commandStats == null) {
return AjaxResult.failed("获取异常");
}
Map<String, Object> result = new HashMap<>(3);
result.put("info", info);
result.put("dbSize", dbSize);
List<Map<String, String>> pieList = new ArrayList<>();
commandStats.stringPropertyNames().forEach(key -> {
Map<String, String> data = new HashMap<>(2);
String property = commandStats.getProperty(key);
data.put("name", StringUtils.removeStart(key, "cmdstat_"));
data.put("value", StringUtils.substringBetween(property, "calls=", ",usec"));
pieList.add(data);
});
result.put("commandStats", pieList);
return AjaxResult.success(result);
}
}

View File

@ -0,0 +1,33 @@
package com.mdd.admin.controller.monitor;
import com.mdd.admin.aop.Log;
import com.mdd.common.core.AjaxResult;
import com.mdd.common.core.ServerResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
@RestController
@RequestMapping("api/monitor")
@Api(tags = "监控服务管理")
public class MonitorServerController {
/**
* 服务器信息
*
* @author fzr
* @return AjaxResult<Map<String, Object>>
*/
@Log(title = "服务监控")
@GetMapping("/server")
@ApiOperation(value="服务监控")
public AjaxResult<Map<String, Object>> info() {
ServerResult server = new ServerResult();
return AjaxResult.success(server.copyTo());
}
}

View File

@ -0,0 +1,39 @@
package com.mdd.admin.controller.setting;
import com.mdd.admin.aop.Log;
import com.mdd.admin.service.ISettingCopyrightService;
import com.mdd.admin.validate.setting.SettingCopyrightValidate;
import com.mdd.admin.vo.setting.SettingCopyrightVo;
import com.mdd.common.core.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@RestController
@RequestMapping("api/setting/copyright")
@Api(tags = "配置网站版权")
public class SettingCopyrightController {
@Resource
ISettingCopyrightService iSettingCopyrightService;
@GetMapping("/detail")
@ApiOperation(value="网站版权信息")
public AjaxResult<List<SettingCopyrightVo>> detail() {
List<SettingCopyrightVo> list = iSettingCopyrightService.detail();
return AjaxResult.success(list);
}
@Log(title = "网站版权编辑")
@PostMapping("/save")
@ApiOperation(value="网站版权编辑")
public AjaxResult<Object> save(@Validated @RequestBody SettingCopyrightValidate copyrightValidate) {
iSettingCopyrightService.save(copyrightValidate);
return AjaxResult.success();
}
}

View File

@ -0,0 +1,82 @@
package com.mdd.admin.controller.setting;
import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.mdd.admin.aop.Log;
import com.mdd.common.aop.NotPower;
import com.mdd.admin.service.ISettingDictDataService;
import com.mdd.admin.validate.commons.IdsValidate;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.validate.setting.DictDataCreateValidate;
import com.mdd.admin.validate.setting.DictDataUpdateValidate;
import com.mdd.admin.vo.setting.SettingDictDataVo;
import com.mdd.common.core.AjaxResult;
import com.mdd.common.core.PageResult;
import com.mdd.common.util.StringUtils;
import com.mdd.common.validator.annotation.IDMust;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("api/setting/dict/data")
@Api(tags = "配置字典数据")
public class SettingDictDataController {
@Resource
ISettingDictDataService iSettingDictDataService;
@NotPower
@GetMapping("/all")
@ApiOperation(value="字典数据所有")
public AjaxResult<List<SettingDictDataVo>> all(@RequestParam Map<String, String> params) {
Assert.isFalse(StringUtils.isEmpty(params.get("dictType")), "dictType缺失");
List<SettingDictDataVo> list = iSettingDictDataService.all(params);
return AjaxResult.success(list);
}
@GetMapping("/list")
@ApiOperation(value="字典数据列表")
public AjaxResult<PageResult<SettingDictDataVo>> list(@Validated PageValidate pageValidate,
@RequestParam Map<String, String> params) {
Assert.isFalse(StringUtils.isEmpty(params.get("dictType")), "dictType缺失");
PageResult<SettingDictDataVo> list = iSettingDictDataService.list(pageValidate, params);
return AjaxResult.success(list);
}
@GetMapping("/detail")
@ApiOperation(value="字典数据详情")
public AjaxResult<SettingDictDataVo> detail(@Validated @IDMust() @RequestParam("id") Integer id) {
SettingDictDataVo vo = iSettingDictDataService.detail(id);
return AjaxResult.success(vo);
}
@Log(title = "字典数据新增")
@PostMapping("/add")
@ApiOperation(value="字典数据新增")
public AjaxResult<Object> add(@Validated @RequestBody DictDataCreateValidate createValidate) {
iSettingDictDataService.add(createValidate);
return AjaxResult.success();
}
@Log(title = "字典数据编辑")
@PostMapping("/edit")
@ApiOperation(value="字典数据编辑")
public AjaxResult<Object> edit(@Validated @RequestBody DictDataUpdateValidate updateValidate) {
iSettingDictDataService.edit(updateValidate);
return AjaxResult.success();
}
@Log(title = "字典数据删除")
@PostMapping("/del")
@ApiOperation(value="字典数据删除")
public AjaxResult<Object> del(@Validated @RequestBody IdsValidate idsValidate) {
iSettingDictDataService.del(idsValidate.getIds());
return AjaxResult.success();
}
}

View File

@ -0,0 +1,78 @@
package com.mdd.admin.controller.setting;
import com.mdd.admin.aop.Log;
import com.mdd.common.aop.NotPower;
import com.mdd.admin.service.ISettingDictTypeService;
import com.mdd.admin.validate.commons.IdsValidate;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.validate.setting.DictTypeCreateValidate;
import com.mdd.admin.validate.setting.DictTypeUpdateValidate;
import com.mdd.admin.vo.setting.SettingDictTypeVo;
import com.mdd.common.core.AjaxResult;
import com.mdd.common.core.PageResult;
import com.mdd.common.validator.annotation.IDMust;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("api/setting/dict/type")
@Api(tags = "配置字典类型")
public class SettingDictTypeController {
@Resource
ISettingDictTypeService iSettingDictTypeService;
@NotPower
@GetMapping("/all")
@ApiOperation(value="字典类型所有")
public AjaxResult<List<SettingDictTypeVo>> all() {
List<SettingDictTypeVo> list = iSettingDictTypeService.all();
return AjaxResult.success(list);
}
@GetMapping("/list")
@ApiOperation(value="字典类型列表")
public AjaxResult<PageResult<SettingDictTypeVo>> list(@Validated PageValidate pageValidate,
@RequestParam Map<String, String> params) {
PageResult<SettingDictTypeVo> list = iSettingDictTypeService.list(pageValidate, params);
return AjaxResult.success(list);
}
@GetMapping("/detail")
@ApiOperation(value="字典类型详情")
public AjaxResult<SettingDictTypeVo> detail(@Validated @IDMust() @RequestParam("id") Integer id) {
SettingDictTypeVo vo = iSettingDictTypeService.detail(id);
return AjaxResult.success(vo);
}
@Log(title = "字典类型新增")
@PostMapping("/add")
@ApiOperation(value="字典类型新增")
public AjaxResult<Object> add(@Validated @RequestBody DictTypeCreateValidate createValidate) {
iSettingDictTypeService.add(createValidate);
return AjaxResult.success();
}
@Log(title = "字典类型编辑")
@PostMapping("/edit")
@ApiOperation(value="字典类型编辑")
public AjaxResult<Object> edit(@Validated @RequestBody DictTypeUpdateValidate updateValidate) {
iSettingDictTypeService.edit(updateValidate);
return AjaxResult.success();
}
@Log(title = "字典类型删除")
@PostMapping("/del")
@ApiOperation(value="字典类型删除")
public AjaxResult<Object> del(@Validated @RequestBody IdsValidate idsValidate) {
iSettingDictTypeService.del(idsValidate.getIds());
return AjaxResult.success();
}
}

View File

@ -0,0 +1,39 @@
package com.mdd.admin.controller.setting;
import com.mdd.admin.aop.Log;
import com.mdd.admin.service.ISettingLoginService;
import com.mdd.admin.validate.setting.SettingLoginValidate;
import com.mdd.admin.vo.setting.SettingLoginVo;
import com.mdd.common.core.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Map;
@RestController
@RequestMapping("api/setting/login")
@Api(tags = "配置用户登录")
public class SettingLoginController {
@Resource
ISettingLoginService iSettingLoginService;
@GetMapping("/detail")
@ApiOperation(value="登录设置详情")
public AjaxResult<SettingLoginVo> detail() {
SettingLoginVo vo = iSettingLoginService.detail();
return AjaxResult.success(vo);
}
@Log(title = "登录设置编辑")
@PostMapping("/save")
@ApiOperation(value="登录设置编辑")
public AjaxResult<Object> save(@Validated @RequestBody SettingLoginValidate loginValidate) {
iSettingLoginService.save(loginValidate);
return AjaxResult.success();
}
}

View File

@ -0,0 +1,48 @@
package com.mdd.admin.controller.setting;
import com.mdd.admin.aop.Log;
import com.mdd.admin.service.ISettingNoticeService;
import com.mdd.admin.vo.setting.SettingNoticeDetailVo;
import com.mdd.admin.vo.setting.SettingNoticeListedVo;
import com.mdd.common.core.AjaxResult;
import com.mdd.common.validator.annotation.IDMust;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("api/setting/notice")
@Api(tags = "配置消息通知")
public class SettingNoticeController {
@Resource
ISettingNoticeService iSettingNoticeService;
@GetMapping("/list")
@ApiOperation(value="通知设置列表")
public AjaxResult<List<SettingNoticeListedVo>> list(@RequestParam Integer recipient) {
List<SettingNoticeListedVo> list = iSettingNoticeService.list(recipient);
return AjaxResult.success(list);
}
@GetMapping("/detail")
@ApiOperation(value="通知设置详情")
public AjaxResult<SettingNoticeDetailVo> detail(@Validated @IDMust() @RequestParam("id") Integer id) {
SettingNoticeDetailVo vo = iSettingNoticeService.detail(id);
return AjaxResult.success(vo);
}
@Log(title = "通知设置编辑")
@PostMapping("/save")
@ApiOperation(value="通知设置编辑")
public AjaxResult<Object> save(@RequestBody Map<String, Object> params) {
iSettingNoticeService.save(params);
return AjaxResult.success();
}
}

View File

@ -0,0 +1,62 @@
package com.mdd.admin.controller.setting;
import com.mdd.admin.service.ISettingPaymentService;
import com.mdd.admin.validate.setting.SettingPayConfigValidate;
import com.mdd.admin.validate.setting.SettingPayMethodValidate;
import com.mdd.admin.vo.setting.SettingPaymentMethodVo;
import com.mdd.common.core.AjaxResult;
import com.mdd.common.entity.setting.DevPayConfig;
import com.mdd.common.validator.annotation.IDMust;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@RestController
@RequestMapping("api/setting/payment")
@Api(tags = "配置支付参数")
public class SettingPaymentController {
@Resource
ISettingPaymentService iSettingPaymentService;
@GetMapping("/method")
@ApiOperation(value="支付方式列表")
public AjaxResult<List<List<SettingPaymentMethodVo>>> method() {
List<List<SettingPaymentMethodVo>> list = iSettingPaymentService.method();
return AjaxResult.success(list);
}
@GetMapping("/list")
@ApiOperation(value="支付配置列表")
public AjaxResult<List<DevPayConfig>> list() {
List<DevPayConfig> list = iSettingPaymentService.list();
return AjaxResult.success(list);
}
@GetMapping("/detail")
@ApiOperation(value="支付配置详情")
public AjaxResult<Object> detail(@Validated @IDMust() @RequestParam("id") Integer id) {
DevPayConfig vo = iSettingPaymentService.detail(id);
return AjaxResult.success(vo);
}
@PostMapping("/editConfig")
@ApiOperation(value="支付配置编辑")
public AjaxResult<Object> editConfig(@Validated @RequestBody SettingPayConfigValidate configValidate) {
iSettingPaymentService.editConfig(configValidate);
return AjaxResult.success();
}
@PostMapping("/editMethod")
@ApiOperation(value="支付方式编辑")
public AjaxResult<Object> editMethod(@Validated @RequestBody SettingPayMethodValidate methodValidate) {
iSettingPaymentService.editMethod(methodValidate);
return AjaxResult.success();
}
}

View File

@ -0,0 +1,38 @@
package com.mdd.admin.controller.setting;
import com.mdd.admin.aop.Log;
import com.mdd.admin.service.ISettingProtocolService;
import com.mdd.admin.validate.setting.SettingProtocolValidate;
import com.mdd.admin.vo.setting.SettingProtocolDetailVo;
import com.mdd.common.core.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@RequestMapping("api/setting/protocol")
@Api(tags = "配置政策协议")
public class SettingProtocolController {
@Resource
ISettingProtocolService iSettingProtocolService;
@GetMapping("/detail")
@ApiOperation(value="政策协议信息")
public AjaxResult<SettingProtocolDetailVo> detail() {
SettingProtocolDetailVo detail = iSettingProtocolService.detail();
return AjaxResult.success(detail);
}
@Log(title = "政策协议编辑")
@PostMapping("/save")
@ApiOperation(value="政策协议编辑")
public AjaxResult<Object> save(@Validated @RequestBody SettingProtocolValidate protocolValidate) {
iSettingProtocolService.save(protocolValidate);
return AjaxResult.success();
}
}

View File

@ -0,0 +1,39 @@
package com.mdd.admin.controller.setting;
import com.mdd.admin.aop.Log;
import com.mdd.admin.service.ISettingSearchService;
import com.mdd.admin.validate.setting.SettingSearchValidate;
import com.mdd.admin.vo.setting.SettingSearchDetailVo;
import com.mdd.common.core.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Map;
@RestController
@RequestMapping("api/setting/search")
@Api(tags = "配置热门搜索")
public class SettingSearchController {
@Resource
ISettingSearchService iSettingSearchService;
@GetMapping("/detail")
@ApiOperation(value="热门搜索详情")
public AjaxResult<SettingSearchDetailVo> detail() {
SettingSearchDetailVo vo = iSettingSearchService.detail();
return AjaxResult.success(vo);
}
@Log(title = "热门搜索编辑")
@PostMapping("/save")
@ApiOperation(value="热门搜索编辑")
public AjaxResult<Object> save(@Validated @RequestBody SettingSearchValidate searchValidate) {
iSettingSearchService.save(searchValidate);
return AjaxResult.success();
}
}

View File

@ -0,0 +1,47 @@
package com.mdd.admin.controller.setting;
import com.mdd.admin.aop.Log;
import com.mdd.admin.service.ISettingSmsService;
import com.mdd.common.core.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/**
* 短信设置管理
*/
@RestController
@RequestMapping("api/setting/sms")
@Api(tags = "配置短信引擎")
public class SettingSmsController {
@Resource
ISettingSmsService iSettingSmsService;
@GetMapping("/list")
@ApiOperation(value="短信引擎列表")
public AjaxResult<List<Map<String, Object>>> list() {
List<Map<String, Object>> list = iSettingSmsService.list();
return AjaxResult.success(list);
}
@GetMapping("/detail")
@ApiOperation(value="短信引擎详情")
public AjaxResult<Map<String, Object>> detail(String alias) {
Map<String, Object> map = iSettingSmsService.detail(alias);
return AjaxResult.success(map);
}
@Log(title = "短信引擎编辑")
@PostMapping("/save")
@ApiOperation(value="短信引擎编辑")
public AjaxResult<Object> save(@RequestBody Map<String, String> params) {
iSettingSmsService.save(params);
return AjaxResult.success();
}
}

View File

@ -0,0 +1,57 @@
package com.mdd.admin.controller.setting;
import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.mdd.admin.aop.Log;
import com.mdd.admin.service.ISettingStorageService;
import com.mdd.common.core.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("api/setting/storage")
@Api(tags = "配置存储方式")
public class SettingStorageController {
@Resource
ISettingStorageService iSettingStorageService;
@GetMapping("/list")
@ApiOperation(value="存储列表")
public AjaxResult<List<Map<String, Object>>> list() {
List<Map<String, Object>> list = iSettingStorageService.list();
return AjaxResult.success(list);
}
@GetMapping("/detail")
@ApiOperation(value="存储详情")
public AjaxResult<Map<String, Object>> detail(String alias) {
Map<String, Object> map = iSettingStorageService.detail(alias);
return AjaxResult.success(map);
}
@Log(title = "存储编辑")
@PostMapping("/edit")
@ApiOperation(value="存储编辑")
public AjaxResult<Object> edit(@RequestBody Map<String, String> params) {
iSettingStorageService.edit(params);
return AjaxResult.success();
}
@Log(title = "存储切换")
@PostMapping("/change")
@ApiOperation(value="存储切换")
public AjaxResult<Object> change(@RequestBody Map<String, String> params) {
Assert.notNull(params.get("alias"), "alias参数缺失");
Assert.notNull(params.get("status"), "status参数缺失");
String alias = params.get("alias");
Integer status = Integer.parseInt(params.get("status"));
iSettingStorageService.change(alias, status);
return AjaxResult.success();
}
}

View File

@ -0,0 +1,38 @@
package com.mdd.admin.controller.setting;
import com.mdd.admin.aop.Log;
import com.mdd.admin.service.ISettingUserService;
import com.mdd.admin.validate.setting.SettingUserValidate;
import com.mdd.admin.vo.setting.SettingUserVo;
import com.mdd.common.core.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@RequestMapping("api/setting/user")
@Api(tags = "配置用户参数")
public class SettingUserController {
@Resource
ISettingUserService iSettingUserService;
@GetMapping("/detail")
@ApiOperation(value="用户设置详情")
public AjaxResult<SettingUserVo> detail() {
SettingUserVo vo = iSettingUserService.detail();
return AjaxResult.success(vo);
}
@Log(title = "用户设置编辑")
@PostMapping("/save")
@ApiOperation(value="用户设置编辑")
public AjaxResult<Object> save(@Validated @RequestBody SettingUserValidate userValidate) {
iSettingUserService.save(userValidate);
return AjaxResult.success();
}
}

View File

@ -0,0 +1,39 @@
package com.mdd.admin.controller.setting;
import com.mdd.admin.aop.Log;
import com.mdd.admin.service.ISettingWebsiteService;
import com.mdd.admin.validate.setting.SettingWebsiteValidate;
import com.mdd.admin.vo.setting.SettingWebsiteVo;
import com.mdd.common.core.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Map;
@RestController
@RequestMapping("api/setting/website")
@Api(tags = "配置网站信息")
public class SettingWebsiteController {
@Resource
ISettingWebsiteService iSettingWebsiteService;
@GetMapping("/detail")
@ApiOperation(value="网站配置信息")
public AjaxResult<SettingWebsiteVo> detail() {
SettingWebsiteVo detail = iSettingWebsiteService.detail();
return AjaxResult.success(detail);
}
@Log(title = "网站配置编辑")
@PostMapping("/save")
@ApiOperation(value="网站配置编辑")
public AjaxResult<Object> save(@Validated @RequestBody SettingWebsiteValidate websiteValidate) {
iSettingWebsiteService.save(websiteValidate);
return AjaxResult.success();
}
}

View File

@ -0,0 +1,103 @@
package com.mdd.admin.controller.system;
import com.mdd.admin.LikeAdminThreadLocal;
import com.mdd.admin.aop.Log;
import com.mdd.common.aop.NotPower;
import com.mdd.admin.service.ISystemAuthAdminService;
import com.mdd.admin.validate.commons.IdValidate;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.validate.system.SystemAdminCreateValidate;
import com.mdd.admin.validate.system.SystemAdminSearchValidate;
import com.mdd.admin.validate.system.SystemAdminUpInfoValidate;
import com.mdd.admin.validate.system.SystemAdminUpdateValidate;
import com.mdd.admin.vo.system.SystemAuthAdminDetailVo;
import com.mdd.admin.vo.system.SystemAuthAdminListedVo;
import com.mdd.admin.vo.system.SystemAuthAdminSelvesVo;
import com.mdd.common.core.AjaxResult;
import com.mdd.common.core.PageResult;
import com.mdd.common.validator.annotation.IDMust;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@RequestMapping("api/system/admin")
@Api(tags = "系统用户管理")
public class SystemAuthAdminController {
@Resource
ISystemAuthAdminService iSystemAuthAdminService;
@GetMapping("/list")
@ApiOperation(value="管理员列表")
public AjaxResult<PageResult<SystemAuthAdminListedVo>> list(@Validated PageValidate pageValidate,
@Validated SystemAdminSearchValidate searchValidate) {
PageResult<SystemAuthAdminListedVo> list = iSystemAuthAdminService.list(pageValidate, searchValidate);
return AjaxResult.success(list);
}
@NotPower
@GetMapping("/self")
@ApiOperation(value="管理员信息")
public AjaxResult<SystemAuthAdminSelvesVo> self() {
Integer adminId = LikeAdminThreadLocal.getAdminId();
SystemAuthAdminSelvesVo vo = iSystemAuthAdminService.self(adminId);
return AjaxResult.success(vo);
}
@GetMapping("/detail")
@ApiOperation(value="管理员详情")
public AjaxResult<SystemAuthAdminDetailVo> detail(@Validated @IDMust() @RequestParam("id") Integer id) {
SystemAuthAdminDetailVo vo = iSystemAuthAdminService.detail(id);
return AjaxResult.success(vo);
}
@Log(title = "管理员新增")
@PostMapping("/add")
@ApiOperation(value="管理员新增")
public AjaxResult<Object> add(@Validated @RequestBody SystemAdminCreateValidate createValidate) {
iSystemAuthAdminService.add(createValidate);
return AjaxResult.success();
}
@Log(title = "管理员编辑")
@PostMapping("/edit")
@ApiOperation(value="管理员编辑")
public AjaxResult<Object> edit(@Validated @RequestBody SystemAdminUpdateValidate updateValidate) {
Integer adminId = LikeAdminThreadLocal.getAdminId();
iSystemAuthAdminService.edit(updateValidate, adminId);
return AjaxResult.success();
}
@NotPower
@Log(title = "管理员更新")
@PostMapping("/upInfo")
@ApiOperation(value="当前管理员更新")
public AjaxResult<Object> upInfo(@Validated @RequestBody SystemAdminUpInfoValidate upInfoValidate) {
Integer adminId = LikeAdminThreadLocal.getAdminId();
iSystemAuthAdminService.upInfo(upInfoValidate, adminId);
return AjaxResult.success();
}
@Log(title = "管理员删除")
@PostMapping("/del")
@ApiOperation(value="管理员删除")
public AjaxResult<Object> del(@Validated @RequestBody IdValidate idValidate) {
Integer adminId = LikeAdminThreadLocal.getAdminId();
iSystemAuthAdminService.del(idValidate.getId(), adminId);
return AjaxResult.success();
}
@Log(title = "管理员状态")
@PostMapping("/disable")
@ApiOperation(value="管理员状态切换")
public AjaxResult<Object> disable(@Validated @RequestBody IdValidate idValidate) {
Integer adminId = LikeAdminThreadLocal.getAdminId();
iSystemAuthAdminService.disable(idValidate.getId(), adminId);
return AjaxResult.success();
}
}

View File

@ -0,0 +1,72 @@
package com.mdd.admin.controller.system;
import com.alibaba.fastjson2.JSONArray;
import com.mdd.common.aop.NotPower;
import com.mdd.admin.service.ISystemAuthDeptService;
import com.mdd.admin.validate.commons.IdValidate;
import com.mdd.admin.validate.system.SystemDeptCreateValidate;
import com.mdd.admin.validate.system.SystemDeptSearchValidate;
import com.mdd.admin.validate.system.SystemDeptUpdateValidate;
import com.mdd.admin.vo.system.SystemAuthDeptVo;
import com.mdd.common.core.AjaxResult;
import com.mdd.common.validator.annotation.IDMust;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@RestController
@RequestMapping("api/system/dept")
@Api(tags = "系统部门管理")
public class SystemAuthDeptController {
@Resource
ISystemAuthDeptService iSystemAuthDeptService;
@NotPower
@GetMapping("/all")
@ApiOperation(value="部门所有")
public AjaxResult<List<SystemAuthDeptVo>> all() {
List<SystemAuthDeptVo> list = iSystemAuthDeptService.all();
return AjaxResult.success(list);
}
@GetMapping("/list")
@ApiOperation(value="部门列表")
public AjaxResult<JSONArray> list(@Validated SystemDeptSearchValidate searchValidate) {
JSONArray list = iSystemAuthDeptService.list(searchValidate);
return AjaxResult.success(list);
}
@GetMapping("/detail")
@ApiOperation(value="部门详情")
public AjaxResult<SystemAuthDeptVo> detail(@Validated @IDMust() @RequestParam("id") Integer id) {
SystemAuthDeptVo vo = iSystemAuthDeptService.detail(id);
return AjaxResult.success(vo);
}
@PostMapping("/add")
@ApiOperation(value="部门新增")
public AjaxResult<Object> add(@Validated @RequestBody SystemDeptCreateValidate createValidate) {
iSystemAuthDeptService.add(createValidate);
return AjaxResult.success();
}
@PostMapping("/edit")
@ApiOperation(value="部门编辑")
public AjaxResult<Object> edit(@Validated @RequestBody SystemDeptUpdateValidate updateValidate) {
iSystemAuthDeptService.edit(updateValidate);
return AjaxResult.success();
}
@PostMapping("/del")
@ApiOperation(value="部门删除")
public AjaxResult<Object> del(@Validated @RequestBody IdValidate idValidate) {
iSystemAuthDeptService.del(idValidate.getId());
return AjaxResult.success();
}
}

View File

@ -0,0 +1,78 @@
package com.mdd.admin.controller.system;
import com.alibaba.fastjson2.JSONArray;
import com.mdd.admin.LikeAdminThreadLocal;
import com.mdd.admin.aop.Log;
import com.mdd.common.aop.NotPower;
import com.mdd.admin.service.ISystemAuthMenuService;
import com.mdd.admin.validate.commons.IdValidate;
import com.mdd.admin.validate.system.SystemMenuCreateValidate;
import com.mdd.admin.validate.system.SystemMenuUpdateValidate;
import com.mdd.admin.vo.system.SystemAuthMenuVo;
import com.mdd.common.core.AjaxResult;
import com.mdd.common.validator.annotation.IDMust;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@RestController
@RequestMapping("api/system/menu")
@Api(tags = "系统菜单管理")
public class SystemAuthMenuController {
@Resource
ISystemAuthMenuService iSystemAuthMenuService;
@NotPower
@GetMapping("/route")
@ApiOperation(value="获取菜单路由")
public AjaxResult<JSONArray> route() {
List<Integer> roleIds = LikeAdminThreadLocal.getRoleIds();
JSONArray lists = iSystemAuthMenuService.selectMenuByRoleId(roleIds);
return AjaxResult.success(lists);
}
@NotPower
@GetMapping("/list")
@ApiOperation(value="获取菜单列表")
public AjaxResult<JSONArray> list() {
JSONArray lists = iSystemAuthMenuService.list();
return AjaxResult.success(lists);
}
@GetMapping("/detail")
@ApiOperation(value="获取菜单详情")
public AjaxResult<SystemAuthMenuVo> detail(@Validated @IDMust() @RequestParam("id") Integer id) {
SystemAuthMenuVo vo = iSystemAuthMenuService.detail(id);
return AjaxResult.success(vo);
}
@Log(title = "菜单新增")
@PostMapping("/add")
@ApiOperation(value="新增菜单")
public AjaxResult<Object> add(@Validated @RequestBody SystemMenuCreateValidate createValidate) {
iSystemAuthMenuService.add(createValidate);
return AjaxResult.success();
}
@Log(title = "菜单编辑")
@PostMapping("/edit")
@ApiOperation(value="菜单编辑")
public AjaxResult<Object> edit(@Validated @RequestBody SystemMenuUpdateValidate updateValidate) {
iSystemAuthMenuService.edit(updateValidate);
return AjaxResult.success();
}
@Log(title = "菜单删除")
@PostMapping("/del")
@ApiOperation(value="菜单删除")
public AjaxResult<Object> del(@Validated @RequestBody IdValidate idValidate) {
iSystemAuthMenuService.del(idValidate.getId());
return AjaxResult.success();
}
}

View File

@ -0,0 +1,74 @@
package com.mdd.admin.controller.system;
import com.mdd.common.aop.NotPower;
import com.mdd.admin.service.ISystemAuthPostService;
import com.mdd.admin.validate.commons.IdValidate;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.validate.system.SystemPostCreateValidate;
import com.mdd.admin.validate.system.SystemPostSearchValidate;
import com.mdd.admin.validate.system.SystemPostUpdateValidate;
import com.mdd.admin.vo.system.SystemAuthPostVo;
import com.mdd.common.core.AjaxResult;
import com.mdd.common.core.PageResult;
import com.mdd.common.validator.annotation.IDMust;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@RestController
@RequestMapping("api/system/post")
@Api(tags = "系统岗位管理")
public class SystemAuthPostController {
@Resource
ISystemAuthPostService iSystemAuthPostService;
@NotPower
@GetMapping("/all")
@ApiOperation(value="所有岗位")
public AjaxResult<List<SystemAuthPostVo>> all() {
List<SystemAuthPostVo> list = iSystemAuthPostService.all();
return AjaxResult.success(list);
}
@GetMapping("/list")
@ApiOperation(value="岗位列表")
public AjaxResult<PageResult<SystemAuthPostVo>> list(@Validated PageValidate pageValidate,
@Validated SystemPostSearchValidate searchValidate) {
PageResult<SystemAuthPostVo> list = iSystemAuthPostService.list(pageValidate, searchValidate);
return AjaxResult.success(list);
}
@GetMapping("/detail")
@ApiOperation(value="岗位详情")
public AjaxResult<SystemAuthPostVo> detail(@Validated @IDMust() @RequestParam("id") Integer id) {
SystemAuthPostVo vo = iSystemAuthPostService.detail(id);
return AjaxResult.success(vo);
}
@PostMapping("/add")
@ApiOperation(value="岗位新增")
public AjaxResult<Object> add(@Validated @RequestBody SystemPostCreateValidate createValidate) {
iSystemAuthPostService.add(createValidate);
return AjaxResult.success();
}
@PostMapping("/edit")
@ApiOperation(value="岗位编辑")
public AjaxResult<Object> edit(@Validated @RequestBody SystemPostUpdateValidate updateValidate) {
iSystemAuthPostService.edit(updateValidate);
return AjaxResult.success();
}
@PostMapping("/del")
@ApiOperation(value="岗位删除")
public AjaxResult<Object> del(@Validated @RequestBody IdValidate idValidate) {
iSystemAuthPostService.del(idValidate.getId());
return AjaxResult.success();
}
}

View File

@ -0,0 +1,78 @@
package com.mdd.admin.controller.system;
import com.mdd.admin.aop.Log;
import com.mdd.common.aop.NotPower;
import com.mdd.admin.service.ISystemAuthRoleService;
import com.mdd.admin.validate.commons.IdValidate;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.validate.system.SystemRoleCreateValidate;
import com.mdd.admin.validate.system.SystemRoleUpdateValidate;
import com.mdd.admin.vo.system.SystemAuthRoleVo;
import com.mdd.common.core.AjaxResult;
import com.mdd.common.core.PageResult;
import com.mdd.common.validator.annotation.IDMust;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@RestController
@RequestMapping("api/system/role")
@Api(tags = "系统角色管理")
public class SystemAuthRoleController {
@Resource
ISystemAuthRoleService iSystemAuthRoleService;
@NotPower
@GetMapping("/all")
@ApiOperation(value="所有角色")
public AjaxResult<List<SystemAuthRoleVo>> all() {
List<SystemAuthRoleVo> list = iSystemAuthRoleService.all();
return AjaxResult.success(list);
}
@Log(title = "角色列表")
@GetMapping("/list")
@ApiOperation(value="角色列表")
public AjaxResult<PageResult<SystemAuthRoleVo>> list(@Validated PageValidate pageValidate) {
PageResult<SystemAuthRoleVo> list = iSystemAuthRoleService.list(pageValidate);
return AjaxResult.success(list);
}
@Log(title = "角色详情")
@GetMapping("/detail")
@ApiOperation(value="角色详情")
public AjaxResult<SystemAuthRoleVo> detail(@Validated @IDMust() @RequestParam("id") Integer id) {
SystemAuthRoleVo vo = iSystemAuthRoleService.detail(id);
return AjaxResult.success(vo);
}
@Log(title = "角色新增")
@PostMapping("/add")
@ApiOperation(value="角色新增")
public AjaxResult<Object> add(@Validated @RequestBody SystemRoleCreateValidate createValidate) {
iSystemAuthRoleService.add(createValidate);
return AjaxResult.success();
}
@Log(title = "角色编辑")
@PostMapping("/edit")
@ApiOperation(value="角色编辑")
public AjaxResult<Object> edit(@Validated @RequestBody SystemRoleUpdateValidate updateValidate) {
iSystemAuthRoleService.edit(updateValidate);
return AjaxResult.success();
}
@Log(title = "角色删除")
@PostMapping("/del")
@ApiOperation(value="角色删除")
public AjaxResult<Object> del(@Validated @RequestBody IdValidate idValidate) {
iSystemAuthRoleService.del(idValidate.getId());
return AjaxResult.success();
}
}

View File

@ -0,0 +1,30 @@
package com.mdd.admin.controller.system;
import com.mdd.admin.aop.Log;
import com.mdd.admin.service.ISystemCacheService;
import com.mdd.common.core.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@RequestMapping("api/system/cache")
@Api(tags = "系统缓存管理")
public class SystemCacheController {
@Resource
ISystemCacheService iSystemCacheService;
@Log(title = "清除系统缓存")
@PostMapping("/clear")
@ApiOperation(value = "清除系统缓存")
public AjaxResult<Object> clear() {
iSystemCacheService.clear();
return AjaxResult.success();
}
}

View File

@ -0,0 +1,50 @@
package com.mdd.admin.controller.system;
import com.mdd.common.aop.NotLogin;
import com.mdd.common.aop.NotPower;
import com.mdd.admin.service.ISystemLoginService;
import com.mdd.admin.validate.system.SystemAdminLoginsValidate;
import com.mdd.admin.vo.system.SystemCaptchaVo;
import com.mdd.admin.vo.system.SystemLoginVo;
import com.mdd.common.core.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
@RestController
@RequestMapping("api/system")
@Api(tags = "系统登录管理")
public class SystemLoginController {
@Resource
ISystemLoginService iSystemLoginService;
@NotLogin
@GetMapping("/captcha")
@ApiOperation(value="取验证码")
public AjaxResult<SystemCaptchaVo> captcha() {
SystemCaptchaVo vo = iSystemLoginService.captcha();
return AjaxResult.success(vo);
}
@NotLogin
@PostMapping("/login")
@ApiOperation(value="登录系统")
public AjaxResult<SystemLoginVo> login(@Validated() @RequestBody SystemAdminLoginsValidate loginsValidate) {
SystemLoginVo vo = iSystemLoginService.login(loginsValidate);
return AjaxResult.success(vo);
}
@NotPower
@PostMapping("/logout")
@ApiOperation(value="退出登录")
public AjaxResult<Object> logout(HttpServletRequest request) {
iSystemLoginService.logout(request.getHeader("token"));
return AjaxResult.success();
}
}

View File

@ -0,0 +1,44 @@
package com.mdd.admin.controller.system;
import com.mdd.admin.service.ISystemLogsServer;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.validate.system.SystemSearchLoginsValidate;
import com.mdd.admin.validate.system.SystemSearchOperateValidate;
import com.mdd.admin.vo.system.SystemLogLoginVo;
import com.mdd.admin.vo.system.SystemLogOperateVo;
import com.mdd.common.core.AjaxResult;
import com.mdd.common.core.PageResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@RestController
@RequestMapping("api/system/log")
@Api(tags = "系统日志管理")
public class SystemLogsController {
@Resource
ISystemLogsServer iSystemLogsServer;
@GetMapping("/operate")
@ApiOperation(value="系统操作日志")
public AjaxResult<PageResult<SystemLogOperateVo>> operate(@Validated PageValidate pageValidate,
@Validated SystemSearchOperateValidate searchValidate) {
PageResult<SystemLogOperateVo> list = iSystemLogsServer.operate(pageValidate, searchValidate);
return AjaxResult.success(list);
}
@GetMapping("/login")
@ApiOperation(value="系统登录日志")
public AjaxResult<PageResult<SystemLogLoginVo>> login(@Validated PageValidate pageValidate,
@Validated SystemSearchLoginsValidate searchValidate) {
PageResult<SystemLogLoginVo> list = iSystemLogsServer.login(pageValidate, searchValidate);
return AjaxResult.success(list);
}
}

View File

@ -0,0 +1,17 @@
package com.mdd.admin.crontab;
import org.springframework.stereotype.Component;
/**
* 具体的定时任务
*/
@Component("myJob")
public class MyJob {
public void handle(String s) {
// System.out.println("有参数定时任务执行逻辑 : " + s);
}
}

View File

@ -0,0 +1,95 @@
package com.mdd.admin.service;
import com.alibaba.fastjson2.JSONArray;
import com.mdd.admin.validate.album.AlbumCateValidate;
import com.mdd.admin.validate.album.AlbumSearchValidate;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.vo.album.AlbumVo;
import com.mdd.common.core.PageResult;
import java.util.List;
import java.util.Map;
/**
* 相册服务接口类
*/
public interface IAlbumsService {
/**
* 文件列表
*
* @author fzr
* @param pageValidate 分页参数
* @param searchValidate 其他搜索参数
* @return PageResult<AlbumVo>
*/
PageResult<AlbumVo> albumList(PageValidate pageValidate, AlbumSearchValidate searchValidate);
/**
* 文件重命名
*
* @param id 文件ID
* @param name 文件名称
*/
void albumRename(Integer id, String name);
/**
* 文件移动
*
* @author fzr
* @param ids 文件ID
* @param cid 类目ID
*/
void albumMove(List<Integer> ids, Integer cid);
/**
* 文件新增
*
* @author fzr
* @param params 文件信息参数
*/
Integer albumAdd(Map<String, String> params);
/**
* 文件删除
*
* @author fzr
* @param ids 文件ID
*/
void albumDel(List<Integer> ids);
/**
* 分类列表
*
* @author fzr
* @param searchValidate 搜索参数
* @return JSONArray
*/
JSONArray cateList(AlbumSearchValidate searchValidate);
/**
* 分类新增
*
* @author fzr
* @param cateValidate 分类参数
*/
void cateAdd(AlbumCateValidate cateValidate);
/**
* 分类编辑
*
* @author fzr
* @param id 分类ID
* @param name 分类名称
*/
void cateRename(Integer id, String name);
/**
* 分类删除
*
* @author fzr
* @param id 分类ID
*/
void cateDel(Integer id);
}

View File

@ -0,0 +1,75 @@
package com.mdd.admin.service;
import com.mdd.admin.validate.article.ArtCateCreateValidate;
import com.mdd.admin.validate.article.ArtCateUpdateValidate;
import com.mdd.admin.validate.article.ArtCateSearchValidate;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.vo.article.ArticleCateVo;
import com.mdd.common.core.PageResult;
import java.util.List;
/**
* 文章分类服接口务类
*/
public interface IArtCateService {
/**
* 分类所有
*
* @author fzr
* @return List<CategoryVo>
*/
List<ArticleCateVo> all();
/**
* 分类列表
*
* @author fzr
* @param pageValidate 分页参数
* @param searchValidate 搜索参数
* @return PageResult<CategoryVo>
*/
PageResult<ArticleCateVo> list(PageValidate pageValidate, ArtCateSearchValidate searchValidate);
/**
* 分类详情
*
* @author fzr
* @param id 分类ID
*/
ArticleCateVo detail(Integer id);
/**
* 分类新增
*
* @author fzr
* @param createValidate 参数
*/
void add(ArtCateCreateValidate createValidate);
/**
* 分类编辑
*
* @author fzr
* @param updateValidate 参数
*/
void edit(ArtCateUpdateValidate updateValidate);
/**
* 分类删除
*
* @author fzr
* @param id 分类ID
*/
void del(Integer id);
/**
* 分类状态
*
* @author fzr
* @param id 分类ID
*/
void change(Integer id);
}

View File

@ -0,0 +1,66 @@
package com.mdd.admin.service;
import com.mdd.admin.validate.article.ArticleCreateValidate;
import com.mdd.admin.validate.article.ArticleSearchValidate;
import com.mdd.admin.validate.article.ArticleUpdateValidate;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.vo.article.ArticleDetailVo;
import com.mdd.admin.vo.article.ArticleListedVo;
import com.mdd.common.core.PageResult;
/**
* 文章服务接口类
*/
public interface IArticleService {
/**
* 文章列表
*
* @author fzr
* @param pageValidate 分页参数
* @param searchValidate 搜索参数
* @return PageResult<ArticleListVo>
*/
PageResult<ArticleListedVo> list(PageValidate pageValidate, ArticleSearchValidate searchValidate);
/**
* 文章详情
*
* @author fzr
* @param id 主键ID
*/
ArticleDetailVo detail(Integer id);
/**
* 文章新增
*
* @author fzr
* @param createValidate 参数
*/
void add(ArticleCreateValidate createValidate);
/**
* 文章编辑
*
* @author fzr
* @param updateValidate 参数
*/
void edit(ArticleUpdateValidate updateValidate);
/**
* 文章删除
*
* @author fzr
* @param id 文章主键
*/
void del(Integer id);
/**
* 文章状态
*
* @author fzr
* @param id 文章主键
*/
void change(Integer id);
}

View File

@ -0,0 +1,27 @@
package com.mdd.admin.service;
import com.mdd.admin.validate.channel.ChannelH5Validate;
import com.mdd.admin.vo.channel.ChannelH5Vo;
/**
* H5渠道设置服务接口类
*/
public interface IChannelH5ConfigService {
/**
* H5设置详情
*
* @author fzr
* @return ChannelH5Vo
*/
ChannelH5Vo detail();
/**
* H5设置保存
*
* @author fzr
* @param channelH5Validate 参数
*/
void save(ChannelH5Validate channelH5Validate);
}

View File

@ -0,0 +1,27 @@
package com.mdd.admin.service;
import com.mdd.admin.validate.channel.ChannelMpValidate;
import com.mdd.admin.vo.channel.ChannelMpVo;
/**
* 微信小程序渠道服务接口类
*/
public interface IChannelMpConfigService {
/**
* 微信小程序设置详情
*
* @author fzr
* @return ChannelMpVo
*/
ChannelMpVo detail();
/**
* 微信小程序设置保存
*
* @author fzr
* @param channelMpValidate 参数
*/
void save(ChannelMpValidate channelMpValidate);
}

View File

@ -0,0 +1,29 @@
package com.mdd.admin.service;
/**
* 公众号服务器回调
*/
public interface IChannelOaCallBackService {
/**
* 服务器验证
*/
String checkSignature(String signature, String timestamp, String nonce, String echostr);
/**
* 消息回复
*
* @param requestBody
* @param signature
* @param timestamp
* @param nonce
* @param encType
* @param msgSignature
* @return
*/
String post(String requestBody, String signature, String timestamp, String nonce, String encType, String msgSignature);
}

View File

@ -0,0 +1,28 @@
package com.mdd.admin.service;
import com.mdd.admin.validate.channel.ChannelOaValidate;
import com.mdd.admin.vo.channel.ChannelOaVo;
/**
* 公众号渠道设置服务接口类
*/
public interface IChannelOaConfigService {
/**
* 公众号设置详情
*
* @author fzr
* @return ChannelOaVo
*/
ChannelOaVo detail();
/**
* 公众号设置保存
*
* @author fzr
* @param channelOaValidate 参数
*/
void save(ChannelOaValidate channelOaValidate);
}

View File

@ -0,0 +1,30 @@
package com.mdd.admin.service;
import com.alibaba.fastjson2.JSONArray;
import java.util.List;
/**
* 公众号菜单服务接口类
*/
public interface IChannelOaMenusService {
/**
* 菜单详情
*
* @author fzr
* @return JSONArray
*/
JSONArray detail();
/**
* 菜单保存
*
* @author fzr
* @param params 参数
* @param isPublish 是否发布
*/
void save(List<Object> params, Boolean isPublish);
}

View File

@ -0,0 +1,63 @@
package com.mdd.admin.service;
import com.mdd.admin.validate.channel.ChannelRpDefaultValidate;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.vo.channel.ChannelRpDefaultVo;
import com.mdd.common.core.PageResult;
/**
* 公众号默认回复服务接口类
*/
public interface IChannelOaReplyDefaultService {
/**
* 默认回复列表
*
* @author fzr
* @param pageValidate 分页参数
* @return PageResult<ChannelRpDefaultVo>
*/
PageResult<ChannelRpDefaultVo> list(PageValidate pageValidate);
/**
* 默认回复详情
*
* @author fzr
* @param id 主键
* @return ChannelRpDefaultVo
*/
ChannelRpDefaultVo detail(Integer id);
/**
* 默认回复新增
*
* @author fzr
* @param defaultValidate 参数
*/
void add(ChannelRpDefaultValidate defaultValidate);
/**
* 默认回复编辑
*
* @author fzr
* @param defaultValidate 参数
*/
void edit(ChannelRpDefaultValidate defaultValidate);
/**
* 默认回复删除
*
* @author fzr
* @param id 主键
*/
void del(Integer id);
/**
* 默认回复状态
*
* @author fzr
* @param id 主键
*/
void status(Integer id);
}

View File

@ -0,0 +1,63 @@
package com.mdd.admin.service;
import com.mdd.admin.validate.channel.ChannelRpFollowsValidate;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.vo.channel.ChannelRpFollowsVo;
import com.mdd.common.core.PageResult;
/**
* 公众号关注回复服务接口类
*/
public interface IChannelOaReplyFollowService {
/**
* 关注回复列表
*
* @author fzr
* @param pageValidate 分页参数
* @return PageResult<ChannelRpFollowsVo>
*/
PageResult<ChannelRpFollowsVo> list(PageValidate pageValidate);
/**
* 关注回复详情
*
* @author fzr
* @param id 主键
* @return ChannelRpFollowsVo
*/
ChannelRpFollowsVo detail(Integer id);
/**
* 关注回复新增
*
* @author fzr
* @param followsValidate 参数
*/
void add(ChannelRpFollowsValidate followsValidate);
/**
* 关注回复编辑
*
* @author fzr
* @param followsValidate 参数
*/
void edit(ChannelRpFollowsValidate followsValidate);
/**
* 关注回复删除
*
* @author fzr
* @param id 主键
*/
void del(Integer id);
/**
* 关注回复状态
*
* @author fzr
* @param id 主键
*/
void status(Integer id);
}

View File

@ -0,0 +1,64 @@
package com.mdd.admin.service;
import com.mdd.admin.validate.channel.ChannelRpKeywordValidate;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.vo.channel.ChannelRpKeywordVo;
import com.mdd.common.core.PageResult;
/**
* 公众号关键词回复服务接口类
*/
public interface IChannelOaReplyKeywordService {
/**
* 关键词回复列表
*
* @author fzr
* @param pageValidate 分页参数
* @return PageResult<ChannelRpKeywordVo>
*/
PageResult<ChannelRpKeywordVo> list(PageValidate pageValidate);
/**
* 关键词回复详情
*
* @author fzr
* @param id 主键
* @return ChannelRpKeywordVo
*/
ChannelRpKeywordVo detail(Integer id);
/**
* 关键词回复新增
*
* @author fzr
* @param keywordValidate 参数
*/
void add(ChannelRpKeywordValidate keywordValidate);
/**
* 关键词回复编辑
*
* @author fzr
* @param keywordValidate 参数
*/
void edit(ChannelRpKeywordValidate keywordValidate);
/**
* 关键词回复删除
*
* @author fzr
* @param id 主键
*/
void del(Integer id);
/**
* 关键词回复状态
*
* @author fzr
* @param id 主键
*/
void status(Integer id);
}

View File

@ -0,0 +1,27 @@
package com.mdd.admin.service;
import com.mdd.admin.validate.channel.ChannelOpValidate;
import com.mdd.admin.vo.channel.ChannelOpVo;
/**
* 微信开放渠道设置接口服务类
*/
public interface IChannelOpService {
/**
* 开放平台设置详情
*
* @author fzr
* @return ChannelOpVo
*/
ChannelOpVo detail();
/**
* 开放平台设置保存
*
* @author fzr
* @param opValidate 参数
*/
void save(ChannelOpValidate opValidate);
}

View File

@ -0,0 +1,58 @@
package com.mdd.admin.service;
import com.mdd.admin.validate.crontab.CrontabCreateValidate;
import com.mdd.admin.validate.crontab.CrontabUpdateValidate;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.vo.CrontabDetailVo;
import com.mdd.admin.vo.CrontabListedVo;
import com.mdd.common.core.PageResult;
import org.quartz.SchedulerException;
/**
* 计划任务服务接口类
*/
public interface ICrontabService {
/**
* 计划任务列表
*
* @author fzr
* @param pageValidate 分页参数
* @return PageResult<CrontabListedVo>
*/
PageResult<CrontabListedVo> list(PageValidate pageValidate);
/**
* 计划任务详情
*
* @author fzr
* @param id 主键
* @return CrontabDetailVo
*/
CrontabDetailVo detail(Integer id);
/**
* 计划任务新增
*
* @author fzr
* @param createValidate 参数
*/
void add(CrontabCreateValidate createValidate) throws SchedulerException;
/**
* 计划任务编辑
*
* @author fzr
* @param updateValidate 参数
*/
void edit(CrontabUpdateValidate updateValidate) throws SchedulerException;
/**
* 计划任务删除
*
* @author fzr
* @param id 主键
*/
void del(Integer id) throws SchedulerException;
}

View File

@ -0,0 +1,21 @@
package com.mdd.admin.service;
import com.mdd.admin.vo.decorate.DecorateDataArticleVo;
import java.util.List;
/**
* 装修数据服务接口类
*/
public interface IDecorateDataService {
/**
* 获取文章数据
*
* @author fzr
* @param limit 条数
* @return List<DecorateArticleDataVo>
*/
List<DecorateDataArticleVo> article(Integer limit);
}

View File

@ -0,0 +1,24 @@
package com.mdd.admin.service;
import com.mdd.admin.validate.decorate.DecoratePageValidate;
import com.mdd.admin.vo.decorate.DecoratePageVo;
public interface IDecoratePageService {
/**
* 页面装修详情
*
* @author fzr
* @param id 主键
* @return DecoratePageVo
*/
DecoratePageVo detail(Integer id);
/**
* 页面装修保存
*
* @author fzr
* @param decoratePageValidate 参数
*/
void save(DecoratePageValidate decoratePageValidate);
}

View File

@ -0,0 +1,27 @@
package com.mdd.admin.service;
import com.mdd.admin.validate.decorate.DecorateTabsValidate;
import com.mdd.admin.vo.decorate.DecorateTabbarVo;
/**
* 底部导航服务接口类
*/
public interface IDecorateTabbarService {
/**
* 底部导航详情
*
* @author fzr
* @return DecorateTabbarVo
*/
DecorateTabbarVo detail();
/**
* 底部导航保存
*
* @author fzr
* @param tabsValidate 参数
*/
void save(DecorateTabsValidate tabsValidate);
}

View File

@ -0,0 +1,41 @@
package com.mdd.admin.service;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.validate.finance.FinanceRechargeSearchValidate;
import com.mdd.admin.vo.finance.FinanceRechargeListVo;
import com.mdd.common.core.PageResult;
/**
* 充值记录服务接口类
*/
public interface IFinanceRechargerService {
/**
* 充值记录
*
* @author fzr
* @param pageValidate 分页参数
* @param searchValidate 搜索参数
* @return PageResult<FinanceRechargeListVo>
*/
PageResult<FinanceRechargeListVo> list(PageValidate pageValidate, FinanceRechargeSearchValidate searchValidate);
/**
* 发起退款
*
* @author fzr
* @param orderId 订单ID
* @param adminId 管理员ID
*/
void refund(Integer orderId, Integer adminId);
/**
* 重新退款
*
* @author fzr
* @param recordId 记录ID
* @param adminId 管理员ID
*/
void refundAgain(Integer recordId, Integer adminId);
}

View File

@ -0,0 +1,34 @@
package com.mdd.admin.service;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.validate.finance.FinanceRefundSearchValidate;
import com.mdd.admin.vo.finance.FinanceRefundListVo;
import com.mdd.admin.vo.finance.FinanceRefundLogVo;
import com.mdd.common.core.PageResult;
import java.util.List;
/**
* 退款记录服务接口类
*/
public interface IFinanceRefundService {
/**
* 退款记录列表
*
* @author fzr
* @param pageValidate 分页参数
* @param searchValidate 搜索参数
* @return PageResult<FinanceRechargeListVo>
*/
PageResult<FinanceRefundListVo> list(PageValidate pageValidate, FinanceRefundSearchValidate searchValidate);
/**
* 退款日志
*
* @param recordId 退款日志ID
* @return List<FinanceRefundLogVo>
*/
List<FinanceRefundLogVo> log(Integer recordId);
}

View File

@ -0,0 +1,23 @@
package com.mdd.admin.service;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.validate.finance.FinanceWalletSearchValidate;
import com.mdd.admin.vo.finance.FinanceWalletListVo;
import com.mdd.common.core.PageResult;
/**
* 用户余额记录服务接口类
*/
public interface IFinanceWalletService {
/**
* 余额明细列表
*
* @author fzr
* @param pageValidate 分页参数
* @param searchValidate 搜索参数
* @return PageResult<FinanceWalletListVo>
*/
PageResult<FinanceWalletListVo> list(PageValidate pageValidate, FinanceWalletSearchValidate searchValidate);
}

View File

@ -0,0 +1,23 @@
package com.mdd.admin.service;
import java.util.Map;
/**
* 主页服务接口类
*/
public interface IIndexService {
/**
* 控制台数据
*
* @author fzr
* @return Map<String, Object>
*/
Map<String, Object> console();
/**
* 公共配置
*/
Map<String, Object> config();
}

View File

@ -0,0 +1,27 @@
package com.mdd.admin.service;
import com.mdd.admin.validate.marketing.MarketingRechargeValidate;
import com.mdd.admin.vo.marketing.MarketingRechargeVo;
/**
* 营销充值服务接口类
*/
public interface IMarketingRechargeService {
/**
* 充值配置详情
*
* @author fzr
* @return MarketingRechargeVo
*/
MarketingRechargeVo detail();
/**
* 充值配置保存
*
* @author fzr
* @param rechargeValidate 充值参数
*/
void save(MarketingRechargeValidate rechargeValidate);
}

View File

@ -0,0 +1,29 @@
package com.mdd.admin.service;
import com.mdd.admin.validate.setting.SettingCopyrightValidate;
import com.mdd.admin.vo.setting.SettingCopyrightVo;
import java.util.List;
/**
* 网站备案服务接口类
*/
public interface ISettingCopyrightService {
/**
* 获取网站备案信息
*
* @author fzr
* @return List<SettingCopyrightVo>
*/
List<SettingCopyrightVo> detail();
/**
* 保存网站备案信息
*
* @author fzr
* @param copyrightValidate 参数
*/
void save(SettingCopyrightValidate copyrightValidate);
}

View File

@ -0,0 +1,68 @@
package com.mdd.admin.service;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.validate.setting.DictDataCreateValidate;
import com.mdd.admin.validate.setting.DictDataUpdateValidate;
import com.mdd.admin.vo.setting.SettingDictDataVo;
import com.mdd.common.core.PageResult;
import java.util.List;
import java.util.Map;
/**
* 字典数据服务接口类
*/
public interface ISettingDictDataService {
/**
* 字典数据所有
*
* @author fzr
* @return List<DictDataVo>
*/
List<SettingDictDataVo> all(Map<String, String> params);
/**
* 字典数据列表
*
* @author fzr
* @param pageValidate 分页参数
* @param params 搜索参数
* @return PageResult<DictDataVo>
*/
PageResult<SettingDictDataVo> list(PageValidate pageValidate, Map<String, String> params);
/**
* 字典数据详情
*
* @author fzr
* @param id 主键
* @return DictDataVo
*/
SettingDictDataVo detail(Integer id);
/**
* 字典数据新增
*
* @author fzr
* @param createValidate 参数
*/
void add(DictDataCreateValidate createValidate);
/**
* 字典数据编辑
*
* @author fzr
* @param updateValidate 参数
*/
void edit(DictDataUpdateValidate updateValidate);
/**
* 字典数据删除
*
* @author fzr
* @param ids 主键
*/
void del(List<Integer> ids);
}

View File

@ -0,0 +1,68 @@
package com.mdd.admin.service;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.validate.setting.DictTypeCreateValidate;
import com.mdd.admin.validate.setting.DictTypeUpdateValidate;
import com.mdd.admin.vo.setting.SettingDictTypeVo;
import com.mdd.common.core.PageResult;
import java.util.List;
import java.util.Map;
/**
* 字典类型服务接口类
*/
public interface ISettingDictTypeService {
/**
* 字典类型所有
*
* @author fzr
* @return List<DictTypeVo>
*/
List<SettingDictTypeVo> all();
/**
* 字典类型列表
*
* @author fzr
* @param pageValidate 分页参数
* @param params 搜索参数
* @return PageResult<DictDataVo>
*/
PageResult<SettingDictTypeVo> list(PageValidate pageValidate, Map<String, String> params);
/**
* 字典类型详情
*
* @author fzr
* @param id 主键
* @return DictDataVo
*/
SettingDictTypeVo detail(Integer id);
/**
* 字典类型新增
*
* @author fzr
* @param createValidate 参数
*/
void add(DictTypeCreateValidate createValidate);
/**
* 字典类型编辑
*
* @author fzr
* @param updateValidate 参数
*/
void edit(DictTypeUpdateValidate updateValidate);
/**
* 字典类型删除
*
* @author fzr
* @param ids 主键
*/
void del(List<Integer> ids);
}

View File

@ -0,0 +1,29 @@
package com.mdd.admin.service;
import com.mdd.admin.validate.setting.SettingLoginValidate;
import com.mdd.admin.vo.setting.SettingLoginVo;
import java.util.Map;
/**
* 登录设置服务接口类
*/
public interface ISettingLoginService {
/**
* 登录设置详情
*
* @author fzr
* @return SettingLoginVo
*/
SettingLoginVo detail();
/**
* 登录设置保存
*
* @author fzr
* @param loginValidate 参数
*/
void save(SettingLoginValidate loginValidate);
}

View File

@ -0,0 +1,40 @@
package com.mdd.admin.service;
import com.mdd.admin.vo.setting.SettingNoticeDetailVo;
import com.mdd.admin.vo.setting.SettingNoticeListedVo;
import java.util.List;
import java.util.Map;
/**
* 通知设置服务接口类
*/
public interface ISettingNoticeService {
/**
* 通知设置列表
*
* @author fzr
* @param recipient 1=用户, 2=平台
* @return List<NoticeSettingListVo>
*/
List<SettingNoticeListedVo> list(Integer recipient);
/**
* 通知设置详情
*
* @author fzr
* @param id 主键
* @return NoticeDetailVo
*/
SettingNoticeDetailVo detail(Integer id);
/**
* 通知设置保存
*
* @author fzr
* @param params 参数
*/
void save(Map<String, Object> params);
}

View File

@ -0,0 +1,56 @@
package com.mdd.admin.service;
import com.mdd.admin.validate.setting.SettingPayConfigValidate;
import com.mdd.admin.validate.setting.SettingPayMethodValidate;
import com.mdd.admin.vo.setting.SettingPaymentMethodVo;
import com.mdd.common.entity.setting.DevPayConfig;
import java.util.List;
/**
* 支付配置服务接口类
*/
public interface ISettingPaymentService {
/**
* 支付方式
*
* @author fzr
* @return List<List<SettingPaymentMethodVo>>
*/
List<List<SettingPaymentMethodVo>> method();
/**
* 配置列表
*
* @author fzr
* @return List<DevPayConfig>
*/
List<DevPayConfig> list();
/**
* 配置详情
*
* @author fzr
* @param id 主键
* @return SettingPaymentMethodVo
*/
DevPayConfig detail(Integer id);
/**
* 编辑支付配置
*
* @author fzr
* @param configValidate 参数
*/
void editConfig(SettingPayConfigValidate configValidate);
/**
* 编辑支付方式
*
* @author fzr
* @param methodValidate 参数
*/
void editMethod(SettingPayMethodValidate methodValidate);
}

View File

@ -0,0 +1,29 @@
package com.mdd.admin.service;
import com.mdd.admin.validate.setting.SettingProtocolValidate;
import com.mdd.admin.vo.setting.SettingProtocolDetailVo;
import java.util.Map;
/**
* 政策协议服务接口类
*/
public interface ISettingProtocolService {
/**
* 获取政策协议信息
*
* @author fzr
* @return SettingProtocolDetailVo
*/
SettingProtocolDetailVo detail();
/**
* 保存政策协议信息
*
* @author fzr
* @param protocolValidate 参数
*/
void save(SettingProtocolValidate protocolValidate);
}

View File

@ -0,0 +1,30 @@
package com.mdd.admin.service;
import com.mdd.admin.validate.setting.SettingSearchValidate;
import com.mdd.admin.vo.setting.SettingSearchDetailVo;
import java.util.Map;
/**
* 热门搜索服务接口类
*/
public interface ISettingSearchService {
/**
* 热门搜索详情
*
* @author fzr
* @return SettingSearchDetailVo
*/
SettingSearchDetailVo detail();
/**
* 热门搜索新增
*
* @author fzr
* @param searchValidate 参数
*/
void save(SettingSearchValidate searchValidate);
}

View File

@ -0,0 +1,36 @@
package com.mdd.admin.service;
import java.util.List;
import java.util.Map;
/**
* 短信配置接口类
*/
public interface ISettingSmsService {
/**
* 短信引擎列表
*
* @author fzr
* @return List<Map<String, Object>>
*/
List<Map<String, Object>> list();
/**
* 短信引擎详情
*
* @author fzr
* @param alias 别名
* @return Map<String, Object>
*/
Map<String, Object> detail(String alias);
/**
* 短信引擎保存
*
* @author fzr
* @param params 参数
*/
void save(Map<String, String> params);
}

View File

@ -0,0 +1,45 @@
package com.mdd.admin.service;
import java.util.List;
import java.util.Map;
/**
* 存储配置服务接口类
*/
public interface ISettingStorageService {
/**
* 存储列表
*
* @author fzr
* @return List<Map<String, Object>>
*/
List<Map<String, Object>> list();
/**
* 存储详情
*
* @author fzr
* @param alias 引擎别名
* @return Map<String, Object>
*/
Map<String, Object> detail(String alias);
/**
* 存储编辑
*
* @author fzr
* @param params 参数
*/
void edit(Map<String, String> params);
/**
* 存储切换
*
* @author fzr
* @param alias 引擎别名
* @param status 状态
*/
void change(String alias, Integer status);
}

View File

@ -0,0 +1,29 @@
package com.mdd.admin.service;
import com.mdd.admin.validate.setting.SettingUserValidate;
import com.mdd.admin.vo.setting.SettingUserVo;
import java.util.Map;
/**
* 用户设置服务接口类
*/
public interface ISettingUserService {
/**
* 用户设置详情
*
* @author fzr
* @return SettingUserVo
*/
SettingUserVo detail();
/**
* 用户设置保存
*
* @author fzr
* @param userValidate 参数
*/
void save(SettingUserValidate userValidate);
}

View File

@ -0,0 +1,29 @@
package com.mdd.admin.service;
import com.mdd.admin.validate.setting.SettingWebsiteValidate;
import com.mdd.admin.vo.setting.SettingWebsiteVo;
import java.util.Map;
/**
* 网站信息服务接口类
*/
public interface ISettingWebsiteService {
/**
* 获取网站信息
*
* @author fzr
* @return SettingWebsiteVo
*/
SettingWebsiteVo detail();
/**
* 保存网站信息
*
* @author fzr
* @param websiteValidate 参数
*/
void save(SettingWebsiteValidate websiteValidate);
}

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