Compare commits
No commits in common. "wzj-main" and "5.X" have entirely different histories.
@ -1,2 +0,0 @@
|
||||
spring.datasource.username
|
||||
spring.datasource.password
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -46,4 +46,3 @@ nbdist/
|
||||
!*/build/*.xml
|
||||
|
||||
.flattened-pom.xml
|
||||
/.run/
|
||||
|
@ -3,7 +3,7 @@
|
||||
<deployment type="dockerfile">
|
||||
<settings>
|
||||
<option name="imageTag" value="ruoyi/ruoyi-server:5.3.1" />
|
||||
<option name="containerName" value="" />
|
||||
<option name="buildOnly" value="true" />
|
||||
<option name="sourceFilePath" value="ruoyi-admin/Dockerfile" />
|
||||
</settings>
|
||||
</deployment>
|
||||
|
@ -3,15 +3,7 @@
|
||||
<deployment type="dockerfile">
|
||||
<settings>
|
||||
<option name="imageTag" value="ruoyi/ruoyi-snailjob-server:5.3.1" />
|
||||
<option name="containerName" value="snail-job" />
|
||||
<option name="portBindings">
|
||||
<list>
|
||||
<DockerPortBindingImpl>
|
||||
<option name="containerPort" value="8800" />
|
||||
<option name="hostPort" value="8800" />
|
||||
</DockerPortBindingImpl>
|
||||
</list>
|
||||
</option>
|
||||
<option name="buildOnly" value="true" />
|
||||
<option name="sourceFilePath" value="ruoyi-extend/ruoyi-snailjob-server/Dockerfile" />
|
||||
</settings>
|
||||
</deployment>
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
145
pom.xml
145
pom.xml
@ -19,6 +19,7 @@
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
<java.version>17</java.version>
|
||||
<mybatis.version>3.5.16</mybatis.version>
|
||||
<springdoc.version>2.8.5</springdoc.version>
|
||||
<therapi-javadoc.version>0.15.0</therapi-javadoc.version>
|
||||
<easyexcel.version>4.0.3</easyexcel.version>
|
||||
<velocity.version>2.3</velocity.version>
|
||||
@ -30,7 +31,7 @@
|
||||
<redisson.version>3.45.1</redisson.version>
|
||||
<lock4j.version>2.2.7</lock4j.version>
|
||||
<dynamic-ds.version>4.3.1</dynamic-ds.version>
|
||||
<snailjob.version>1.5.0</snailjob.version>
|
||||
<snailjob.version>1.4.0</snailjob.version>
|
||||
<mapstruct-plus.version>1.4.6</mapstruct-plus.version>
|
||||
<mapstruct-plus.lombok.version>0.2.0</mapstruct-plus.lombok.version>
|
||||
<lombok.version>1.18.36</lombok.version>
|
||||
@ -58,17 +59,15 @@
|
||||
<flatten-maven-plugin.version>1.3.0</flatten-maven-plugin.version>
|
||||
<!-- 打包默认跳过测试 -->
|
||||
<skipTests>true</skipTests>
|
||||
<knife4j-plus.version>4.6.0</knife4j-plus.version>
|
||||
<okhttp.version>4.12.0</okhttp.version>
|
||||
</properties>
|
||||
|
||||
<profiles>
|
||||
<profile>
|
||||
<id>test</id>
|
||||
<id>local</id>
|
||||
<properties>
|
||||
<!-- 环境标识,需要与配置文件的名称相对应 -->
|
||||
<profiles.active>test</profiles.active>
|
||||
<logging.level>debug</logging.level>
|
||||
<profiles.active>local</profiles.active>
|
||||
<logging.level>info</logging.level>
|
||||
<monitor.username>ruoyi</monitor.username>
|
||||
<monitor.password>123456</monitor.password>
|
||||
</properties>
|
||||
@ -78,7 +77,7 @@
|
||||
<properties>
|
||||
<!-- 环境标识,需要与配置文件的名称相对应 -->
|
||||
<profiles.active>dev</profiles.active>
|
||||
<logging.level>debug</logging.level>
|
||||
<logging.level>info</logging.level>
|
||||
<monitor.username>ruoyi</monitor.username>
|
||||
<monitor.password>123456</monitor.password>
|
||||
</properties>
|
||||
@ -96,27 +95,12 @@
|
||||
<monitor.password>123456</monitor.password>
|
||||
</properties>
|
||||
</profile>
|
||||
<profile>
|
||||
<id>local</id>
|
||||
<properties>
|
||||
<profiles.active>local</profiles.active>
|
||||
<logging.level>debug</logging.level>
|
||||
<monitor.username>ruoyi</monitor.username>
|
||||
<monitor.password>123456</monitor.password>
|
||||
</properties>
|
||||
</profile>
|
||||
</profiles>
|
||||
|
||||
<!-- 依赖声明 -->
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.github.xingfudeshi</groupId>
|
||||
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
|
||||
<version>${knife4j-plus.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- SpringBoot的依赖配置-->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
@ -163,6 +147,12 @@
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springdoc</groupId>
|
||||
<artifactId>springdoc-openapi-starter-webmvc-api</artifactId>
|
||||
<version>${springdoc.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.github.therapi</groupId>
|
||||
<artifactId>therapi-runtime-javadoc</artifactId>
|
||||
@ -303,12 +293,12 @@
|
||||
<dependency>
|
||||
<groupId>com.aizuda</groupId>
|
||||
<artifactId>snail-job-client-starter</artifactId>
|
||||
<version>1.5.0</version>
|
||||
<version>${snailjob.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.aizuda</groupId>
|
||||
<artifactId>snail-job-client-job-core</artifactId>
|
||||
<version>1.5.0</version>
|
||||
<version>${snailjob.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- 加密包引入 -->
|
||||
@ -367,67 +357,12 @@
|
||||
<version>${revision}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- 交易模块 -->
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-transaction</artifactId>
|
||||
<version>${revision}</version>
|
||||
</dependency>
|
||||
<!-- 工作流模块 -->
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-workflow</artifactId>
|
||||
<version>${revision}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-content</artifactId>
|
||||
<version>${revision}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-order</artifactId>
|
||||
<version>${revision}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-member</artifactId>
|
||||
<version>${revision}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-im</artifactId>
|
||||
<version>${revision}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-goods</artifactId>
|
||||
<version>${revision}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-common-mq</artifactId>
|
||||
<version>${revision}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-auth</artifactId>
|
||||
<version>${revision}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.squareup.okhttp3</groupId>
|
||||
<artifactId>okhttp</artifactId>
|
||||
<version>${okhttp.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-common-mongo</artifactId>
|
||||
<version>${revision}</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
@ -442,56 +377,6 @@
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-antrun-plugin</artifactId>
|
||||
<version>3.1.0</version>
|
||||
<!-- 依赖 JSch 库(用于 SSH/SCP 操作) -->
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.jcraft</groupId>
|
||||
<artifactId>jsch</artifactId>
|
||||
<version>0.1.55</version> <!-- 最新版本可更新 -->
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<executions>
|
||||
<execution>
|
||||
<!-- 绑定到 package 阶段之后执行 -->
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>run</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<!-- <target>-->
|
||||
<!-- <!– 1. 配置 SSH 连接信息 –>-->
|
||||
<!-- <property name="ssh.host" value="192.168.1.65" /> <!– 例如:192.168.1.100 –>-->
|
||||
<!-- <property name="ssh.port" value="22" /> <!– SSH 默认端口 –>-->
|
||||
<!-- <property name="ssh.username" value="wzj" /> <!– 例如:root –>-->
|
||||
<!-- <property name="ssh.password" value="123456" /> <!– 或使用密钥认证 –>-->
|
||||
<!-- <property name="local.jar.path" value="${project.build.directory}/${project.build.finalName}.jar" /> <!– 本地 JAR 路径 –>-->
|
||||
<!-- <property name="remote.jar.path" value="/var/local/docker/java/data" /> <!– 服务器存放 JAR 的目录,例如:/opt/app/ –>-->
|
||||
|
||||
<!-- <!– 2. 通过 SCP 上传 JAR 包到目标服务器 –>-->
|
||||
<!-- <scp-->
|
||||
<!-- file="${local.jar.path}"-->
|
||||
<!-- todir="${ssh.username}:${ssh.password}@${ssh.host}:${remote.jar.path}"-->
|
||||
<!-- port="${ssh.port}"-->
|
||||
<!-- trust="true" /> <!– 信任未知主机密钥 –>-->
|
||||
|
||||
<!-- <!– 3. 通过 SSH 执行远程命令:重启 docker java 容器 –>-->
|
||||
<!-- <sshexec-->
|
||||
<!-- host="${ssh.host}"-->
|
||||
<!-- port="${ssh.port}"-->
|
||||
<!-- username="${ssh.username}"-->
|
||||
<!-- password="${ssh.password}"-->
|
||||
<!-- command="docker restart java"-->
|
||||
<!-- trust="true"-->
|
||||
<!-- failonerror="true" /> <!– 命令执行失败时,Maven 构建终止 –>-->
|
||||
<!-- </target>-->
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
@ -540,7 +425,7 @@
|
||||
<configuration>
|
||||
<argLine>-Dfile.encoding=UTF-8</argLine>
|
||||
<!-- 根据打包环境执行对应的@Tag测试方法 -->
|
||||
<groups>dev</groups>
|
||||
<groups>${profiles.active}</groups>
|
||||
<!-- 排除标签 -->
|
||||
<excludedGroups>exclude</excludedGroups>
|
||||
</configuration>
|
||||
|
@ -22,21 +22,28 @@
|
||||
<groupId>com.mysql</groupId>
|
||||
<artifactId>mysql-connector-j</artifactId>
|
||||
</dependency>
|
||||
<!-- Oracle -->
|
||||
<dependency>
|
||||
<groupId>com.oracle.database.jdbc</groupId>
|
||||
<artifactId>ojdbc8</artifactId>
|
||||
</dependency>
|
||||
<!-- PostgreSql -->
|
||||
<dependency>
|
||||
<groupId>org.postgresql</groupId>
|
||||
<artifactId>postgresql</artifactId>
|
||||
</dependency>
|
||||
<!-- SqlServer -->
|
||||
<dependency>
|
||||
<groupId>com.microsoft.sqlserver</groupId>
|
||||
<artifactId>mssql-jdbc</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- <!– mp支持的数据库均支持 只需要增加对应的jdbc依赖即可 –>-->
|
||||
<!-- <!– Oracle –>-->
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>com.oracle.database.jdbc</groupId>-->
|
||||
<!-- <artifactId>ojdbc8</artifactId>-->
|
||||
<!-- </dependency>-->
|
||||
<!-- <!– 兼容oracle低版本 –>-->
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>com.oracle.database.nls</groupId>-->
|
||||
<!-- <artifactId>orai18n</artifactId>-->
|
||||
<!-- </dependency>-->
|
||||
<!-- <!– PostgreSql –>-->
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>org.postgresql</groupId>-->
|
||||
<!-- <artifactId>postgresql</artifactId>-->
|
||||
<!-- </dependency>-->
|
||||
<!-- <!– SqlServer –>-->
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>com.microsoft.sqlserver</groupId>-->
|
||||
<!-- <artifactId>mssql-jdbc</artifactId>-->
|
||||
<!-- </dependency>-->
|
||||
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
@ -63,27 +70,6 @@
|
||||
<artifactId>ruoyi-system</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-im</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-goods</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-content</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-member</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-order</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-job</artifactId>
|
||||
@ -107,13 +93,6 @@
|
||||
<artifactId>ruoyi-workflow</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- 交易模块 -->
|
||||
<dependency>
|
||||
<groupId>org.dromara</groupId>
|
||||
<artifactId>ruoyi-transaction</artifactId>
|
||||
</dependency>
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>de.codecentric</groupId>
|
||||
<artifactId>spring-boot-admin-starter-client</artifactId>
|
||||
|
@ -3,8 +3,6 @@ package org.dromara;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup;
|
||||
import org.springframework.context.annotation.ComponentScan;
|
||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||
|
||||
/**
|
||||
* 启动程序
|
||||
@ -13,8 +11,6 @@ import org.springframework.scheduling.annotation.EnableScheduling;
|
||||
*/
|
||||
|
||||
@SpringBootApplication
|
||||
@EnableScheduling
|
||||
@ComponentScan(basePackages = {"org.dromara", "com.wzj.soopin"})
|
||||
public class DromaraApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
@ -1,32 +0,0 @@
|
||||
package org.dromara.app;
|
||||
|
||||
import com.wzj.soopin.content.domain.bo.ArticleBO;
|
||||
import com.wzj.soopin.content.domain.vo.ArticleVO;
|
||||
import com.wzj.soopin.content.service.IArticleService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/app/article")
|
||||
@Tag(name = "内容管理")
|
||||
@RequiredArgsConstructor
|
||||
public class AppArticleController {
|
||||
|
||||
private final IArticleService service;
|
||||
@Operation(summary = "轮播列表")
|
||||
@PostMapping("/carousel")
|
||||
public R<List<ArticleVO>> carousel(@RequestBody ArticleBO bo) {
|
||||
bo.setType(1);//轮播图
|
||||
bo.setCategoryId(1l);
|
||||
List<ArticleVO> articleList = service.selectVoList( bo.toWrapper());
|
||||
return R.ok(articleList);
|
||||
}
|
||||
}
|
@ -1,88 +0,0 @@
|
||||
package org.dromara.app;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.wzj.soopin.content.domain.bo.CommentBO;
|
||||
import com.wzj.soopin.content.domain.po.Comment;
|
||||
import com.wzj.soopin.content.domain.vo.CommentVO;
|
||||
import com.wzj.soopin.content.service.CommentService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@Slf4j
|
||||
@Tag(name = "管理端-评论管理接口")
|
||||
@RequestMapping("/app/comment")
|
||||
@RestController
|
||||
public class AppCommentController {
|
||||
@Autowired
|
||||
private CommentService commentService;
|
||||
|
||||
@Operation(summary = "查询视频评论列表")
|
||||
@PostMapping("/page")
|
||||
public R<Page<CommentVO>> queryVlogComments(
|
||||
@RequestBody CommentBO bo,
|
||||
@RequestBody Page<Comment> page) {
|
||||
try {
|
||||
Page<CommentVO> commentPage = commentService.pageComment(page, bo);
|
||||
return R.ok(commentPage);
|
||||
} catch (Exception e) {
|
||||
log.error("查询视频评论列表失败", e);
|
||||
return R.fail("查询视频评论列表失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@Operation(summary = "发布评论")
|
||||
@PostMapping("/publish")
|
||||
public R<Void> publishComment(@RequestBody CommentBO bo) {
|
||||
try {
|
||||
commentService.publishComment(bo);
|
||||
return R.ok();
|
||||
} catch (Exception e) {
|
||||
log.error("发布评论失败", e);
|
||||
return R.fail("发布评论失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@Operation(summary = "删除评论")
|
||||
@PostMapping("/delete")
|
||||
public R<Void> deleteComment(@RequestParam String commentId) {
|
||||
try {
|
||||
String username = LoginHelper.getUsername();
|
||||
commentService.deleteComment(commentId, username);
|
||||
return R.ok();
|
||||
} catch (Exception e) {
|
||||
log.error("删除评论失败", e);
|
||||
return R.fail("删除评论失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@Operation(summary = "获取评论详情")
|
||||
@GetMapping("/detail")
|
||||
public R<Map<String, Object>> getCommentDetail(@RequestParam String commentId) {
|
||||
try {
|
||||
Comment comment = commentService.getCommentDetail(commentId);
|
||||
if (comment == null) {
|
||||
return R.fail("评论不存在");
|
||||
}
|
||||
|
||||
// 获取子评论
|
||||
List<Comment> childComments = commentService.getChildComments(commentId);
|
||||
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
result.put("comment", comment);
|
||||
result.put("childComments", childComments);
|
||||
|
||||
return R.ok(result);
|
||||
} catch (Exception e) {
|
||||
log.error("获取评论详情失败", e);
|
||||
return R.fail("获取评论详情失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
@ -1,44 +0,0 @@
|
||||
package org.dromara.app;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.system.domain.vo.SysDictDataVo;
|
||||
import org.dromara.system.service.ISysDictDataService;
|
||||
import org.dromara.system.service.ISysDictTypeService;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Slf4j
|
||||
@Tag(name = "字典数据接口")
|
||||
@RequestMapping("/app/sys/dict")
|
||||
@RestController
|
||||
@AllArgsConstructor
|
||||
public class AppDictController {
|
||||
private final ISysDictDataService dictDataService;
|
||||
private final ISysDictTypeService dictTypeService;
|
||||
|
||||
/**
|
||||
* 根据字典类型查询字典数据信息
|
||||
*
|
||||
* @param dictType 字典类型
|
||||
*/
|
||||
@Operation(summary = "根据字典类型查询字典数据信息")
|
||||
@GetMapping(value = "/type/{dictType}")
|
||||
public R<List<SysDictDataVo>> dictType(@PathVariable String dictType) {
|
||||
List<SysDictDataVo> data = dictTypeService.selectDictDataByTypeWithDefaultTenantID(dictType);
|
||||
if (ObjectUtil.isNull(data)) {
|
||||
data = new ArrayList<>();
|
||||
}
|
||||
return R.ok(data);
|
||||
}
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
package org.dromara.app;
|
||||
|
||||
import com.wzj.soopin.member.convert.FeedbackConvert;
|
||||
import com.wzj.soopin.member.domain.bo.FeedbackBO;
|
||||
import com.wzj.soopin.member.service.IFeedbackService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
|
||||
@Slf4j
|
||||
@Tag(name = "意见反馈")
|
||||
@RequestMapping("/app/feedback")
|
||||
@RestController
|
||||
@AllArgsConstructor
|
||||
public class AppFeedbackController {
|
||||
private final IFeedbackService service;
|
||||
private final FeedbackConvert convert;
|
||||
|
||||
@Operation(summary = "修改意见反馈备注信息")
|
||||
@Log(title = "新增意见反馈", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/add")
|
||||
public R add(@RequestBody FeedbackBO feedback) {
|
||||
return R.ok(service.save(convert.toPo(feedback)));
|
||||
}
|
||||
}
|
@ -1,266 +0,0 @@
|
||||
package org.dromara.app;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.wzj.soopin.member.business.IMemberBusiness;
|
||||
import com.wzj.soopin.member.convert.AccountBillConvert;
|
||||
import com.wzj.soopin.member.convert.MemberAccountConvert;
|
||||
import com.wzj.soopin.member.convert.MemberBankConvert;
|
||||
import com.wzj.soopin.member.convert.MemberConvert;
|
||||
import com.wzj.soopin.member.domain.bo.AccountBillBO;
|
||||
import com.wzj.soopin.member.domain.bo.MemberBO;
|
||||
import com.wzj.soopin.member.domain.bo.MemberBankBO;
|
||||
import com.wzj.soopin.member.domain.po.AccountBill;
|
||||
import com.wzj.soopin.member.domain.po.Member;
|
||||
import com.wzj.soopin.member.domain.po.MemberAccount;
|
||||
import com.wzj.soopin.member.domain.po.MemberBank;
|
||||
import com.wzj.soopin.member.domain.vo.AccountBillVO;
|
||||
import com.wzj.soopin.member.domain.vo.MemberAccountVO;
|
||||
import com.wzj.soopin.member.domain.vo.MemberBankVO;
|
||||
import com.wzj.soopin.member.domain.vo.MemberVO;
|
||||
import com.wzj.soopin.member.service.IFansService;
|
||||
import com.wzj.soopin.member.service.IMemberAccountService;
|
||||
import com.wzj.soopin.member.service.IMemberBankService;
|
||||
import com.wzj.soopin.member.service.IMemberService;
|
||||
import com.wzj.soopin.transaction.convert.ChargeConvert;
|
||||
import com.wzj.soopin.transaction.convert.WithdrawConvert;
|
||||
import com.wzj.soopin.transaction.domain.bo.ChargeBO;
|
||||
import com.wzj.soopin.transaction.domain.bo.WithdrawBO;
|
||||
import com.wzj.soopin.transaction.domain.entity.InitiateBatchTransferResponseNew;
|
||||
import com.wzj.soopin.transaction.domain.po.Withdraw;
|
||||
import com.wzj.soopin.transaction.enums.WithdrawType;
|
||||
import com.wzj.soopin.transaction.service.IAccountBillService;
|
||||
import com.wzj.soopin.transaction.service.IChargeService;
|
||||
import com.wzj.soopin.transaction.service.IWithdrawService;
|
||||
import com.wzj.soopin.transaction.service.impl.WxAuthService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import me.zhyd.oauth.model.AuthResponse;
|
||||
import me.zhyd.oauth.model.AuthToken;
|
||||
import me.zhyd.oauth.model.AuthUser;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.domain.model.LoginUser;
|
||||
import org.dromara.common.core.domain.model.SocialLoginBody;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.core.utils.ValidatorUtils;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.ratelimiter.annotation.RateLimiter;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.common.social.config.properties.SocialProperties;
|
||||
import org.dromara.common.social.utils.SocialUtils;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/app/member")
|
||||
@Tag(name = "会员管理")
|
||||
@RequiredArgsConstructor
|
||||
public class AppMemberController {
|
||||
private final IMemberBusiness memberBusiness;
|
||||
|
||||
private final IMemberService service;
|
||||
|
||||
private final MemberConvert convert;
|
||||
|
||||
private final MemberAccountConvert accountConvert;
|
||||
|
||||
private final IMemberAccountService accountService;
|
||||
|
||||
private final IAccountBillService accountBillService;
|
||||
|
||||
private final AccountBillConvert accountBillConvert;
|
||||
private final SocialProperties socialProperties;
|
||||
|
||||
private final IMemberBankService memberBankService;
|
||||
private final MemberBankConvert memberBankConvert;
|
||||
private final IChargeService chargeService;
|
||||
private final ChargeConvert chargeConvert;
|
||||
|
||||
private final IWithdrawService withdrawService;
|
||||
private final WithdrawConvert withdrawConvert;
|
||||
|
||||
private final WxAuthService wxAuthService;
|
||||
|
||||
private final IFansService fansService;
|
||||
|
||||
@Operation(summary = "获取会员账户信息详细信息")
|
||||
@GetMapping(value = "/info")
|
||||
public R<MemberVO> getInfo(Long memberId) {
|
||||
//获取用户信息
|
||||
if(memberId==null){
|
||||
LoginUser loginUser = LoginHelper.getLoginUser();
|
||||
if (loginUser == null) {
|
||||
throw new ServiceException("用户未登录");
|
||||
}
|
||||
memberId = loginUser.getUserId();
|
||||
}
|
||||
return R.ok(memberBusiness.info(memberId));
|
||||
}
|
||||
|
||||
@Operation(summary = "获取会员账户表详细信息")
|
||||
@GetMapping(value = "/account")
|
||||
public R<MemberAccountVO> accountInfo() {
|
||||
//获取用户信息
|
||||
LoginUser loginUser = LoginHelper.getLoginUser();
|
||||
if (loginUser == null) {
|
||||
throw new ServiceException("用户未登录");
|
||||
}
|
||||
return R.ok(accountConvert.toVO(accountService.getMemberAccount(loginUser.getUserId())));
|
||||
}
|
||||
|
||||
@Operation(summary = "查询账单")
|
||||
@PostMapping("/bank")
|
||||
public R<Page<MemberBankVO>> list(@RequestBody MemberBankBO bo,
|
||||
@RequestBody Page<MemberBank> page) {
|
||||
//获取用户信息
|
||||
LoginUser loginUser = LoginHelper.getLoginUser();
|
||||
if (loginUser == null) {
|
||||
throw new ServiceException("用户未登录");
|
||||
}
|
||||
Long memberId = loginUser.getUserId();
|
||||
bo.setMemberId(memberId);
|
||||
Page<MemberBank> memberPage = memberBankService.page(page, bo.toWrapper());
|
||||
return R.ok(memberBankConvert.toVO(memberPage));
|
||||
}
|
||||
|
||||
@Operation(summary = "查询账单")
|
||||
@PostMapping("/bills")
|
||||
public R<Page<AccountBillVO>> list(@RequestBody AccountBillBO bo,
|
||||
@RequestBody Page<AccountBill> page) {
|
||||
//获取用户信息
|
||||
LoginUser loginUser = LoginHelper.getLoginUser();
|
||||
if (loginUser == null) {
|
||||
throw new ServiceException("用户未登录");
|
||||
}
|
||||
Long memberId = loginUser.getUserId();
|
||||
//根据会员获取账户信息
|
||||
MemberAccount memberAccount = accountService.getMemberAccount(memberId);
|
||||
if (memberAccount == null) {
|
||||
throw new ServiceException("用户未绑定账户");
|
||||
}
|
||||
LambdaQueryWrapper<AccountBill> queryWrapper = bo.toWrapper();
|
||||
queryWrapper.eq(AccountBill::getAccountId, memberAccount.getId());
|
||||
queryWrapper.orderByDesc(AccountBill::getCreateTime);
|
||||
Page<AccountBill> memberPage = accountBillService.page(page, queryWrapper);
|
||||
return R.ok(accountBillConvert.toVO(memberPage));
|
||||
}
|
||||
|
||||
|
||||
@Operation(summary = "绑定推广人")
|
||||
@PostMapping("/bind/spread")
|
||||
public R<AuthToken> bindSpread(@RequestBody MemberBO bo) {
|
||||
|
||||
memberBusiness.bindSpread(bo);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@Operation(summary = "绑定微信")
|
||||
@PostMapping("/bind/wechat")
|
||||
public R<AuthToken> bindWechat(@RequestBody SocialLoginBody loginBody) {
|
||||
|
||||
//获取用户信息
|
||||
LoginUser loginUser = LoginHelper.getLoginUser();
|
||||
if (loginUser == null) {
|
||||
throw new ServiceException("用户未登录");
|
||||
}
|
||||
Long memberId = loginUser.getUserId();
|
||||
//
|
||||
ValidatorUtils.validate(loginBody);
|
||||
AuthResponse<AuthUser> response = SocialUtils.loginAuth(
|
||||
loginBody.getSource(), loginBody.getSocialCode(),
|
||||
loginBody.getSocialState(), socialProperties);
|
||||
if (!response.ok()) {
|
||||
throw new ServiceException(response.getMsg());
|
||||
}
|
||||
|
||||
AuthUser authUserData = response.getData();
|
||||
|
||||
// WxAuthResponse response1 = wxAuthService.getAccessTokenByCode(loginBody.getSocialCode());
|
||||
// String OpenId=response1.getOpenid();
|
||||
Member member = Member.builder().id(memberId).openId(authUserData.getUuid()).build();
|
||||
service.updateById(member);
|
||||
// 更新用户的微信信息
|
||||
// 返回给前端
|
||||
return R.ok(authUserData.getToken());
|
||||
}
|
||||
|
||||
@Operation(summary = "充值")
|
||||
@Log(title = "新增 ", businessType = BusinessType.INSERT)
|
||||
@PostMapping("/charge")
|
||||
public R charge(@RequestBody ChargeBO bo) {
|
||||
|
||||
//获取用户信息
|
||||
LoginUser loginUser = LoginHelper.getLoginUser();
|
||||
if (loginUser == null) {
|
||||
throw new ServiceException("用户未登录");
|
||||
}
|
||||
Long memberId = loginUser.getUserId();
|
||||
bo.setMemberId(memberId);
|
||||
|
||||
return R.ok(chargeService.charge(chargeConvert.toPo(bo)));
|
||||
}
|
||||
@Operation(summary = "提现")
|
||||
@Log(title = "提现 ", businessType = BusinessType.INSERT)
|
||||
@PostMapping("/withdraw")
|
||||
public R withdraw(@RequestBody WithdrawBO bo) {
|
||||
//获取用户信息
|
||||
LoginUser loginUser = LoginHelper.getLoginUser();
|
||||
if (loginUser == null) {
|
||||
return R.notLogin();
|
||||
}
|
||||
Long memberId = loginUser.getUserId();
|
||||
bo.setMemberId(memberId);
|
||||
bo.setType(WithdrawType.WALLET.getCode());
|
||||
Withdraw withdraw=withdrawConvert.toPo(bo);
|
||||
InitiateBatchTransferResponseNew responseNew= withdrawService.withdraw(withdraw);
|
||||
return R.ok(responseNew);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@RateLimiter(key = "#phonenumber", time = 60, count = 1)
|
||||
@GetMapping("/sms/code")
|
||||
@Operation(summary = "给当前登录会员的手机号发送短信验证码")
|
||||
public R smsCode(@RequestParam String templateId) {
|
||||
service.smsCode(templateId);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Operation(summary = "用户注销")
|
||||
@Log(title = "用户注销 ", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/revoked")
|
||||
public R revoked(@RequestParam String smsCode) {
|
||||
service.revoked(smsCode);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Operation(summary = "关注用户")
|
||||
@Log(title = "关注用户 ", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/follow")
|
||||
public R follow(@RequestParam Long vloggerId) {
|
||||
LoginUser loginUser= LoginHelper.getLoginUser();
|
||||
if (loginUser == null) {
|
||||
throw new ServiceException("用户未登录");
|
||||
}
|
||||
fansService.doFollow(loginUser.getUserId(), vloggerId);
|
||||
return R.ok();
|
||||
}
|
||||
@Operation(summary = "取消关注")
|
||||
@Log(title = "取消关注 ", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/cancel")
|
||||
public R cancelFollow(@RequestParam Long vloggerId) {
|
||||
LoginUser loginUser= LoginHelper.getLoginUser();
|
||||
if (loginUser == null) {
|
||||
throw new ServiceException("用户未登录");
|
||||
}
|
||||
fansService.doCancel(loginUser.getUserId(), vloggerId);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -1,122 +0,0 @@
|
||||
package org.dromara.app;
|
||||
|
||||
import com.wzj.soopin.transaction.business.IChargeBusiness;
|
||||
import com.wzj.soopin.transaction.domain.bo.ChargeBO;
|
||||
import com.wzj.soopin.transaction.enums.PaymentClientEnum;
|
||||
import com.wzj.soopin.transaction.enums.PaymentMethodEnum;
|
||||
import com.wzj.soopin.transaction.kit.CashierSupport;
|
||||
import com.wzj.soopin.transaction.kit.dto.PayParam;
|
||||
import com.wzj.soopin.transaction.kit.params.dto.CashierParam;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Parameters;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.constant.ResultCode;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.domain.model.LoginUser;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
|
||||
/**
|
||||
* 买家端,收银台接口
|
||||
*
|
||||
* @author Chopper
|
||||
* @since 2020-12-18 16:59
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@Tag(name = "收银台接口")
|
||||
@RequestMapping("/app/payment")
|
||||
@RequiredArgsConstructor
|
||||
public class AppPayController {
|
||||
|
||||
private final IChargeBusiness chargeBusiness;
|
||||
private final CashierSupport cashierSupport;
|
||||
|
||||
|
||||
// @ApiImplicitParams({
|
||||
// @ApiImplicitParam(name = "client", value = "客户端类型", paramType = "path", allowableValues = "PC,H5,WECHAT_MP,APP")
|
||||
// })
|
||||
@PostMapping(value = "/tradeDetail")
|
||||
@Operation(summary = "获取支付详情")
|
||||
public R paymentParams(@RequestBody @Validated PayParam payParam) {
|
||||
|
||||
CashierParam cashierParam = cashierSupport.cashierParam(payParam);
|
||||
return R.ok( cashierParam);
|
||||
}
|
||||
|
||||
|
||||
@Parameters({
|
||||
@Parameter(name = "paymentMethod", description = "支付方式", allowReserved = true, schema = @Schema(allowableValues = {"WECHAT", "ALIPAY"})),
|
||||
@Parameter(name = "paymentClient", description = "调起方式", allowReserved = true, schema = @Schema(allowableValues = {"APP", "NATIVE", "JSAPI", "H5", "MP"}))
|
||||
})
|
||||
@PostMapping(value = "/pay")
|
||||
@Operation(summary = "支付")
|
||||
public R payment(
|
||||
HttpServletRequest request,
|
||||
HttpServletResponse response,
|
||||
@RequestBody @Validated PayParam payParam, @RequestBody ChargeBO chargeBO) {
|
||||
PaymentMethodEnum paymentMethodEnum = PaymentMethodEnum.valueOf(payParam.getPaymentMethod());
|
||||
PaymentClientEnum paymentClientEnum = PaymentClientEnum.valueOf(payParam.getPaymentClient());
|
||||
|
||||
try {
|
||||
|
||||
LoginUser user = LoginHelper.getLoginUser();
|
||||
if (user == null) {
|
||||
return R.notLogin();
|
||||
}
|
||||
if(payParam.getOrderType().equals("RECHARGE")){
|
||||
//先生成充值订单
|
||||
chargeBO.setMemberId(user.getUserId());
|
||||
chargeBO.setMethod(paymentMethodEnum.getCode());
|
||||
chargeBusiness.charge(chargeBO);
|
||||
payParam.setSn(chargeBO.getCode());
|
||||
}
|
||||
|
||||
return cashierSupport.payment(paymentMethodEnum, paymentClientEnum, request, response, payParam);
|
||||
} catch (ServiceException se) {
|
||||
log.info("支付异常", se);
|
||||
throw se;
|
||||
} catch (Exception e) {
|
||||
log.error("收银台支付错误", e);
|
||||
}
|
||||
return null;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Operation(summary = "支付回调")
|
||||
@RequestMapping(value = "/callback/{paymentMethod}", method = {RequestMethod.GET, RequestMethod.POST})
|
||||
public R<Object> callback(HttpServletRequest request, @PathVariable String paymentMethod) {
|
||||
|
||||
PaymentMethodEnum paymentMethodEnum = PaymentMethodEnum.valueOf(paymentMethod);
|
||||
|
||||
cashierSupport.callback(paymentMethodEnum, request);
|
||||
|
||||
return R.ok(ResultCode.PAY_SUCCESS);
|
||||
}
|
||||
|
||||
@Operation(summary = "支付异步通知")
|
||||
@RequestMapping(value = "/notify/{paymentMethod}", method = {RequestMethod.GET, RequestMethod.POST})
|
||||
public void notify(HttpServletRequest request, @PathVariable String paymentMethod) {
|
||||
|
||||
PaymentMethodEnum paymentMethodEnum = PaymentMethodEnum.valueOf(paymentMethod);
|
||||
|
||||
cashierSupport.notify(paymentMethodEnum, request);
|
||||
|
||||
}
|
||||
|
||||
@Operation(summary = "查询支付结果")
|
||||
@PostMapping(value = "/result")
|
||||
public R<Boolean> paymentResult(@RequestBody PayParam payParam) {
|
||||
return R.ok(cashierSupport.paymentResult(payParam));
|
||||
}
|
||||
}
|
@ -1,45 +0,0 @@
|
||||
package org.dromara.app;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.wzj.soopin.goods.convert.ProductCategoryConvert;
|
||||
import com.wzj.soopin.goods.domain.bo.ProductCategoryBo;
|
||||
import com.wzj.soopin.goods.domain.entity.ProductCategory;
|
||||
import com.wzj.soopin.goods.domain.vo.ProductCategoryVO;
|
||||
import com.wzj.soopin.goods.service.impl.ProductCategoryServiceImpl;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Tag(name ="商品分类")
|
||||
@RestController
|
||||
@RequestMapping("/app/product/category")
|
||||
@RequiredArgsConstructor
|
||||
public class AppProductCategoryController {
|
||||
|
||||
|
||||
private final ProductCategoryServiceImpl service;
|
||||
private final ProductCategoryConvert convert;
|
||||
|
||||
@Operation(summary = "查询商品分类列表")
|
||||
@PostMapping("page")
|
||||
public R<Page<ProductCategoryVO>> page(@RequestBody ProductCategoryBo query, Page<ProductCategory> page) {
|
||||
query.setShowStatus(1);
|
||||
Page<ProductCategory> productCategoryPage = service.page(page,query.toWrapper());
|
||||
return R.ok(convert.toVO(productCategoryPage));
|
||||
}
|
||||
@Operation(summary = "查询列表")
|
||||
@PostMapping("/tree")
|
||||
public R<List<ProductCategoryVO>> tree(@RequestBody ProductCategoryBo bo ) {
|
||||
bo.setShowStatus(1);
|
||||
List<ProductCategoryVO> articleList = service.tree( bo.toWrapper());
|
||||
return R.ok( articleList);
|
||||
}
|
||||
|
||||
}
|
@ -1,37 +0,0 @@
|
||||
package org.dromara.app;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.wzj.soopin.goods.convert.ProductConvert;
|
||||
import com.wzj.soopin.goods.domain.bo.ProductBo;
|
||||
import com.wzj.soopin.goods.domain.vo.ProductVO;
|
||||
import com.wzj.soopin.goods.service.ProductService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@Tag(name ="商品")
|
||||
@RestController
|
||||
@RequestMapping("/app/product")
|
||||
@RequiredArgsConstructor
|
||||
public class AppProductController {
|
||||
|
||||
private final ProductService service;
|
||||
private final ProductConvert convert;
|
||||
private final ProductService productService;
|
||||
|
||||
@Operation(summary = "查询商品信息列表")
|
||||
@PostMapping("page")
|
||||
public R<IPage<ProductVO>> page(@RequestBody ProductBo query) {
|
||||
IPage<ProductVO> resultPage = service.getProduct(query.getPage(), query);
|
||||
return R.ok(resultPage);
|
||||
}
|
||||
|
||||
@Operation(summary = "获取商品信息详细信息")
|
||||
@GetMapping(value = "/{id}")
|
||||
public R<ProductVO> getInfo(@PathVariable("id") Long id) {
|
||||
return R.ok(service.selectById(id));
|
||||
}
|
||||
|
||||
}
|
@ -1,72 +0,0 @@
|
||||
package org.dromara.app;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.wzj.soopin.content.domain.bo.SearchBO;
|
||||
import com.wzj.soopin.content.enums.SearchTypeEnum;
|
||||
import com.wzj.soopin.content.service.VlogService;
|
||||
import com.wzj.soopin.goods.domain.bo.ProductBo;
|
||||
import com.wzj.soopin.goods.service.ProductService;
|
||||
import com.wzj.soopin.member.domain.bo.MemberBO;
|
||||
import com.wzj.soopin.member.service.IMemberService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.domain.model.LoginUser;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/app/common/search")
|
||||
@Tag(name = "公共检索")
|
||||
@RequiredArgsConstructor
|
||||
public class AppSearchController {
|
||||
|
||||
private final ProductService productService;
|
||||
private final IMemberService memberService;
|
||||
private final VlogService vlogService;
|
||||
|
||||
@Operation(summary = "视频、商品和用户检索")
|
||||
@PostMapping("")
|
||||
public R<IPage<?>> search(@RequestBody SearchBO searchBO, @RequestBody Page page) {
|
||||
try {
|
||||
LoginUser loginUser = LoginHelper.getLoginUser();
|
||||
if (loginUser == null) {
|
||||
return R.notLogin();
|
||||
}
|
||||
searchBO.setUserId(String.valueOf(loginUser.getUserId()));
|
||||
} catch (Exception e) {
|
||||
log.error("用户没登陆", e);
|
||||
}
|
||||
if(searchBO.getTitle()==null || "".equals(searchBO.getTitle())){
|
||||
throw new ServiceException("请输入检索内容");
|
||||
}
|
||||
|
||||
IPage<?> pages = null;
|
||||
// 视频检索信息
|
||||
if (Objects.nonNull(searchBO) && Objects.nonNull(searchBO.getType()) && (SearchTypeEnum.VIDEO.type.intValue() == searchBO.getType().intValue())) {
|
||||
pages = vlogService.getIndexSearchVlogList(searchBO, page);
|
||||
// 商品检索信息
|
||||
} else if (Objects.nonNull(searchBO) && Objects.nonNull(searchBO.getType()) && (SearchTypeEnum.PRODUCT.type.intValue() == searchBO.getType().intValue())) {
|
||||
ProductBo productBo = new ProductBo();
|
||||
productBo.setNameLike(searchBO.getTitle());
|
||||
pages = productService.getProduct(page, productBo);
|
||||
// 用户检索信息
|
||||
} else if (Objects.nonNull(searchBO) && Objects.nonNull(searchBO.getType()) && (SearchTypeEnum.MEMBER.type.intValue() == searchBO.getType().intValue())) {
|
||||
MemberBO memberBO = new MemberBO();
|
||||
memberBO.setNickname(searchBO.getTitle());
|
||||
memberBO.setPhone(searchBO.getTitle());
|
||||
pages = memberService.getMemberPageList(memberBO, page);
|
||||
}
|
||||
return R.ok(pages);
|
||||
}
|
||||
}
|
@ -1,45 +0,0 @@
|
||||
package org.dromara.app;
|
||||
|
||||
import com.wzj.soopin.transaction.convert.WithdrawConvert;
|
||||
import com.wzj.soopin.transaction.domain.bo.WithdrawBO;
|
||||
import com.wzj.soopin.transaction.enums.WithdrawType;
|
||||
import com.wzj.soopin.transaction.service.IWithdrawService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.domain.model.LoginUser;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@Tag(name = "租户")
|
||||
@RestController
|
||||
@RequestMapping("/app/tenant")
|
||||
@RequiredArgsConstructor
|
||||
public class AppTenantController {
|
||||
|
||||
private final IWithdrawService withdrawService;
|
||||
private final WithdrawConvert withdrawConvert;
|
||||
@Operation(summary = "提现")
|
||||
@Log(title = "提现 ", businessType = BusinessType.INSERT)
|
||||
@PostMapping("/withdraw")
|
||||
public R withdraw(@RequestBody WithdrawBO bo) {
|
||||
//获取用户信息
|
||||
LoginUser loginUser = LoginHelper.getLoginUser();
|
||||
if (loginUser == null) {
|
||||
throw new ServiceException("用户未登录");
|
||||
}
|
||||
Long memberId = loginUser.getUserId();
|
||||
bo.setMemberId(memberId);
|
||||
bo.setType(WithdrawType.REVENUE.getCode());
|
||||
return R.ok(withdrawService.withdraw(withdrawConvert.toPo(bo)));
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
package org.dromara.app;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.system.domain.SysVersion;
|
||||
import org.dromara.system.domain.bo.SysVersionBo;
|
||||
import org.dromara.system.domain.vo.SysVersionVo;
|
||||
import org.dromara.system.service.ISysVerisonService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/app/version")
|
||||
public class AppVersionController {
|
||||
|
||||
|
||||
private final ISysVerisonService sysVerisonService;
|
||||
|
||||
@Operation(summary = "查询app版本管理")
|
||||
@PostMapping("/page")
|
||||
public R<IPage<SysVersionVo>> list(@RequestBody SysVersionBo query, Page<SysVersion> page){
|
||||
return R.ok(sysVerisonService.getList(page,query));
|
||||
}
|
||||
|
||||
}
|
@ -1,190 +0,0 @@
|
||||
package org.dromara.app;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.wzj.soopin.content.domain.bo.*;
|
||||
import com.wzj.soopin.content.domain.vo.IndexVlogVO;
|
||||
import com.wzj.soopin.content.enums.VlogStatusEnum;
|
||||
import com.wzj.soopin.content.enums.YesOrNo;
|
||||
import com.wzj.soopin.content.service.IVlogPullService;
|
||||
import com.wzj.soopin.content.service.VlogService;
|
||||
import com.wzj.soopin.content.service.VlogUploadService;
|
||||
import com.wzj.soopin.content.utils.QcCloud;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.domain.model.LoginUser;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.redis.redis.RedisCache;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
|
||||
@Slf4j
|
||||
@Tag(name = "VlogController 短视频相关业务功能的接口")
|
||||
@RequestMapping("/app/vlog")
|
||||
@RestController
|
||||
@AllArgsConstructor
|
||||
public class AppVlogController {
|
||||
private final VlogService vlogService;
|
||||
private final QcCloud qcCloud;
|
||||
private final VlogUploadService vlogUploadService;
|
||||
public final RedisCache cache;
|
||||
|
||||
private final IVlogPullService pullService;
|
||||
|
||||
@Operation(summary = "首页视频列表")
|
||||
@PostMapping("/indexList")
|
||||
@SaIgnore
|
||||
public R<Page<IndexVlogVO>> indexList(@RequestBody IndexListBO bo, @RequestBody Page page) {
|
||||
Page<IndexVlogVO> pages = pullService.pullFromMq(page);
|
||||
return R.ok(pages);
|
||||
}
|
||||
|
||||
@Operation(summary = "视频详情")
|
||||
@GetMapping("/detail/{vlogId}")
|
||||
public R<Object> detail(@PathVariable String vlogId) {
|
||||
|
||||
return R.ok(vlogService.getVlogDetailById(vlogId));
|
||||
}
|
||||
|
||||
@Operation(summary = "修改视频为私密")
|
||||
@PostMapping("/changeToPrivate")
|
||||
public R<Void> changeToPrivate(@RequestParam String vlogId) {
|
||||
vlogService.changeToPrivateOrPublic(vlogId, YesOrNo.YES.type);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@Operation(summary = "修改视频为公开")
|
||||
@PostMapping("/changeToPublic")
|
||||
public R<Void> changeToPublic(@RequestParam String vlogId) {
|
||||
vlogService.changeToPrivateOrPublic(vlogId, YesOrNo.NO.type);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
|
||||
@Operation(summary = "我的私密视频列表")
|
||||
@PostMapping("/myPrivateList")
|
||||
public R<Page<IndexVlogVO>> myPrivateList(@RequestBody MyListBO bo, @RequestBody Page page) {
|
||||
LoginUser loginUser = LoginHelper.getLoginUser();
|
||||
if (loginUser == null) {
|
||||
return R.notLogin();
|
||||
}
|
||||
bo.setUserId(String.valueOf(loginUser.getUserId()));
|
||||
Page<IndexVlogVO> pages = vlogService.queryMyVlogList(bo, page);
|
||||
return R.ok(pages);
|
||||
}
|
||||
|
||||
@Operation(summary = "我点赞的视频列表")
|
||||
@PostMapping("/myLikedList")
|
||||
public R<Page<IndexVlogVO>> myLikedList(@RequestBody MyLikedVlogBO bo, @RequestBody Page page) {
|
||||
|
||||
Page<IndexVlogVO> pages = vlogService.getMyLikedVlogList(page);
|
||||
return R.ok(pages);
|
||||
}
|
||||
|
||||
@Operation(summary = "我关注人的视频列表")
|
||||
@PostMapping("/followList")
|
||||
public R<Page<IndexVlogVO>> followList(@RequestBody SimpleListBO bo, @RequestBody Page page) {
|
||||
LoginUser loginUser = LoginHelper.getLoginUser();
|
||||
if (loginUser == null) {
|
||||
return R.notLogin();
|
||||
}
|
||||
bo.setMyId(String.valueOf(loginUser.getUserId()));
|
||||
Page<IndexVlogVO> pages = vlogService.getMyFollowVlogList(page);
|
||||
return R.ok(pages);
|
||||
}
|
||||
|
||||
@Operation(summary = "好友视频列表")
|
||||
@PostMapping("/friendList")
|
||||
public R<Page<IndexVlogVO>> friendList(@RequestBody SimpleListBO bo, @RequestBody Page page) {
|
||||
LoginUser loginUser = LoginHelper.getLoginUser();
|
||||
if (loginUser == null) {
|
||||
return R.notLogin();
|
||||
}
|
||||
bo.setMyId(String.valueOf(loginUser.getUserId()));
|
||||
Page<IndexVlogVO> pages = vlogService.getMyFriendVlogList(page);
|
||||
return R.ok(pages);
|
||||
}
|
||||
|
||||
|
||||
@Operation(summary = "上传视频到云点播")
|
||||
@PostMapping("publish")
|
||||
public R<Void> publish(@RequestBody VlogBO vlogBO) throws Exception {
|
||||
vlogService.createVlog(vlogBO);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@Operation(summary = "我的公开视频列表")
|
||||
@PostMapping("/myPublicList")
|
||||
public R<Page<IndexVlogVO>> myPublicList(@RequestBody MyListBO bo, @RequestBody Page page) {
|
||||
Page<IndexVlogVO> pages = vlogService.queryMyVlogList(bo, page);
|
||||
return R.ok(pages);
|
||||
}
|
||||
|
||||
@Operation(summary = "点赞")
|
||||
@PostMapping("/like")
|
||||
public R<Void> like(@RequestBody VlogBO vlogBO) {
|
||||
LoginUser loginUser = LoginHelper.getLoginUser();
|
||||
if (loginUser == null) {
|
||||
return R.notLogin();
|
||||
}
|
||||
String userId = String.valueOf(loginUser.getUserId());
|
||||
String vlogId = vlogBO.getId();
|
||||
|
||||
vlogService.userLikeVlog(userId, vlogId);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
|
||||
@Operation(summary = "取消点赞")
|
||||
@PostMapping("/unlike")
|
||||
public R<Void> unlike(@RequestBody VlogBO vlogBO) {
|
||||
LoginUser loginUser = LoginHelper.getLoginUser();
|
||||
if (loginUser == null) {
|
||||
return R.notLogin();
|
||||
}
|
||||
String userId = String.valueOf(loginUser.getUserId());
|
||||
String vlogId = vlogBO.getId();
|
||||
vlogService.userUnLikeVlog(userId, vlogId);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
|
||||
@Operation(summary = "删除视频")
|
||||
@GetMapping("/delete")
|
||||
public R<Void> delete(@RequestParam String id) {
|
||||
LoginUser loginUser = LoginHelper.getLoginUser();
|
||||
if (loginUser == null) {
|
||||
throw new ServiceException("用户未登录");
|
||||
}
|
||||
vlogService.removeById(id);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@Operation(summary = "视频列表")
|
||||
@PostMapping("/page")
|
||||
public R<Page<IndexVlogVO>> page(@RequestBody VlogBO vlogBO) {
|
||||
if (vlogBO.getMemberId() == null) {
|
||||
throw new ServiceException("用户id不能为空");
|
||||
}
|
||||
vlogBO.setStatus(VlogStatusEnum.APPROVED.type);
|
||||
vlogBO.setIsPrivate(YesOrNo.NO.type);
|
||||
return R.ok(vlogService.getIndexVlogList(vlogBO, vlogBO.getPage()));
|
||||
}
|
||||
|
||||
|
||||
@Operation(summary = "手动触发缓存点赞最多视频")
|
||||
@PostMapping("/cacheTopLikedVlogs")
|
||||
public R<Void> cacheTopLikedVlogs(@RequestParam(defaultValue = "100") int limit) {
|
||||
try {
|
||||
// vlogService.cacheTopLikedVlogs(limit);
|
||||
return R.ok();
|
||||
} catch (Exception e) {
|
||||
log.error("手动触发缓存点赞最多视频失败", e);
|
||||
return R.fail("缓存失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
@ -1,30 +0,0 @@
|
||||
package org.dromara.app;
|
||||
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* 买家端,退款回调
|
||||
*
|
||||
* @author Chopper
|
||||
* @since 2020-12-18 16:59
|
||||
*/
|
||||
@Tag(name = "买家端,退款回调")
|
||||
@RestController
|
||||
@RequestMapping("/buyer/payment/cashierRefund")
|
||||
@RequiredArgsConstructor
|
||||
public class CashierRefundController {
|
||||
|
||||
|
||||
// private final RefundSupport refundSupport;
|
||||
//
|
||||
//
|
||||
// @ApiOperation(value = "退款通知")
|
||||
// @RequestMapping(value = "/notify/{paymentMethod}", method = {RequestMethod.GET, RequestMethod.POST})
|
||||
// public void notify(HttpServletRequest request, @PathVariable String paymentMethod) {
|
||||
// PaymentMethodEnum paymentMethodEnum = PaymentMethodEnum.valueOf(paymentMethod);
|
||||
// refundSupport.notify(paymentMethodEnum, request);
|
||||
// }
|
||||
}
|
@ -1,81 +0,0 @@
|
||||
package org.dromara.app.customer;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.wzj.soopin.content.utils.RedisOperator;
|
||||
import com.wzj.soopin.order.business.IOrderBusiness;
|
||||
import com.wzj.soopin.order.domain.bo.OrderBo;
|
||||
import com.wzj.soopin.order.domain.bo.SaveOrderBO;
|
||||
import com.wzj.soopin.order.domain.vo.OrderVO;
|
||||
import com.wzj.soopin.order.service.IMemberOrderService;
|
||||
import com.wzj.soopin.order.service.OrderService;
|
||||
import com.wzj.soopin.order.service.VerificationCodeService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.domain.model.LoginUser;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
|
||||
@Slf4j
|
||||
@Tag(name = "app-用户-订单接口")
|
||||
@RequestMapping("/app/order")
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
public class AppOrderController {
|
||||
|
||||
private final OrderService orderService;
|
||||
|
||||
private final IMemberOrderService memberOrderService;
|
||||
private final VerificationCodeService verificationCodeService;
|
||||
|
||||
private final IOrderBusiness orderBusiness;
|
||||
|
||||
public RedisOperator redis;
|
||||
|
||||
@Operation(summary = "查询订单列表")
|
||||
@PostMapping("/page")
|
||||
public R<IPage<OrderVO>> page(@RequestBody OrderBo bo){
|
||||
LoginUser loginUser= LoginHelper.getLoginUser();
|
||||
bo.setMemberId(loginUser.getUserId());
|
||||
return R.ok(memberOrderService.page(bo));
|
||||
}
|
||||
|
||||
|
||||
@Operation(summary = "获取订单详细信息")
|
||||
@GetMapping(value = "/{id}")
|
||||
public R<OrderVO> getInfo(@PathVariable("id") Long id) {
|
||||
return R.ok(orderBusiness.info(id));
|
||||
}
|
||||
|
||||
|
||||
@Operation(summary = "生成订单")
|
||||
@Log(title = "生成订单", businessType = BusinessType.INSERT)
|
||||
@PostMapping("/add")
|
||||
public R<OrderVO> add(@RequestBody SaveOrderBO saveOrderBO) {
|
||||
return R.ok(orderService.saveOrder(saveOrderBO));
|
||||
}
|
||||
|
||||
|
||||
@Operation(summary = "取消订单")
|
||||
@Log(title = "取消订单", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/cancel/{orderId}")
|
||||
public R<OrderVO> cancel(@PathVariable("orderId") Long orderId) {
|
||||
orderService.cancel(orderId);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@Operation(summary = "发送消息")
|
||||
@Log(title = "发送消息", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/send/{orderId}")
|
||||
public R<OrderVO> send(@PathVariable("orderId") Long orderId) {
|
||||
orderService.sendMessage(orderId);
|
||||
//发出消息
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
}
|
@ -1,76 +0,0 @@
|
||||
|
||||
package org.dromara.app.customer;
|
||||
|
||||
import com.wzj.soopin.order.domain.query.GrabRedPacketRequest;
|
||||
import com.wzj.soopin.order.domain.query.SendRedPacketRequest;
|
||||
import com.wzj.soopin.transaction.service.RedPacketService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.domain.model.LoginUser;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 红包功能控制器
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/app/customer/packet")
|
||||
@Tag(name = "红包功能接口")
|
||||
public class AppRedPacketController {
|
||||
|
||||
@Autowired
|
||||
private RedPacketService redPacketService;
|
||||
|
||||
/**
|
||||
* 发红包接口
|
||||
*
|
||||
* @param request 发红包请求参数
|
||||
* @return 红包创建结果
|
||||
*/
|
||||
@PostMapping("/send")
|
||||
@Operation(summary = "发红包")
|
||||
public R<Map<String, Object>> sendRedPacket(@RequestBody SendRedPacketRequest request) {
|
||||
LoginUser user = LoginHelper.getLoginUser();
|
||||
if (user == null) {
|
||||
return R.notLogin();
|
||||
}
|
||||
request.setSenderId(user.getUserId());
|
||||
Map<String, Object> result = redPacketService.sendRedPacket(request);
|
||||
return R.ok("红包发送成功", result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 抢红包接口
|
||||
*
|
||||
* @return 抢红包结果
|
||||
*/
|
||||
@PostMapping("/grab")
|
||||
@Operation(summary = "抢红包")
|
||||
public R<Map<String, Object>> grabRedPacket(@RequestBody GrabRedPacketRequest request) {
|
||||
LoginUser user = LoginHelper.getLoginUser();
|
||||
if (user == null) {
|
||||
return R.notLogin();
|
||||
}
|
||||
request.setMemberId(user.getUserId());
|
||||
Map<String, Object> result = redPacketService.grabRedPacket(request);
|
||||
return R.ok("红包领取成功", result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询红包详情接口
|
||||
*
|
||||
* @return 红包详情
|
||||
*/
|
||||
@GetMapping("/refund")
|
||||
@Operation(summary = "退回红包")
|
||||
public R getRedPacketDetail() {
|
||||
redPacketService.checkAndRefundExpiredRedPackets();
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -1,79 +0,0 @@
|
||||
package org.dromara.app.merchant;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.wzj.soopin.member.convert.AccountBillConvert;
|
||||
import com.wzj.soopin.member.domain.bo.AccountBillBO;
|
||||
import com.wzj.soopin.member.domain.vo.AccountBillVO;
|
||||
import com.wzj.soopin.member.domain.vo.AccountStatisticVO;
|
||||
import com.wzj.soopin.transaction.service.IAccountBillService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.domain.model.LoginUser;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.system.domain.SysTenantAccount;
|
||||
import org.dromara.system.service.ISysTenantAccountService;
|
||||
import org.dromara.system.service.ISysTenantService;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* 商户端,账单接口
|
||||
*
|
||||
* @author Chopper
|
||||
* @since 2020-12-18 16:59
|
||||
*/
|
||||
@Slf4j
|
||||
@Tag(name = "商户端,账单接口")
|
||||
@RequestMapping("/app/merchant/account/")
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
public class AppMerchantBillController {
|
||||
|
||||
private final IAccountBillService service;
|
||||
private final AccountBillConvert convert;
|
||||
|
||||
private final ISysTenantAccountService sysTenantAccountService;
|
||||
private final ISysTenantService sysTenantService;
|
||||
|
||||
private final IAccountBillService accountBillService;
|
||||
|
||||
@Tag(name = "分页列表")
|
||||
@PostMapping("/bill/page")
|
||||
public R<IPage<AccountBillVO>> page(@RequestBody AccountBillBO bo) {
|
||||
|
||||
LoginUser loginUser = LoginHelper.getLoginUser();
|
||||
if (loginUser == null) {
|
||||
return R.fail("用户未登录");
|
||||
}
|
||||
if(loginUser.getTenantId() == null){
|
||||
return R.fail("用户不是商户");
|
||||
}
|
||||
//取member对应的商户
|
||||
SysTenantAccount sysTenantAccount = sysTenantAccountService.getByTenantId(loginUser.getTenantId());
|
||||
// bo.setSource(AccountTypeEnum.MERCHANT.getCode());
|
||||
bo.setAccountId(sysTenantAccount.getId());
|
||||
IPage<AccountBillVO> voPage = service.selectVoPage(bo);
|
||||
return R.ok(voPage);
|
||||
}
|
||||
|
||||
@Operation(summary = "账户统计")
|
||||
@PostMapping("/statistic")
|
||||
public R<AccountStatisticVO> statistic() {
|
||||
LoginUser loginUser = LoginHelper.getLoginUser();
|
||||
if (loginUser == null) {
|
||||
return R.fail("用户未登录");
|
||||
}
|
||||
if(loginUser.getTenantId() == null){
|
||||
return R.fail("用户不是商户");
|
||||
}
|
||||
//根据当前登录的member获取用户信息
|
||||
return R.ok(accountBillService.getStatistic(loginUser.getTenantId()));
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -1,68 +0,0 @@
|
||||
package org.dromara.app.merchant;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.wzj.soopin.order.business.IOrderBusiness;
|
||||
import com.wzj.soopin.order.domain.bo.OrderItemBo;
|
||||
import com.wzj.soopin.order.domain.vo.MerchantOrderVO;
|
||||
import com.wzj.soopin.order.service.IMerchantOrderService;
|
||||
import com.wzj.soopin.order.service.VerificationCodeService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* 商户端,订单接口
|
||||
*
|
||||
* @author Chopper
|
||||
* @since 2020-12-18 16:59
|
||||
*/
|
||||
@Slf4j
|
||||
@Tag(name = "app-商户-订单接口")
|
||||
@RequestMapping("/app/merchant/order")
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
public class AppMerchantOrderController {
|
||||
|
||||
private final VerificationCodeService verificationCodeService;
|
||||
|
||||
private final IMerchantOrderService merchantOrderService;
|
||||
|
||||
private final IOrderBusiness orderBusiness;
|
||||
|
||||
|
||||
@Operation(summary = "获取该商家订单子项详细信息")
|
||||
@GetMapping(value = "/{orderItemId}")
|
||||
public R<MerchantOrderVO> getInfo(@PathVariable("orderItemId") Long orderItemId) {
|
||||
return R.ok(orderBusiness.itemInfo(orderItemId));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 扫码核销接口
|
||||
* @return 核销结果
|
||||
*/
|
||||
@GetMapping("/verify")
|
||||
@Operation(summary = "扫码核销接口")
|
||||
public R verifyCode(@RequestParam("code") String code) {
|
||||
verificationCodeService.verifyCode(code);
|
||||
return R.ok("核销成功");
|
||||
}
|
||||
/**
|
||||
* 查询核销码对应的订单
|
||||
* @return 核销结果
|
||||
*/
|
||||
@GetMapping("/scan")
|
||||
@Operation(summary = "查询核销码对应的订单")
|
||||
public R<MerchantOrderVO> scan(@RequestParam("code") String code) {
|
||||
return R.ok(orderBusiness.getItemInfoByVerificationCode(code));
|
||||
}
|
||||
|
||||
@PostMapping("/page")
|
||||
@Operation(summary = "查询当前商家订单列表")
|
||||
public R<IPage<MerchantOrderVO>> page(@RequestBody OrderItemBo bo){
|
||||
return R.ok(merchantOrderService.page(bo));
|
||||
}
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
package org.dromara.web.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import cn.dev33.satoken.exception.NotLoginException;
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import cn.hutool.core.codec.Base64;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
@ -17,10 +18,7 @@ import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.domain.model.LoginBody;
|
||||
import org.dromara.common.core.domain.model.RegisterBody;
|
||||
import org.dromara.common.core.domain.model.SocialLoginBody;
|
||||
import org.dromara.common.core.enums.TenantType;
|
||||
import org.dromara.common.core.utils.MessageUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.core.utils.ValidatorUtils;
|
||||
import org.dromara.common.core.utils.*;
|
||||
import org.dromara.common.encrypt.annotation.ApiEncrypt;
|
||||
import org.dromara.common.json.utils.JsonUtils;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
@ -30,9 +28,13 @@ import org.dromara.common.social.utils.SocialUtils;
|
||||
import org.dromara.common.sse.dto.SseMessageDto;
|
||||
import org.dromara.common.sse.utils.SseMessageUtils;
|
||||
import org.dromara.common.tenant.helper.TenantHelper;
|
||||
import org.dromara.system.domain.bo.SysTenantBo;
|
||||
import org.dromara.system.domain.vo.SysClientVo;
|
||||
import org.dromara.system.domain.vo.SysTenantVo;
|
||||
import org.dromara.system.service.*;
|
||||
import org.dromara.system.service.ISysClientService;
|
||||
import org.dromara.system.service.ISysConfigService;
|
||||
import org.dromara.system.service.ISysSocialService;
|
||||
import org.dromara.system.service.ISysTenantService;
|
||||
import org.dromara.web.domain.vo.LoginTenantVo;
|
||||
import org.dromara.web.domain.vo.LoginVo;
|
||||
import org.dromara.web.domain.vo.TenantListVo;
|
||||
@ -42,8 +44,8 @@ import org.dromara.web.service.SysRegisterService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.net.URL;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@ -70,7 +72,6 @@ public class AuthController {
|
||||
private final ISysSocialService socialUserService;
|
||||
private final ISysClientService clientService;
|
||||
private final ScheduledExecutorService scheduledExecutorService;
|
||||
private final ISysUserService userService;
|
||||
|
||||
|
||||
/**
|
||||
@ -79,7 +80,7 @@ public class AuthController {
|
||||
* @param body 登录信息
|
||||
* @return 结果
|
||||
*/
|
||||
// @ApiEncrypt
|
||||
@ApiEncrypt
|
||||
@PostMapping("/login")
|
||||
public R<LoginVo> login(@RequestBody String body) {
|
||||
LoginBody loginBody = JsonUtils.parseObject(body, LoginBody.class);
|
||||
@ -95,8 +96,11 @@ public class AuthController {
|
||||
} else if (!SystemConstants.NORMAL.equals(client.getStatus())) {
|
||||
return R.fail(MessageUtils.message("auth.grant.type.blocked"));
|
||||
}
|
||||
// 校验租户
|
||||
loginService.checkTenant(loginBody.getTenantId());
|
||||
// 登录
|
||||
LoginVo loginVo = IAuthStrategy.login(body, client, grantType);
|
||||
|
||||
Long userId = LoginHelper.getUserId();
|
||||
scheduledExecutorService.schedule(() -> {
|
||||
SseMessageDto dto = new SseMessageDto();
|
||||
@ -191,9 +195,6 @@ public class AuthController {
|
||||
|
||||
/**
|
||||
* 登录页面租户下拉框
|
||||
* 超级管理员可查看所有租户
|
||||
* 代理租户管理员可查自己租户和parentIds中包含自己的租户
|
||||
* 店铺租户和达人租户只可查看自己的租户
|
||||
*
|
||||
* @return 租户列表
|
||||
*/
|
||||
@ -208,54 +209,31 @@ public class AuthController {
|
||||
return R.ok(result);
|
||||
}
|
||||
|
||||
SysTenantVo currentTenant = tenantService.queryByTenantId(LoginHelper.getTenantId());
|
||||
String companyName = currentTenant.getCompanyName();
|
||||
if(currentTenant.getType().equals(TenantType.AGENT.getType())){
|
||||
companyName = currentTenant.getAgencyName();
|
||||
} else if (currentTenant.getType().equals(TenantType.MERCHANT.getType())) {
|
||||
companyName = currentTenant.getStoreName();
|
||||
} else if (currentTenant.getType().equals(TenantType.REFERENCE.getType())) {
|
||||
companyName = "团长:" + companyName;
|
||||
}
|
||||
List<TenantListVo> voList = new ArrayList<>();
|
||||
voList.add(TenantListVo.builder().tenantId(currentTenant.getTenantId()).companyName(companyName).domain(currentTenant.getDomain()).build());
|
||||
List<SysTenantVo> sysTenantList = tenantService.getByParentId(currentTenant.getId());
|
||||
List<TenantListVo> childList = sysTenantList.stream().map(vo -> {
|
||||
String name = vo.getCompanyName();
|
||||
if (vo.getType().equals(TenantType.AGENT.getType())) {
|
||||
name = vo.getAgencyName();
|
||||
} else if (vo.getType().equals(TenantType.MERCHANT.getType())) {
|
||||
name = vo.getStoreName();
|
||||
} else if (vo.getType().equals(TenantType.REFERENCE.getType())) {
|
||||
name = "团长:" + name;
|
||||
}
|
||||
return TenantListVo.builder().tenantId(vo.getTenantId())
|
||||
.companyName(name)
|
||||
.domain(vo.getDomain())
|
||||
.build();
|
||||
}).toList();
|
||||
if (CollUtil.isNotEmpty(childList)) {
|
||||
voList.addAll(childList);
|
||||
}
|
||||
List<SysTenantVo> tenantList = tenantService.queryList(new SysTenantBo());
|
||||
List<TenantListVo> voList = MapstructUtils.convert(tenantList, TenantListVo.class);
|
||||
try {
|
||||
// 如果只超管返回所有租户
|
||||
if (LoginHelper.isSuperAdmin()) {
|
||||
result.setVoList(voList);
|
||||
return R.ok(result);
|
||||
}
|
||||
} catch (NotLoginException ignored) {
|
||||
}
|
||||
|
||||
// 获取域名 --- 暂时不需要
|
||||
// String host;
|
||||
// String referer = request.getHeader("referer");
|
||||
// if (StringUtils.isNotBlank(referer)) {
|
||||
// // 这里从referer中取值是为了本地使用hosts添加虚拟域名,方便本地环境调试
|
||||
// host = referer.split("//")[1].split("/")[0];
|
||||
// } else {
|
||||
// host = new URL(request.getRequestURL().toString()).getHost();
|
||||
// }
|
||||
// // 根据域名进行筛选
|
||||
// List<TenantListVo> list = StreamUtils.filter(voList, vo ->
|
||||
// StringUtils.equalsIgnoreCase(vo.getDomain(), host));
|
||||
// result.setVoList(CollUtil.isNotEmpty(list) ? list : voList);
|
||||
// 获取域名
|
||||
String host;
|
||||
String referer = request.getHeader("referer");
|
||||
if (StringUtils.isNotBlank(referer)) {
|
||||
// 这里从referer中取值是为了本地使用hosts添加虚拟域名,方便本地环境调试
|
||||
host = referer.split("//")[1].split("/")[0];
|
||||
} else {
|
||||
host = new URL(request.getRequestURL().toString()).getHost();
|
||||
}
|
||||
// 根据域名进行筛选
|
||||
List<TenantListVo> list = StreamUtils.filter(voList, vo ->
|
||||
StringUtils.equalsIgnoreCase(vo.getDomain(), host));
|
||||
result.setVoList(CollUtil.isNotEmpty(list) ? list : voList);
|
||||
return R.ok(result);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -56,24 +56,23 @@ public class CaptchaController {
|
||||
*
|
||||
* @param phonenumber 用户手机号
|
||||
*/
|
||||
// @RateLimiter(key = "#phonenumber", time = 60, count = 1)
|
||||
@RateLimiter(key = "#phonenumber", time = 60, count = 1)
|
||||
@GetMapping("/resource/sms/code")
|
||||
public R<String> smsCode(@NotBlank(message = "{user.phonenumber.not.blank}") String phonenumber) {
|
||||
public R<Void> smsCode(@NotBlank(message = "{user.phonenumber.not.blank}") String phonenumber) {
|
||||
String key = GlobalConstants.CAPTCHA_CODE_KEY + phonenumber;
|
||||
String code = RandomUtil.randomNumbers(4);
|
||||
RedisUtils.setCacheObject(key, code, Duration.ofMinutes(Constants.CAPTCHA_EXPIRATION));
|
||||
// 验证码模板id 自行处理 (查数据库或写死均可)
|
||||
String templateId = "2375314";
|
||||
String templateId = "";
|
||||
LinkedHashMap<String, String> map = new LinkedHashMap<>(1);
|
||||
map.put("code", code);
|
||||
SmsBlend smsBlend = SmsFactory.getSmsBlend("config2");
|
||||
SmsBlend smsBlend = SmsFactory.getSmsBlend("config1");
|
||||
SmsResponse smsResponse = smsBlend.sendMessage(phonenumber, templateId, map);
|
||||
if (!smsResponse.isSuccess()) {
|
||||
log.error("验证码短信发送异常 => {}", smsResponse);
|
||||
return R.fail(smsResponse.getData().toString());
|
||||
}
|
||||
log.info("{}:验证码发送成功,验证码为:{}", phonenumber, code);
|
||||
return R.ok(code);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,18 +1,12 @@
|
||||
package org.dromara.web.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.wzj.soopin.order.service.OrderService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.utils.SpringUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.web.service.IndexService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 首页
|
||||
*
|
||||
@ -23,9 +17,6 @@ import java.util.Map;
|
||||
@RestController
|
||||
public class IndexController {
|
||||
|
||||
|
||||
private final IndexService indexService;
|
||||
|
||||
/**
|
||||
* 访问首页,提示语
|
||||
*/
|
||||
@ -34,25 +25,4 @@ public class IndexController {
|
||||
return StringUtils.format("欢迎使用{}后台管理框架,请通过前端地址访问。", SpringUtils.getApplicationName());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取数量统计
|
||||
*/
|
||||
|
||||
@GetMapping("/count")
|
||||
public R getCount() {
|
||||
return R.ok(indexService.getCount());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取今日待办任务
|
||||
*/
|
||||
|
||||
/**
|
||||
* 获取流量概括
|
||||
*/
|
||||
/**
|
||||
* 获取今日概括
|
||||
*/
|
||||
|
||||
}
|
||||
|
@ -51,11 +51,4 @@ public class LoginVo {
|
||||
*/
|
||||
private String openid;
|
||||
|
||||
/**
|
||||
* 用户 sig
|
||||
*/
|
||||
private String userSig;
|
||||
|
||||
private Long userId;
|
||||
|
||||
}
|
||||
|
@ -1,8 +1,5 @@
|
||||
package org.dromara.web.domain.vo;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.dromara.system.domain.vo.SysTenantVo;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
@ -14,9 +11,6 @@ import lombok.Data;
|
||||
*/
|
||||
@Data
|
||||
@AutoMapper(target = SysTenantVo.class)
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class TenantListVo {
|
||||
|
||||
/**
|
||||
|
@ -1,9 +0,0 @@
|
||||
package org.dromara.web.service;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public interface IndexService {
|
||||
|
||||
Map<String, Object> getCount();
|
||||
|
||||
}
|
@ -7,7 +7,6 @@ import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.lang.Opt;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.lock.annotation.Lock4j;
|
||||
import com.wzj.soopin.member.domain.po.Member;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import me.zhyd.oauth.model.AuthUser;
|
||||
@ -19,7 +18,6 @@ import org.dromara.common.core.domain.dto.PostDTO;
|
||||
import org.dromara.common.core.domain.dto.RoleDTO;
|
||||
import org.dromara.common.core.domain.model.LoginUser;
|
||||
import org.dromara.common.core.enums.LoginType;
|
||||
import org.dromara.common.core.enums.UserType;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.core.exception.user.UserException;
|
||||
import org.dromara.common.core.utils.*;
|
||||
@ -38,7 +36,7 @@ import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.Duration;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
@ -52,7 +50,6 @@ import java.util.function.Supplier;
|
||||
@Service
|
||||
public class SysLoginService {
|
||||
|
||||
|
||||
@Value("${user.password.maxRetryCount}")
|
||||
private Integer maxRetryCount;
|
||||
|
||||
@ -66,7 +63,7 @@ public class SysLoginService {
|
||||
private final ISysDeptService deptService;
|
||||
private final ISysPostService postService;
|
||||
private final SysUserMapper userMapper;
|
||||
private final ISysOssService ossService;
|
||||
|
||||
|
||||
/**
|
||||
* 绑定第三方用户
|
||||
@ -75,8 +72,6 @@ public class SysLoginService {
|
||||
*/
|
||||
@Lock4j
|
||||
public void socialRegister(AuthUser authUserData) {
|
||||
|
||||
|
||||
String authId = authUserData.getSource() + authUserData.getUuid();
|
||||
// 第三方用户信息
|
||||
SysSocialBo bo = BeanUtil.toBean(authUserData, SysSocialBo.class);
|
||||
@ -160,17 +155,10 @@ public class SysLoginService {
|
||||
loginUser.setUserId(userId);
|
||||
loginUser.setDeptId(user.getDeptId());
|
||||
loginUser.setUsername(user.getUserName());
|
||||
if(user.getAvatar()!=null){
|
||||
SysOssVo oss=ossService.getById(user.getAvatar());
|
||||
if(oss!=null){
|
||||
loginUser.setAvatar(ossService.getById(user.getAvatar()).getUrl());
|
||||
}
|
||||
}
|
||||
loginUser.setNickname(user.getNickName());
|
||||
loginUser.setUserType(user.getUserType());
|
||||
loginUser.setMenuPermission(permissionService.getMenuPermission(userId));
|
||||
loginUser.setRolePermission(permissionService.getRolePermission(userId));
|
||||
loginUser.setUserSig(user.getUserSig());
|
||||
if (ObjectUtil.isNotNull(user.getDeptId())) {
|
||||
Opt<SysDeptVo> deptOpt = Opt.of(user.getDeptId()).map(deptService::selectDeptById);
|
||||
loginUser.setDeptName(deptOpt.map(SysDeptVo::getDeptName).orElse(StringUtils.EMPTY));
|
||||
@ -183,22 +171,6 @@ public class SysLoginService {
|
||||
return loginUser;
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建登录用户
|
||||
*/
|
||||
public LoginUser buildLoginUser(Member member) {
|
||||
LoginUser loginUser = new LoginUser();
|
||||
Long userId = member.getId();
|
||||
loginUser.setUserId(userId);
|
||||
loginUser.setAvatar(member.getAvatar());
|
||||
loginUser.setUsername(member.getUserName());
|
||||
loginUser.setNickname(member.getNickname());
|
||||
loginUser.setUserType(UserType.APP_USER.getUserType());
|
||||
loginUser.setUserSig(member.getUserSig());
|
||||
loginUser.setPhoneNumber(member.getPhoneHidden());
|
||||
return loginUser;
|
||||
}
|
||||
|
||||
/**
|
||||
* 记录登录信息
|
||||
*
|
||||
@ -270,7 +242,7 @@ public class SysLoginService {
|
||||
log.info("登录租户:{} 已被停用.", tenantId);
|
||||
throw new TenantException("tenant.blocked");
|
||||
} else if (ObjectUtil.isNotNull(tenant.getExpireTime())
|
||||
&& LocalDateTime.now().isAfter(tenant.getExpireTime())) {
|
||||
&& new Date().after(tenant.getExpireTime())) {
|
||||
log.info("登录租户:{} 已超过有效期.", tenantId);
|
||||
throw new TenantException("tenant.expired");
|
||||
}
|
||||
|
@ -2,7 +2,6 @@ package org.dromara.web.service.impl;
|
||||
|
||||
import cn.dev33.satoken.stp.SaLoginModel;
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@ -48,15 +47,9 @@ public class EmailAuthStrategy implements IAuthStrategy {
|
||||
public LoginVo login(String body, SysClientVo client) {
|
||||
EmailLoginBody loginBody = JsonUtils.parseObject(body, EmailLoginBody.class);
|
||||
ValidatorUtils.validate(loginBody);
|
||||
String tenantId = loginBody.getTenantId();
|
||||
String email = loginBody.getEmail();
|
||||
String emailCode = loginBody.getEmailCode();
|
||||
// 多租户时页面不在选择租户,后端通过邮箱查询用户的默认租户
|
||||
String tenantId = userMapper.selectTenantIdByEmail(email);
|
||||
Assert.notBlank(tenantId, () -> new UserException("登录用户:" + email + " 不存在."));
|
||||
// 校验租户
|
||||
if(!"app".equals(client.getClientKey())){
|
||||
loginService.checkTenant(tenantId);
|
||||
}
|
||||
LoginUser loginUser = TenantHelper.dynamic(tenantId, () -> {
|
||||
SysUserVo user = loadUserByEmail(email);
|
||||
loginService.checkLogin(LoginType.EMAIL, tenantId, user.getUserName(), () -> !validateEmailCode(tenantId, email, emailCode));
|
||||
|
@ -1,112 +0,0 @@
|
||||
package org.dromara.web.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.wzj.soopin.content.mapper.VlogMapper;
|
||||
import com.wzj.soopin.goods.mapper.ProductMapper;
|
||||
import com.wzj.soopin.member.domain.po.Feedback;
|
||||
import com.wzj.soopin.member.service.IFeedbackService;
|
||||
import com.wzj.soopin.member.service.IMemberAccountService;
|
||||
import com.wzj.soopin.order.mapper.OrderMapper;
|
||||
import com.wzj.soopin.transaction.domain.po.Withdraw;
|
||||
import com.wzj.soopin.transaction.service.IWithdrawService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.system.mapper.SysIntegralHistoryMapper;
|
||||
import org.dromara.system.mapper.SysTenantMapper;
|
||||
import org.dromara.system.mapper.SystemStatisticsMapper;
|
||||
import org.dromara.web.service.IndexService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author fxh
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class IndexServiceImpl implements IndexService {
|
||||
|
||||
|
||||
private final SysTenantMapper sysTenantMapper;
|
||||
private final VlogMapper vlogMapper;
|
||||
private final IMemberAccountService memberService;
|
||||
private final IFeedbackService feedbackService;
|
||||
private final IWithdrawService withdrawService;
|
||||
private final SystemStatisticsMapper systemStatisticsMapper;
|
||||
private final SysIntegralHistoryMapper sysIntegralHistoryMapper;
|
||||
private final ProductMapper productMapper;
|
||||
private final OrderMapper orderMapper;
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getCount() {
|
||||
Map<String, Object> result = new HashMap<>(16);
|
||||
|
||||
//(用户、视频、举报、提现)
|
||||
addBasicStatistics(result);
|
||||
|
||||
//(商品、店铺、订单)
|
||||
addCompositeStatistics(result);
|
||||
|
||||
// Top20排行榜
|
||||
addTop20Statistics(result);
|
||||
|
||||
// 月度趋势统计
|
||||
addMonthlyTrendStatistics(result);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private void addBasicStatistics(Map<String, Object> result) {
|
||||
result.put("memberCount", memberService.getCount());
|
||||
|
||||
result.put("vlogCount", vlogMapper.countVlog());
|
||||
|
||||
// 待审核举报
|
||||
result.put("feedbackCount", feedbackService.count(
|
||||
new QueryWrapper<Feedback>().eq("status", 0)
|
||||
));
|
||||
|
||||
// 待审核提现
|
||||
result.put("WithdrawCount", withdrawService.count(
|
||||
new QueryWrapper<Withdraw>().eq("audit_status", 0)
|
||||
));
|
||||
}
|
||||
|
||||
private void addCompositeStatistics(Map<String, Object> result) {
|
||||
// 商品统计
|
||||
Map<String, Object> productCounts = productMapper.countProduct();
|
||||
if(productCounts!=null){
|
||||
result.put("productCount", productCounts.get("count2"));
|
||||
result.put("productAudit", productCounts.get("count1"));
|
||||
}
|
||||
|
||||
|
||||
// 店铺统计
|
||||
Map<String, Object> storeCounts = sysTenantMapper.countProduct();
|
||||
if(storeCounts!=null){
|
||||
result.put("storeCount", storeCounts.get("count1"));
|
||||
result.put("StoreAudit", storeCounts.get("count2"));
|
||||
}
|
||||
|
||||
// 订单统计
|
||||
Map<String, Object> orderCounts = orderMapper.countOrder();
|
||||
if(orderCounts!=null){
|
||||
result.put("orderCount", orderCounts.get("count1"));
|
||||
result.put("orderAudit", orderCounts.get("count2"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/** Top20排行榜 */
|
||||
private void addTop20Statistics(Map<String, Object> result) {
|
||||
result.put("top20Stores", sysTenantMapper.getTop20Stores());
|
||||
result.put("top20Product", productMapper.getTop20Product());
|
||||
}
|
||||
|
||||
/** 月度趋势统计 */
|
||||
private void addMonthlyTrendStatistics(Map<String, Object> result) {
|
||||
result.put("monthlyUserVolume", systemStatisticsMapper.getMonthlyUserVolume());
|
||||
result.put("monthlyVlog", vlogMapper.getMonthlyVlog());
|
||||
result.put("monthlyIncomeExpense", sysIntegralHistoryMapper.getIncomeExpense());
|
||||
}
|
||||
|
||||
}
|
@ -3,7 +3,6 @@ package org.dromara.web.service.impl;
|
||||
import cn.dev33.satoken.secure.BCrypt;
|
||||
import cn.dev33.satoken.stp.SaLoginModel;
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@ -52,17 +51,12 @@ public class PasswordAuthStrategy implements IAuthStrategy {
|
||||
public LoginVo login(String body, SysClientVo client) {
|
||||
PasswordLoginBody loginBody = JsonUtils.parseObject(body, PasswordLoginBody.class);
|
||||
ValidatorUtils.validate(loginBody);
|
||||
String tenantId = loginBody.getTenantId();
|
||||
String username = loginBody.getUsername();
|
||||
String password = loginBody.getPassword();
|
||||
String code = loginBody.getCode();
|
||||
String uuid = loginBody.getUuid();
|
||||
// 多租户时页面不在选择租户,后端通过用户名查询用户的默认租户
|
||||
String tenantId = userMapper.selectTenantIdByUserName(username);
|
||||
Assert.notBlank(tenantId, () -> new UserException("登录用户:" + username + " 不存在."));
|
||||
// 校验租户
|
||||
if (!"app".equals(client.getClientKey())) {
|
||||
loginService.checkTenant(tenantId);
|
||||
}
|
||||
|
||||
boolean captchaEnabled = captchaProperties.getEnable();
|
||||
// 验证码开关
|
||||
if (captchaEnabled) {
|
||||
|
@ -4,19 +4,14 @@ import cn.dev33.satoken.stp.SaLoginModel;
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.wzj.soopin.member.domain.po.Member;
|
||||
import com.wzj.soopin.member.mapper.MemberMapper;
|
||||
import com.wzj.soopin.member.service.MemberRegisterService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.constant.Constants;
|
||||
import org.dromara.common.core.constant.GlobalConstants;
|
||||
import org.dromara.common.core.constant.SystemConstants;
|
||||
import org.dromara.common.core.domain.model.LoginUser;
|
||||
import org.dromara.common.core.domain.model.RegisterBody;
|
||||
import org.dromara.common.core.domain.model.SmsLoginBody;
|
||||
import org.dromara.common.core.enums.LoginType;
|
||||
import org.dromara.common.core.enums.UserType;
|
||||
import org.dromara.common.core.exception.user.CaptchaExpireException;
|
||||
import org.dromara.common.core.exception.user.UserException;
|
||||
import org.dromara.common.core.utils.MessageUtils;
|
||||
@ -25,6 +20,7 @@ import org.dromara.common.core.utils.ValidatorUtils;
|
||||
import org.dromara.common.json.utils.JsonUtils;
|
||||
import org.dromara.common.redis.utils.RedisUtils;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.common.tenant.helper.TenantHelper;
|
||||
import org.dromara.system.domain.SysUser;
|
||||
import org.dromara.system.domain.vo.SysClientVo;
|
||||
import org.dromara.system.domain.vo.SysUserVo;
|
||||
@ -46,9 +42,6 @@ public class SmsAuthStrategy implements IAuthStrategy {
|
||||
|
||||
private final SysLoginService loginService;
|
||||
private final SysUserMapper userMapper;
|
||||
private final MemberMapper memberMapper;
|
||||
private final MemberRegisterService memberRegisterService;
|
||||
|
||||
|
||||
@Override
|
||||
public LoginVo login(String body, SysClientVo client) {
|
||||
@ -57,7 +50,12 @@ public class SmsAuthStrategy implements IAuthStrategy {
|
||||
String tenantId = loginBody.getTenantId();
|
||||
String phonenumber = loginBody.getPhonenumber();
|
||||
String smsCode = loginBody.getSmsCode();
|
||||
LoginUser loginUser = checkUser(client, phonenumber, smsCode);
|
||||
LoginUser loginUser = TenantHelper.dynamic(tenantId, () -> {
|
||||
SysUserVo user = loadUserByPhonenumber(phonenumber);
|
||||
loginService.checkLogin(LoginType.SMS, tenantId, user.getUserName(), () -> !validateSmsCode(tenantId, phonenumber, smsCode));
|
||||
// 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了
|
||||
return loginService.buildLoginUser(user);
|
||||
});
|
||||
loginUser.setClientKey(client.getClientKey());
|
||||
loginUser.setDeviceType(client.getDeviceType());
|
||||
SaLoginModel model = new SaLoginModel();
|
||||
@ -71,63 +69,12 @@ public class SmsAuthStrategy implements IAuthStrategy {
|
||||
LoginHelper.login(loginUser, model);
|
||||
|
||||
LoginVo loginVo = new LoginVo();
|
||||
loginVo.setUserId(loginUser.getUserId());
|
||||
loginVo.setAccessToken(StpUtil.getTokenValue());
|
||||
loginVo.setExpireIn(StpUtil.getTokenTimeout());
|
||||
loginVo.setClientId(client.getClientId());
|
||||
loginVo.setUserSig(loginUser.getUserSig());
|
||||
return loginVo;
|
||||
}
|
||||
|
||||
|
||||
private LoginUser checkUser(SysClientVo client, String phonenumber, String smsCode) {
|
||||
if("app".equals(client.getClientKey())){
|
||||
//会员登录
|
||||
Member member = loadMemberByPhonenumber(phonenumber);
|
||||
|
||||
//手机号登录,如果没有则创建一个
|
||||
if (member == null) {
|
||||
RegisterBody registerBody = new RegisterBody();
|
||||
registerBody.setPhoneNumber(phonenumber);
|
||||
registerBody.setCode(smsCode);
|
||||
registerBody.setUserType(UserType.APP_USER.getUserType());
|
||||
registerBody.setClientId(client.getClientId());
|
||||
registerBody.setUuid(phonenumber);
|
||||
member = memberRegisterService.register(registerBody);
|
||||
return loginService.buildLoginUser(member);
|
||||
} else {
|
||||
loginService.checkLogin(LoginType.SMS, "tenantId", member.getUserName(), () -> !validateSmsCode("tenantId", phonenumber, smsCode));
|
||||
// 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了
|
||||
|
||||
|
||||
LoginUser user=loginService.buildLoginUser(member);
|
||||
//检查member是否绑定了用户,如果有则获取用户信息
|
||||
if(ObjectUtil.isNotEmpty(member.getUserId())){
|
||||
SysUserVo sysUser = userMapper.selectVoById(member.getUserId());
|
||||
if(ObjectUtil.isNotEmpty(sysUser)){
|
||||
user.setTenantId(sysUser.getTenantId());
|
||||
}
|
||||
}
|
||||
// 获取会员绑定团长的租户id
|
||||
if(member.getSpreadUid() != null){
|
||||
user.setReferenceTenantId(memberMapper.getReferenceTenantIdBySpreadUid(member.getSpreadUid()));
|
||||
}
|
||||
return user;
|
||||
}
|
||||
}else{
|
||||
//管理员登录
|
||||
SysUserVo user = loadUserByPhonenumber(phonenumber);
|
||||
loginService.checkLogin(LoginType.SMS, user.getTenantId(), user.getUserName(), () -> !validateSmsCode("tenantId", phonenumber, smsCode));
|
||||
|
||||
// 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了
|
||||
return loginService.buildLoginUser(user);
|
||||
}
|
||||
}
|
||||
|
||||
private void checkMemberLogin(){
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验短信验证码
|
||||
*/
|
||||
@ -151,19 +98,5 @@ public class SmsAuthStrategy implements IAuthStrategy {
|
||||
}
|
||||
return user;
|
||||
}
|
||||
private Member loadMemberByPhonenumber(String phonenumber) {
|
||||
Member user = memberMapper.selectOne(new LambdaQueryWrapper<Member>().eq(Member::getPhoneHidden, phonenumber));
|
||||
if (ObjectUtil.isNull(user)) {
|
||||
log.info("登录用户:{} 不存在.", phonenumber);
|
||||
return null;
|
||||
} else if (org.dromara.common.core.domain.event.Constants.MEMBER_ACCOUNT_STATUS.FORBIDDEN.equals(user.getStatus())) {
|
||||
log.info("登录用户:{} 已被停用.", phonenumber);
|
||||
throw new UserException("user.blocked", phonenumber);
|
||||
} else if (org.dromara.common.core.domain.event.Constants.MEMBER_ACCOUNT_STATUS.REVOKED.equals(user.getStatus())) {
|
||||
log.warn("已注销的用户:{} 重新登录", phonenumber);
|
||||
memberMapper.updateById(Member.builder().id(user.getId()).status(org.dromara.common.core.domain.event.Constants.MEMBER_ACCOUNT_STATUS.NORMAL).build());
|
||||
}
|
||||
return user;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -68,22 +68,30 @@ public class SocialAuthStrategy implements IAuthStrategy {
|
||||
throw new ServiceException(response.getMsg());
|
||||
}
|
||||
AuthUser authUserData = response.getData();
|
||||
// if ("GITEE".equals(authUserData.getSource())) {
|
||||
// // 如用户使用 gitee 登录顺手 star 给作者一点支持 拒绝白嫖
|
||||
// HttpUtil.createRequest(Method.PUT, "https://gitee.com/api/v5/user/starred/dromara/RuoYi-Vue-Plus")
|
||||
// .formStr(MapUtil.of("access_token", authUserData.getToken().getAccessToken()))
|
||||
// .executeAsync();
|
||||
// HttpUtil.createRequest(Method.PUT, "https://gitee.com/api/v5/user/starred/dromara/RuoYi-Cloud-Plus")
|
||||
// .formStr(MapUtil.of("access_token", authUserData.getToken().getAccessToken()))
|
||||
// .executeAsync();
|
||||
// }
|
||||
if ("GITEE".equals(authUserData.getSource())) {
|
||||
// 如用户使用 gitee 登录顺手 star 给作者一点支持 拒绝白嫖
|
||||
HttpUtil.createRequest(Method.PUT, "https://gitee.com/api/v5/user/starred/dromara/RuoYi-Vue-Plus")
|
||||
.formStr(MapUtil.of("access_token", authUserData.getToken().getAccessToken()))
|
||||
.executeAsync();
|
||||
HttpUtil.createRequest(Method.PUT, "https://gitee.com/api/v5/user/starred/dromara/RuoYi-Cloud-Plus")
|
||||
.formStr(MapUtil.of("access_token", authUserData.getToken().getAccessToken()))
|
||||
.executeAsync();
|
||||
}
|
||||
|
||||
List<SysSocialVo> list = sysSocialService.selectByAuthId(authUserData.getSource() + authUserData.getUuid());
|
||||
if (CollUtil.isEmpty(list)) {
|
||||
throw new ServiceException("你还没有绑定第三方账号,绑定后才可以登录!");
|
||||
}
|
||||
SysSocialVo social = list.get(0);
|
||||
|
||||
SysSocialVo social;
|
||||
if (TenantHelper.isEnable()) {
|
||||
Optional<SysSocialVo> opt = StreamUtils.findAny(list, x -> x.getTenantId().equals(loginBody.getTenantId()));
|
||||
if (opt.isEmpty()) {
|
||||
throw new ServiceException("对不起,你没有权限登录当前租户!");
|
||||
}
|
||||
social = opt.get();
|
||||
} else {
|
||||
social = list.get(0);
|
||||
}
|
||||
LoginUser loginUser = TenantHelper.dynamic(social.getTenantId(), () -> {
|
||||
SysUserVo user = loadUser(social.getUserId());
|
||||
// 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了
|
||||
|
@ -1,8 +1,8 @@
|
||||
--- # 监控中心配置
|
||||
spring.boot.admin.client:
|
||||
# 增加客户端开关
|
||||
enabled: false
|
||||
url: http://82.168.1.65:9090/admin
|
||||
enabled: true
|
||||
url: http://localhost:9090/admin
|
||||
instance:
|
||||
service-host-type: IP
|
||||
metadata:
|
||||
@ -13,13 +13,13 @@ spring.boot.admin.client:
|
||||
|
||||
--- # snail-job 配置
|
||||
snail-job:
|
||||
enabled: false
|
||||
enabled: true
|
||||
# 需要在 SnailJob 后台组管理创建对应名称的组,然后创建任务的时候选择对应的组,才能正确分派任务
|
||||
group: "ruoyi_group"
|
||||
# SnailJob 接入验证令牌 详见 script/sql/ry_job.sql `sj_group_config` 表
|
||||
token: "SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT"
|
||||
server:
|
||||
host: 192.168.1.65
|
||||
host: 127.0.0.1
|
||||
port: 17888
|
||||
# 命名空间UUID 详见 script/sql/ry_job.sql `sj_namespace`表`unique_id`字段
|
||||
namespace: ${spring.profiles.active}
|
||||
@ -49,9 +49,9 @@ spring:
|
||||
driverClassName: com.mysql.cj.jdbc.Driver
|
||||
# jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
|
||||
# rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
|
||||
url: jdbc:mysql://82.156.121.2:13306/soopin?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
|
||||
username: wzj
|
||||
password: A085F27A43B0
|
||||
url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
|
||||
username: root
|
||||
password: root
|
||||
# # 从库数据源
|
||||
# slave:
|
||||
# lazy: true
|
||||
@ -92,19 +92,19 @@ spring:
|
||||
# 此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认30分钟
|
||||
maxLifetime: 1800000
|
||||
# 多久检查一次连接的活性
|
||||
keepaliveTime: 300000
|
||||
keepaliveTime: 30000
|
||||
|
||||
--- # redis 单机配置(单机与集群只能开启一个另一个需要注释掉)
|
||||
spring.data:
|
||||
redis:
|
||||
# 地址
|
||||
host: 82.156.121.2
|
||||
host: localhost
|
||||
# 端口,默认为6379
|
||||
port: 26379
|
||||
port: 6379
|
||||
# 数据库索引
|
||||
database: 0
|
||||
# 密码(如没有密码请注释掉)
|
||||
password: e4ea0caebfd2
|
||||
# redis 密码必须配置
|
||||
password: ruoyi123
|
||||
# 连接超时时间
|
||||
timeout: 10s
|
||||
# 是否开启ssl
|
||||
@ -133,30 +133,6 @@ redisson:
|
||||
# 发布和订阅连接池大小
|
||||
subscriptionConnectionPoolSize: 50
|
||||
|
||||
--- # RocketMQ 配置
|
||||
rocketmq:
|
||||
# RocketMQ 服务器地址
|
||||
name-server: 82.156.121.2:9876
|
||||
# 生产者配置
|
||||
producer:
|
||||
# 生产者组名
|
||||
group: wzj_dev
|
||||
# 发送消息超时时间
|
||||
send-message-timeout: 30000
|
||||
# 消息最大长度
|
||||
max-message-size: 4194304
|
||||
# 消息发送失败重试次数
|
||||
retry-times-when-send-failed: 3
|
||||
# 异步消息发送失败重试次数
|
||||
retry-times-when-send-async-failed: 3
|
||||
# 消费者配置
|
||||
consumer:
|
||||
# 拉取消息最大数量
|
||||
pull-batch-size: 10
|
||||
# 消费者组 (系统模块)
|
||||
group: wzj_dev
|
||||
# 是否启动消费者
|
||||
enabled: true
|
||||
--- # mail 邮件发送
|
||||
mail:
|
||||
enabled: false
|
||||
@ -206,75 +182,84 @@ sms:
|
||||
config2:
|
||||
# 厂商标识,标定此配置是哪个厂商,详细请看厂商标识介绍部分
|
||||
supplier: tencent
|
||||
access-key-id: AKIDvhEVWHm0xe5JGxOZXGitnRovlKcfRzIN
|
||||
access-key-secret: qPhiTxA7oENFrCH5dvxiCQN4UdWAYgYA
|
||||
signature: 无终街天津科技
|
||||
sdk-app-id: 1400966042
|
||||
access-key-id: 您的accessKey
|
||||
access-key-secret: 您的accessKeySecret
|
||||
signature: 您的短信签名
|
||||
sdk-app-id: 您的sdkAppId
|
||||
|
||||
|
||||
--- # 三方授权
|
||||
justauth:
|
||||
# 前端外网访问地址
|
||||
address: http://82.156.121.2:8880/
|
||||
address: http://localhost:80
|
||||
type:
|
||||
alipay_wallet: # 支付宝钱包
|
||||
maxkey:
|
||||
# maxkey 服务器地址
|
||||
# 注意 如下均配置均不需要修改 maxkey 已经内置好了数据
|
||||
server-url: http://sso.maxkey.top
|
||||
client-id: 876892492581044224
|
||||
client-secret: x1Y5MTMwNzIwMjMxNTM4NDc3Mzche8
|
||||
redirect-uri: ${justauth.address}/social-callback?source=maxkey
|
||||
topiam:
|
||||
# topiam 服务器地址
|
||||
server-url: http://127.0.0.1:1898/api/v1/authorize/y0q************spq***********8ol
|
||||
client-id: 449c4*********937************759
|
||||
client-secret: ac7***********1e0************28d
|
||||
redirect-uri: ${justauth.address}/social-callback?source=topiam
|
||||
scopes: [openid, email, phone, profile]
|
||||
qq:
|
||||
client-id: 10**********6
|
||||
client-secret: 1f7d08**********5b7**********29e
|
||||
redirect-uri: ${justauth.address}/social-callback?source=qq
|
||||
union-id: false
|
||||
weibo:
|
||||
client-id: 10**********6
|
||||
client-secret: 1f7d08**********5b7**********29e
|
||||
redirect-uri: ${justauth.address}/social-callback?source=weibo
|
||||
gitee:
|
||||
client-id: 91436b7940090d09c72c7daf85b959cfd5f215d67eea73acbf61b6b590751a98
|
||||
client-secret: 02c6fcfd70342980cd8dd2f2c06c1a350645d76c754d7a264c4e125f9ba915ac
|
||||
redirect-uri: ${justauth.address}/social-callback?source=gitee
|
||||
dingtalk:
|
||||
client-id: 10**********6
|
||||
client-secret: 1f7d08**********5b7**********29e
|
||||
redirect-uri: ${justauth.address}/social-callback?source=dingtalk
|
||||
baidu:
|
||||
client-id: 10**********6
|
||||
client-secret: 1f7d08**********5b7**********29e
|
||||
redirect-uri: ${justauth.address}/social-callback?source=baidu
|
||||
csdn:
|
||||
client-id: 10**********6
|
||||
client-secret: 1f7d08**********5b7**********29e
|
||||
redirect-uri: ${justauth.address}/social-callback?source=csdn
|
||||
coding:
|
||||
client-id: 10**********6
|
||||
client-secret: 1f7d08**********5b7**********29e
|
||||
redirect-uri: ${justauth.address}/social-callback?source=coding
|
||||
coding-group-name: xx
|
||||
oschina:
|
||||
client-id: 10**********6
|
||||
client-secret: 1f7d08**********5b7**********29e
|
||||
redirect-uri: ${justauth.address}/social-callback?source=oschina
|
||||
alipay_wallet:
|
||||
client-id: 10**********6
|
||||
client-secret: 1f7d08**********5b7**********29e
|
||||
redirect-uri: ${justauth.address}/social-callback?source=alipay_wallet
|
||||
alipay-public-key: MIIB**************DAQAB
|
||||
wechat_open: # 微信开放平台
|
||||
client-id: wxebcdaea31881caab
|
||||
client-secret: 71826d76bad096ec5407897c6ed1391f
|
||||
wechat_open:
|
||||
client-id: 10**********6
|
||||
client-secret: 1f7d08**********5b7**********29e
|
||||
redirect-uri: ${justauth.address}/social-callback?source=wechat_open
|
||||
wechat_mp: # 微信小程序
|
||||
wechat_mp:
|
||||
client-id: 10**********6
|
||||
client-secret: 1f7d08**********5b7**********29e
|
||||
redirect-uri: ${justauth.address}/social-callback?source=wechat_mp
|
||||
wechat_enterprise: # 微信企业
|
||||
wechat_enterprise:
|
||||
client-id: 10**********6
|
||||
client-secret: 1f7d08**********5b7**********29e
|
||||
redirect-uri: ${justauth.address}/social-callback?source=wechat_enterprise
|
||||
agent-id: 1000002
|
||||
|
||||
|
||||
# 腾讯云IM配置
|
||||
tencent:
|
||||
im:
|
||||
enabled: true # 启用腾讯云IM
|
||||
sdk-app-id: 1600080789 # 你的腾讯云 SDKAppID
|
||||
secret-key: "311b5309d714a20f7f5b54360ee21b1e24ec208ebcd25ce8f47d24753bccc091" # 你的密钥
|
||||
administrator: "administrator" # 管理员账号
|
||||
expire-time: 604800 # UserSig 过期时间(7天,单位:秒)
|
||||
# mongodb
|
||||
data:
|
||||
mongodb:
|
||||
uri: 82.156.121.2:37017
|
||||
database: wzj-shop
|
||||
username: admin
|
||||
password: A1969bf8
|
||||
authentication-database: admin
|
||||
# replica-set-name: mongoreplset
|
||||
|
||||
easypay:
|
||||
api-path-prefix: https://d-phoenix-gap.easypay.com.cn:24443/yqt
|
||||
req-id: D01X66666667068
|
||||
certificate-id: 20250917
|
||||
mcht-code: 631000000003325
|
||||
easypay-public-key: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArgVerkGaSEQvZIOpLjeUoVpL0lSYLc04+txtPFtfm5r5XFbaNaf5Ahu0lziGEwWzrGONThSsnb3U9pqoY6BpqviN4h+Guw5oEdHr1T/eDkQD5urgQUaZA6lDoU9XC662r+0kpbKidvXIsK2CrShN+BF8HEJmRZuhglxh25OHWIWqQiUDjLZC+QJRZqUu9Uzy9RBBu7qa0f0xbqYl3hnYi+vH++SsyOavO2gUVQyKU5Kkt5ZJVpZFQvD3BXePgwJSpsvrjhj0hiYp2v6PScN9XHP1vXB4wtIYSFYwmVus1KkV/LfDzUm6zHjliHYTVl6lPMhveIVJlRIqInRZRHxg5QIDAQAB
|
||||
merRsaPrivateKey: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCc1mku1mtfTc1vZM9z3TkRMZ9SaKP+6MdoQhjDHB9vJUOuG2Jnegej4gtzcm8MVYomV1azJMtCbPq4PN9aHegH13JthvrUPR3nAKp8AUp9Fh47ded//snNyAf7C7o8xKN5e7n89ROwacCAL2QDno76ngXzQQVj1TxY9pBdekZ03ezuDk1sv/u4FBlW8kRyaVdqyl4FdvP+EEljDe8gGxRikLyb3cK1B6G7w2BXgM/svft5SOoiqStx2XvgHRrFRB5w96TdoKNH9yxHU2clMJiz+5cej1VL6OHZspuY3cnPyJtyS+weYjDT+COLLBUe9UwbOV15DXDNpBLd34W4GiqtAgMBAAECggEAYaVwmVOwSAblp7wJGScb16OggStbJ2MAe93jEt7Yh1eZGrY7/xbP2O3smTUfBHvhZlusRB7dWf8F3l0v5iiGhRNTT/PhCPEARAl7G3emS9jQe869kkgslq06ose7bQg0i3dH5cEkQAqnameXClXWyRxHshrCY1SonO7uFPUDFtD2Z9GHu6dOWkOHfX7UETHV5/NTSqvner5M2YNsV/5To87zrmaeeNyvu91JgJSYofTD8IcMyhxcswxB9F3ECP7nulLDdCV+9mvE9zO0i4mPBxYb++87J0pu35TN9OY+gpiCK3Ed0gDqvvkTiCQEFu6y7OiqsQwy03CE5hAwWZR2YQKBgQDdb6e7+FWJSr9fIknfvZPPtKmbEkMHP1RYnVo3pmuVm14Z3UmostiSBRPMfVjeOX0N82SONM9P+1v9SDgSK3pL8rlk9Hx6D5KI7uj2IMtTVt00pO31KtxDLmXfgapDbWHK1RGEn1PDrnKYy5yOKJ8n0Wgp4lVEPIBN6uIud0A9iQKBgQC1UXdhEXFETyqEYWb9OnWbBjiVIw3D2/qW5c+WQGsHYdMEImC/0oTWIH9fKd4Azf26JjZ9nQvs5VcijJP6BXbGPqir5NgGVkwCj33PoNg4dDgIVE4BYaSp//7B6jCi5QiRTzCSOmUSkZ5L1Kz4SNEDe9r0MpLhxrsAzmR9aEJ/BQKBgHI71Ks63F2cSwd39+ZNtYA0cj7Gd/+4IvooCs+kseGXKj9rkkFOKj2CEwmuLHdP7vyQcHKQOdbIFFegtxRgi5G8oPm8yq5pdC3iGhpHJr1SlYFACGYu+zxJJlLcYIqyVf2+V3A0hZDwYLwEZjpMKHbxJ6xbz6MJFyObJZ3U9TYJAoGANXoGjJF5Z501u/+CQZN5VjSagZnqGGcL3G+BLx5msrGua9y7zjeHyCOjjWyqtnAKsllM3vVvq/nkHiN6DVaJNmUKmFARSqUvG944TAFzZAsa75H1w8CJsT34ZDbvC0wjn7/MYoRohPZ/ynu6XCwVwUJJTJaR7ZcQVmeJCdezLQUCgYEAszix6V9oL80Clb1nMwIly6I78+pcFKyk82yXxvySb6XPJvgoasbz9xYIeKlPyy6r8Aj/ujz5GVtDtkE6n6bsjekCdnUKUY3uTvFAX+YGQkuZnaPoisELJFI2Hal22tNnJyCOYh//AGAiHYpHNUKD4hsKBb45MhK1xwvTHpuLkdc=
|
||||
trade-backUrl: http://82.156.121.2:8880/trans/easypay/trade/callback
|
||||
wechat:
|
||||
pay:
|
||||
v3:
|
||||
mch-id: 1658665710 # 商户号
|
||||
mch-serial-no: 6BA681D9B219034D6F7851F57D61BE9317AB48FD # 商户证书序列号
|
||||
api-v3-key: T9iE71aHSmjtM35z4bDLuU3gFX8s2I2h # APIv3密钥
|
||||
private-key-path: "classpath:cert/apiclient_key.pem" # 商户私钥文件路径
|
||||
transfer-notify-url: https://wuzhongjie.com.cn/prod-api/api/transfer/callback # 转账回调地址
|
||||
app-id: wxebcdaea31881caab # 应用ID
|
||||
secret: 86fbcab880e4066ac5c75af6f4f003c2 # 应用密钥
|
||||
mini-program:
|
||||
# app-id: wx87a5db19138da60d
|
||||
# secret: 856ca8bae38ccaecc1353c9abedf6b41
|
||||
app-id: wx2fb87f0f1f05d314
|
||||
secret: 86fbcab880e4066ac5c75af6f4f003c2
|
||||
gitlab:
|
||||
client-id: 10**********6
|
||||
client-secret: 1f7d08**********5b7**********29e
|
||||
redirect-uri: ${justauth.address}/social-callback?source=gitlab
|
||||
|
@ -1,281 +0,0 @@
|
||||
--- # 监控中心配置
|
||||
spring.boot.admin.client:
|
||||
# 增加客户端开关
|
||||
enabled: false
|
||||
url: http://43.143.227.203:9090/admin
|
||||
instance:
|
||||
service-host-type: IP
|
||||
metadata:
|
||||
username: ${spring.boot.admin.client.username}
|
||||
userpassword: ${spring.boot.admin.client.password}
|
||||
username: @monitor.username@
|
||||
password: @monitor.password@
|
||||
|
||||
--- # snail-job 配置
|
||||
snail-job:
|
||||
enabled: false
|
||||
# 需要在 SnailJob 后台组管理创建对应名称的组,然后创建任务的时候选择对应的组,才能正确分派任务
|
||||
group: "ruoyi_group"
|
||||
# SnailJob 接入验证令牌 详见 script/sql/ry_job.sql `sj_group_config` 表
|
||||
token: "SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT"
|
||||
server:
|
||||
host: 43.143.227.203
|
||||
port: 17888
|
||||
# 命名空间UUID 详见 script/sql/ry_job.sql `sj_namespace`表`unique_id`字段
|
||||
namespace: ${spring.profiles.active}
|
||||
# 随主应用端口漂移
|
||||
port: 2${server.port}
|
||||
# 客户端ip指定
|
||||
host:
|
||||
# RPC类型: netty, grpc
|
||||
rpc-type: grpc
|
||||
|
||||
--- # 数据源配置
|
||||
spring:
|
||||
datasource:
|
||||
type: com.zaxxer.hikari.HikariDataSource
|
||||
# 动态数据源文档 https://www.kancloud.cn/tracy5546/dynamic-datasource/content
|
||||
dynamic:
|
||||
# 性能分析插件(有性能损耗 不建议生产环境使用)
|
||||
p6spy: true
|
||||
# 设置默认的数据源或者数据源组,默认值即为 master
|
||||
primary: master
|
||||
# 严格模式 匹配不到数据源则报错
|
||||
strict: true
|
||||
datasource:
|
||||
# 主库数据源
|
||||
master:
|
||||
type: ${spring.datasource.type}
|
||||
driverClassName: com.mysql.cj.jdbc.Driver
|
||||
# jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
|
||||
# rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
|
||||
url: jdbc:mysql://43.143.227.203:13306/soopin?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
|
||||
username: wzj
|
||||
password: A085F27A43B0
|
||||
# # 从库数据源
|
||||
# slave:
|
||||
# lazy: true
|
||||
# type: ${spring.datasource.type}
|
||||
# driverClassName: com.mysql.cj.jdbc.Driver
|
||||
# url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
|
||||
# username:
|
||||
# password:
|
||||
# oracle:
|
||||
# type: ${spring.datasource.type}
|
||||
# driverClassName: oracle.jdbc.OracleDriver
|
||||
# url: jdbc:oracle:thin:@//localhost:1521/XE
|
||||
# username: ROOT
|
||||
# password: root
|
||||
# postgres:
|
||||
# type: ${spring.datasource.type}
|
||||
# driverClassName: org.postgresql.Driver
|
||||
# url: jdbc:postgresql://localhost:5432/postgres?useUnicode=true&characterEncoding=utf8&useSSL=true&autoReconnect=true&reWriteBatchedInserts=true
|
||||
# username: root
|
||||
# password: root
|
||||
# sqlserver:
|
||||
# type: ${spring.datasource.type}
|
||||
# driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
|
||||
# url: jdbc:sqlserver://localhost:1433;DatabaseName=tempdb;SelectMethod=cursor;encrypt=false;rewriteBatchedStatements=true
|
||||
# username: SA
|
||||
# password: root
|
||||
hikari:
|
||||
# 最大连接池数量
|
||||
maxPoolSize: 20
|
||||
# 最小空闲线程数量
|
||||
minIdle: 10
|
||||
# 配置获取连接等待超时的时间
|
||||
connectionTimeout: 30000
|
||||
# 校验超时时间
|
||||
validationTimeout: 5000
|
||||
# 空闲连接存活最大时间,默认10分钟
|
||||
idleTimeout: 600000
|
||||
# 此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认30分钟
|
||||
maxLifetime: 1800000
|
||||
# 多久检查一次连接的活性
|
||||
keepaliveTime: 300000
|
||||
|
||||
--- # redis 单机配置(单机与集群只能开启一个另一个需要注释掉)
|
||||
spring.data:
|
||||
redis:
|
||||
# 地址
|
||||
host: 43.143.227.203
|
||||
# 端口,默认为6379
|
||||
port: 16379
|
||||
# 数据库索引
|
||||
database: 2
|
||||
# 密码(如没有密码请注释掉)
|
||||
password: e4ea0caebfd2
|
||||
# 连接超时时间
|
||||
timeout: 10s
|
||||
# 是否开启ssl
|
||||
ssl.enabled: false
|
||||
|
||||
# redisson 配置
|
||||
redisson:
|
||||
# redis key前缀
|
||||
keyPrefix:
|
||||
# 线程池数量
|
||||
threads: 4
|
||||
# Netty线程池数量
|
||||
nettyThreads: 8
|
||||
# 单节点配置
|
||||
singleServerConfig:
|
||||
# 客户端名称 不能用中文
|
||||
clientName: RuoYi-Vue-Plus
|
||||
# 最小空闲连接数
|
||||
connectionMinimumIdleSize: 8
|
||||
# 连接池大小
|
||||
connectionPoolSize: 32
|
||||
# 连接空闲超时,单位:毫秒
|
||||
idleConnectionTimeout: 10000
|
||||
# 命令等待超时,单位:毫秒
|
||||
timeout: 3000
|
||||
# 发布和订阅连接池大小
|
||||
subscriptionConnectionPoolSize: 50
|
||||
|
||||
--- # RocketMQ 配置
|
||||
rocketmq:
|
||||
# RocketMQ 服务器地址
|
||||
name-server: 43.143.227.203:9876
|
||||
# 生产者配置
|
||||
producer:
|
||||
# 生产者组名
|
||||
group: wzj_prod
|
||||
# 发送消息超时时间
|
||||
send-message-timeout: 30000
|
||||
# 消息最大长度
|
||||
max-message-size: 4194304
|
||||
# 消息发送失败重试次数
|
||||
retry-times-when-send-failed: 3
|
||||
# 异步消息发送失败重试次数
|
||||
retry-times-when-send-async-failed: 3
|
||||
# 消费者配置
|
||||
consumer:
|
||||
# 拉取消息最大数量
|
||||
pull-batch-size: 10
|
||||
# 消费者组 (系统模块)
|
||||
group: wzj_prod
|
||||
# 是否启动消费者
|
||||
enabled: false
|
||||
--- # mail 邮件发送
|
||||
mail:
|
||||
enabled: false
|
||||
host: smtp.163.com
|
||||
port: 465
|
||||
# 是否需要用户名密码验证
|
||||
auth: true
|
||||
# 发送方,遵循RFC-822标准
|
||||
from: xxx@163.com
|
||||
# 用户名(注意:如果使用foxmail邮箱,此处user为qq号)
|
||||
user: xxx@163.com
|
||||
# 密码(注意,某些邮箱需要为SMTP服务单独设置密码,详情查看相关帮助)
|
||||
pass: xxxxxxxxxx
|
||||
# 使用 STARTTLS安全连接,STARTTLS是对纯文本通信协议的扩展。
|
||||
starttlsEnable: true
|
||||
# 使用SSL安全连接
|
||||
sslEnable: true
|
||||
# SMTP超时时长,单位毫秒,缺省值不超时
|
||||
timeout: 0
|
||||
# Socket连接超时值,单位毫秒,缺省值不超时
|
||||
connectionTimeout: 0
|
||||
|
||||
--- # sms 短信 支持 阿里云 腾讯云 云片 等等各式各样的短信服务商
|
||||
# https://sms4j.com/doc3/ 差异配置文档地址 支持单厂商多配置,可以配置多个同时使用
|
||||
sms:
|
||||
# 配置源类型用于标定配置来源(interface,yaml)
|
||||
config-type: yaml
|
||||
# 用于标定yml中的配置是否开启短信拦截,接口配置不受此限制
|
||||
restricted: true
|
||||
# 短信拦截限制单手机号每分钟最大发送,只对开启了拦截的配置有效
|
||||
minute-max: 1
|
||||
# 短信拦截限制单手机号每日最大发送量,只对开启了拦截的配置有效
|
||||
account-max: 30
|
||||
# 以下配置来自于 org.dromara.sms4j.provider.config.BaseConfig类中
|
||||
blends:
|
||||
# 唯一ID 用于发送短信寻找具体配置 随便定义别用中文即可
|
||||
# 可以同时存在两个相同厂商 例如: ali1 ali2 两个不同的阿里短信账号 也可用于区分租户
|
||||
config1:
|
||||
# 框架定义的厂商名称标识,标定此配置是哪个厂商,详细请看厂商标识介绍部分
|
||||
supplier: alibaba
|
||||
# 有些称为accessKey有些称之为apiKey,也有称为sdkKey或者appId。
|
||||
access-key-id: 您的accessKey
|
||||
# 称为accessSecret有些称之为apiSecret
|
||||
access-key-secret: 您的accessKeySecret
|
||||
signature: 您的短信签名
|
||||
sdk-app-id: 您的sdkAppId
|
||||
config2:
|
||||
# 厂商标识,标定此配置是哪个厂商,详细请看厂商标识介绍部分
|
||||
supplier: tencent
|
||||
access-key-id: AKIDvhEVWHm0xe5JGxOZXGitnRovlKcfRzIN
|
||||
access-key-secret: qPhiTxA7oENFrCH5dvxiCQN4UdWAYgYA
|
||||
signature: 无终街天津科技
|
||||
sdk-app-id: 1400966042
|
||||
|
||||
|
||||
--- # 三方授权
|
||||
justauth:
|
||||
# 前端外网访问地址
|
||||
address: http://82.156.121.2:8880/
|
||||
type:
|
||||
alipay_wallet: # 支付宝钱包
|
||||
client-id: 10**********6
|
||||
client-secret: 1f7d08**********5b7**********29e
|
||||
redirect-uri: ${justauth.address}/social-callback?source=alipay_wallet
|
||||
alipay-public-key: MIIB**************DAQAB
|
||||
wechat_open: # 微信开放平台
|
||||
client-id: wxebcdaea31881caab
|
||||
client-secret: 71826d76bad096ec5407897c6ed1391f
|
||||
redirect-uri: ${justauth.address}/social-callback?source=wechat_open
|
||||
wechat_mp: # 微信小程序
|
||||
client-id: 10**********6
|
||||
client-secret: 1f7d08**********5b7**********29e
|
||||
redirect-uri: ${justauth.address}/social-callback?source=wechat_mp
|
||||
wechat_enterprise: # 微信企业
|
||||
client-id: 10**********6
|
||||
client-secret: 1f7d08**********5b7**********29e
|
||||
redirect-uri: ${justauth.address}/social-callback?source=wechat_enterprise
|
||||
agent-id: 1000002
|
||||
|
||||
|
||||
# 腾讯云IM配置
|
||||
tencent:
|
||||
im:
|
||||
enabled: true # 启用腾讯云IM
|
||||
sdk-app-id: 1600080789 # 你的腾讯云 SDKAppID
|
||||
secret-key: "311b5309d714a20f7f5b54360ee21b1e24ec208ebcd25ce8f47d24753bccc091" # 你的密钥
|
||||
administrator: "administrator" # 管理员账号
|
||||
expire-time: 604800 # UserSig 过期时间(7天,单位:秒)
|
||||
# mongodb
|
||||
data:
|
||||
mongodb:
|
||||
uri: 82.156.121.2:37017
|
||||
database: wzj-shop
|
||||
username: admin
|
||||
password: A1969bf8
|
||||
authentication-database: admin
|
||||
# replica-set-name: mongoreplset
|
||||
|
||||
easypay:
|
||||
api-path-prefix: https://phoenix.eycard.cn/yqt
|
||||
req-id: D01X00000801861
|
||||
certificate-id: 20250917
|
||||
mcht-code: 531000022034161
|
||||
easypay-public-key: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCLLVY70e67BcK4V08P+69dfBeMmMYDopf3HF9G6meqPTVxyGYlEb0XwT0UA6g8t2HzG8FaKgTFKgOvhr+EFbBcF+AYdrgFYZSjR4hWBkWiOyKC66wQ7kQhYzC4kwetcDp5TftJfSivbAC1Lm8/Gf2+ZpaDuHDPjLCFS2gQYI5dqwIDAQAB
|
||||
merRsaPrivateKey: MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDLgDEh0hsPTmHLdEYp6LCo3LMnXMLCV+wUxRn5lvcAa7gn8RZyLDGiT5WdR0SpJDbBhWL1WbnUd7dJulzjbb0N5NzrO3HntjzKIpzhfChw3BBtM3PR8xvS17Wt4vRN6JvY4w0sphKesxbHWiMHUTOzKrQBEdXasMujmxV0N9R2GzTLK0Pn4ROWCzeQQhiJ2oOc3Eqkus9/C+3LcxkU08nF/q0X/kzHGS+Gn+JL/Eo6vpQExg7rQs0mnrKvNuPPGKpyKNpRmKWtiA8GTBeFnwZlP8kYj9Z8NYxLsT6fJnqpZ8wZ++T2PS7CIIo6JSIKz0ElNrRRD2Ei7lyCZAjUBQLLAgMBAAECggEBAIRjGhOBhx8XA+IC+55KBZtlMJub6gvafPgqHbLUtk2sxjodylduTr/j/FY8RfuvVnvhFba9r3n8g93QApvmCUafq+TQYFK4qKVrjRnX1stNLtaL0X41JNWuhT/hVMPWXoTjeO+h/p0Frvzzs7QP7I1Ta5UCkFhcCa6etn9Lzskh0uXe4ylMmt5lAuvFAeIuE5icMxu4n75RXUVxaBSOKjQ0ujQWMh46ncrX0f9oGkDbWE37LF61sf2iuXpPwnIAwk/e/zOpnCi9EHOJtCJbVr+ncDRvlZsEf5hVnxYgT2bQrUrSD9An5e4zgJF6rigsDhmNfvp0W/bJnXPIIg1MYbECgYEA5MlizB9XmttiaAo9sMjAUE18cxgEq2pIU8l8WOj//XAsf64AlrlWJxpJdNYkfdRiinnRIxroo1cYx3RMWqdGbYVk+7DJBNut6R0bg0oGgJoeBFnCe/xNGsBk7MZwc4//5sfRC2rbtuYFPn8VkNB5HllhddD51L6lObAp4Uf14/MCgYEA47TX4AmgcAjhVCUvC4ZUuiqAku/suw0vkG6FNxuSYY5GezPvwWx0JviaohaIm5JkgjNNASFhx12XG+PZoPDNGi9vzotVkI69LnOdlf3imVaJR7u5H8730Thbdd5oKi66KYXJGv3hppwh7qAu8VkdMavvCT24jILNiGiA0OBOE8kCgYA5JoFSgiXNHi5X1O8SISPBK4oB6icIdtU4cOVqBFImCgZjoqCtBgEaZXuh/vhAonQ3KTTv8wHYA6LB+DA2mQCDzUWrhb7BQusPh2DfC/fR2i3TYmStuhm8rADKEMv4YilHifSTSI84Af+fW/mUIi+PQD6TQq+V0EXPwkzD5MjstwKBgQDZZ5SlBwvza8cXe9kK+9pxVJslr4UqolBDagIut1hvZFPO1auX1WCgxMN+9ly/jGoCFdDzv1eH7ceUjVr/2mk5EwmA/m9XcbEWZLSUvK5ZENJJduYthIH/c/t+8jYp8Cs18dIsvzFuzatoFfA75oWFI086V3+YSFrMXlp/E2n4YQKBgQCKiynvzcRA8GoK6ibGhwUc5lpVUOVqpIdmVG5bXbnKYoU7Jkf2pOUwzLQGKOj9KS1Z80jkZA9p22BLKD/VXF0PvGBhx1Ujpil1vd96I/KcGRsmCu3b3AxK7qzDt6Y0nVk5bN72RYq4F/iRU+ijoIAuLsyrn/e0eaJweiqzr/gK4g==
|
||||
trade-backUrl: http://43.143.227.203:8880/trans/easypay/trade/callback
|
||||
wechat:
|
||||
pay:
|
||||
v3:
|
||||
mch-id: 1658665710 # 商户号
|
||||
mch-serial-no: 6BA681D9B219034D6F7851F57D61BE9317AB48FD # 商户证书序列号
|
||||
api-v3-key: T9iE71aHSmjtM35z4bDLuU3gFX8s2I2h # APIv3密钥
|
||||
private-key-path: "classpath:cert/apiclient_key.pem" # 商户私钥文件路径
|
||||
transfer-notify-url: https://wuzhongjie.com.cn/prod-api/trans/withdraw/callback # 转账回调地址
|
||||
app-id: wxebcdaea31881caab # 应用ID
|
||||
secret: 71826d76bad096ec5407897c6ed1391f # 应用密钥
|
||||
callback-url: https://wuzhongjie.com.cn/prod-api/app/payment/callback/WECHAT
|
||||
mini-program:
|
||||
# app-id: wx87a5db19138da60d
|
||||
# secret: 856ca8bae38ccaecc1353c9abedf6b41
|
||||
app-id: wx2fb87f0f1f05d314
|
||||
secret: 86fbcab880e4066ac5c75af6f4f003c2
|
@ -1,8 +1,11 @@
|
||||
--- # 临时文件存储位置 避免临时文件被系统清理报错
|
||||
spring.servlet.multipart.location: /ruoyi/server/temp
|
||||
|
||||
--- # 监控中心配置
|
||||
spring.boot.admin.client:
|
||||
# 增加客户端开关
|
||||
enabled: false
|
||||
url: http://43.143.227.203:9090/admin
|
||||
enabled: true
|
||||
url: http://localhost:9090/admin
|
||||
instance:
|
||||
service-host-type: IP
|
||||
metadata:
|
||||
@ -13,13 +16,13 @@ spring.boot.admin.client:
|
||||
|
||||
--- # snail-job 配置
|
||||
snail-job:
|
||||
enabled: false
|
||||
enabled: true
|
||||
# 需要在 SnailJob 后台组管理创建对应名称的组,然后创建任务的时候选择对应的组,才能正确分派任务
|
||||
group: "ruoyi_group"
|
||||
# SnailJob 接入验证令牌 详见 script/sql/ry_job.sql `sj_group_config`表
|
||||
token: "SJ_cKqBTPzCsWA3VyuCfFoccmuIEGXjr5KT"
|
||||
server:
|
||||
host: 43.143.227.203
|
||||
host: 127.0.0.1
|
||||
port: 17888
|
||||
# 命名空间UUID 详见 script/sql/ry_job.sql `sj_namespace`表`unique_id`字段
|
||||
namespace: ${spring.profiles.active}
|
||||
@ -37,7 +40,7 @@ spring:
|
||||
# 动态数据源文档 https://www.kancloud.cn/tracy5546/dynamic-datasource/content
|
||||
dynamic:
|
||||
# 性能分析插件(有性能损耗 不建议生产环境使用)
|
||||
p6spy: true
|
||||
p6spy: false
|
||||
# 设置默认的数据源或者数据源组,默认值即为 master
|
||||
primary: master
|
||||
# 严格模式 匹配不到数据源则报错
|
||||
@ -49,9 +52,9 @@ spring:
|
||||
driverClassName: com.mysql.cj.jdbc.Driver
|
||||
# jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
|
||||
# rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
|
||||
url: jdbc:mysql://mysql:3306/soopin?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
|
||||
username: wzj_prod
|
||||
password: Kp8$rT2*jQ6$sH4%
|
||||
url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
|
||||
username: root
|
||||
password: root
|
||||
# # 从库数据源
|
||||
# slave:
|
||||
# lazy: true
|
||||
@ -92,19 +95,19 @@ spring:
|
||||
# 此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认30分钟
|
||||
maxLifetime: 1800000
|
||||
# 多久检查一次连接的活性
|
||||
keepaliveTime: 300000
|
||||
keepaliveTime: 30000
|
||||
|
||||
--- # redis 单机配置(单机与集群只能开启一个另一个需要注释掉)
|
||||
spring.data:
|
||||
redis:
|
||||
# 地址
|
||||
host: redis
|
||||
host: localhost
|
||||
# 端口,默认为6379
|
||||
port: 6379
|
||||
# 数据库索引
|
||||
database: 2
|
||||
# 密码(如没有密码请注释掉)
|
||||
password: e4ea0caebfd2
|
||||
database: 0
|
||||
# redis 密码必须配置
|
||||
password: ruoyi123
|
||||
# 连接超时时间
|
||||
timeout: 10s
|
||||
# 是否开启ssl
|
||||
@ -115,17 +118,17 @@ redisson:
|
||||
# redis key前缀
|
||||
keyPrefix:
|
||||
# 线程池数量
|
||||
threads: 4
|
||||
threads: 16
|
||||
# Netty线程池数量
|
||||
nettyThreads: 8
|
||||
nettyThreads: 32
|
||||
# 单节点配置
|
||||
singleServerConfig:
|
||||
# 客户端名称 不能用中文
|
||||
clientName: RuoYi-Vue-Plus
|
||||
# 最小空闲连接数
|
||||
connectionMinimumIdleSize: 8
|
||||
connectionMinimumIdleSize: 32
|
||||
# 连接池大小
|
||||
connectionPoolSize: 32
|
||||
connectionPoolSize: 64
|
||||
# 连接空闲超时,单位:毫秒
|
||||
idleConnectionTimeout: 10000
|
||||
# 命令等待超时,单位:毫秒
|
||||
@ -133,30 +136,6 @@ redisson:
|
||||
# 发布和订阅连接池大小
|
||||
subscriptionConnectionPoolSize: 50
|
||||
|
||||
--- # RocketMQ 配置
|
||||
rocketmq:
|
||||
# RocketMQ 服务器地址
|
||||
name-server: rocketmq-namesrv:9876
|
||||
# 生产者配置
|
||||
producer:
|
||||
# 生产者组名
|
||||
group: wzj_prod
|
||||
# 发送消息超时时间
|
||||
send-message-timeout: 30000
|
||||
# 消息最大长度
|
||||
max-message-size: 4194304
|
||||
# 消息发送失败重试次数
|
||||
retry-times-when-send-failed: 3
|
||||
# 异步消息发送失败重试次数
|
||||
retry-times-when-send-async-failed: 3
|
||||
# 消费者配置
|
||||
consumer:
|
||||
# 拉取消息最大数量
|
||||
pull-batch-size: 10
|
||||
# 消费者组 (系统模块)
|
||||
group: wzj_prod
|
||||
# 是否启动消费者
|
||||
enabled: true
|
||||
--- # mail 邮件发送
|
||||
mail:
|
||||
enabled: false
|
||||
@ -206,76 +185,83 @@ sms:
|
||||
config2:
|
||||
# 厂商标识,标定此配置是哪个厂商,详细请看厂商标识介绍部分
|
||||
supplier: tencent
|
||||
access-key-id: AKIDvhEVWHm0xe5JGxOZXGitnRovlKcfRzIN
|
||||
access-key-secret: qPhiTxA7oENFrCH5dvxiCQN4UdWAYgYA
|
||||
signature: 无终街天津科技
|
||||
sdk-app-id: 1400966042
|
||||
|
||||
access-key-id: 您的accessKey
|
||||
access-key-secret: 您的accessKeySecret
|
||||
signature: 您的短信签名
|
||||
sdk-app-id: 您的sdkAppId
|
||||
|
||||
--- # 三方授权
|
||||
justauth:
|
||||
# 前端外网访问地址
|
||||
address: http://82.156.121.2:8880/
|
||||
address: http://localhost:80
|
||||
type:
|
||||
alipay_wallet: # 支付宝钱包
|
||||
maxkey:
|
||||
# maxkey 服务器地址
|
||||
# 注意 如下均配置均不需要修改 maxkey 已经内置好了数据
|
||||
server-url: http://sso.maxkey.top
|
||||
client-id: 876892492581044224
|
||||
client-secret: x1Y5MTMwNzIwMjMxNTM4NDc3Mzche8
|
||||
redirect-uri: ${justauth.address}/social-callback?source=maxkey
|
||||
topiam:
|
||||
# topiam 服务器地址
|
||||
server-url: http://127.0.0.1:1989/api/v1/authorize/y0q************spq***********8ol
|
||||
client-id: 449c4*********937************759
|
||||
client-secret: ac7***********1e0************28d
|
||||
redirect-uri: ${justauth.address}/social-callback?source=topiam
|
||||
scopes: [ openid, email, phone, profile ]
|
||||
qq:
|
||||
client-id: 10**********6
|
||||
client-secret: 1f7d08**********5b7**********29e
|
||||
redirect-uri: ${justauth.address}/social-callback?source=qq
|
||||
union-id: false
|
||||
weibo:
|
||||
client-id: 10**********6
|
||||
client-secret: 1f7d08**********5b7**********29e
|
||||
redirect-uri: ${justauth.address}/social-callback?source=weibo
|
||||
gitee:
|
||||
client-id: 91436b7940090d09c72c7daf85b959cfd5f215d67eea73acbf61b6b590751a98
|
||||
client-secret: 02c6fcfd70342980cd8dd2f2c06c1a350645d76c754d7a264c4e125f9ba915ac
|
||||
redirect-uri: ${justauth.address}/social-callback?source=gitee
|
||||
dingtalk:
|
||||
client-id: 10**********6
|
||||
client-secret: 1f7d08**********5b7**********29e
|
||||
redirect-uri: ${justauth.address}/social-callback?source=dingtalk
|
||||
baidu:
|
||||
client-id: 10**********6
|
||||
client-secret: 1f7d08**********5b7**********29e
|
||||
redirect-uri: ${justauth.address}/social-callback?source=baidu
|
||||
csdn:
|
||||
client-id: 10**********6
|
||||
client-secret: 1f7d08**********5b7**********29e
|
||||
redirect-uri: ${justauth.address}/social-callback?source=csdn
|
||||
coding:
|
||||
client-id: 10**********6
|
||||
client-secret: 1f7d08**********5b7**********29e
|
||||
redirect-uri: ${justauth.address}/social-callback?source=coding
|
||||
coding-group-name: xx
|
||||
oschina:
|
||||
client-id: 10**********6
|
||||
client-secret: 1f7d08**********5b7**********29e
|
||||
redirect-uri: ${justauth.address}/social-callback?source=oschina
|
||||
alipay_wallet:
|
||||
client-id: 10**********6
|
||||
client-secret: 1f7d08**********5b7**********29e
|
||||
redirect-uri: ${justauth.address}/social-callback?source=alipay_wallet
|
||||
alipay-public-key: MIIB**************DAQAB
|
||||
wechat_open: # 微信开放平台
|
||||
client-id: wxebcdaea31881caab
|
||||
client-secret: 71826d76bad096ec5407897c6ed1391f
|
||||
wechat_open:
|
||||
client-id: 10**********6
|
||||
client-secret: 1f7d08**********5b7**********29e
|
||||
redirect-uri: ${justauth.address}/social-callback?source=wechat_open
|
||||
wechat_mp: # 微信小程序
|
||||
wechat_mp:
|
||||
client-id: 10**********6
|
||||
client-secret: 1f7d08**********5b7**********29e
|
||||
redirect-uri: ${justauth.address}/social-callback?source=wechat_mp
|
||||
wechat_enterprise: # 微信企业
|
||||
wechat_enterprise:
|
||||
client-id: 10**********6
|
||||
client-secret: 1f7d08**********5b7**********29e
|
||||
redirect-uri: ${justauth.address}/social-callback?source=wechat_enterprise
|
||||
agent-id: 1000002
|
||||
|
||||
|
||||
# 腾讯云IM配置
|
||||
tencent:
|
||||
im:
|
||||
enabled: true # 启用腾讯云IM
|
||||
sdk-app-id: 1600080789 # 你的腾讯云 SDKAppID
|
||||
secret-key: "311b5309d714a20f7f5b54360ee21b1e24ec208ebcd25ce8f47d24753bccc091" # 你的密钥
|
||||
administrator: "administrator" # 管理员账号
|
||||
expire-time: 604800 # UserSig 过期时间(7天,单位:秒)
|
||||
# mongodb
|
||||
data:
|
||||
mongodb:
|
||||
uri: 82.156.121.2:37017
|
||||
database: wzj-shop
|
||||
username: admin
|
||||
password: A1969bf8
|
||||
authentication-database: admin
|
||||
# replica-set-name: mongoreplset
|
||||
|
||||
easypay:
|
||||
api-path-prefix: https://phoenix.eycard.cn/yqt
|
||||
req-id: D01X00000801861
|
||||
certificate-id: 20250917
|
||||
mcht-code: 531000022034161
|
||||
easypay-public-key: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCLLVY70e67BcK4V08P+69dfBeMmMYDopf3HF9G6meqPTVxyGYlEb0XwT0UA6g8t2HzG8FaKgTFKgOvhr+EFbBcF+AYdrgFYZSjR4hWBkWiOyKC66wQ7kQhYzC4kwetcDp5TftJfSivbAC1Lm8/Gf2+ZpaDuHDPjLCFS2gQYI5dqwIDAQAB
|
||||
merRsaPrivateKey: MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDLgDEh0hsPTmHLdEYp6LCo3LMnXMLCV+wUxRn5lvcAa7gn8RZyLDGiT5WdR0SpJDbBhWL1WbnUd7dJulzjbb0N5NzrO3HntjzKIpzhfChw3BBtM3PR8xvS17Wt4vRN6JvY4w0sphKesxbHWiMHUTOzKrQBEdXasMujmxV0N9R2GzTLK0Pn4ROWCzeQQhiJ2oOc3Eqkus9/C+3LcxkU08nF/q0X/kzHGS+Gn+JL/Eo6vpQExg7rQs0mnrKvNuPPGKpyKNpRmKWtiA8GTBeFnwZlP8kYj9Z8NYxLsT6fJnqpZ8wZ++T2PS7CIIo6JSIKz0ElNrRRD2Ei7lyCZAjUBQLLAgMBAAECggEBAIRjGhOBhx8XA+IC+55KBZtlMJub6gvafPgqHbLUtk2sxjodylduTr/j/FY8RfuvVnvhFba9r3n8g93QApvmCUafq+TQYFK4qKVrjRnX1stNLtaL0X41JNWuhT/hVMPWXoTjeO+h/p0Frvzzs7QP7I1Ta5UCkFhcCa6etn9Lzskh0uXe4ylMmt5lAuvFAeIuE5icMxu4n75RXUVxaBSOKjQ0ujQWMh46ncrX0f9oGkDbWE37LF61sf2iuXpPwnIAwk/e/zOpnCi9EHOJtCJbVr+ncDRvlZsEf5hVnxYgT2bQrUrSD9An5e4zgJF6rigsDhmNfvp0W/bJnXPIIg1MYbECgYEA5MlizB9XmttiaAo9sMjAUE18cxgEq2pIU8l8WOj//XAsf64AlrlWJxpJdNYkfdRiinnRIxroo1cYx3RMWqdGbYVk+7DJBNut6R0bg0oGgJoeBFnCe/xNGsBk7MZwc4//5sfRC2rbtuYFPn8VkNB5HllhddD51L6lObAp4Uf14/MCgYEA47TX4AmgcAjhVCUvC4ZUuiqAku/suw0vkG6FNxuSYY5GezPvwWx0JviaohaIm5JkgjNNASFhx12XG+PZoPDNGi9vzotVkI69LnOdlf3imVaJR7u5H8730Thbdd5oKi66KYXJGv3hppwh7qAu8VkdMavvCT24jILNiGiA0OBOE8kCgYA5JoFSgiXNHi5X1O8SISPBK4oB6icIdtU4cOVqBFImCgZjoqCtBgEaZXuh/vhAonQ3KTTv8wHYA6LB+DA2mQCDzUWrhb7BQusPh2DfC/fR2i3TYmStuhm8rADKEMv4YilHifSTSI84Af+fW/mUIi+PQD6TQq+V0EXPwkzD5MjstwKBgQDZZ5SlBwvza8cXe9kK+9pxVJslr4UqolBDagIut1hvZFPO1auX1WCgxMN+9ly/jGoCFdDzv1eH7ceUjVr/2mk5EwmA/m9XcbEWZLSUvK5ZENJJduYthIH/c/t+8jYp8Cs18dIsvzFuzatoFfA75oWFI086V3+YSFrMXlp/E2n4YQKBgQCKiynvzcRA8GoK6ibGhwUc5lpVUOVqpIdmVG5bXbnKYoU7Jkf2pOUwzLQGKOj9KS1Z80jkZA9p22BLKD/VXF0PvGBhx1Ujpil1vd96I/KcGRsmCu3b3AxK7qzDt6Y0nVk5bN72RYq4F/iRU+ijoIAuLsyrn/e0eaJweiqzr/gK4g==
|
||||
trade-backUrl: http://43.143.227.203:8880/trans/easypay/trade/callback
|
||||
wechat:
|
||||
pay:
|
||||
v3:
|
||||
mch-id: 1658665710 # 商户号
|
||||
mch-serial-no: 6BA681D9B219034D6F7851F57D61BE9317AB48FD # 商户证书序列号
|
||||
api-v3-key: T9iE71aHSmjtM35z4bDLuU3gFX8s2I2h # APIv3密钥
|
||||
private-key-path: "/java/cert/apiclient_key.pem" # 商户私钥文件路径
|
||||
transfer-notify-url: https://wuzhongjie.com.cn/prod-api/trans/withdraw/callback # 转账回调地址
|
||||
app-id: wxebcdaea31881caab # 应用ID
|
||||
secret: 71826d76bad096ec5407897c6ed1391f # 应用密钥
|
||||
callback-url: https://wuzhongjie.com.cn/prod-api/app/payment/callback/WECHAT
|
||||
mini-program:
|
||||
# app-id: wx87a5db19138da60d
|
||||
# secret: 856ca8bae38ccaecc1353c9abedf6b41
|
||||
app-id: wx2fb87f0f1f05d314
|
||||
secret: 86fbcab880e4066ac5c75af6f4f003c2
|
||||
gitlab:
|
||||
client-id: 10**********6
|
||||
client-secret: 1f7d08**********5b7**********29e
|
||||
redirect-uri: ${justauth.address}/social-callback?source=gitlab
|
||||
|
@ -32,25 +32,13 @@ captcha:
|
||||
# 字符验证码长度
|
||||
charLength: 4
|
||||
|
||||
pagehelper:
|
||||
helperDialect: mysql
|
||||
supportMethodsArguments: true
|
||||
params: count=countSql
|
||||
|
||||
# 日志配置
|
||||
logging:
|
||||
level:
|
||||
org.dromara: @logging.level@
|
||||
com.wzj.soopin: @logging.level@
|
||||
org.apache.http.wire: @logging.level@
|
||||
org.springframework: @logging.level@
|
||||
org.mybatis.spring: @logging.level@
|
||||
com.baomidou: @logging.level@
|
||||
org.apache.fury: @logging.level@
|
||||
org.redisson: @logging.level@
|
||||
com.zaxxer.hikari.pool: @logging.level@
|
||||
software.amazon.awssdk.transfer: @logging.level@
|
||||
com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor: @logging.level@
|
||||
org.springframework: warn
|
||||
org.mybatis.spring.mapper: error
|
||||
org.apache.fury: warn
|
||||
config: classpath:logback-plus.xml
|
||||
|
||||
# 用户配置
|
||||
@ -79,9 +67,9 @@ spring:
|
||||
servlet:
|
||||
multipart:
|
||||
# 单个文件大小
|
||||
max-file-size: 300MB
|
||||
max-file-size: 10MB
|
||||
# 设置总上传的文件大小
|
||||
max-request-size: 300MB
|
||||
max-request-size: 20MB
|
||||
mvc:
|
||||
# 设置静态资源路径 防止所有请求都去查静态资源
|
||||
static-path-pattern: /static/**
|
||||
@ -106,7 +94,7 @@ sa-token:
|
||||
# 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
|
||||
is-concurrent: true
|
||||
# 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token)
|
||||
is-share: true
|
||||
is-share: false
|
||||
# jwt秘钥
|
||||
jwt-secret-key: abcdefghijklmnopqrstuvwxyz
|
||||
|
||||
@ -120,18 +108,9 @@ security:
|
||||
- /**/*.js
|
||||
- /favicon.ico
|
||||
- /error
|
||||
- /webjars/**
|
||||
- /swagger-resources/**
|
||||
- /*/api-docs
|
||||
- /*/api-docs/**
|
||||
- /warm-flow-ui/token-name
|
||||
- /app/**
|
||||
- /resource/oss/**
|
||||
- /callback/api
|
||||
- /cms/vlog/vodCallBack
|
||||
- /api/transfer/callback
|
||||
- /trans/withdraw/callback
|
||||
- /app/payment/callback/*
|
||||
|
||||
# 多租户配置
|
||||
tenant:
|
||||
@ -140,77 +119,14 @@ tenant:
|
||||
# 排除表
|
||||
excludes:
|
||||
- sys_menu
|
||||
- cont_users
|
||||
- cont_vlog
|
||||
- cont_comment
|
||||
- cont_my_liked_vlog
|
||||
- ums_fans
|
||||
- sys_tenant
|
||||
- sys_tenant_package
|
||||
- aws_system_statistics
|
||||
- act_integral_history
|
||||
- sys_role_dept
|
||||
- sys_role_menu
|
||||
- sys_user_post
|
||||
- sys_user_role
|
||||
- sys_user_tenant
|
||||
- sys_message
|
||||
- sys_client
|
||||
- sys_oss_config
|
||||
- ums_member
|
||||
- ums_member_address
|
||||
- ums_member_login_info
|
||||
- ums_cart
|
||||
- ums_account
|
||||
- ums_account_change_record
|
||||
- sys_message_template
|
||||
- sys_message_user
|
||||
- ums_fans
|
||||
- ums_block
|
||||
- ums_forbidden
|
||||
- ums_member_bank
|
||||
- ums_tenant_forbidden
|
||||
|
||||
- oms_aftersale
|
||||
- oms_aftersale_item
|
||||
- oms_order
|
||||
- oms_order_delivery_history
|
||||
- oms_order_item
|
||||
- oms_order_operate_history
|
||||
- oms_wechat_payment_history
|
||||
- pms_brand
|
||||
- pms_product_category
|
||||
- pms_product_snapshot
|
||||
- pms_sku
|
||||
- pms_sku_snapshot
|
||||
- oms_verification_codes
|
||||
- oms_verification_logs
|
||||
- ums_feedback
|
||||
- trans_account_bill
|
||||
- trans_charge
|
||||
- trans_withdraw
|
||||
- trans_divide
|
||||
- trans_divide_detail
|
||||
- trans_divide_rule
|
||||
- trans_divide_rule_detail
|
||||
- trans_pay_order
|
||||
- cont_vlog_member
|
||||
- aws_system_statistics
|
||||
- act_integral_history
|
||||
- sys_version
|
||||
- ums_member_wechat
|
||||
- sys_tenant_extend
|
||||
- sys_commission_template
|
||||
- sys_commission_rate_range
|
||||
- oms_red_packet
|
||||
- oms_red_packet_receive
|
||||
- sys_commission_template
|
||||
- sys_commission_rate_range
|
||||
- cont_article
|
||||
- cont_article_category
|
||||
-
|
||||
|
||||
|
||||
|
||||
# MyBatisPlus配置
|
||||
# https://baomidou.com/config/
|
||||
@ -218,11 +134,11 @@ mybatis-plus:
|
||||
# 自定义配置 是否全局开启逻辑删除 关闭后 所有逻辑删除功能将失效
|
||||
enableLogicDelete: true
|
||||
# 多包名使用 例如 org.dromara.**.mapper,org.xxx.**.mapper
|
||||
mapperPackage: org.dromara.**.mapper,com.wzj.soopin.**.mapper
|
||||
mapperPackage: org.dromara.**.mapper
|
||||
# 对应的 XML 文件位置
|
||||
mapperLocations: classpath*:mapper/**/*Mapper.xml,classpath*:mapper/**/*.xml
|
||||
mapperLocations: classpath*:mapper/**/*Mapper.xml
|
||||
# 实体扫描,多个package用逗号或者分号分隔
|
||||
typeAliasesPackage: org.dromara.**.domain,com.wzj.soopin.**.domain
|
||||
typeAliasesPackage: org.dromara.**.domain
|
||||
global-config:
|
||||
dbConfig:
|
||||
# 主键类型
|
||||
@ -239,7 +155,7 @@ mybatis-encryptor:
|
||||
# 编码方式 BASE64/HEX。默认BASE64
|
||||
encode: BASE64
|
||||
# 安全秘钥 对称算法的秘钥 如:AES,SM4
|
||||
password: 123456
|
||||
password:
|
||||
# 公私钥 非对称算法的公私钥 如:SM2,RSA
|
||||
publicKey:
|
||||
privateKey:
|
||||
@ -261,15 +177,9 @@ springdoc:
|
||||
api-docs:
|
||||
# 是否开启接口文档
|
||||
enabled: true
|
||||
# 文档路径
|
||||
path: /v3/api-docs
|
||||
swagger-ui:
|
||||
# 文档路径
|
||||
path: /swagger-ui/index.html
|
||||
# 持久化认证数据
|
||||
persistAuthorization: true
|
||||
# 是否启用
|
||||
enabled: true
|
||||
# swagger-ui:
|
||||
# # 持久化认证数据
|
||||
# persistAuthorization: true
|
||||
info:
|
||||
# 标题
|
||||
title: '标题:RuoYi-Vue-Plus多租户管理系统_接口文档'
|
||||
@ -291,27 +201,17 @@ springdoc:
|
||||
name: ${sa-token.token-name}
|
||||
#这里定义了两个分组,可定义多个,也可以不定义
|
||||
group-configs:
|
||||
- group: 1.会员模块
|
||||
packages-to-scan: com.wzj.soopin.member
|
||||
- group: 2.订单模块
|
||||
packages-to-scan: com.wzj.soopin.order
|
||||
- group: 3.商品模块
|
||||
packages-to-scan: com.wzj.soopin.goods
|
||||
- group: 4.内容模块
|
||||
packages-to-scan: com.wzj.soopin.content
|
||||
- group: 5.交易模块
|
||||
packages-to-scan: com.wzj.soopin.transaction
|
||||
- group: 6.IM模块
|
||||
packages-to-scan: com.wzj.soopin.im
|
||||
- group: 7.系统模块
|
||||
- group: 1.演示模块
|
||||
packages-to-scan: org.dromara.demo
|
||||
- group: 2.通用模块
|
||||
packages-to-scan: org.dromara.web
|
||||
- group: 3.系统模块
|
||||
packages-to-scan: org.dromara.system
|
||||
- group: 8.app会员模块
|
||||
packages-to-scan: org.dromara.app.customer
|
||||
- group: 9.app商户模块
|
||||
packages-to-scan: org.dromara.app.merchant
|
||||
legacy-mode: true
|
||||
knife4j:
|
||||
enable: true
|
||||
- group: 4.代码生成模块
|
||||
packages-to-scan: org.dromara.generator
|
||||
- group: 5.工作流模块
|
||||
packages-to-scan: org.dromara.workflow
|
||||
|
||||
# 防止XSS攻击
|
||||
xss:
|
||||
# 过滤开关
|
||||
@ -319,8 +219,6 @@ xss:
|
||||
# 排除链接(多个用逗号分隔)
|
||||
excludeUrls:
|
||||
- /system/notice
|
||||
- /pms/product/add
|
||||
- /pms/product/update
|
||||
|
||||
# 全局线程池相关配置
|
||||
# 如使用JDK21请直接使用虚拟线程 不要开启此配置
|
||||
@ -381,24 +279,3 @@ warm-flow:
|
||||
- 255,205,23
|
||||
## 已办理
|
||||
- 157,255,0
|
||||
# 腾讯云配置
|
||||
tencent:
|
||||
cloud:
|
||||
secret-id: "AKIDvhEVWHm0xe5JGxOZXGitnRovlKcfRzIN"
|
||||
secret-key: "qPhiTxA7oENFrCH5dvxiCQN4UdWAYgYA"
|
||||
region: ap-guangzhou # 默认广州地区
|
||||
vod:
|
||||
app-id: 1323742234 # 点播应用ID
|
||||
|
||||
|
||||
|
||||
|
||||
http:
|
||||
client:
|
||||
connect-timeout: 10s
|
||||
read-timeout: 30s
|
||||
|
||||
vlog:
|
||||
storage-path: /data/vlogdata/
|
||||
prefix: vlog_
|
||||
suffix: .mp4
|
||||
|
Binary file not shown.
@ -1,25 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEKzCCAxOgAwIBAgIUa6aB2bIZA01veFH1fWG+kxerSP0wDQYJKoZIhvcNAQEL
|
||||
BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT
|
||||
FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg
|
||||
Q0EwHhcNMjMxMTA2MDkwODIwWhcNMjgxMTA0MDkwODIwWjCBhDETMBEGA1UEAwwK
|
||||
MTY1ODY2NTcxMDEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMTAwLgYDVQQL
|
||||
DCfml6Dnu4jooZfvvIjlpKnmtKXvvInnp5HmioDmnInpmZDlhazlj7gxCzAJBgNV
|
||||
BAYMAkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcNAQEBBQADggEP
|
||||
ADCCAQoCggEBAPIJ7lvlud4KUXNjQb044xtoBWuF516f8h2mPrtIMkrKb4R9gKbE
|
||||
OaRFbeGOL5FAcRS0jWYtEoWgRrQ1EVim0Lhlqq5OAAiKtgTphW0ZSiK4dauhzFMI
|
||||
WByO/KalzzwKWFT0iFHP4UqiWZL1g9Dw9BUiJM3EnutQ7gP9d2wAm8h4Ltoo4Mfm
|
||||
RA5IqQzlItXrNMEr/iHpAsPEWuQOviVuut2xJHhm7blgWqg0IwtdljvSYGXE77Hv
|
||||
Cjr1RCVxTC8xtmKc8X5kaKEXH1d9fFH8sovyTF5pOiYZEkhOybtJE626etHbrVhk
|
||||
Nl0YDS1o9ypNrcYIQe/Um9JuCqxOl6H/Uh0CAwEAAaOBuTCBtjAJBgNVHRMEAjAA
|
||||
MAsGA1UdDwQEAwID+DCBmwYDVR0fBIGTMIGQMIGNoIGKoIGHhoGEaHR0cDovL2V2
|
||||
Y2EuaXRydXMuY29tLmNuL3B1YmxpYy9pdHJ1c2NybD9DQT0xQkQ0MjIwRTUwREJD
|
||||
MDRCMDZBRDM5NzU0OTg0NkMwMUMzRThFQkQyJnNnPUhBQ0M0NzFCNjU0MjJFMTJC
|
||||
MjdBOUQzM0E4N0FEMUNERjU5MjZFMTQwMzcxMA0GCSqGSIb3DQEBCwUAA4IBAQCv
|
||||
bdw6QwSePVI64eTddCW8pY9Dbi66IjUcqgvjwDzHIUQCMx0NHBGJRCmN0f/f5xpM
|
||||
nVg4I7RAkQ7WgFM78+MYUFJ5II368El8vTnhzRQ3Fv27v22G1EE/RAl7cQF9VB0X
|
||||
j1gaB09pPqfMD40Mg522CNh7NNVqCPr3mlTAj2PMalCT7VhDDqUxmqm9RtBd9ARN
|
||||
FMqx+FrUuFR5Y0N5o0OVcMbGcl8/krLqeUSZwy1Y42+KbViEqRxjTTOJEw/0B6TS
|
||||
6nUIBddt24ucWnOmlkhfs8Xf4YbLSP52H9EfSOgZ4vZ2OZ0kBngbZzZgLSFM2LNk
|
||||
UEBJbv+ElQBvKr2GP+EC
|
||||
-----END CERTIFICATE-----
|
@ -1,28 +0,0 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDyCe5b5bneClFz
|
||||
Y0G9OOMbaAVrheden/Idpj67SDJKym+EfYCmxDmkRW3hji+RQHEUtI1mLRKFoEa0
|
||||
NRFYptC4ZaquTgAIirYE6YVtGUoiuHWrocxTCFgcjvympc88ClhU9IhRz+FKolmS
|
||||
9YPQ8PQVIiTNxJ7rUO4D/XdsAJvIeC7aKODH5kQOSKkM5SLV6zTBK/4h6QLDxFrk
|
||||
Dr4lbrrdsSR4Zu25YFqoNCMLXZY70mBlxO+x7wo69UQlcUwvMbZinPF+ZGihFx9X
|
||||
fXxR/LKL8kxeaTomGRJITsm7SROtunrR261YZDZdGA0taPcqTa3GCEHv1JvSbgqs
|
||||
Tpeh/1IdAgMBAAECggEBAOqp3kOS8yXn8xhgf3gqE2aa78ZTyQLhKCi+6ctCMCB7
|
||||
LKvT0kvdq9Usy2AILu4xAHIGq6EIyhBsWKCXYv4EnhBp4ZWlYjrl4ZvZnNct0cbf
|
||||
+JYzBJrsWCE4MJSR5d5cWU/k1dYcKl3mEdp91xNYyg1DUVN+8mVLzbhoosQ/wsoU
|
||||
eQUOld/ldLJeXHNv+yy3ow8osMvka0grDXQG4X6VFBDVQeBDt3+kheLkCD1caTQ3
|
||||
JRaABO9WBnir7wsTwaDQLgoPdxzhxSvi9NjKHkM+Vph+NujMIUt57i3xVlcfj+dG
|
||||
op+6rwcBP6F/8SQasU8Nbvjt5omc05/U6a8DesgkboECgYEA+zLWFhfwCZFZJGgs
|
||||
8iLFbiYsQL2Wew4wN854atN5qUeew+tYz91LPDX/VWcH9xI5iXmP+tU7x0hASFhM
|
||||
N0z0VqRWoKBANnAeQ6+0QRHIqJUujC7YEgv35ZdiwEBZ4K5A+gaW444SO/O8j4pL
|
||||
ou8vnYjh48T1YQ88VCoki2k3oukCgYEA9qpGMYdSBZi5Hafw4A2oq2QDRPS3IONO
|
||||
VTVRZFUjS1qRGeSfRdydPkLZp9g9rewMnEVCLHr+f8Ij6PdGxuWd5XaiPGIUAeru
|
||||
ozwi750bzzXWuLIoUJIM9WoQCeW58Lfcm5nqsIvOSPs1F5uOkbzvfyN1LSlDUesU
|
||||
Jn9nXHrsLRUCgYAjuBPXKmo4ghGB6spRV/5o7kamog7OyrKyjMp0rkODfaqmw0Vq
|
||||
sVXsZuU62J66VD4YPU/q4/1PFggGAYA88NVhqJak2oSm+QRkrYxdIFE/H49x4YtZ
|
||||
7Ze/bupc2gmtuDmHE/7Ktr4DBmKOqqScs5Q6u2cbgzs9JPR4J1Hw/PIrWQKBgEmq
|
||||
CFR6STCKr53/rZv7+EdXEvLg8l/MAnTH+4qvMl8qqPLGqBpBDGSvqjjKB4GNYSa6
|
||||
OEz4XlDhNcA5ONXldQY2K7VExRzdgG8XYoeUr91uArYd3pRRSbVw+2E5ThJplmSR
|
||||
ztjyp6R8ARsPxcAYYJ3jhPb7v7MTNW1Z1xBzVV0RAoGBAOyuU/VZh/8m3qW4DyHU
|
||||
FQWsBaTCy++XY2BZBItcrOqtMbUuDV70Uv01DIz0Lye/ne/IEUsHEEKuUJxhAHyV
|
||||
Ozm4GeWNA9PylIgisR57McnoFbpdHhkQ7HEtGL9j0C7MmupFSuRuVy8Fi5cdJYZa
|
||||
C0KwAgwpfhp35P+XWf+v4TRH
|
||||
-----END PRIVATE KEY-----
|
@ -1,3 +0,0 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDLgDEh0hsPTmHLdEYp6LCo3LMnXMLCV+wUxRn5lvcAa7gn8RZyLDGiT5WdR0SpJDbBhWL1WbnUd7dJulzjbb0N5NzrO3HntjzKIpzhfChw3BBtM3PR8xvS17Wt4vRN6JvY4w0sphKesxbHWiMHUTOzKrQBEdXasMujmxV0N9R2GzTLK0Pn4ROWCzeQQhiJ2oOc3Eqkus9/C+3LcxkU08nF/q0X/kzHGS+Gn+JL/Eo6vpQExg7rQs0mnrKvNuPPGKpyKNpRmKWtiA8GTBeFnwZlP8kYj9Z8NYxLsT6fJnqpZ8wZ++T2PS7CIIo6JSIKz0ElNrRRD2Ei7lyCZAjUBQLLAgMBAAECggEBAIRjGhOBhx8XA+IC+55KBZtlMJub6gvafPgqHbLUtk2sxjodylduTr/j/FY8RfuvVnvhFba9r3n8g93QApvmCUafq+TQYFK4qKVrjRnX1stNLtaL0X41JNWuhT/hVMPWXoTjeO+h/p0Frvzzs7QP7I1Ta5UCkFhcCa6etn9Lzskh0uXe4ylMmt5lAuvFAeIuE5icMxu4n75RXUVxaBSOKjQ0ujQWMh46ncrX0f9oGkDbWE37LF61sf2iuXpPwnIAwk/e/zOpnCi9EHOJtCJbVr+ncDRvlZsEf5hVnxYgT2bQrUrSD9An5e4zgJF6rigsDhmNfvp0W/bJnXPIIg1MYbECgYEA5MlizB9XmttiaAo9sMjAUE18cxgEq2pIU8l8WOj//XAsf64AlrlWJxpJdNYkfdRiinnRIxroo1cYx3RMWqdGbYVk+7DJBNut6R0bg0oGgJoeBFnCe/xNGsBk7MZwc4//5sfRC2rbtuYFPn8VkNB5HllhddD51L6lObAp4Uf14/MCgYEA47TX4AmgcAjhVCUvC4ZUuiqAku/suw0vkG6FNxuSYY5GezPvwWx0JviaohaIm5JkgjNNASFhx12XG+PZoPDNGi9vzotVkI69LnOdlf3imVaJR7u5H8730Thbdd5oKi66KYXJGv3hppwh7qAu8VkdMavvCT24jILNiGiA0OBOE8kCgYA5JoFSgiXNHi5X1O8SISPBK4oB6icIdtU4cOVqBFImCgZjoqCtBgEaZXuh/vhAonQ3KTTv8wHYA6LB+DA2mQCDzUWrhb7BQusPh2DfC/fR2i3TYmStuhm8rADKEMv4YilHifSTSI84Af+fW/mUIi+PQD6TQq+V0EXPwkzD5MjstwKBgQDZZ5SlBwvza8cXe9kK+9pxVJslr4UqolBDagIut1hvZFPO1auX1WCgxMN+9ly/jGoCFdDzv1eH7ceUjVr/2mk5EwmA/m9XcbEWZLSUvK5ZENJJduYthIH/c/t+8jYp8Cs18dIsvzFuzatoFfA75oWFI086V3+YSFrMXlp/E2n4YQKBgQCKiynvzcRA8GoK6ibGhwUc5lpVUOVqpIdmVG5bXbnKYoU7Jkf2pOUwzLQGKOj9KS1Z80jkZA9p22BLKD/VXF0PvGBhx1Ujpil1vd96I/KcGRsmCu3b3AxK7qzDt6Y0nVk5bN72RYq4F/iRU+ijoIAuLsyrn/e0eaJweiqzr/gK4g==
|
||||
-----END PRIVATE KEY-----
|
@ -1 +0,0 @@
|
||||
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy4AxIdIbD05hy3RGKeiwqNyzJ1zCwlfsFMUZ+Zb3AGu4J/EWciwxok+VnUdEqSQ2wYVi9Vm51He3Sbpc4229DeTc6ztx57Y8yiKc4XwocNwQbTNz0fMb0te1reL0Teib2OMNLKYSnrMWx1ojB1Ezsyq0ARHV2rDLo5sVdDfUdhs0yytD5+ETlgs3kEIYidqDnNxKpLrPfwvty3MZFNPJxf6tF/5Mxxkvhp/iS/xKOr6UBMYO60LNJp6yrzbjzxiqcijaUZilrYgPBkwXhZ8GZT/JGI/WfDWMS7E+nyZ6qWfMGfvk9j0uwiCKOiUiCs9BJTa0UQ9hIu5cgmQI1AUCywIDAQAB
|
@ -16,17 +16,11 @@
|
||||
<!-- 控制台输出 -->
|
||||
<appender name="file_console" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${log.path}/sys-console.log</file>
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<!-- 日志文件名格式 -->
|
||||
<fileNamePattern>${log.path}/sys-console.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
|
||||
<fileNamePattern>${log.path}/sys-console.%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||
<!-- 日志最大 1天 -->
|
||||
<maxHistory>7</maxHistory>
|
||||
<!-- 日志文件最大大小 -->
|
||||
<maxFileSize>10MB</maxFileSize>
|
||||
<!-- 启动时清理历史日志 -->
|
||||
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
||||
<!-- 总日志文件大小限制 -->
|
||||
<totalSizeCap>1GB</totalSizeCap>
|
||||
<maxHistory>1</maxHistory>
|
||||
</rollingPolicy>
|
||||
<encoder>
|
||||
<pattern>${log.pattern}</pattern>
|
||||
@ -34,25 +28,19 @@
|
||||
</encoder>
|
||||
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||
<!-- 过滤的级别 -->
|
||||
<level>debug</level>
|
||||
<level>INFO</level>
|
||||
</filter>
|
||||
</appender>
|
||||
|
||||
<!-- 系统日志输出 -->
|
||||
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${log.path}/sys-info.log</file>
|
||||
<!-- 循环政策:基于时间和大小创建日志文件 -->
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||
<!-- 循环政策:基于时间创建日志文件 -->
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<!-- 日志文件名格式 -->
|
||||
<fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
|
||||
<fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||
<!-- 日志最大的历史 60天 -->
|
||||
<maxHistory>60</maxHistory>
|
||||
<!-- 日志文件最大大小 -->
|
||||
<maxFileSize>10MB</maxFileSize>
|
||||
<!-- 启动时清理历史日志 -->
|
||||
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
||||
<!-- 总日志文件大小限制 -->
|
||||
<totalSizeCap>5GB</totalSizeCap>
|
||||
</rollingPolicy>
|
||||
<encoder>
|
||||
<pattern>${log.pattern}</pattern>
|
||||
@ -69,18 +57,12 @@
|
||||
|
||||
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${log.path}/sys-error.log</file>
|
||||
<!-- 循环政策:基于时间和大小创建日志文件 -->
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||
<!-- 循环政策:基于时间创建日志文件 -->
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<!-- 日志文件名格式 -->
|
||||
<fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
|
||||
<fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||
<!-- 日志最大的历史 60天 -->
|
||||
<maxHistory>60</maxHistory>
|
||||
<!-- 日志文件最大大小 -->
|
||||
<maxFileSize>10MB</maxFileSize>
|
||||
<!-- 启动时清理历史日志 -->
|
||||
<cleanHistoryOnStart>true</cleanHistoryOnStart>
|
||||
<!-- 总日志文件大小限制 -->
|
||||
<totalSizeCap>5GB</totalSizeCap>
|
||||
</rollingPolicy>
|
||||
<encoder>
|
||||
<pattern>${log.pattern}</pattern>
|
||||
@ -136,7 +118,7 @@
|
||||
<!-- </appender>-->
|
||||
|
||||
<!--系统操作日志-->
|
||||
<root level="debug">
|
||||
<root level="info">
|
||||
<appender-ref ref="console" />
|
||||
<appender-ref ref="async_info" />
|
||||
<appender-ref ref="async_error" />
|
||||
|
@ -34,8 +34,6 @@
|
||||
<module>ruoyi-common-tenant</module>
|
||||
<module>ruoyi-common-websocket</module>
|
||||
<module>ruoyi-common-sse</module>
|
||||
<module>ruoyi-common-mongo</module>
|
||||
<module>ruoyi-common-mq</module>
|
||||
</modules>
|
||||
|
||||
<artifactId>ruoyi-common</artifactId>
|
||||
|
@ -88,24 +88,11 @@
|
||||
<artifactId>mapstruct-plus-spring-boot-starter</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- 离线IP地址定位库 -->
|
||||
<dependency>
|
||||
<groupId>org.lionsoul</groupId>
|
||||
<artifactId>ip2region</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.security</groupId>
|
||||
<artifactId>spring-security-crypto</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.security</groupId>
|
||||
<artifactId>spring-security-core</artifactId>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
|
@ -1,124 +0,0 @@
|
||||
package org.dromara.common.core.config;
|
||||
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* 读取项目相关配置
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
@Component
|
||||
@ConfigurationProperties(prefix = "ruoyi")
|
||||
public class RuoYiConfig
|
||||
{
|
||||
/** 项目名称 */
|
||||
private String name;
|
||||
|
||||
/** 版本 */
|
||||
private String version;
|
||||
|
||||
/** 版权年份 */
|
||||
private String copyrightYear;
|
||||
|
||||
/** 实例演示开关 */
|
||||
private boolean demoEnabled;
|
||||
|
||||
/** 上传路径 */
|
||||
private static String profile;
|
||||
|
||||
/** 获取地址开关 */
|
||||
private static boolean addressEnabled;
|
||||
|
||||
public String getName()
|
||||
{
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name)
|
||||
{
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getVersion()
|
||||
{
|
||||
return version;
|
||||
}
|
||||
|
||||
public void setVersion(String version)
|
||||
{
|
||||
this.version = version;
|
||||
}
|
||||
|
||||
public String getCopyrightYear()
|
||||
{
|
||||
return copyrightYear;
|
||||
}
|
||||
|
||||
public void setCopyrightYear(String copyrightYear)
|
||||
{
|
||||
this.copyrightYear = copyrightYear;
|
||||
}
|
||||
|
||||
public boolean isDemoEnabled()
|
||||
{
|
||||
return demoEnabled;
|
||||
}
|
||||
|
||||
public void setDemoEnabled(boolean demoEnabled)
|
||||
{
|
||||
this.demoEnabled = demoEnabled;
|
||||
}
|
||||
|
||||
public static String getProfile()
|
||||
{
|
||||
return profile;
|
||||
}
|
||||
|
||||
public void setProfile(String profile)
|
||||
{
|
||||
RuoYiConfig.profile = profile;
|
||||
}
|
||||
|
||||
public static boolean isAddressEnabled()
|
||||
{
|
||||
return addressEnabled;
|
||||
}
|
||||
|
||||
public void setAddressEnabled(boolean addressEnabled)
|
||||
{
|
||||
RuoYiConfig.addressEnabled = addressEnabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取导入上传路径
|
||||
*/
|
||||
public static String getImportPath()
|
||||
{
|
||||
return getProfile() + "/import";
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取头像上传路径
|
||||
*/
|
||||
public static String getAvatarPath()
|
||||
{
|
||||
return getProfile() + "/avatar";
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取下载路径
|
||||
*/
|
||||
public static String getDownloadPath()
|
||||
{
|
||||
return getProfile() + "/download/";
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取上传路径
|
||||
*/
|
||||
public static String getUploadPath()
|
||||
{
|
||||
return getProfile() + "/upload";
|
||||
}
|
||||
}
|
@ -1,48 +0,0 @@
|
||||
package org.dromara.common.core.constant;
|
||||
|
||||
|
||||
public class BaseInfoProperties {
|
||||
|
||||
|
||||
public static final Integer COMMON_START_PAGE = 1;
|
||||
public static final Integer COMMON_START_PAGE_ZERO = 0;
|
||||
public static final Integer COMMON_PAGE_SIZE = 10;
|
||||
|
||||
public static final String MOBILE_SMSCODE = "mobile:smscode";
|
||||
public static final String REDIS_USER_TOKEN = "redis_user_token";
|
||||
public static final String REDIS_USER_INFO = "redis_user_info";
|
||||
|
||||
// 短视频的评论总数
|
||||
public static final String REDIS_VLOG_COMMENT_COUNTS = "redis_vlog_comment_counts";
|
||||
// 短视频的评论喜欢数量
|
||||
public static final String REDIS_VLOG_COMMENT_LIKED_COUNTS = "redis_vlog_comment_liked_counts";
|
||||
// 用户点赞评论
|
||||
public static final String REDIS_USER_LIKE_COMMENT = "redis_user_like_comment";
|
||||
|
||||
|
||||
//我的关注总数
|
||||
public static final String REDIS_MY_FOLLOWS_COUNTS = "redis_my_follows_counts";
|
||||
// 我的粉丝总数
|
||||
public static final String REDIS_MY_FANS_COUNTS = "redis_my_fans_counts";
|
||||
|
||||
// 视频和发布者获赞数
|
||||
public static final String REDIS_VLOG_BE_LIKED_COUNTS = "redis_vlog_be_liked_counts";
|
||||
public static final String REDIS_VLOGER_BE_LIKED_COUNTS = "redis_vloger_be_liked_counts";
|
||||
|
||||
// 博主和粉丝的关联关系,用于判断他们是否互粉
|
||||
public static final String REDIS_FANS_AND_VLOGGER_RELATIONSHIP = "redis_fans_and_vlogger_relationship";
|
||||
// 拉黑
|
||||
public static final String REDIS_USER_BLOCK = "redis_user_block";
|
||||
// 举报视频
|
||||
public static final String REDIS_VIDEO_BLOCK = "redis_video_block";
|
||||
|
||||
//已读视频
|
||||
public static final String REDIS_USER_READ_VLOG = "redis_user_read_vlog";
|
||||
// 已读评论
|
||||
public static final String REDIS_USER_READ_COMMENT = "redis_user_read_comment";
|
||||
|
||||
// 用户是否喜欢/点赞视频,取代数据库的关联关系,1:喜欢,0:不喜欢(默认) redis_user_like_vlog:{userId}:{vlogId}
|
||||
public static final String REDIS_USER_LIKE_VLOG = "redis_user_like_vlog";
|
||||
|
||||
|
||||
}
|
@ -27,36 +27,4 @@ public interface CacheConstants {
|
||||
*/
|
||||
String PWD_ERR_CNT_KEY = "pwd_err_cnt:";
|
||||
|
||||
/**
|
||||
* 用户
|
||||
*/
|
||||
String MEMBER ="MEMBER:";
|
||||
|
||||
/**
|
||||
* 粉丝
|
||||
*/
|
||||
String MEMBER_FANS="MEMBER_FANS:";
|
||||
|
||||
/**
|
||||
* 关注
|
||||
*/
|
||||
String MEMBER_FOLLOW="MEMBER_FOLLOW:";
|
||||
|
||||
|
||||
String BLACK_LIST="BLACK_LIST:";
|
||||
|
||||
|
||||
String GROUP="GROUP:";
|
||||
|
||||
String GROUP_MEMBER="GROUP_MEMBER:";
|
||||
|
||||
String VLOG="VLOG:";
|
||||
|
||||
String COMMENT="COMMENT:";
|
||||
|
||||
String CHAT="CHAT:";
|
||||
|
||||
|
||||
String IM_MSG_RECEIVE="im:msg:receive:";
|
||||
|
||||
}
|
||||
|
@ -81,14 +81,8 @@ public interface CacheNames {
|
||||
String SYS_OSS_CONFIG = GlobalConstants.GLOBAL_REDIS_KEY + "sys_oss_config";
|
||||
|
||||
/**
|
||||
* 延时队列:订单未支付取消
|
||||
* 在线用户
|
||||
*/
|
||||
String DELAY_ORDER_UNPAY = GlobalConstants.GLOBAL_REDIS_KEY + "order_unpay";
|
||||
|
||||
|
||||
/**
|
||||
* 延时队列:订单支付未核销
|
||||
*/
|
||||
String DELAY_ORDER_TO_BE_USED = GlobalConstants.GLOBAL_REDIS_KEY + "order_tobe_used";
|
||||
String ONLINE_TOKEN = "online_tokens";
|
||||
|
||||
}
|
||||
|
@ -1,551 +0,0 @@
|
||||
package org.dromara.common.core.constant;
|
||||
|
||||
|
||||
/**
|
||||
* 缓存前缀
|
||||
*
|
||||
* @author pikachu
|
||||
* @version 4.1
|
||||
* @since 1.0
|
||||
* 2018/3/19
|
||||
*/
|
||||
public enum CachePrefix {
|
||||
|
||||
|
||||
/**
|
||||
* nonce
|
||||
*/
|
||||
NONCE,
|
||||
|
||||
/**
|
||||
* 在线人数
|
||||
*/
|
||||
ONLINE_NUM,
|
||||
|
||||
|
||||
/**
|
||||
* 会员分布数据
|
||||
*/
|
||||
MEMBER_DISTRIBUTION,
|
||||
|
||||
/**
|
||||
* 在线会员统计
|
||||
*/
|
||||
ONLINE_MEMBER,
|
||||
|
||||
/**
|
||||
* token 信息
|
||||
*/
|
||||
ACCESS_TOKEN,
|
||||
/**
|
||||
* token 信息
|
||||
*/
|
||||
REFRESH_TOKEN,
|
||||
/**
|
||||
* 联合登录响应
|
||||
*/
|
||||
CONNECT_RESULT,
|
||||
/**
|
||||
* 微信联合登陆 session key
|
||||
*/
|
||||
SESSION_KEY,
|
||||
/**
|
||||
* 权限
|
||||
*/
|
||||
PERMISSION_LIST,
|
||||
/**
|
||||
* 部门id列表
|
||||
*/
|
||||
DEPARTMENT_IDS,
|
||||
|
||||
/**
|
||||
* 用户错误登录限制
|
||||
*/
|
||||
LOGIN_TIME_LIMIT,
|
||||
/**
|
||||
* 系统设置
|
||||
*/
|
||||
SETTING,
|
||||
|
||||
/**
|
||||
* 验证码滑块源
|
||||
*/
|
||||
VERIFICATION,
|
||||
|
||||
/**
|
||||
* 验证码滑块源
|
||||
*/
|
||||
VERIFICATION_IMAGE,
|
||||
|
||||
/**
|
||||
* 快递平台
|
||||
*/
|
||||
EXPRESS,
|
||||
|
||||
/**
|
||||
* 图片验证码
|
||||
*/
|
||||
CAPTCHA,
|
||||
|
||||
/**
|
||||
* 商品
|
||||
*/
|
||||
GOODS,
|
||||
|
||||
/**
|
||||
* 商品SKU
|
||||
*/
|
||||
GOODS_SKU,
|
||||
|
||||
/**
|
||||
* 运费模板脚本
|
||||
*/
|
||||
SHIP_SCRIPT,
|
||||
|
||||
/**
|
||||
* 商品sku
|
||||
*/
|
||||
SKU,
|
||||
|
||||
/**
|
||||
* sku库存
|
||||
*/
|
||||
SKU_STOCK,
|
||||
|
||||
/**
|
||||
* 促销商品sku库存
|
||||
*/
|
||||
PROMOTION_GOODS_STOCK,
|
||||
|
||||
/**
|
||||
* 商品库存
|
||||
*/
|
||||
GOODS_STOCK,
|
||||
|
||||
/**
|
||||
* 商品分类 树状结构
|
||||
*/
|
||||
CATEGORY,
|
||||
/**
|
||||
* 商品分类 集合
|
||||
*/
|
||||
CATEGORY_ARRAY,
|
||||
/**
|
||||
* 浏览次数
|
||||
*/
|
||||
VISIT_COUNT,
|
||||
/**
|
||||
* 存储方案
|
||||
*/
|
||||
UPLOADER,
|
||||
/**
|
||||
* 地区
|
||||
*/
|
||||
REGION,
|
||||
|
||||
/**
|
||||
* 短信网关
|
||||
*/
|
||||
SPlATFORM,
|
||||
/**
|
||||
* 短信验证码前缀
|
||||
*/
|
||||
_CODE_PREFIX,
|
||||
/**
|
||||
* smtp
|
||||
*/
|
||||
SMTP,
|
||||
/**
|
||||
* 系统设置
|
||||
*/
|
||||
SETTINGS,
|
||||
/**
|
||||
* 电子面单
|
||||
*/
|
||||
WAYBILL,
|
||||
/**
|
||||
* 短信验证码
|
||||
*/
|
||||
SMS_CODE,
|
||||
/**
|
||||
* 邮箱验证码
|
||||
*/
|
||||
EMAIL_CODE,
|
||||
/**
|
||||
* 管理员角色权限对照表
|
||||
*/
|
||||
ADMIN_URL_ROLE,
|
||||
|
||||
/**
|
||||
* 店铺管理员角色权限对照表
|
||||
*/
|
||||
STORE_URL_ROLE,
|
||||
|
||||
/**
|
||||
* 手机验证标识
|
||||
*/
|
||||
MOBILE_VALIDATE,
|
||||
|
||||
/**
|
||||
* 邮箱验证标识
|
||||
*/
|
||||
EMAIL_VALIDATE,
|
||||
|
||||
/**
|
||||
* 店铺运费模版列表
|
||||
*/
|
||||
SHIP_TEMPLATE,
|
||||
|
||||
/**
|
||||
* 店铺中某个运费模版
|
||||
*/
|
||||
SHIP_TEMPLATE_ONE,
|
||||
|
||||
//================促销=================
|
||||
/**
|
||||
* 促销活动
|
||||
*/
|
||||
PROMOTION,
|
||||
/**
|
||||
* 促销活动
|
||||
*/
|
||||
PROMOTION_GOODS,
|
||||
|
||||
/*** 单品立减 */
|
||||
STORE_ID_MINUS,
|
||||
|
||||
/*** 第二件半价 */
|
||||
STORE_ID_HALF_PRICE,
|
||||
|
||||
/*** 满优惠 */
|
||||
STORE_ID_FULL_DISCOUNT,
|
||||
|
||||
/**
|
||||
* 秒杀活动活动缓存key前缀
|
||||
*/
|
||||
STORE_ID_SECKILL,
|
||||
|
||||
/**
|
||||
* 团购活动缓存key前缀
|
||||
*/
|
||||
STORE_ID_GROUP_BUY,
|
||||
|
||||
/**
|
||||
* 积分商品缓存key前缀
|
||||
*/
|
||||
STORE_ID_EXCHANGE,
|
||||
|
||||
|
||||
//================交易=================
|
||||
|
||||
/**
|
||||
* 购物车原始数据
|
||||
*/
|
||||
CART_ORIGIN_DATA_PREFIX,
|
||||
|
||||
/**
|
||||
* 立即购买原始数据
|
||||
*/
|
||||
BUY_NOW_ORIGIN_DATA_PREFIX,
|
||||
|
||||
/**
|
||||
* 交易原始数据
|
||||
*/
|
||||
TRADE_ORIGIN_DATA_PREFIX,
|
||||
|
||||
/**
|
||||
* 立即购买sku
|
||||
*/
|
||||
CART_SKU_PREFIX,
|
||||
|
||||
/**
|
||||
* 购物车视图
|
||||
*/
|
||||
CART_MEMBER_ID_PREFIX,
|
||||
|
||||
/**
|
||||
* 购物车,用户选择的促销信息
|
||||
*/
|
||||
CART_PROMOTION_PREFIX,
|
||||
|
||||
|
||||
/**
|
||||
* 交易_交易价格的前缀
|
||||
*/
|
||||
PRICE_SESSION_ID_PREFIX,
|
||||
|
||||
/**
|
||||
* 交易_交易单
|
||||
*/
|
||||
TRADE_SESSION_ID_PREFIX,
|
||||
|
||||
|
||||
/**
|
||||
* 结算参数
|
||||
*/
|
||||
CHECKOUT_PARAM_ID_PREFIX,
|
||||
|
||||
/**
|
||||
* 交易单号前缀
|
||||
*/
|
||||
TRADE_SN_CACHE_PREFIX,
|
||||
|
||||
/**
|
||||
* 订单编号前缀
|
||||
*/
|
||||
ORDER_SN_CACHE_PREFIX,
|
||||
/**
|
||||
* 订单编号标记
|
||||
*/
|
||||
ORDER_SN_SIGN_CACHE_PREFIX,
|
||||
/**
|
||||
* 订单编号前缀
|
||||
*/
|
||||
PAY_LOG_SN_CACHE_PREFIX,
|
||||
|
||||
/**
|
||||
* 合同编号
|
||||
*/
|
||||
CONTRACT_SN_CACHE_PREFIX,
|
||||
|
||||
|
||||
/**
|
||||
* 零钱
|
||||
*/
|
||||
SMALL_CHANGE_CACHE_PREFIX,
|
||||
|
||||
/**
|
||||
* 售后服务单号前缀
|
||||
*/
|
||||
AFTER_SALE_SERVICE_PREFIX,
|
||||
|
||||
/**
|
||||
* 交易
|
||||
*/
|
||||
TRADE,
|
||||
|
||||
/**
|
||||
* 站点导航栏
|
||||
*/
|
||||
SITE_NAVIGATION,
|
||||
|
||||
/**
|
||||
* 支付参数
|
||||
*/
|
||||
PAYMENT_CONFIG,
|
||||
|
||||
/**
|
||||
* 流程控制
|
||||
*/
|
||||
FLOW,
|
||||
|
||||
/**
|
||||
* 热门搜索
|
||||
*/
|
||||
HOT_WORD,
|
||||
|
||||
/**
|
||||
* 会员积分
|
||||
*/
|
||||
MEMBER_POINT,
|
||||
|
||||
/**
|
||||
* 会员积分
|
||||
*/
|
||||
POINT_ORDER,
|
||||
|
||||
|
||||
/**
|
||||
* 微博登录
|
||||
*/
|
||||
WEIBO_STATE,
|
||||
/**
|
||||
* 微博登录
|
||||
*/
|
||||
QQ_STATE,
|
||||
/**
|
||||
* 微博登录
|
||||
*/
|
||||
GITHUB_STATE,
|
||||
/**
|
||||
* 验证码key
|
||||
*/
|
||||
VERIFICATION_KEY,
|
||||
/**
|
||||
* 验证码验证结果
|
||||
*/
|
||||
VERIFICATION_RESULT,
|
||||
/**
|
||||
* 微信CGItoken
|
||||
*/
|
||||
WECHAT_CGI_ACCESS_TOKEN,
|
||||
/**
|
||||
* 微信JSApitoken
|
||||
*/
|
||||
WECHAT_JS_API_TOKEN,
|
||||
/**
|
||||
* 微信会话信息
|
||||
*/
|
||||
WECHAT_SESSION_PARAMS,
|
||||
/**
|
||||
* 第三方用户权限
|
||||
*/
|
||||
ALIPAY_CONFIG,
|
||||
/**
|
||||
* 微信支付配置
|
||||
*/
|
||||
WECHAT_PAY_CONFIG,
|
||||
/**
|
||||
* 微信支付平台证书配置
|
||||
*/
|
||||
WECHAT_PLAT_FORM_CERT,
|
||||
/**
|
||||
* 第三方用户权限
|
||||
*/
|
||||
CONNECT_AUTH,
|
||||
/**
|
||||
* 平台PageView 统计
|
||||
*/
|
||||
PV,
|
||||
/**
|
||||
* 平台UserView 统计
|
||||
*/
|
||||
UV,
|
||||
/**
|
||||
* 平台 商品PV 统计
|
||||
*/
|
||||
GOODS_PV,
|
||||
/**
|
||||
* 平台 商品UV 统计
|
||||
*/
|
||||
GOODS_UV,
|
||||
/**
|
||||
* 店铺PageView 统计
|
||||
*/
|
||||
STORE_PV,
|
||||
/**
|
||||
* 店铺UserView 统计
|
||||
*/
|
||||
STORE_UV,
|
||||
/**
|
||||
* 店铺 商品PV 统计
|
||||
*/
|
||||
STORE_GOODS_PV,
|
||||
/**
|
||||
* 店铺 商品UV 统计
|
||||
*/
|
||||
STORE_GOODS_UV,
|
||||
/**
|
||||
* 分销员
|
||||
*/
|
||||
DISTRIBUTION,
|
||||
|
||||
/**
|
||||
* 找回手机
|
||||
*/
|
||||
FIND_MOBILE,
|
||||
/**
|
||||
* 文章分类
|
||||
*/
|
||||
ARTICLE_CATEGORY,
|
||||
/**
|
||||
* 文章
|
||||
*/
|
||||
ARTICLE_CACHE,
|
||||
|
||||
/**
|
||||
* 初始化索引
|
||||
*/
|
||||
INIT_INDEX_PROCESS,
|
||||
|
||||
/**
|
||||
* 初始化索引标示
|
||||
*/
|
||||
INIT_INDEX_FLAG,
|
||||
|
||||
/**
|
||||
* 店铺分类
|
||||
*/
|
||||
STORE_CATEGORY,
|
||||
/**
|
||||
* 用户菜单
|
||||
*/
|
||||
MENU_USER_ID,
|
||||
/**
|
||||
* 用户菜单
|
||||
*/
|
||||
USER_MENU,
|
||||
/**
|
||||
* 订单暂时缓存
|
||||
*/
|
||||
ORDER,
|
||||
/**
|
||||
* 敏感词
|
||||
*/
|
||||
SENSITIVE,
|
||||
/**
|
||||
* 用户 UserSig 缓存前缀
|
||||
*/
|
||||
USER_SIG("user:sig:"),
|
||||
/**
|
||||
* 页面
|
||||
*/
|
||||
PAGE,
|
||||
/**
|
||||
* 文章缓存
|
||||
*/
|
||||
ARTICLE("ARTICLE:"),
|
||||
|
||||
/**
|
||||
* 会员足迹
|
||||
*/
|
||||
FOOTPRINT;
|
||||
|
||||
private String prefix;
|
||||
|
||||
CachePrefix(String prefix) {
|
||||
this.prefix = prefix;
|
||||
}
|
||||
|
||||
CachePrefix() {
|
||||
this.prefix = this.name() + "_";
|
||||
}
|
||||
|
||||
public String getPrefix1() {
|
||||
return prefix;
|
||||
}
|
||||
|
||||
public static String removePrefix(String str) {
|
||||
return str.substring(str.lastIndexOf("}_") + 2);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通用获取缓存key值
|
||||
*
|
||||
* @return 缓存key值
|
||||
*/
|
||||
public String getPrefix() {
|
||||
return "{" + this.name() + "}_";
|
||||
}
|
||||
|
||||
// /**
|
||||
// * 通用获取缓存key值
|
||||
// *
|
||||
// * @param typeEnum 促销枚举
|
||||
// * @return 缓存key值
|
||||
// */
|
||||
// public String getPrefix(PromotionTypeEnum typeEnum) {
|
||||
// return "{" + this.name() + "_" + typeEnum.name() + "}_";
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * 获取缓存key值 + 用户端
|
||||
// * 例如:三端都有用户体系,需要分别登录,如果用户名一致,则redis中的权限可能会冲突出错
|
||||
// *
|
||||
// * @param user 角色
|
||||
// * @return 缓存key值 + 用户端
|
||||
// */
|
||||
// public String getPrefix(UserEnums user) {
|
||||
// return "{" + this.name() + "_" + user.name() + "}_";
|
||||
// }
|
||||
}
|
@ -65,22 +65,12 @@ public interface Constants {
|
||||
/**
|
||||
* 验证码有效期(分钟)
|
||||
*/
|
||||
Integer CAPTCHA_EXPIRATION = 5;
|
||||
Integer CAPTCHA_EXPIRATION = 2;
|
||||
|
||||
/**
|
||||
* 顶级父级id
|
||||
*/
|
||||
Long TOP_PARENT_ID = 0L;
|
||||
|
||||
/**
|
||||
* 订单未支付自动取消时间(分钟)
|
||||
*/
|
||||
Long ORDER_CANCEL_TIME = 30L;
|
||||
|
||||
/**
|
||||
* 订单支付未核销自动退款时间(天)
|
||||
*/
|
||||
Long ORDER_REFUND_TIME = 14L;
|
||||
|
||||
}
|
||||
|
||||
|
@ -12,11 +12,6 @@ public interface GlobalConstants {
|
||||
*/
|
||||
String GLOBAL_REDIS_KEY = "global:";
|
||||
|
||||
/**
|
||||
* 全局字典 redis key
|
||||
*/
|
||||
String GLOBAL_DICT_KEY = GLOBAL_REDIS_KEY + "sys_dict";
|
||||
|
||||
/**
|
||||
* 验证码 redis key
|
||||
*/
|
||||
@ -36,62 +31,4 @@ public interface GlobalConstants {
|
||||
* 三方认证 redis key
|
||||
*/
|
||||
String SOCIAL_AUTH_CODE_KEY = GLOBAL_REDIS_KEY + "social_auth_codes:";
|
||||
|
||||
/**
|
||||
* 会员 redis key
|
||||
*/
|
||||
String MEMBER_KEY = GLOBAL_REDIS_KEY + "member:";
|
||||
|
||||
/**
|
||||
* 视频 redis key
|
||||
*/
|
||||
String VLOG_KEY = GLOBAL_REDIS_KEY + "vlog:";
|
||||
|
||||
/**
|
||||
* 会员视频 redis key
|
||||
*/
|
||||
String GLOBAL_OFFSET = GLOBAL_REDIS_KEY + "offset:";
|
||||
|
||||
|
||||
/**
|
||||
* 热点视频 redis key
|
||||
*/
|
||||
String HOT_VLOG_TAG = "HOT";
|
||||
/**
|
||||
* 我喜欢的视频 redis key
|
||||
*/
|
||||
String GLOBAL_VLOG_DOILIKE = "global:vlog:doilike:";
|
||||
String GLOBAL_VLOG_MY_LIKED_LIST= "global:vlog:myliked:list:";
|
||||
/**
|
||||
* 我喜欢的视频数量 redis key
|
||||
*/
|
||||
String GLOBAL_VLOG_MY_LIKED_COUNT = "global:vlog:myliked:count:";
|
||||
/**
|
||||
* 视频被喜欢的数量 redis key
|
||||
*/
|
||||
String GLOBAL_VLOG_LIKED_COUNT = "global:vlog:myvlogliked:count:";
|
||||
|
||||
String GLOBAL_VLOG_ALL_LIKED_COUNT="global:vlog:myallliked:count:";
|
||||
|
||||
|
||||
String GLOBAL_MEMBER_FANS_COUNT="global:member:myfans:count:";
|
||||
|
||||
/**
|
||||
* 我关注的视频数量 redis key
|
||||
*/
|
||||
String GLOBAL_MEMBER_FOLLOW_COUNT="global:member:myfollow:count:";
|
||||
|
||||
|
||||
/**
|
||||
* 我关注的视频数量 redis key
|
||||
*/
|
||||
String GLOBAL_MEMBER_FRIENDS_COUNT="global:member:myfriends:count:";
|
||||
|
||||
String GLOBAL_MEMBER_DOIFOLLOW="global:member:doifollow:";
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,661 +0,0 @@
|
||||
package org.dromara.common.core.constant;
|
||||
|
||||
/**
|
||||
* 返回状态码
|
||||
* 第一位 1:商品;2:用户;3:交易,4:促销,5:店铺,6:页面,7:设置,8:其他
|
||||
*
|
||||
* @author Chopper
|
||||
* @since 2020/4/8 1:36 下午
|
||||
*/
|
||||
public enum ResultCode {
|
||||
REGION_ALREADY_HAS_AGENT(100,"区域为空"),
|
||||
|
||||
/**
|
||||
* 成功状态码
|
||||
*/
|
||||
SUCCESS(200, "成功"),
|
||||
|
||||
/**
|
||||
* 失败返回码
|
||||
*/
|
||||
ERROR(400, "服务器繁忙,请稍后重试"),
|
||||
|
||||
/**
|
||||
* 失败返回码
|
||||
*/
|
||||
DEMO_SITE_EXCEPTION(4001, "演示站点禁止使用"),
|
||||
/**
|
||||
* 参数异常
|
||||
*/
|
||||
PARAMS_ERROR(4002, "参数异常"),
|
||||
|
||||
|
||||
/**
|
||||
* 系统异常
|
||||
*/
|
||||
WECHAT_CONNECT_NOT_EXIST(1001, "微信联合登录未配置"),
|
||||
VERIFICATION_EXIST(1002, "验证码服务异常"),
|
||||
LIMIT_ERROR(1003, "访问过于频繁,请稍后再试"),
|
||||
ILLEGAL_REQUEST_ERROR(1004, "非法请求,请重新刷新页面操作"),
|
||||
IMAGE_FILE_EXT_ERROR(1005, "不支持图片格式"),
|
||||
FILE_NOT_EXIST_ERROR(1011, "上传文件不能为空"),
|
||||
FILE_TYPE_NOT_SUPPORT(1010, "不支持上传的文件类型!"),
|
||||
PLATFORM_NOT_SUPPORTED_IM(1006, "平台未开启IM"),
|
||||
STORE_NOT_SUPPORTED_IM(1007, "店铺未开启IM"),
|
||||
UNINITIALIZED_PASSWORD(1008, "非初始化密码,无法进行初始化设置"),
|
||||
FILE_DIRECTORY_NOT_EMPTY(1012, "文件夹下有文件,请删除所有文件后删除文件夹!"),
|
||||
/**
|
||||
* 分类
|
||||
*/
|
||||
CATEGORY_NOT_EXIST(10001, "商品分类不存在"),
|
||||
CATEGORY_NAME_IS_EXIST(10002, "该分类名称已存在"),
|
||||
CATEGORY_PARENT_NOT_EXIST(10003, "该分类名称已存在"),
|
||||
CATEGORY_BEYOND_THREE(10004, "最多为三级分类,添加失败"),
|
||||
CATEGORY_HAS_CHILDREN(10005, "此类别下存在子类别不能删除"),
|
||||
CATEGORY_HAS_GOODS(10006, "此类别下存在商品不能删除"),
|
||||
CATEGORY_SAVE_ERROR(10007, "此类别下存在商品不能删除"),
|
||||
CATEGORY_PARAMETER_NOT_EXIST(10012, "分类绑定参数组不存在"),
|
||||
CATEGORY_PARAMETER_SAVE_ERROR(10008, "分类绑定参数组添加失败"),
|
||||
CATEGORY_PARAMETER_UPDATE_ERROR(10009, "分类绑定参数组添加失败"),
|
||||
CATEGORY_DELETE_FLAG_ERROR(10010, "子类状态不能与父类不一致!"),
|
||||
CATEGORY_COMMISSION_RATE_ERROR(10011, "分类的佣金不正确!"),
|
||||
|
||||
/**
|
||||
* 商品
|
||||
*/
|
||||
GOODS_ERROR(11001, "商品异常,请稍后重试"),
|
||||
GOODS_NOT_EXIST(11001, "商品已下架"),
|
||||
GOODS_NAME_ERROR(11002, "商品名称不正确,名称应为2-50字符"),
|
||||
GOODS_UNDER_ERROR(11003, "商品下架失败"),
|
||||
GOODS_UPPER_ERROR(11004, "商品上架失败"),
|
||||
GOODS_AUTH_ERROR(11005, "商品审核失败"),
|
||||
POINT_GOODS_ERROR(11006, "积分商品业务异常,请稍后重试"),
|
||||
POINT_GOODS_NOT_EXIST(11020, "积分商品不存在"),
|
||||
POINT_GOODS_CATEGORY_EXIST(11021, "当前积分商品分类已存在"),
|
||||
GOODS_SKU_SN_ERROR(11007, "商品SKU货号不能为空"),
|
||||
GOODS_SKU_PRICE_ERROR(11008, "商品SKU价格不能小于等于0"),
|
||||
GOODS_SKU_COST_ERROR(11009, "商品SKU成本价不能小于等于0"),
|
||||
GOODS_SKU_WEIGHT_ERROR(11010, "商品重量不能为负数"),
|
||||
GOODS_SKU_QUANTITY_ERROR(11011, "商品库存数量不能为负数"),
|
||||
GOODS_SKU_QUANTITY_NOT_ENOUGH(11011, "商品库存不足"),
|
||||
MUST_HAVE_GOODS_SKU(11012, "规格必须要有一个!"),
|
||||
MUST_HAVE_SALES_MODEL(11022, "销售模式为批发时必须要有批发规则!"),
|
||||
|
||||
HAVE_INVALID_SALES_MODEL(11023, "批发规则存在小于等于0的无效数据!"),
|
||||
MUST_HAVE_GOODS_SKU_VALUE(11024, "规格值不能为空!"),
|
||||
DO_NOT_MATCH_WHOLESALE(11025, "批发商品购买数量不能低于起拍量!"),
|
||||
GOODS_NOT_ERROR(11026, "商品不存在"),
|
||||
|
||||
GOODS_PARAMS_ERROR(11013, "商品参数错误,刷新后重试"),
|
||||
PHYSICAL_GOODS_NEED_TEMP(11014, "实物商品需选择配送模板"),
|
||||
VIRTUAL_GOODS_NOT_NEED_TEMP(11015, "虚拟商品无需选择配送模板"),
|
||||
GOODS_NOT_EXIST_STORE(11017, "当前用户无权操作此商品"),
|
||||
GOODS_TYPE_ERROR(11016, "需选择商品类型"),
|
||||
GOODS_STOCK_IMPORT_ERROR(11018, "导入商品库存失败,请检查表格数据"),
|
||||
|
||||
/**
|
||||
* 参数
|
||||
*/
|
||||
PARAMETER_SAVE_ERROR(12001, "参数添加失败"),
|
||||
PARAMETER_UPDATE_ERROR(12002, "参数编辑失败"),
|
||||
|
||||
/**
|
||||
* 规格
|
||||
*/
|
||||
SPEC_SAVE_ERROR(13001, "规格修改失败"),
|
||||
SPEC_UPDATE_ERROR(13002, "规格修改失败"),
|
||||
SPEC_DELETE_ERROR(13003, "分类已经绑定此规格,请先解除关联"),
|
||||
|
||||
/**
|
||||
* 品牌
|
||||
*/
|
||||
BRAND_SAVE_ERROR(14001, "品牌添加失败"),
|
||||
BRAND_UPDATE_ERROR(14002, "品牌修改失败"),
|
||||
BRAND_DISABLE_ERROR(14003, "品牌禁用失败"),
|
||||
BRAND_DELETE_ERROR(14004, "品牌删除失败"),
|
||||
BRAND_NAME_EXIST_ERROR(20002, "品牌名称重复!"),
|
||||
BRAND_USE_DISABLE_ERROR(20003, "分类已经绑定品牌,请先解除关联"),
|
||||
BRAND_BIND_GOODS_ERROR(20005, "品牌已经绑定商品,请先解除关联"),
|
||||
BRAND_NOT_EXIST(20004, "品牌不存在"),
|
||||
|
||||
/**
|
||||
* 用户
|
||||
*/
|
||||
USER_EDIT_SUCCESS(20001, "用户修改成功"),
|
||||
USER_NOT_EXIST(20002, "用户不存在"),
|
||||
USER_NOT_LOGIN(20003, "用户未登录"),
|
||||
USER_AUTH_EXPIRED(20004, "用户已退出,请重新登录"),
|
||||
// USER_AUTH_EXPIRE(408, "账号已被其他设备登录"),
|
||||
USER_AUTHORITY_ERROR(20005, "权限不足"),
|
||||
USER_CONNECT_LOGIN_ERROR(20006, "未找到登录信息"),
|
||||
USER_EXIST(20008, "该用户名或手机号已被注册"),
|
||||
USER_PHONE_NOT_EXIST(20009, "手机号不存在"),
|
||||
USER_PASSWORD_ERROR(20010, "密码不正确"),
|
||||
USER_NOT_PHONE(20011, "非当前用户的手机号"),
|
||||
USER_CONNECT_ERROR(20012, "联合第三方登录,授权信息错误"),
|
||||
USER_RECEIPT_REPEAT_ERROR(20013, "会员发票信息重复"),
|
||||
USER_RECEIPT_NOT_EXIST(20014, "会员发票信息不存在"),
|
||||
USER_EDIT_ERROR(20015, "用户修改失败"),
|
||||
USER_OLD_PASSWORD_ERROR(20016, "旧密码不正确"),
|
||||
USER_COLLECTION_EXIST(20017, "无法重复收藏"),
|
||||
USER_GRADE_IS_DEFAULT(20018, "会员等级为默认会员等级"),
|
||||
USER_NOT_BINDING(20020, "未绑定用户"),
|
||||
USER_AUTO_REGISTER_ERROR(20021, "自动注册失败,请稍后重试"),
|
||||
USER_OVERDUE_CONNECT_ERROR(20022, "授权信息已过期,请重新授权/登录"),
|
||||
USER_CONNECT_BANDING_ERROR(20023, "当前联合登陆方式,已绑定其他账号,需进行解绑操作"),
|
||||
USER_CONNECT_NOT_EXIST_ERROR(20024, "暂无联合登陆信息,无法实现一键注册功能,请点击第三方登录进行授权"),
|
||||
USER_POINTS_ERROR(20024, "用户积分不足"),
|
||||
CLERK_SUPPER(20025, "店主无法操作"),
|
||||
CLERK_SAVE_ERROR(20026, "店员保存失败"),
|
||||
CLERK_NOT_FOUND_ERROR(20027, "店员不存在"),
|
||||
USER_STATUS_ERROR(20028, "用户已禁用"),
|
||||
CLERK_USER_ERROR(20029, "此账户已经绑定其他店铺"),
|
||||
CLERK_ALREADY_EXIT_ERROR(20030, "店员已经存在"),
|
||||
CLERK_DISABLED_ERROR(20031, "店员已禁用"),
|
||||
CLERK_CURRENT_SUPPER(20032, "无法删除当前登录店员"),
|
||||
CANT_EDIT_CLERK_SHOPKEEPER(20033, "无法在店员管理编辑店员信息"),
|
||||
USER_MOBILE_REPEATABLE_ERROR(20034, "该手机号已存在"),
|
||||
/**
|
||||
* 权限
|
||||
*/
|
||||
PERMISSION_DEPARTMENT_ROLE_ERROR(21001, "角色已绑定部门,请逐个删除"),
|
||||
PERMISSION_USER_ROLE_ERROR(21002, "角色已绑定管理员,请逐个删除"),
|
||||
PERMISSION_MENU_ROLE_ERROR(21003, "菜单已绑定角色,请先删除或编辑角色"),
|
||||
PERMISSION_DEPARTMENT_DELETE_ERROR(21004, "部门已经绑定管理员,请先删除或编辑管理员"),
|
||||
PERMISSION_BEYOND_TEN(21005, "最多可以设置10个角色"),
|
||||
PERMISSION_NOT_FOUND_ERROR(21006, "部门不存在"),
|
||||
PERMISSION_ROLE_NOT_FOUND_ERROR(21007, "角色不存在"),
|
||||
PERMISSION_CLERK_BAND_ERROR(21008, "此手机号码已绑定其他店铺 "),
|
||||
|
||||
|
||||
/**
|
||||
* 分销
|
||||
*/
|
||||
DISTRIBUTION_CLOSE(22000, "分销功能关闭"),
|
||||
DISTRIBUTION_NOT_EXIST(22001, "分销员不存在"),
|
||||
DISTRIBUTION_IS_APPLY(22002, "分销员已申请,无需重复提交"),
|
||||
DISTRIBUTION_AUDIT_ERROR(22003, "审核分销员失败"),
|
||||
DISTRIBUTION_RETREAT_ERROR(22004, "分销员清退失败"),
|
||||
DISTRIBUTION_CASH_NOT_EXIST(22005, "分销员提现记录不存在"),
|
||||
DISTRIBUTION_GOODS_DOUBLE(22006, "不能重复添加分销商品"),
|
||||
DISTRIBUTION_EDIT_ERROR(22007, "修改分销员失败"),
|
||||
|
||||
/**
|
||||
* 购物车
|
||||
*/
|
||||
CART_ERROR(30001, "读取结算页的购物车异常"),
|
||||
CART_NUM_ERROR(30010, "购买数量必须大于0"),
|
||||
CART_PINTUAN_NOT_EXIST_ERROR(30002, "拼团活动已关闭,请稍后重试"),
|
||||
CART_PINTUAN_LIMIT_ERROR(30003, "购买数量超过拼团活动限制数量"),
|
||||
SHIPPING_NOT_APPLY(30005, "购物商品不支持当前收货地址配送"),
|
||||
|
||||
/**
|
||||
* 订单
|
||||
*/
|
||||
ORDER_ERROR(31001, "创建订单异常,请稍后重试"),
|
||||
ORDER_NOT_EXIST(31002, "订单不存在"),
|
||||
ORDER_DELIVERED_ERROR(31003, "订单状态错误,无法进行确认收货"),
|
||||
ORDER_UPDATE_PRICE_ERROR(31004, "已支付的订单不能修改金额"),
|
||||
ORDER_LOGISTICS_ERROR(31005, "物流错误"),
|
||||
ORDER_DELIVER_ERROR(31006, "物流错误"),
|
||||
ORDER_NOT_USER(31007, "非当前会员的订单"),
|
||||
ORDER_TAKE_ERROR(31008, "当前订单无法核销"),
|
||||
MEMBER_ADDRESS_NOT_EXIST(31009, "订单无收货地址,请先配置收货地址"),
|
||||
STORE_ADDRESS_NOT_EXIST(31009, "订单没有自提地址,请先选择自提地址"),
|
||||
ORDER_DELIVER_NUM_ERROR(31010, "没有待发货的订单"),
|
||||
ORDER_NOT_SUPPORT_DISTRIBUTION(31011, "购物车中包含不支持配送的商品,请重新选择收货地址,或者重新选择商品"),
|
||||
ORDER_NOT_EXIST_VALID(31041, "购物车中无有效商品,请检查购物车内商品,或者重新选择商品"),
|
||||
ORDER_CAN_NOT_CANCEL(31012, "当前订单状态不可取消"),
|
||||
ORDER_BATCH_DELIVER_ERROR(31013, "批量发货,文件读取失败"),
|
||||
ORDER_ITEM_NOT_EXIST(31014, "当前订单项不存在!"),
|
||||
POINT_NOT_ENOUGH(31015, "当前会员积分不足购买当前积分商品!"),
|
||||
ORDER_LABEL_ORDER_ERROR(31016, "订单不能打印电子面单"),
|
||||
ORDER_PRICE_ERROR(31017,"订单金额不能小于等于0"),
|
||||
ORDER_PACKAGE_NOT_EXIST(31017, "当前订单包裹不存在!"),
|
||||
|
||||
|
||||
/**
|
||||
* 支付
|
||||
*/
|
||||
PAY_UN_WANTED(32000, "当前订单不需要付款,返回订单列表等待系统订单出库即可"),
|
||||
PAY_SUCCESS(32001, "支付成功"),
|
||||
PAY_INCONSISTENT_ERROR(32002, "付款金额和应付金额不一致"),
|
||||
PAY_DOUBLE_ERROR(32003, "订单已支付,不能再次进行支付"),
|
||||
PAY_CASHIER_ERROR(32004, "收银台信息获取错误"),
|
||||
PAY_ERROR(32005, "支付业务异常,请稍后重试"),
|
||||
PAY_BAN(32006, "当前订单不需要付款,请返回订单列表重新操作"),
|
||||
PAY_PARTIAL_ERROR(32007, "该订单已部分支付,请前往订单中心进行支付"),
|
||||
PAY_NOT_SUPPORT(32008, "支付暂不支持"),
|
||||
PAY_CLIENT_TYPE_ERROR(32009, "错误的客户端"),
|
||||
PAY_POINT_ENOUGH(32010, "积分不足,不能兑换"),
|
||||
PAY_NOT_EXIST_ORDER(32011, "支付订单不存在"),
|
||||
CAN_NOT_RECHARGE_WALLET(32012, "不能使用余额进行充值"),
|
||||
RECHARGE_PRICE_ERROR(32013, "充值金额错误"),
|
||||
|
||||
|
||||
WITHDRAW_ERROR(33000, "提现失败"),
|
||||
WITHDRAW_AUDIT_ERROR(33001, "提现审核失败"),
|
||||
WITHDRAW_WALLET_ERROR(33002, "提现到钱包失败"),
|
||||
|
||||
|
||||
|
||||
PACKET_SINGLE_COUNT_ERROR(35000, "单聊红包数量只能为1"),
|
||||
|
||||
|
||||
/**
|
||||
* 售后
|
||||
*/
|
||||
AFTER_SALES_NOT_PAY_ERROR(33001, "当前订单未支付,不能申请售后"),
|
||||
AFTER_SALES_CANCEL_ERROR(33002, "当前售后单无法取消"),
|
||||
AFTER_SALES_BAN(33003, "订单状态不允许申请售后,请联系平台或商家"),
|
||||
AFTER_SALES_DOUBLE_ERROR(33004, "售后已审核,无法重复操作"),
|
||||
AFTER_SALES_LOGISTICS_ERROR(33005, "物流公司错误,请重新选择"),
|
||||
AFTER_STATUS_ERROR(33006, "售后状态错误,请刷新页面"),
|
||||
RETURN_MONEY_OFFLINE_BANK_ERROR(33007, "当账号类型为银行转账时,银行信息不能为空"),
|
||||
AFTER_SALES_PRICE_ERROR(33004, "申请退款金额错误"),
|
||||
AFTER_GOODS_NUMBER_ERROR(33008, "申请售后商品数量错误"),
|
||||
|
||||
/**
|
||||
* 投诉
|
||||
*/
|
||||
COMPLAINT_ORDER_ITEM_EMPTY_ERROR(33100, "订单不存在"),
|
||||
COMPLAINT_SKU_EMPTY_ERROR(33101, "商品已下架,如需投诉请联系平台客服"),
|
||||
COMPLAINT_ERROR(33102, "投诉异常,请稍后重试"),
|
||||
COMPLAINT_NOT_EXIT(33103, "当前投诉记录不存在"),
|
||||
COMPLAINT_ARBITRATION_RESULT_ERROR(33104, "结束订单投诉时,仲裁结果不能为空"),
|
||||
COMPLAINT_APPEAL_CONTENT_ERROR(33105, "商家申诉时,申诉内容不能为空"),
|
||||
COMPLAINT_CANCEL_ERROR(33106, "申诉已完成,不需要进行取消申诉操作"),
|
||||
|
||||
|
||||
/**
|
||||
* 余额
|
||||
*/
|
||||
WALLET_NOT_EXIT_ERROR(34000, "钱包不存在,请联系管理员"),
|
||||
WALLET_INSUFFICIENT(34001, "余额不足以支付订单,请充值!"),
|
||||
WALLET_WITHDRAWAL_INSUFFICIENT(34002, "可提现金额不足!"),
|
||||
WALLET_WITHDRAWAL_FROZEN_AMOUNT_INSUFFICIENT(34006, "冻结金额不足,无法处理提现申请请求!"),
|
||||
WALLET_ERROR_INSUFFICIENT(34003, "零钱提现失败!"),
|
||||
WALLET_REMARK_ERROR(34004, "请填写审核备注!"),
|
||||
WALLET_EXIT_ERROR(34005, "钱包已存在,无法重复创建"),
|
||||
WALLET_APPLY_ERROR(34006, "提现申请异常!"),
|
||||
WALLET_APPLY_MIN_PRICE_ERROR(34007, "提现最低提现金额错误!"),
|
||||
WALLET_WITHDRAWAL_AMOUNT_ERROR(34008, "申请提现金额异常!"),
|
||||
/**
|
||||
* 评价
|
||||
*/
|
||||
EVALUATION_DOUBLE_ERROR(35001, "无法重复提交评价"),
|
||||
|
||||
/**
|
||||
* 活动
|
||||
*/
|
||||
PROMOTION_GOODS_NOT_EXIT(40000, "当前促销商品不存在!"),
|
||||
PROMOTION_GOODS_QUANTITY_NOT_EXIT(40020, "当前促销商品库存不足!"),
|
||||
PROMOTION_GOODS_DO_NOT_JOIN_WHOLESALE(40050, "批发商品无法参加促销"),
|
||||
PROMOTION_SAME_ACTIVE_EXIST(40001, "活动时间内已存在同类活动,请选择关闭、删除当前时段的活动"),
|
||||
PROMOTION_START_TIME_ERROR(40002, "活动起始时间不能小于当前时间"),
|
||||
PROMOTION_END_TIME_ERROR(40003, "活动结束时间不能小于当前时间"),
|
||||
PROMOTION_TIME_ERROR(40004, "活动起始时间必须大于结束时间"),
|
||||
PROMOTION_TIME_NOT_EXIST(40011, "活动起始时间和活动结束时间不能为空"),
|
||||
PROMOTION_SAME_ERROR(40005, "当前时间段已存在相同活动!"),
|
||||
PROMOTION_GOODS_ERROR(40006, "请选择要参与活动的商品"),
|
||||
PROMOTION_STATUS_END(40007, "当前活动已停止"),
|
||||
PROMOTION_UPDATE_ERROR(40008, "当前活动已开始/结束,无法编辑!"),
|
||||
PROMOTION_ACTIVITY_GOODS_ERROR(40009, "当前活动已经开始无法添加商品"),
|
||||
PROMOTION_ACTIVITY_ERROR(400010, "当前促销活动不存在"),
|
||||
PROMOTION_LOG_EXIST(40011, "活动已参加,已发重复参加"),
|
||||
APPLY_END_TIME_ERROR(40012, "参与截至时间不能小于当前时间,不能大于活动开始时间"),
|
||||
|
||||
/**
|
||||
* 优惠券
|
||||
*/
|
||||
COUPON_LIMIT_ERROR(41000, "超出领取限制"),
|
||||
COUPON_EDIT_STATUS_SUCCESS(41001, "修改状态成功!"),
|
||||
COUPON_CANCELLATION_SUCCESS(41002, "会员优惠券作废成功"),
|
||||
COUPON_EXPIRED(41003, "优惠券已使用/已过期,不能使用"),
|
||||
COUPON_EDIT_STATUS_ERROR(41004, "优惠券修改状态失败!"),
|
||||
COUPON_RECEIVE_ERROR(41005, "当前优惠券已经被领取完了,下次要早点来哦"),
|
||||
COUPON_NUM_INSUFFICIENT_ERROR(41006, "优惠券剩余领取数量不足"),
|
||||
COUPON_NOT_EXIST(41007, "当前优惠券不存在"),
|
||||
COUPON_LIMIT_NUM_LESS_THAN_0(41008, "领取限制数量不能为负数"),
|
||||
COUPON_LIMIT_GREATER_THAN_PUBLISH(41009, "领取限制数量超出发行数量"),
|
||||
COUPON_DISCOUNT_ERROR(41010, "优惠券折扣必须小于10且大于0"),
|
||||
COUPON_SCOPE_TYPE_GOODS_ERROR(41011, "当前关联范围类型为指定商品时,商品列表不能为空"),
|
||||
COUPON_SCOPE_TYPE_CATEGORY_ERROR(41012, "当前关联范围类型为部分商品分类时,范围关联的id不能为空"),
|
||||
COUPON_SCOPE_TYPE_STORE_ERROR(41013, "当前关联范围类型为部分店铺分类时,范围关联的id不能为空"),
|
||||
COUPON_SCOPE_ERROR(41014, "指定商品范围关联id无效!"),
|
||||
COUPON_MEMBER_NOT_EXIST(41015, "没有当前会员优惠券"),
|
||||
COUPON_MEMBER_STATUS_ERROR(41016, "当前会员优惠券已过期/作废无法变更状态!"),
|
||||
COUPON_RANGE_ERROR(41017, "优惠券使用时间范围错误"),
|
||||
|
||||
SPECIAL_CANT_USE(41019, "特殊商品不能使用优惠券,不能使用"),
|
||||
|
||||
COUPON_SAVE_ERROR(41020, "保存优惠券失败"),
|
||||
COUPON_DELETE_ERROR(41021, "删除优惠券失败"),
|
||||
COUPON_ACTIVITY_NOT_EXIST(41022, "当前优惠券活动不存在"),
|
||||
COUPON_ACTIVITY_SAVE_ERROR(41023, "保存优惠券活动失败"),
|
||||
COUPON_ACTIVITY_MAX_NUM(41024, "优惠券活动赠券数量最多为5"),
|
||||
|
||||
COUPON_DO_NOT_RECEIVER(41030, "当前优惠券不允许主动领取"),
|
||||
|
||||
/**
|
||||
* 拼团
|
||||
*/
|
||||
PINTUAN_MANUAL_OPEN_SUCCESS(42001, "手动开启拼团活动成功"),
|
||||
PINTUAN_MANUAL_CLOSE_SUCCESS(42002, "手动关闭拼团活动成功"),
|
||||
PINTUAN_ADD_SUCCESS(42003, "添加拼团活动成功"),
|
||||
PINTUAN_EDIT_SUCCESS(42004, "修改拼团活动成功"),
|
||||
PINTUAN_DELETE_SUCCESS(42005, "删除拼团活动成功"),
|
||||
PINTUAN_MANUAL_OPEN_ERROR(42006, "手动开启拼团活动失败"),
|
||||
PINTUAN_MANUAL_CLOSE_ERROR(42007, "手动关闭拼团活动失败"),
|
||||
PINTUAN_ADD_ERROR(42008, "添加拼团活动失败"),
|
||||
PINTUAN_EDIT_ERROR(42009, "修改拼团活动失败"),
|
||||
PINTUAN_EDIT_ERROR_ITS_OPEN(42019, "拼团活动已开启,无法修改拼团活动!"),
|
||||
PINTUAN_DELETE_ERROR(42010, "删除拼团活动失败"),
|
||||
PINTUAN_JOIN_ERROR(42011, "不能参与自己发起的拼团活动!"),
|
||||
PINTUAN_LIMIT_NUM_ERROR(42012, "购买数量超过拼团活动限制数量!"),
|
||||
PINTUAN_NOT_EXIST_ERROR(42013, "当前拼团活动不存在!"),
|
||||
PINTUAN_GOODS_NOT_EXIST_ERROR(42014, "当前拼团商品不存在!"),
|
||||
|
||||
/**
|
||||
* 满额活动
|
||||
*/
|
||||
FULL_DISCOUNT_EDIT_SUCCESS(43001, "修改满优惠活动成功"),
|
||||
FULL_DISCOUNT_EDIT_DELETE(43002, "删除满优惠活动成功"),
|
||||
FULL_DISCOUNT_MODIFY_ERROR(43003, "当前编辑的满优惠活动已经开始或者已经结束,无法修改"),
|
||||
FULL_DISCOUNT_NOT_EXIST_ERROR(43004, "当前要操作的满优惠活动不存在!"),
|
||||
FULL_DISCOUNT_WAY_ERROR(43005, "请选择一种优惠方式!"),
|
||||
FULL_DISCOUNT_GIFT_ERROR(43006, "请选择赠品!"),
|
||||
FULL_DISCOUNT_COUPON_TIME_ERROR(43007, "赠送的优惠券有效时间必须在活动时间之内"),
|
||||
FULL_DISCOUNT_MONEY_ERROR(43008, "请填写满减金额"),
|
||||
FULL_DISCOUNT_MONEY_GREATER_THAN_MINUS(43009, "满减金额不能大于优惠门槛"),
|
||||
FULL_RATE_NUM_ERROR(43010, "请填写打折数值"),
|
||||
|
||||
/**
|
||||
* 直播
|
||||
*/
|
||||
STODIO_GOODS_EXIST_ERROR(44001, "直播商品已存在"),
|
||||
COMMODITY_ERROR(44002, "添加直播商品失败"),
|
||||
|
||||
/**
|
||||
* 秒杀
|
||||
*/
|
||||
SECKILL_NOT_START_ERROR(45000, "今日没有限时抢购活动,请明天再来看看吧。"),
|
||||
SECKILL_NOT_EXIST_ERROR(45001, "当前参与的秒杀活动不存在!"),
|
||||
SECKILL_APPLY_NOT_EXIST_ERROR(45010, "当前参与的秒杀活动不存在!"),
|
||||
SECKILL_UPDATE_ERROR(45002, "当前秒杀活动活动已经开始,无法修改!"),
|
||||
SECKILL_PRICE_ERROR(45003, "活动价格不能大于商品原价"),
|
||||
SECKILL_TIME_ERROR(45004, "时刻参数异常"),
|
||||
SECKILL_DELETE_ERROR(45005, "该秒杀活动活动的状态不能删除"),
|
||||
SECKILL_OPEN_ERROR(45010, "该秒杀活动活动的状态不能删除"),
|
||||
SECKILL_CLOSE_ERROR(45006, "该秒杀活动活动的状态不能关闭"),
|
||||
|
||||
|
||||
/**
|
||||
* 优惠券活动
|
||||
*/
|
||||
COUPON_ACTIVITY_START_TIME_ERROR(46001, "活动时间小于当前时间,不能进行编辑删除操作"),
|
||||
COUPON_ACTIVITY_MEMBER_ERROR(46002, "指定精准发券则必须指定会员,会员不可以为空"),
|
||||
COUPON_ACTIVITY_ITEM_ERROR(46003, "优惠券活动必须指定优惠券,不能为空"),
|
||||
COUPON_ACTIVITY_ITEM_MUST_NUM_ERROR(46004, "优惠券活动最多指定10个优惠券"),
|
||||
COUPON_ACTIVITY_ITEM_NUM_ERROR(46005, "赠券数量必须大于0"),
|
||||
COUPON_ACTIVITY_ITEM_NUM_MAX_VALUE_2(46006, "赠券数量最大为2"),
|
||||
|
||||
/**
|
||||
* 其他促销
|
||||
*/
|
||||
MEMBER_SIGN_REPEAT(47001, "请勿重复签到"),
|
||||
POINT_GOODS_ACTIVE_STOCK_ERROR(47002, "活动库存数量不能高于商品库存"),
|
||||
POINT_GOODS_ACTIVE_STOCK_INSUFFICIENT(47003, "积分商品库存不足"),
|
||||
|
||||
/**
|
||||
* 砍价活动
|
||||
*/
|
||||
KANJIA_GOODS_ACTIVE_STOCK_ERROR(48001, "活动库存数量不能高于商品库存"),
|
||||
KANJIA_GOODS_ACTIVE_PRICE_ERROR(48002, "最低购买金额不能高于商品金额"),
|
||||
KANJIA_GOODS_ACTIVE_HIGHEST_PRICE_ERROR(48003, "最高砍价金额不能为0且不能超过商品金额"),
|
||||
KANJIA_GOODS_ACTIVE_LOWEST_PRICE_ERROR(48004, "最低砍价金额不能为0且不能超过商品金额"),
|
||||
KANJIA_GOODS_ACTIVE_HIGHEST_LOWEST_PRICE_ERROR(48005, "最低砍价金额不能高于最高砍价金额"),
|
||||
KANJIA_GOODS_ACTIVE_SETTLEMENT_PRICE_ERROR(48006, "结算金额不能高于商品金额"),
|
||||
KANJIA_GOODS_DELETE_ERROR(48007, "删除砍价商品异常"),
|
||||
KANJIA_GOODS_UPDATE_ERROR(48012, "更新砍价商品异常"),
|
||||
KANJIA_ACTIVITY_NOT_FOUND_ERROR(48008, "砍价记录不存在"),
|
||||
KANJIA_ACTIVITY_LOG_MEMBER_ERROR(48009, "当前会员已经帮砍"),
|
||||
KANJIA_ACTIVITY_MEMBER_ERROR(48010, "当前会员已经发起此砍价商品活动"),
|
||||
KANJIA_ACTIVITY_NOT_PASS_ERROR(48011, "当前砍价未满足条件,不能进行购买"),
|
||||
KANJIA_NUM_BUY_ERROR(48012, "砍价商品购买数量不正确"),
|
||||
/**
|
||||
* 店铺
|
||||
*/
|
||||
|
||||
STORE_NOT_EXIST(50001, "此店铺不存在"),
|
||||
STORE_NAME_EXIST_ERROR(50002, "店铺名称已存在!"),
|
||||
STORE_APPLY_DOUBLE_ERROR(50003, "已经拥有店铺!"),
|
||||
STORE_NOT_OPEN(50004, "该会员未开通店铺"),
|
||||
STORE_NOT_LOGIN_ERROR(50005, "未登录店铺"),
|
||||
STORE_CLOSE_ERROR(50006, "店铺关闭,请联系管理员"),
|
||||
STORE_DELIVER_GOODS_ADDRESS(50007,"请填写商家发货地址"),
|
||||
FREIGHT_TEMPLATE_NOT_EXIST(50010, "当前模版不存在"),
|
||||
STORE_STATUS_ERROR(50011, "店铺在申请中或审核中,请勿重复操作"),
|
||||
STORE_DELIVER_ADDRESS_EXIST(50012,"请填写发货地址"),
|
||||
|
||||
/**
|
||||
* 结算单
|
||||
*/
|
||||
BILL_CHECK_ERROR(51001, "只有已出账结算单可以核对"),
|
||||
BILL_COMPLETE_ERROR(51002, "只有已审核结算单可以支付"),
|
||||
|
||||
/**
|
||||
* 文章
|
||||
*/
|
||||
ARTICLE_CATEGORY_NAME_EXIST(60001, "文章分类名称已存在"),
|
||||
ARTICLE_CATEGORY_PARENT_NOT_EXIST(60002, "文章分类父分类不存在"),
|
||||
ARTICLE_CATEGORY_BEYOND_TWO(60003, "最多为二级分类,操作失败"),
|
||||
ARTICLE_CATEGORY_DELETE_ERROR(60004, "该文章分类下存在子分类,不能删除"),
|
||||
ARTICLE_CATEGORY_HAS_ARTICLE(60005, "该文章分类下存在文章,不能删除"),
|
||||
ARTICLE_CATEGORY_NO_DELETION(60007, "默认文章分类不能进行删除"),
|
||||
ARTICLE_NO_DELETION(60008, "默认文章不能进行删除"),
|
||||
|
||||
|
||||
/**
|
||||
* 页面
|
||||
*/
|
||||
PAGE_NOT_EXIST(61001, "页面不存在"),
|
||||
PAGE_OPEN_DELETE_ERROR(61002, "当前页面为开启状态,无法删除"),
|
||||
PAGE_DELETE_ERROR(61003, "当前页面为唯一页面,无法删除"),
|
||||
PAGE_RELEASE_ERROR(61004, "页面已发布,无需重复提交"),
|
||||
|
||||
/**
|
||||
* 设置
|
||||
*/
|
||||
SETTING_NOT_TO_SET(70001, "该参数不需要设置"),
|
||||
ALIPAY_NOT_SETTING(70002, "支付宝支付未配置"),
|
||||
ALIPAY_EXCEPTION(70003, "支付宝支付错误,请稍后重试"),
|
||||
ALIPAY_PARAMS_EXCEPTION(70004, "支付宝参数异常"),
|
||||
LOGISTICS_NOT_SETTING(70005, "您还未配置快递查询"),
|
||||
LOGISTICS_CHECK_SETTING(70005, "操作失败,请检查您的快递鸟配置"),
|
||||
ORDER_SETTING_ERROR(70006, "系统订单配置异常"),
|
||||
ALI_SMS_SETTING_ERROR(70007, "您还未配置阿里云短信"),
|
||||
SMS_SIGN_EXIST_ERROR(70008, "短信签名已存在"),
|
||||
|
||||
/**
|
||||
* 站内信
|
||||
*/
|
||||
NOTICE_NOT_EXIST(80001, "当前消息模板不存在"),
|
||||
NOTICE_ERROR(80002, "修改站内信异常,请稍后重试"),
|
||||
NOTICE_SEND_ERROR(80003, "发送站内信异常,请检查系统日志"),
|
||||
|
||||
|
||||
/**
|
||||
* OSS
|
||||
*/
|
||||
OSS_NOT_EXIST(80101, "OSS未配置"),
|
||||
OSS_EXCEPTION_ERROR(80102, "文件上传失败,请稍后重试"),
|
||||
OSS_DELETE_ERROR(80103, "图片删除失败"),
|
||||
|
||||
/**
|
||||
* 验证码
|
||||
*/
|
||||
VERIFICATION_SEND_SUCCESS(80201, "短信验证码,发送成功"),
|
||||
VERIFICATION_ERROR(80202, "验证失败"),
|
||||
VERIFICATION_CODE_INVALID(80204, "验证码已失效,请重新校验"),
|
||||
VERIFICATION_SMS_CHECKED_ERROR(80210, "短信验证码错误,请重新校验"),
|
||||
|
||||
/**
|
||||
* 微信相关异常
|
||||
*/
|
||||
WECHAT_CONNECT_NOT_SETTING(80300, "微信联合登陆信息未配置"),
|
||||
WECHAT_PAYMENT_NOT_SETTING(80301, "微信支付信息未配置"),
|
||||
WECHAT_QRCODE_ERROR(80302, "微信二维码生成异常"),
|
||||
WECHAT_MP_MESSAGE_ERROR(80303, "微信小程序小消息订阅异常"),
|
||||
WECHAT_JSAPI_SIGN_ERROR(80304, "微信JsApi签名异常"),
|
||||
WECHAT_CERT_ERROR(80305, "证书获取失败"),
|
||||
WECHAT_MP_MESSAGE_TMPL_ERROR(80306, "未能获取到微信模版消息id"),
|
||||
WECHAT_ERROR(80307, "微信接口异常"),
|
||||
APP_VERSION_EXIST(80307, "APP版本已存在"),
|
||||
APP_VERSION_PARAM_ERROR(80308, "添加APP版本参数异常"),
|
||||
// 未选择APP类型
|
||||
APP_VERSION_TYPE_ERROR(80308, "请选择有效的APP类型"),
|
||||
|
||||
/**
|
||||
* IM
|
||||
*/
|
||||
IM_MESSAGE_ADD_ERROR(80400,"IM消息发送错误"),
|
||||
IM_MESSAGE_EDIT_ERROR(80400,"IM消息更新错误"),
|
||||
|
||||
/**
|
||||
* 其他
|
||||
*/
|
||||
CUSTOM_WORDS_EXIST_ERROR(90000, "当前自定义分词已存在!"),
|
||||
CUSTOM_WORDS_NOT_EXIST_ERROR(90001, "当前自定义分词不存在!"),
|
||||
CUSTOM_WORDS_SECRET_KEY_ERROR(90002, "秘钥验证失败!"),
|
||||
CONNECT_NOT_EXIST(90000, "登录方式不存在!"),
|
||||
ELASTICSEARCH_INDEX_INIT_ERROR(90003, "索引初始化失败!"),
|
||||
PURCHASE_ORDER_DEADLINE_ERROR(90004, "供求单,已超过报名截止时间"),
|
||||
USER_ADD_ERROR(90005, "用户添加失败"),
|
||||
INDEX_BUILDING(90005, "索引正在生成"),
|
||||
/**
|
||||
* 只有达人才能申生成分享吗
|
||||
*/
|
||||
SHARE_CODE_NOT_MA(30005,"只有达人才能生成分享吗"),
|
||||
/**
|
||||
* 分享码不存在
|
||||
*/
|
||||
SHARE_CODE_NOT_EXIST(30001, "分享码不存在"),
|
||||
|
||||
/**
|
||||
* 分享码已被使用
|
||||
*/
|
||||
SHARE_CODE_ALREADY_USED(30002, "分享码已被使用"),
|
||||
|
||||
/**
|
||||
* 分享码已存在
|
||||
*/
|
||||
SHARE_CODE_ALREADY_EXIST(30003, "分享码已存在"),
|
||||
|
||||
/**
|
||||
* 不能绑定自己的分享码
|
||||
*/
|
||||
CANNOT_BIND_OWN_CODE(30004, "不能绑定自己的分享码"),
|
||||
|
||||
/**
|
||||
* 已绑定过这个分享码
|
||||
*/
|
||||
ALREADY_BIND_THIS_CODE(30008, "已绑定过这个分享码"),
|
||||
|
||||
/**
|
||||
* 已绑定过其他达人
|
||||
*/
|
||||
ALREADY_BIND_SHARE_CODE(30009, "已绑定过其他达人,不能重复绑定"),
|
||||
|
||||
/**
|
||||
* 分享码无效
|
||||
*/
|
||||
SHARE_CODE_INVALID(30006, "分享码无效"),
|
||||
EXPERT_NOT_EXIST(30010,"达人不存在"),
|
||||
EXPERT_EXIST(3012,"达人已经存在"),
|
||||
INVALID_CODE_OR_PHONE(3011,"无效的分享码或手机号格式"),
|
||||
|
||||
/**
|
||||
* 分享码已被绑定
|
||||
*/
|
||||
SHARE_CODE_ALREADY_BIND(30007, "分享码已被绑定"),
|
||||
|
||||
/**
|
||||
* 分享码不能绑定自己
|
||||
*/
|
||||
SHARE_CODE_CANNOT_BIND_SELF(500, "分享码不能绑定自己"),
|
||||
|
||||
/**
|
||||
* 只有达人可以生成邀请码
|
||||
*/
|
||||
ONLY_EXPERT_CAN_GENERATE_CODE(500, "只有达人可以生成邀请码"),
|
||||
|
||||
/**
|
||||
* 达人不能绑定邀请码
|
||||
*/
|
||||
EXPERT_CANNOT_BIND_CODE(500, "达人不能绑定邀请码"),
|
||||
|
||||
/**
|
||||
* 核销码不存在
|
||||
*/
|
||||
VERIFICATION_CODE_NOT_EXIST(500, "核销码不存在"),
|
||||
|
||||
/**
|
||||
* 核销码已过期
|
||||
*/
|
||||
VERIFICATION_CODE_EXPIRED(500, "核销码已过期"),
|
||||
|
||||
/**
|
||||
* 核销码已被使用
|
||||
*/
|
||||
VERIFICATION_CODE_ALREADY_USED(500, "核销码已被使用"),
|
||||
|
||||
/**
|
||||
* 核销操作繁忙
|
||||
*/
|
||||
VERIFICATION_OPERATION_BUSY(500, "核销操作繁忙,请稍后重试"),
|
||||
|
||||
/**
|
||||
* 订单状态错误
|
||||
*/
|
||||
ORDER_STATUS_ERROR(500, "订单状态错误"),
|
||||
|
||||
/**
|
||||
* 订单类型错误
|
||||
*/
|
||||
ORDER_TYPE_ERROR(500, "订单类型错误"),
|
||||
|
||||
/**
|
||||
* 订单已核销
|
||||
*/
|
||||
ORDER_ALREADY_VERIFICATION(500, "订单已核销");
|
||||
|
||||
// /**
|
||||
// * 订单不存在
|
||||
// */
|
||||
// ORDER_NOT_EXIST(400, "订单不存在")
|
||||
|
||||
// /**
|
||||
// * 订单项不存在
|
||||
// */
|
||||
// ORDER_ITEM_NOT_EXIST(400, "订单项不存在");
|
||||
|
||||
|
||||
private final Integer code;
|
||||
private final String message;
|
||||
|
||||
|
||||
ResultCode(Integer code, String message) {
|
||||
this.code = code;
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public Integer code() {
|
||||
return this.code;
|
||||
}
|
||||
|
||||
public String message() {
|
||||
return this.message;
|
||||
}
|
||||
|
||||
}
|
@ -1,33 +0,0 @@
|
||||
package org.dromara.common.core.domain;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
public class BaseBO <T> {
|
||||
|
||||
private Integer current=1;
|
||||
|
||||
private Integer size=10;
|
||||
|
||||
protected LocalDateTime beginTime;
|
||||
|
||||
protected LocalDateTime endTime;
|
||||
|
||||
/**
|
||||
* bo转换成queryWrapper
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public LambdaQueryWrapper<T> toWrapper() {
|
||||
return new LambdaQueryWrapper<T>();
|
||||
}
|
||||
|
||||
public Page<T> getPage() {
|
||||
return new Page<>(current, size);
|
||||
}
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
package org.dromara.common.core.domain;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public interface IQuery {
|
||||
/**
|
||||
* @return 搜索值
|
||||
*/
|
||||
String getSearchValue();
|
||||
|
||||
/**
|
||||
* @return 所有参数
|
||||
*/
|
||||
Map<String, Object> getParams();
|
||||
}
|
@ -3,7 +3,6 @@ package org.dromara.common.core.domain;
|
||||
import org.dromara.common.core.constant.HttpStatus;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.dromara.common.core.constant.ResultCode;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
@ -39,9 +38,6 @@ public class R<T> implements Serializable {
|
||||
public static <T> R<T> ok() {
|
||||
return restResult(null, SUCCESS, "操作成功");
|
||||
}
|
||||
public static <T> R<T> notLogin() {
|
||||
return restResult(null, ResultCode.USER_CONNECT_LOGIN_ERROR.code(),ResultCode.USER_CONNECT_LOGIN_ERROR.message());
|
||||
}
|
||||
|
||||
public static <T> R<T> ok(T data) {
|
||||
return restResult(data, SUCCESS, "操作成功");
|
||||
|
@ -1,256 +0,0 @@
|
||||
package org.dromara.common.core.domain.event;
|
||||
|
||||
/**
|
||||
* 通用常量信息
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
public class Constants
|
||||
{
|
||||
/**
|
||||
* UTF-8 字符集
|
||||
*/
|
||||
public static final String UTF8 = "UTF-8";
|
||||
|
||||
/**
|
||||
* GBK 字符集
|
||||
*/
|
||||
public static final String GBK = "GBK";
|
||||
|
||||
/**
|
||||
* http请求
|
||||
*/
|
||||
public static final String HTTP = "http://";
|
||||
|
||||
/**
|
||||
* https请求
|
||||
*/
|
||||
public static final String HTTPS = "https://";
|
||||
|
||||
/**
|
||||
* 通用成功标识
|
||||
*/
|
||||
public static final String SUCCESS = "0";
|
||||
|
||||
/**
|
||||
* 通用失败标识
|
||||
*/
|
||||
public static final String FAIL = "1";
|
||||
|
||||
/**
|
||||
* 登录成功
|
||||
*/
|
||||
public static final String LOGIN_SUCCESS = "Success";
|
||||
|
||||
/**
|
||||
* 注销
|
||||
*/
|
||||
public static final String LOGOUT = "Logout";
|
||||
|
||||
/**
|
||||
* 注册
|
||||
*/
|
||||
public static final String REGISTER = "Register";
|
||||
|
||||
/**
|
||||
* 登录失败
|
||||
*/
|
||||
public static final String LOGIN_FAIL = "Error";
|
||||
|
||||
/**
|
||||
* 验证码 redis key
|
||||
*/
|
||||
public static final String CAPTCHA_CODE_KEY = "captcha_codes:";
|
||||
|
||||
/**
|
||||
* 登录用户 redis key
|
||||
*/
|
||||
public static final String LOGIN_TOKEN_KEY = "login_tokens:";
|
||||
public static final String LOGIN_MEMBER_TOKEN_KEY = "login_member_tokens:";
|
||||
public static final String MEMBER_INFO = "member_info";
|
||||
|
||||
/**
|
||||
* 防重提交 redis key
|
||||
*/
|
||||
public static final String REPEAT_SUBMIT_KEY = "repeat_submit:";
|
||||
|
||||
/**
|
||||
* 限流 redis key
|
||||
*/
|
||||
public static final String RATE_LIMIT_KEY = "rate_limit:";
|
||||
|
||||
/**
|
||||
* 验证码有效期(分钟)
|
||||
*/
|
||||
public static final Integer CAPTCHA_EXPIRATION = 5;
|
||||
|
||||
/**
|
||||
* 令牌
|
||||
*/
|
||||
public static final String TOKEN = "token";
|
||||
|
||||
/**
|
||||
* 令牌前缀
|
||||
*/
|
||||
public static final String TOKEN_PREFIX = "Bearer ";
|
||||
|
||||
/**
|
||||
* 令牌前缀
|
||||
*/
|
||||
public static final String LOGIN_USER_KEY = "login_user_key";
|
||||
public static final String LOGIN_MEMBER_KEY = "login_member_key";
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
public static final String JWT_USERID = "userid";
|
||||
|
||||
/**
|
||||
* 用户名称
|
||||
*/
|
||||
// public static final String JWT_USERNAME = Claims.SUBJECT;
|
||||
|
||||
/**
|
||||
* 用户头像
|
||||
*/
|
||||
public static final String JWT_AVATAR = "avatar";
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
public static final String JWT_CREATED = "created";
|
||||
|
||||
/**
|
||||
* 用户权限
|
||||
*/
|
||||
public static final String JWT_AUTHORITIES = "authorities";
|
||||
|
||||
/**
|
||||
* 参数管理 cache key
|
||||
*/
|
||||
public static final String SYS_CONFIG_KEY = "sys_config:";
|
||||
|
||||
public static final String INTEGRAL_RULE_KEY = "activity-integral-income-set-key";
|
||||
|
||||
/**
|
||||
* 字典管理 cache key
|
||||
*/
|
||||
public static final String SYS_DICT_KEY = "sys_dict:";
|
||||
|
||||
/**
|
||||
* 资源映射路径 前缀
|
||||
*/
|
||||
public static final String RESOURCE_PREFIX = "/profile";
|
||||
|
||||
/**
|
||||
* RMI 远程方法调用
|
||||
*/
|
||||
public static final String LOOKUP_RMI = "rmi://";
|
||||
|
||||
/**
|
||||
* LDAP 远程方法调用
|
||||
*/
|
||||
public static final String LOOKUP_LDAP = "ldap://";
|
||||
|
||||
public static final String SPAN_ID = "spanId";
|
||||
|
||||
/**
|
||||
* 会员账号状态
|
||||
*/
|
||||
public static class MEMBER_ACCOUNT_STATUS {
|
||||
public static final Integer FORBIDDEN = 0;
|
||||
public static final Integer NORMAL = 1;
|
||||
// 注销
|
||||
public static final Integer REVOKED = 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* 登录提示信息
|
||||
*/
|
||||
public static class LOGIN_INFO {
|
||||
public static final String WRONG = "账号或密码错误";
|
||||
public static final String FORBIDDEN = "您的账号被禁用,请联系管理员";
|
||||
public static final String SUCCESS = "登录成功";
|
||||
public static final String TO_REGISTER = "请先注册";
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证码相关提示信息
|
||||
*/
|
||||
public static class VERIFY_CODE_INFO {
|
||||
public static final String EXPIRED = "验证码已过期";
|
||||
public static final String WRONG = "验证码错误";
|
||||
}
|
||||
|
||||
/**
|
||||
* 上架状态:0->下架;1->上架
|
||||
*/
|
||||
public static class PublishStatus {
|
||||
public static final Integer GROUNDING = 1;
|
||||
public static final Integer UNDERCARRIAGE = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 0->未支付;1->支付宝;2->微信
|
||||
*/
|
||||
public static class PayType {
|
||||
public static final Integer NO_PAY = 0;
|
||||
public static final Integer ALIPAY = 1;
|
||||
public static final Integer WECHAT = 2;
|
||||
public static final Integer UNION = 3;
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单来源 购物车:cart
|
||||
*/
|
||||
public static class OrderFrom {
|
||||
public static final String CART = "cart";
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* H5订单查询状态
|
||||
* -1->全部 0->待付款;1->待发货;2->待收货;3->已完成;4->已关闭;5->无效订单 -2->售后单
|
||||
*/
|
||||
public static class H5OrderStatus{
|
||||
public static final Integer ALL = -1;
|
||||
public static final Integer UN_PAY = 0;
|
||||
public static final Integer NOT_DELIVERED = 1;
|
||||
public static final Integer DELIVERED = 2;
|
||||
public static final Integer COMPLETED = 3;
|
||||
public static final Integer CLOSED = 4;
|
||||
public static final Integer INVALID = 5;
|
||||
public static final Integer REFUND = -2;
|
||||
}
|
||||
|
||||
/**
|
||||
* 交易类型(1为支付 2为提现 3为退款)
|
||||
*/
|
||||
public static class PaymentOpType {
|
||||
public static final Integer PAY = 1;
|
||||
public static final Integer WITHDRAWAL = 2;
|
||||
public static final Integer REFUND = 3;
|
||||
}
|
||||
|
||||
/**
|
||||
* 状态(0:未完成交易 1:完成关键交易)
|
||||
*/
|
||||
public static class PaymentStatus {
|
||||
public static final Integer INCOMPLETE = 0;
|
||||
public static final Integer COMPLETE = 1;
|
||||
}
|
||||
|
||||
public static class OptType {
|
||||
public static final Integer AGREE = 1;
|
||||
public static final Integer REFUSE = 2;
|
||||
public static final Integer GIVING = 3;
|
||||
}
|
||||
|
||||
/**
|
||||
* 自动识别json对象白名单配置(仅允许解析的包名,范围越小越安全)
|
||||
*/
|
||||
public static final String[] JSON_WHITELIST_STR = { "org.springframework", "com.ruoyi","com.cyl" };
|
||||
|
||||
}
|
@ -1,78 +0,0 @@
|
||||
package org.dromara.common.core.domain.event;
|
||||
|
||||
/**
|
||||
* 用户常量信息
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
public class UserConstants
|
||||
{
|
||||
/**
|
||||
* 平台内系统用户的唯一标志
|
||||
*/
|
||||
public static final String SYS_USER = "SYS_USER";
|
||||
|
||||
/** 正常状态 */
|
||||
public static final String NORMAL = "0";
|
||||
|
||||
/** 异常状态 */
|
||||
public static final String EXCEPTION = "1";
|
||||
|
||||
/** 用户封禁状态 */
|
||||
public static final String USER_DISABLE = "1";
|
||||
|
||||
/** 角色封禁状态 */
|
||||
public static final String ROLE_DISABLE = "1";
|
||||
|
||||
/** 部门正常状态 */
|
||||
public static final String DEPT_NORMAL = "0";
|
||||
|
||||
/** 部门停用状态 */
|
||||
public static final String DEPT_DISABLE = "1";
|
||||
|
||||
/** 字典正常状态 */
|
||||
public static final String DICT_NORMAL = "0";
|
||||
|
||||
/** 是否为系统默认(是) */
|
||||
public static final String YES = "Y";
|
||||
|
||||
/** 是否菜单外链(是) */
|
||||
public static final String YES_FRAME = "0";
|
||||
|
||||
/** 是否菜单外链(否) */
|
||||
public static final String NO_FRAME = "1";
|
||||
|
||||
/** 菜单类型(目录) */
|
||||
public static final String TYPE_DIR = "M";
|
||||
|
||||
/** 菜单类型(菜单) */
|
||||
public static final String TYPE_MENU = "C";
|
||||
|
||||
/** 菜单类型(按钮) */
|
||||
public static final String TYPE_BUTTON = "F";
|
||||
|
||||
/** Layout组件标识 */
|
||||
public final static String LAYOUT = "Layout";
|
||||
|
||||
/** ParentView组件标识 */
|
||||
public final static String PARENT_VIEW = "ParentView";
|
||||
|
||||
/** InnerLink组件标识 */
|
||||
public final static String INNER_LINK = "InnerLink";
|
||||
|
||||
/** 校验返回结果码 */
|
||||
public final static String UNIQUE = "0";
|
||||
public final static String NOT_UNIQUE = "1";
|
||||
|
||||
/**
|
||||
* 用户名长度限制
|
||||
*/
|
||||
public static final int USERNAME_MIN_LENGTH = 2;
|
||||
public static final int USERNAME_MAX_LENGTH = 20;
|
||||
|
||||
/**
|
||||
* 密码长度限制
|
||||
*/
|
||||
public static final int PASSWORD_MIN_LENGTH = 5;
|
||||
public static final int PASSWORD_MAX_LENGTH = 20;
|
||||
}
|
@ -1,37 +0,0 @@
|
||||
package org.dromara.common.core.domain.model;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
public class BaseAudit {
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
/**
|
||||
* 创建部门
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新者
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime updateTime;
|
||||
}
|
@ -107,11 +107,6 @@ public class LoginUser implements Serializable {
|
||||
*/
|
||||
private String nickname;
|
||||
|
||||
/**
|
||||
* 用户手机号
|
||||
*/
|
||||
private String phoneNumber;
|
||||
|
||||
/**
|
||||
* 角色对象
|
||||
*/
|
||||
@ -137,23 +132,6 @@ public class LoginUser implements Serializable {
|
||||
*/
|
||||
private String deviceType;
|
||||
|
||||
|
||||
/**
|
||||
* 腾讯IM用户Sig
|
||||
*/
|
||||
private String userSig;
|
||||
|
||||
/**
|
||||
* 头像
|
||||
*/
|
||||
private String avatar;
|
||||
|
||||
/**
|
||||
* 所属团长的租户Id
|
||||
*/
|
||||
private String referenceTenantId;
|
||||
|
||||
|
||||
/**
|
||||
* 获取登录id
|
||||
*/
|
||||
@ -167,6 +145,4 @@ public class LoginUser implements Serializable {
|
||||
return userType + ":" + userId;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -30,6 +30,4 @@ public class RegisterBody extends LoginBody {
|
||||
|
||||
private String userType;
|
||||
|
||||
private String phoneNumber;
|
||||
|
||||
}
|
||||
|
@ -1,31 +0,0 @@
|
||||
package org.dromara.common.core.enums;
|
||||
|
||||
/**
|
||||
* 售后状态
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
public enum AftersaleStatus
|
||||
{
|
||||
APPLY(0, "待处理"),
|
||||
WAIT(1, "退货中"),
|
||||
SUCCESS(2, "已完成"),
|
||||
REJECT(3, "已拒绝"),
|
||||
CANCEL(4,"用户取消");
|
||||
|
||||
private final Integer type;
|
||||
private final String msg;
|
||||
|
||||
private AftersaleStatus(Integer type, String msg) {
|
||||
this.type = type;
|
||||
this.msg = msg;
|
||||
}
|
||||
|
||||
public Integer getType() {
|
||||
return this.type;
|
||||
}
|
||||
|
||||
public String getMsg() {
|
||||
return this.msg;
|
||||
}
|
||||
}
|
@ -1,24 +0,0 @@
|
||||
package org.dromara.common.core.enums;
|
||||
|
||||
/**
|
||||
* 数字编码前缀,扫码用
|
||||
*/
|
||||
public enum CodePrefix {
|
||||
|
||||
/**
|
||||
* 订单
|
||||
*/
|
||||
DD,
|
||||
/**
|
||||
* 核销
|
||||
*/
|
||||
HXM,
|
||||
/**
|
||||
* 好友
|
||||
*/
|
||||
HYM,
|
||||
/**
|
||||
* 推广
|
||||
*/
|
||||
TGM;
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
package org.dromara.common.core.enums;
|
||||
|
||||
/**
|
||||
* 用户状态
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
public enum OrderRefundStatus
|
||||
{
|
||||
NO_REFUND(1, "无售后"),
|
||||
APPLY(2, "申请中"),
|
||||
WAIT(3, "退款中"),
|
||||
SUCCESS(4, "退款成功"),
|
||||
FAIL(5,"退款失败");
|
||||
|
||||
private final Integer type;
|
||||
private final String msg;
|
||||
|
||||
private OrderRefundStatus(Integer type, String msg) {
|
||||
this.type = type;
|
||||
this.msg = msg;
|
||||
}
|
||||
|
||||
public Integer getType() {
|
||||
return this.type;
|
||||
}
|
||||
|
||||
public String getMsg() {
|
||||
return this.msg;
|
||||
}
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
package org.dromara.common.core.enums;
|
||||
|
||||
/**
|
||||
* @Desc: 性别 枚举
|
||||
*/
|
||||
public enum Sex {
|
||||
woman(0, "女"),
|
||||
man(1, "男"),
|
||||
secret(2, "保密");
|
||||
|
||||
public final Integer type;
|
||||
public final String value;
|
||||
|
||||
Sex(Integer type, String value) {
|
||||
this.type = type;
|
||||
this.value = value;
|
||||
}
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
package org.dromara.common.core.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 租户签约状态
|
||||
* 0->待提交
|
||||
* 1->待审核
|
||||
* 2->待确认
|
||||
* 3->有效
|
||||
* 4->无效
|
||||
* 5->过期
|
||||
*
|
||||
* @author huk
|
||||
*/
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum TenantSignStatus
|
||||
{
|
||||
TO_BE_SUBMITTED("0", "待提交"),
|
||||
TO_BE_REVIEWED("1", "待审核"),
|
||||
TO_BE_CONFIRMED("2", "待确认"),
|
||||
IN_EFFECT("3", "签约生效"),
|
||||
INVALID("4", "无效"),
|
||||
EXPIRED("5", "过期");
|
||||
|
||||
private final String status;
|
||||
private final String desc;
|
||||
|
||||
}
|
@ -1,43 +0,0 @@
|
||||
package org.dromara.common.core.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 租户类型枚举 2->商家,3->代理,4->平台,5->团长
|
||||
*/
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum TenantType {
|
||||
|
||||
MERCHANT(2, "商家"),
|
||||
AGENT(3, "代理"),
|
||||
PLATFORM(4, "平台"),
|
||||
REFERENCE(5, "团长");
|
||||
|
||||
private final int type;
|
||||
|
||||
private final String desc;
|
||||
|
||||
|
||||
public static TenantType valueOf(int type) {
|
||||
for (TenantType tenantType : TenantType.values()) {
|
||||
if (tenantType.type == type) {
|
||||
return tenantType;
|
||||
}
|
||||
}
|
||||
throw new IllegalArgumentException("No enum constant with type " + type);
|
||||
}
|
||||
|
||||
public static boolean allowCreateByType(Integer currentTenantType, Integer newTenantType) {
|
||||
boolean allow = false;
|
||||
if (currentTenantType == PLATFORM.type) {
|
||||
// 超级管理租户创建租户没有限制
|
||||
allow = true;
|
||||
} else if (currentTenantType == TenantType.AGENT.type) {
|
||||
// 代理商只能创建商铺或达人
|
||||
allow = newTenantType == TenantType.AGENT.type || newTenantType == TenantType.MERCHANT.type || newTenantType == TenantType.REFERENCE.type;
|
||||
}
|
||||
return allow;
|
||||
}
|
||||
}
|
@ -1,17 +0,0 @@
|
||||
package org.dromara.common.core.enums;
|
||||
|
||||
/**
|
||||
* @Desc: 是否 枚举
|
||||
*/
|
||||
public enum YesOrNo {
|
||||
NO(0, "否"),
|
||||
YES(1, "是");
|
||||
|
||||
public final Integer type;
|
||||
public final String value;
|
||||
|
||||
YesOrNo(Integer type, String value) {
|
||||
this.type = type;
|
||||
this.value = value;
|
||||
}
|
||||
}
|
@ -1,8 +1,6 @@
|
||||
package org.dromara.common.core.exception;
|
||||
|
||||
import lombok.*;
|
||||
import org.dromara.common.core.constant.ResultCode;
|
||||
import org.dromara.common.core.exception.base.BaseException;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
@ -43,10 +41,6 @@ public final class ServiceException extends RuntimeException {
|
||||
this.message = message;
|
||||
this.code = code;
|
||||
}
|
||||
public ServiceException(ResultCode resultCode) {
|
||||
this.message = resultCode.message();
|
||||
this.code = resultCode.code();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage() {
|
||||
@ -62,16 +56,4 @@ public final class ServiceException extends RuntimeException {
|
||||
this.detailMessage = detailMessage;
|
||||
return this;
|
||||
}
|
||||
|
||||
public static ServiceException of(String message) {
|
||||
return new ServiceException(message);
|
||||
}
|
||||
|
||||
public static ServiceException of(Integer code, String message) {
|
||||
return new ServiceException(message, code);
|
||||
}
|
||||
|
||||
public static ServiceException of(ResultCode resultCode) {
|
||||
return new ServiceException(resultCode);
|
||||
}
|
||||
}
|
||||
|
@ -1,104 +0,0 @@
|
||||
package org.dromara.common.core.utils;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* Created by yangyincong on 15/8/16.
|
||||
* ID生成器 workId (1~4)
|
||||
*/
|
||||
public class IDGenerator {
|
||||
private final static Logger logger = LoggerFactory.getLogger(IDGenerator.class);
|
||||
private final static long twepoch = 1361753741828L;
|
||||
private final static long workerIdBits = 4L;
|
||||
private final static long maxWorkerId = -1L ^ -1L << workerIdBits;
|
||||
private final static long sequenceBits = 10L;
|
||||
private long workerId;
|
||||
private long sequence = 0L;
|
||||
|
||||
private final static long workerIdShift = sequenceBits;
|
||||
private final static long timestampLeftShift = sequenceBits + workerIdBits;
|
||||
private final static long sequenceMask = -1L ^ -1L << sequenceBits;
|
||||
|
||||
private long lastTimestamp = -1L;
|
||||
|
||||
private IDGenerator(final long workerId) {
|
||||
super();
|
||||
this.workerId = workerId;
|
||||
}
|
||||
|
||||
public static long generateMinId(int wid, long time) {
|
||||
return (time - twepoch << timestampLeftShift) | (wid << workerIdShift);
|
||||
}
|
||||
|
||||
public synchronized long nextId() {
|
||||
long timestamp = this.timeGen();
|
||||
if (this.lastTimestamp == timestamp) {
|
||||
this.sequence = (this.sequence + 1) & sequenceMask;
|
||||
if (this.sequence == 0) {
|
||||
timestamp = this.tilNextMillis(this.lastTimestamp);
|
||||
}
|
||||
} else {
|
||||
this.sequence = 0;
|
||||
}
|
||||
if (timestamp < this.lastTimestamp) {
|
||||
try {
|
||||
throw new Exception(
|
||||
String.format(
|
||||
"Clock moved backwards. Refusing to generate id for %d milliseconds",
|
||||
this.lastTimestamp - timestamp));
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
this.lastTimestamp = timestamp;
|
||||
long nextId = ((timestamp - twepoch << timestampLeftShift))
|
||||
| (this.workerId << workerIdShift) | (this.sequence);
|
||||
return nextId;
|
||||
}
|
||||
|
||||
public static long generateMaxId(long wid, long time) {
|
||||
return (time - twepoch << timestampLeftShift) | (wid << workerIdShift) | sequenceMask;
|
||||
}
|
||||
|
||||
private long tilNextMillis(final long lastTimestamp) {
|
||||
long timestamp = this.timeGen();
|
||||
while (timestamp <= lastTimestamp) {
|
||||
timestamp = this.timeGen();
|
||||
}
|
||||
return timestamp;
|
||||
}
|
||||
|
||||
private long timeGen() {
|
||||
return System.currentTimeMillis();
|
||||
}
|
||||
|
||||
private static IDGenerator generator;
|
||||
|
||||
public static synchronized void init(Long workerId) throws Exception {
|
||||
workerId = workerId % maxWorkerId;
|
||||
logger.info("程序中init的workid为:{}", workerId);
|
||||
if (workerId > maxWorkerId || workerId < 0) {
|
||||
throw new IllegalArgumentException(String.format(
|
||||
"worker Id can't be greater than %d or less than 0",
|
||||
IDGenerator.maxWorkerId));
|
||||
}
|
||||
generator = new IDGenerator(workerId);
|
||||
}
|
||||
|
||||
public static Long generateId() {
|
||||
if (null == generator) {
|
||||
synchronized (IDGenerator.class) {
|
||||
if (null == generator) {
|
||||
try {
|
||||
init(2L);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return generator.nextId();
|
||||
}
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
package org.dromara.common.core.utils;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public class LocalDataUtil {
|
||||
|
||||
private static ThreadLocal<Map<String, Object>> LOCAL_VARS = new ThreadLocal<Map<String, Object>>();
|
||||
|
||||
public static void setVar(String key, Object obj) {
|
||||
Map<String, Object> stringObjectMap = LOCAL_VARS.get();
|
||||
if (null == stringObjectMap) {
|
||||
stringObjectMap = new HashMap<>();
|
||||
LOCAL_VARS.set(stringObjectMap);
|
||||
}
|
||||
stringObjectMap.put(key, obj);
|
||||
}
|
||||
|
||||
public static Object getVar(String key) {
|
||||
Map<String, Object> stringObjectMap = LOCAL_VARS.get();
|
||||
return null != stringObjectMap ? stringObjectMap.get(key) : null;
|
||||
}
|
||||
|
||||
}
|
@ -1,14 +0,0 @@
|
||||
package org.dromara.common.core.utils;
|
||||
|
||||
/**
|
||||
* 手机号工具类
|
||||
*/
|
||||
public class PhoneUtils {
|
||||
|
||||
public static String hidePhone(String phone){
|
||||
if (StringUtils.isEmpty(phone) || phone.length() < 11){
|
||||
throw new RuntimeException("手机号格式错误");
|
||||
}
|
||||
return phone.substring(0, 3) + "****" + phone.substring(7, 11);
|
||||
}
|
||||
}
|
@ -1,120 +0,0 @@
|
||||
package org.dromara.common.core.utils;
|
||||
|
||||
|
||||
import org.springframework.security.core.Authentication;
|
||||
import org.dromara.common.core.constant.HttpStatus;
|
||||
import org.dromara.common.core.domain.model.LoginUser;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.springframework.security.core.context.SecurityContextHolder;
|
||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||
|
||||
/**
|
||||
* 安全服务工具类
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
public class SecurityUtils
|
||||
{
|
||||
private static BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
|
||||
/**
|
||||
* 用户ID
|
||||
**/
|
||||
public static Long getUserId()
|
||||
{
|
||||
try
|
||||
{
|
||||
return getLoginUser().getUserId();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new ServiceException("获取用户ID异常", HttpStatus.UNAUTHORIZED);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取部门ID
|
||||
**/
|
||||
public static Long getDeptId()
|
||||
{
|
||||
try
|
||||
{
|
||||
return getLoginUser().getDeptId();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new ServiceException("获取部门ID异常", HttpStatus.UNAUTHORIZED);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户账户
|
||||
**/
|
||||
public static String getUsername()
|
||||
{
|
||||
try
|
||||
{
|
||||
return getLoginUser().getUsername();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new ServiceException("获取用户账户异常", HttpStatus.UNAUTHORIZED);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户
|
||||
**/
|
||||
public static LoginUser getLoginUser()
|
||||
{
|
||||
try
|
||||
{
|
||||
return (LoginUser) getAuthentication().getPrincipal();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new ServiceException("获取用户信息异常", HttpStatus.UNAUTHORIZED);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取Authentication
|
||||
*/
|
||||
public static Authentication getAuthentication()
|
||||
{
|
||||
return SecurityContextHolder.getContext().getAuthentication();
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成BCryptPasswordEncoder密码
|
||||
*
|
||||
* @param password 密码
|
||||
* @return 加密字符串
|
||||
*/
|
||||
public static String encryptPassword(String password) {
|
||||
return passwordEncoder.encode(password);
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断密码是否相同
|
||||
*
|
||||
* @param rawPassword 真实密码
|
||||
* @param encodedPassword 加密后字符
|
||||
* @return 结果
|
||||
*/
|
||||
public static boolean matchesPassword(String rawPassword, String encodedPassword)
|
||||
{
|
||||
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
|
||||
return passwordEncoder.matches(rawPassword, encodedPassword);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否为管理员
|
||||
*
|
||||
* @param userId 用户ID
|
||||
* @return 结果
|
||||
*/
|
||||
public static boolean isAdmin(Long userId)
|
||||
{
|
||||
return userId != null && 1L == userId;
|
||||
}
|
||||
}
|
@ -62,40 +62,6 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
|
||||
return StrUtil.trim(str);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* * 判断一个对象是否为空
|
||||
*
|
||||
* @param object Object
|
||||
* @return true:为空 false:非空
|
||||
*/
|
||||
public static boolean isNull(Object object)
|
||||
{
|
||||
return object == null;
|
||||
}
|
||||
|
||||
/**
|
||||
* * 判断一个对象是否非空
|
||||
*
|
||||
* @param object Object
|
||||
* @return true:非空 false:空
|
||||
*/
|
||||
public static boolean isNotNull(Object object)
|
||||
{
|
||||
return !isNull(object);
|
||||
}
|
||||
|
||||
/**
|
||||
* * 判断一个对象是否是数组类型(Java基本型别的数组)
|
||||
*
|
||||
* @param object 对象
|
||||
* @return true:是数组 false:不是数组
|
||||
*/
|
||||
public static boolean isArray(Object object)
|
||||
{
|
||||
return isNotNull(object) && object.getClass().isArray();
|
||||
}
|
||||
|
||||
/**
|
||||
* 截取字符串
|
||||
*
|
||||
|
@ -1,77 +0,0 @@
|
||||
package org.dromara.common.core.utils.file;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
/**
|
||||
* 文件类型工具类
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
public class FileTypeUtils
|
||||
{
|
||||
/**
|
||||
* 获取文件类型
|
||||
* <p>
|
||||
* 例如: ruoyi.txt, 返回: txt
|
||||
*
|
||||
* @param file 文件名
|
||||
* @return 后缀(不含".")
|
||||
*/
|
||||
public static String getFileType(File file)
|
||||
{
|
||||
if (null == file)
|
||||
{
|
||||
return StringUtils.EMPTY;
|
||||
}
|
||||
return getFileType(file.getName());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取文件类型
|
||||
* <p>
|
||||
* 例如: ruoyi.txt, 返回: txt
|
||||
*
|
||||
* @param fileName 文件名
|
||||
* @return 后缀(不含".")
|
||||
*/
|
||||
public static String getFileType(String fileName)
|
||||
{
|
||||
int separatorIndex = fileName.lastIndexOf(".");
|
||||
if (separatorIndex < 0)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
return fileName.substring(separatorIndex + 1).toLowerCase();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取文件类型
|
||||
*
|
||||
* @param photoByte 文件字节码
|
||||
* @return 后缀(不含".")
|
||||
*/
|
||||
public static String getFileExtendName(byte[] photoByte)
|
||||
{
|
||||
String strFileExtendName = "JPG";
|
||||
if ((photoByte[0] == 71) && (photoByte[1] == 73) && (photoByte[2] == 70) && (photoByte[3] == 56)
|
||||
&& ((photoByte[4] == 55) || (photoByte[4] == 57)) && (photoByte[5] == 97))
|
||||
{
|
||||
strFileExtendName = "GIF";
|
||||
}
|
||||
else if ((photoByte[6] == 74) && (photoByte[7] == 70) && (photoByte[8] == 73) && (photoByte[9] == 70))
|
||||
{
|
||||
strFileExtendName = "JPG";
|
||||
}
|
||||
else if ((photoByte[0] == 66) && (photoByte[1] == 77))
|
||||
{
|
||||
strFileExtendName = "BMP";
|
||||
}
|
||||
else if ((photoByte[1] == 80) && (photoByte[2] == 78) && (photoByte[3] == 71))
|
||||
{
|
||||
strFileExtendName = "PNG";
|
||||
}
|
||||
return strFileExtendName;
|
||||
}
|
||||
}
|
@ -1,7 +1,5 @@
|
||||
package org.dromara.common.core.utils.file;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
|
||||
/**
|
||||
* 媒体类型工具类
|
||||
*
|
||||
@ -39,29 +37,4 @@ public class MimeTypeUtils {
|
||||
// pdf
|
||||
"pdf"};
|
||||
|
||||
|
||||
public static String getExtension(String prefix)
|
||||
{
|
||||
switch (prefix)
|
||||
{
|
||||
case IMAGE_PNG:
|
||||
return "png";
|
||||
case IMAGE_JPG:
|
||||
return "jpg";
|
||||
case IMAGE_JPEG:
|
||||
return "jpeg";
|
||||
case IMAGE_BMP:
|
||||
return "bmp";
|
||||
case IMAGE_GIF:
|
||||
return "gif";
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isImg(String contentType) {
|
||||
String ext = MimeTypeUtils.getExtension(contentType);
|
||||
return StrUtil.isNotEmpty(ext);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -21,6 +21,11 @@
|
||||
<artifactId>ruoyi-common-core</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springdoc</groupId>
|
||||
<artifactId>springdoc-openapi-starter-webmvc-api</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.github.therapi</groupId>
|
||||
<artifactId>therapi-runtime-javadoc</artifactId>
|
||||
@ -31,12 +36,6 @@
|
||||
<artifactId>jackson-module-kotlin</artifactId>
|
||||
</dependency>
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>com.github.xingfudeshi</groupId>
|
||||
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
|
@ -310,10 +310,4 @@ public class EncryptUtils {
|
||||
return SmUtil.sm3(data);
|
||||
}
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
String data = "123456";
|
||||
String password="1234567890123456";
|
||||
System.out.println(encryptByAes(data,password));
|
||||
}
|
||||
}
|
||||
|
@ -1,178 +0,0 @@
|
||||
package org.dromara.common.excel.annotation;
|
||||
|
||||
|
||||
import org.dromara.common.excel.utils.ExcelHandlerAdapter;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 自定义导出Excel数据注解
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target(ElementType.FIELD)
|
||||
public @interface Excel
|
||||
{
|
||||
/**
|
||||
* 导出时在excel中排序
|
||||
*/
|
||||
public int sort() default Integer.MAX_VALUE;
|
||||
|
||||
/**
|
||||
* 导出到Excel中的名字.
|
||||
*/
|
||||
public String name() default "";
|
||||
|
||||
/**
|
||||
* 日期格式, 如: yyyy-MM-dd
|
||||
*/
|
||||
public String dateFormat() default "";
|
||||
|
||||
/**
|
||||
* 如果是字典类型,请设置字典的type值 (如: sys_user_sex)
|
||||
*/
|
||||
public String dictType() default "";
|
||||
|
||||
/**
|
||||
* 读取内容转表达式 (如: 0=男,1=女,2=未知)
|
||||
*/
|
||||
public String readConverterExp() default "";
|
||||
|
||||
/**
|
||||
* 分隔符,读取字符串组内容
|
||||
*/
|
||||
public String separator() default ",";
|
||||
|
||||
/**
|
||||
* BigDecimal 精度 默认:-1(默认不开启BigDecimal格式化)
|
||||
*/
|
||||
public int scale() default -1;
|
||||
|
||||
/**
|
||||
* BigDecimal 舍入规则 默认:BigDecimal.ROUND_HALF_EVEN
|
||||
*/
|
||||
public int roundingMode() default BigDecimal.ROUND_HALF_EVEN;
|
||||
|
||||
/**
|
||||
* 导出类型(0数字 1字符串)
|
||||
*/
|
||||
public ColumnType cellType() default ColumnType.STRING;
|
||||
|
||||
/**
|
||||
* 导出时在excel中每个列的高度 单位为字符
|
||||
*/
|
||||
public double height() default 14;
|
||||
|
||||
/**
|
||||
* 导出时在excel中每个列的宽 单位为字符
|
||||
*/
|
||||
public double width() default 16;
|
||||
|
||||
/**
|
||||
* 文字后缀,如% 90 变成90%
|
||||
*/
|
||||
public String suffix() default "";
|
||||
|
||||
/**
|
||||
* 当值为空时,字段的默认值
|
||||
*/
|
||||
public String defaultValue() default "";
|
||||
|
||||
/**
|
||||
* 提示信息
|
||||
*/
|
||||
public String prompt() default "";
|
||||
|
||||
/**
|
||||
* 设置只能选择不能输入的列内容.
|
||||
*/
|
||||
public String[] combo() default {};
|
||||
|
||||
/**
|
||||
* 是否导出数据,应对需求:有时我们需要导出一份模板,这是标题需要但内容需要用户手工填写.
|
||||
*/
|
||||
public boolean isExport() default true;
|
||||
|
||||
/**
|
||||
* 另一个类中的属性名称,支持多级获取,以小数点隔开
|
||||
*/
|
||||
public String targetAttr() default "";
|
||||
|
||||
/**
|
||||
* 是否自动统计数据,在最后追加一行统计数据总和
|
||||
*/
|
||||
public boolean isStatistics() default false;
|
||||
|
||||
/**
|
||||
* 导出字段对齐方式(0:默认;1:靠左;2:居中;3:靠右)
|
||||
*/
|
||||
public Align align() default Align.AUTO;
|
||||
|
||||
/**
|
||||
* 自定义数据处理器
|
||||
*/
|
||||
public Class<?> handler() default ExcelHandlerAdapter.class;
|
||||
|
||||
/**
|
||||
* 自定义数据处理器参数
|
||||
*/
|
||||
public String[] args() default {};
|
||||
|
||||
public enum Align
|
||||
{
|
||||
AUTO(0), LEFT(1), CENTER(2), RIGHT(3);
|
||||
private final int value;
|
||||
|
||||
Align(int value)
|
||||
{
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public int value()
|
||||
{
|
||||
return this.value;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 字段类型(0:导出导入;1:仅导出;2:仅导入)
|
||||
*/
|
||||
Type type() default Type.ALL;
|
||||
|
||||
public enum Type
|
||||
{
|
||||
ALL(0), EXPORT(1), IMPORT(2);
|
||||
private final int value;
|
||||
|
||||
Type(int value)
|
||||
{
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public int value()
|
||||
{
|
||||
return this.value;
|
||||
}
|
||||
}
|
||||
|
||||
public enum ColumnType
|
||||
{
|
||||
NUMERIC(0), STRING(1), IMAGE(2);
|
||||
private final int value;
|
||||
|
||||
ColumnType(int value)
|
||||
{
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public int value()
|
||||
{
|
||||
return this.value;
|
||||
}
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user