瀏覽代碼

添加新项目文件

添加新项目文件
zhiqiang.yu 4 月之前
父節點
當前提交
0ebdda39d0

+ 38 - 0
poyee-common/.gitignore

@@ -0,0 +1,38 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### IntelliJ IDEA ###
+.idea/modules.xml
+.idea/jarRepositories.xml
+.idea/compiler.xml
+.idea/libraries/
+*.iws
+*.iml
+*.ipr
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store

+ 3 - 0
poyee-common/.idea/.gitignore

@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml

+ 7 - 0
poyee-common/.idea/MarsCodeWorkspaceAppSettings.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="com.codeverse.userSettings.MarscodeWorkspaceAppSettingsState">
+    <option name="chatAppRouterInfo" value="chat" />
+    <option name="ckgOperationStatus" value="SUCCESS" />
+  </component>
+</project>

+ 15 - 0
poyee-common/.idea/encodings.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Encoding">
+    <file url="file://$PROJECT_DIR$/poyi-common-framework/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/poyi-common-framework/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/poyi-common-service/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/poyi-common-service/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/poyi-common-web/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/poyi-common-web/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/poyi-common/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/poyi-common/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
+  </component>
+</project>

+ 19 - 0
poyee-common/.idea/misc.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ExternalStorageConfigurationManager" enabled="true" />
+  <component name="MavenProjectsManager">
+    <option name="originalFiles">
+      <list>
+        <option value="$PROJECT_DIR$/pom.xml" />
+      </list>
+    </option>
+    <option name="ignoredFiles">
+      <set>
+        <option value="$PROJECT_DIR$/poyi-common/pom.xml" />
+      </set>
+    </option>
+  </component>
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="17" project-jdk-type="JavaSDK">
+    <output url="file://$PROJECT_DIR$/out" />
+  </component>
+</project>

+ 7 - 0
poyee-common/.idea/vcs.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$/.." vcs="Git" />
+    <mapping directory="$PROJECT_DIR$" vcs="Git" />
+  </component>
+</project>

+ 131 - 0
poyee-common/pom.xml

@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.poyee</groupId>
+    <artifactId>poyee-common</artifactId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>pom</packaging>
+    <modules>
+        <module>poyi-common-web</module>
+        <module>poyi-common-service</module>
+        <module>poyi-common-framework</module>
+    </modules>
+    <properties>
+        <!-- 升级 JDK 和 Spring Boot 版本 -->
+        <maven.compiler.source>17</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
+        <java.version>17</java.version>
+        <spring-boot.version>3.2.0</spring-boot.version>
+        <!-- 需要调整的依赖版本 -->
+        <druid.version>1.2.21</druid.version> <!-- 使用 Spring Boot 3.x 专用 Starter -->
+        <pagehelper.boot.version>1.4.6</pagehelper.boot.version> <!-- 适配 Spring Boot 3 -->
+        <!-- 移除 Swagger 2.9.2(改用 springdoc-openapi) -->
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+        <java.version>1.8</java.version>
+        <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
+        <druid.version>1.2.19</druid.version>
+        <bitwalker.version>1.19</bitwalker.version>
+        <kaptcha.version>2.3.2</kaptcha.version>
+        <swagger.version>2.9.2</swagger.version>
+        <pagehelper.boot.version>1.3.0</pagehelper.boot.version>
+        <fastjson.version>2.0.10</fastjson.version>
+        <oshi.version>5.2.5</oshi.version>
+        <jna.version>5.5.0</jna.version>
+        <commons.io.version>2.5</commons.io.version>
+        <commons.fileupload.version>1.3.3</commons.fileupload.version>
+        <poi.version>3.17</poi.version>
+        <velocity.version>1.7</velocity.version>
+        <skipTests>true</skipTests>
+    </properties>
+
+    <!-- 依赖声明 -->
+    <dependencyManagement>
+        <dependencies>
+            <!-- SpringBoot的依赖配置-->
+
+            <dependency>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-starter-test</artifactId>
+                <version>2.1.17.RELEASE</version>
+                <scope>test</scope>
+            </dependency>
+            <!--阿里数据库连接池 -->
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>druid-spring-boot-starter</artifactId>
+                <version>${druid.version}</version>
+            </dependency>
+            <!-- pagehelper 分页插件 -->
+
+            <!-- swagger2-->
+            <dependency>
+                <groupId>io.springfox</groupId>
+                <artifactId>springfox-swagger2</artifactId>
+                <version>${swagger.version}</version>
+                <exclusions>
+                    <exclusion>
+                        <groupId>io.swagger</groupId>
+                        <artifactId>swagger-annotations</artifactId>
+                    </exclusion>
+                    <exclusion>
+                        <groupId>io.swagger</groupId>
+                        <artifactId>swagger-models</artifactId>
+                    </exclusion>
+                </exclusions>
+            </dependency>
+            <!-- swagger2-UI-->
+            <dependency>
+                <groupId>io.springfox</groupId>
+                <artifactId>springfox-swagger-ui</artifactId>
+                <version>${swagger.version}</version>
+            </dependency>
+            <!--io常用工具类 -->
+            <dependency>
+                <groupId>commons-io</groupId>
+                <artifactId>commons-io</artifactId>
+                <version>${commons.io.version}</version>
+            </dependency>
+            <!-- 阿里JSON解析器 -->
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>fastjson</artifactId>
+                <version>${fastjson.version}</version>
+            </dependency>
+
+            <!-- 使用 Spring Boot 3.x BOM -->
+            <dependency>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>${spring-boot.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+
+            <!-- 其他依赖适配 Spring Boot 3.x -->
+            <dependency>
+                <groupId>com.alibaba</groupId>
+                <artifactId>druid-spring-boot-3-starter</artifactId>
+                <version>${druid.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.github.pagehelper</groupId>
+                <artifactId>pagehelper-spring-boot-starter</artifactId>
+                <version>${pagehelper.boot.version}</version>
+            </dependency>
+            <!-- 替换 Swagger 为 springdoc-openapi -->
+            <dependency>
+                <groupId>org.springdoc</groupId>
+                <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
+                <version>2.3.0</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+</project>

+ 20 - 0
poyee-common/poyi-common-framework/pom.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.poyee</groupId>
+        <artifactId>poyee-common</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>poyi-common-framework</artifactId>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+</project>

+ 17 - 0
poyee-common/poyi-common-framework/src/main/java/com/poyee/Main.java

@@ -0,0 +1,17 @@
+package com.poyee;
+
+//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
+// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
+public class Main {
+    public static void main(String[] args) {
+        //TIP Press <shortcut actionId="ShowIntentionActions"/> with your caret at the highlighted text
+        // to see how IntelliJ IDEA suggests fixing it.
+        System.out.printf("Hello and welcome!");
+
+        for (int i = 1; i <= 5; i++) {
+            //TIP Press <shortcut actionId="Debug"/> to start debugging your code. We have set one <icon src="AllIcons.Debugger.Db_set_breakpoint"/> breakpoint
+            // for you, but you can always add more by pressing <shortcut actionId="ToggleLineBreakpoint"/>.
+            System.out.println("i = " + i);
+        }
+    }
+}

+ 20 - 0
poyee-common/poyi-common-service/pom.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.poyee</groupId>
+        <artifactId>poyee-common</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>poyi-common-service</artifactId>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+</project>

+ 17 - 0
poyee-common/poyi-common-service/src/main/java/com/poyee/Main.java

@@ -0,0 +1,17 @@
+package com.poyee;
+
+//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
+// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
+public class Main {
+    public static void main(String[] args) {
+        //TIP Press <shortcut actionId="ShowIntentionActions"/> with your caret at the highlighted text
+        // to see how IntelliJ IDEA suggests fixing it.
+        System.out.printf("Hello and welcome!");
+
+        for (int i = 1; i <= 5; i++) {
+            //TIP Press <shortcut actionId="Debug"/> to start debugging your code. We have set one <icon src="AllIcons.Debugger.Db_set_breakpoint"/> breakpoint
+            // for you, but you can always add more by pressing <shortcut actionId="ToggleLineBreakpoint"/>.
+            System.out.println("i = " + i);
+        }
+    }
+}

+ 64 - 0
poyee-common/poyi-common-web/pom.xml

@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.poyee</groupId>
+        <artifactId>poyee-common</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>poyi-common-web</artifactId>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-autoconfigure</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.codehaus.janino</groupId>
+            <artifactId>janino</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.sndyuk</groupId>
+            <artifactId>logback-more-appenders</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.fluentd</groupId>
+            <artifactId>fluent-logger</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-test-autoconfigure</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.micrometer</groupId>
+            <artifactId>micrometer-registry-prometheus</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba.fastjson2</groupId>
+            <artifactId>fastjson2</artifactId>
+            <version>2.0.10</version>
+        </dependency>
+    </dependencies>
+
+</project>

+ 32 - 0
poyee-common/poyi-common-web/src/main/java/com/poyee/PoyiCommonApplication.java

@@ -0,0 +1,32 @@
+package com.poyee;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.FilterType;
+import org.springframework.scheduling.annotation.EnableAsync;
+
+/**
+ * 启动程序
+ *
+ * @author tzy
+ */
+@SpringBootApplication(scanBasePackages = "com.poyee")
+@ComponentScan(excludeFilters = {
+        @ComponentScan.Filter(type = FilterType.REGEX,pattern = "com.tzy.framework.shiro.*"),
+        @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {DataSourceAutoConfiguration.class, SecurityAutoConfiguration.class})
+})
+@EnableAsync
+@EnableCaching
+@Slf4j
+public class PoyiCommonApplication {
+    // 将方法名从 Main 修改为 main
+    public static void main(String[] args) {
+        SpringApplication.run(PoyiCommonApplication.class, args);
+       log.info("(♥◠‿◠)ノ゙ app启动成功   ლ(´ڡ`ლ)゙");
+    }
+}

+ 375 - 0
poyee-common/poyi-common-web/src/main/java/com/poyee/api/controller/BaseApiController.java

@@ -0,0 +1,375 @@
+package com.poyee.api.controller;
+
+//import com.alibaba.fastjson.JSONObject;
+//import com.github.pagehelper.util.StringUtil;
+//import com.tzy.annotation.ApiLog;
+//import com.tzy.annotation.RequireRoles;
+//import com.tzy.app.domain.*;
+//import com.tzy.app.service.*;
+//import com.tzy.common.constant.Constants;
+//import com.tzy.common.core.domain.entity.SysDictData;
+//import com.tzy.common.dto.InDto;
+//import com.tzy.common.dto.IpAddrDTO;
+//import com.tzy.common.dto.OutDTO;
+//import com.tzy.common.enums.BusinessType;
+//import com.tzy.common.exception.ServiceException;
+//import com.tzy.common.utils.*;
+//import com.tzy.common.utils.bean.DozerUtils;
+//import com.tzy.common.utils.qiniu.QiniuUtil;
+//import com.tzy.coupon.card.domain.AppUserCardRecord;
+//import com.tzy.coupon.card.domain.TzyCardBaseInfo;
+//import com.tzy.coupon.card.service.IAppUserCardRecordService;
+//import com.tzy.coupon.card.service.ITzyCardBaseInfoService;
+//import com.tzy.dashboard.domain.TzyChannelShare;
+//import com.tzy.dashboard.service.ITzyChannelShareService;
+//import com.tzy.framework.util.RedisUtils;
+//import com.tzy.framework.util.SystemConstant;
+//import com.tzy.sportcard.api.bean.marketplace.AppVersionParam;
+//import com.tzy.sportcard.api.domain.AppUserInfoDto;
+//import com.tzy.sportcard.api.domain.ApplicationInfo;
+//import com.tzy.sportcard.api.dto.group.AppCarouselPictureDTO;
+//import com.tzy.sportcard.api.service.BaseApiService;
+//import com.tzy.sportcard.api.service.GroupApiService;
+//import com.tzy.sportcard.api.service.MineApiService;
+//import com.tzy.sportcard.api.service.WeChatApiService;
+//import com.tzy.sportcard.base.service.CommonCacheService;
+//import com.tzy.sportcard.group.service.ICardGroupOrderInfoService;
+//import com.tzy.system.service.ISysDictDataService;
+//import com.tzy.util.HobbyStocksApiUtils;
+//import com.tzy.util.RandomUtil;
+//import com.tzy.util.RedisHandUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * 公共基础接口
+ */
+@Slf4j
+@RestController
+@RequestMapping("/api")
+public class BaseApiController {
+//    @Autowired
+//    private MineApiService mineApiService;
+//    @Autowired
+//    private IAppAccountService appAccountService;
+//    @Autowired
+//    private IAppBaseUserService appBaseUserService;
+//    @Autowired
+//    private IAppRoleService appRoleService;
+//    @Autowired
+//    private ITzyCardBaseInfoService cardBaseInfoService;
+//    @Autowired
+//    private WeChatApiService weChatApiService;
+//    @Autowired
+//    private IAppUserCardRecordService appUserCardRecordService;
+//    @Autowired
+//    private HobbyStocksApiUtils hobbyStocksApiUtils;
+//    @Autowired
+//    private IAppMenuService appMenuService;
+//    @Autowired
+//    private BaseApiService baseApiService;
+//    @Autowired
+//    private ITzyChannelShareService tzyChannelShareService;
+//    @Autowired
+//    private ICardGroupOrderInfoService cardGroupOrderInfoService;
+//    @Autowired
+//    private RedisUtils redisUtils;
+//    @Autowired
+//    private RedisHandUtil redisHandUtil;
+//    @Autowired
+//    private ISysDictDataService dictDataService;
+//    @Autowired
+//    private IAppCarouselPictureService appCarouselPictureService;
+//    @Value("${wx.default_avatar}")
+//    private String default_avatar ;
+//    @Value("${pay.alipay.app.alipayPublicKey}")
+//    private String privateAuth;
+//    @Autowired
+//    @Qualifier("threadPoolTaskExecutor")
+//    private ThreadPoolTaskExecutor pools;
+//    @Autowired
+//    private CommonCacheService commonCacheService;
+//    @Autowired
+//    private GroupApiService groupApiService;
+
+//    //@PostConstruct
+//    public void initMsgTemplate(){
+//        AppMenu appMenu = new AppMenu();
+//        appMenu.setStatus("0");
+//        List<AppMenu> appMenus = appMenuService.selectAppMenuList(appMenu);
+//        redisUtils.lCommit("login", appMenus);
+//        redisHandUtil.lDataDistinct("login","Name");
+//    }
+//
+//    /**
+//     * 检测app是否需要更新
+//     * @param inDto
+//     * @return
+//     */
+//    @ApiLog(title = "检测app是否需要更新", businessType = BusinessType.SEARCH)
+//    @ResponseBody
+//    @RequestMapping(value = "/checkAppVersion", method = RequestMethod.POST)
+//    public OutDTO checkAppVersion(@RequestBody InDto inDto){
+//        if(null == inDto)return OutDTO.error(10040,"参数不能为空!");
+//        //验证来源
+//        //String userType = inDto.getUserType();
+//        //if(StringUtils.isEmpty(userType) || (!UserType.WX_AUTH.equals(userType)
+//        //    && !userType.startsWith(UserType.THIRD))
+//        //){
+//        //    return OutDTO.ok().put("data","没有更新");
+//        //}
+//        String atVersion = inDto.getString("atVersion");
+//        SysDictData dictData = new SysDictData();
+//        dictData.setDictType("stop_update_version");
+//        dictData.setDictLabel(atVersion);
+//        dictData.setStatus(Constants.STATUS_OK);
+//        List<SysDictData> list = dictDataService.selectDictDataList(dictData);
+//        if(!list.isEmpty()){
+//            return OutDTO.ok().put("data","没有更新");
+//        }
+//
+//        String appkey = inDto.getString("appkey");
+//        String appName = inDto.getString("appName");
+//        if(StringUtils.isEmpty(appName) || StringUtils.isEmpty(appkey)
+//                || StringUtils.isEmpty(atVersion)) return OutDTO.ok().put("data","没有更新");
+//        //查询 最新版本
+//        ApplicationInfo applicationInfo = baseApiService.selectNextVersionApp(appkey, appName, atVersion);
+//        if(null == applicationInfo) return OutDTO.ok().put("data","没有更新");
+//        String releaseType = applicationInfo.getReleaseType();
+//        if(StringUtils.isNotEmpty(releaseType) && "private".equals(releaseType)) return OutDTO.ok().put("data","没有更新");
+//        return OutDTO.ok().put("appinfo",applicationInfo);
+//    }
+//
+//    @ApiLog(title = "字典查询信息接口", businessType = BusinessType.SEARCH)
+//    @PostMapping("/common/type")
+//    @ResponseBody
+//    public OutDTO getCommonDictData(@RequestBody InDto inDto) {
+//        SysDictData dictData = new SysDictData();
+//        dictData.setDictType(inDto.getString("type"));
+//        String status = inDto.getString("status");
+//        if(StringUtils.isEmpty(status)){
+//            dictData.setStatus(Constants.STATUS_OK);
+//        }else if (!Constants.All.equals(status)){
+//            dictData.setStatus(status);
+//        }
+//
+//        List<SysDictData> list = dictDataService.selectDictDataList(dictData);
+//        return OutDTO.ok().put("list",list);
+//    }
+//
+//    @ApiLog(title = "版本审核校验", businessType = BusinessType.SEARCH)
+//    @PostMapping("/versionCheck")
+//    @ResponseBody
+//    public OutDTO versionCheck(@RequestBody InDto inDto) {
+//        String version = inDto.getString("version");
+//        if (StringUtils.isEmpty(version)) {
+//            return OutDTO.error(510,"版本号为空!");
+//        }
+//        Integer appVersion = Integer.valueOf(version.replaceAll("\\.", StringUtils.NULLSTR));
+//        SysDictData dictData = new SysDictData();
+//        dictData.setDictType("app_check_type");
+//        List<SysDictData> list = dictDataService.selectDictDataList(dictData);
+//        if (!list.isEmpty() && !StringUtils.isEmpty(list.get(0).getDictValue())&& Constants.STATUS_OK.equals(list.get(0).getStatus())) {
+//            Integer dataVersion = Integer.valueOf(list.get(0).getDictValue().replaceAll("\\.", StringUtils.NULLSTR));
+//            log.debug("app当前版本:{},数据库版本:{}",appVersion,dataVersion);
+//            if (appVersion > dataVersion) {
+//                return OutDTO.ok().put("check","1");
+//            }
+//        }
+//        return OutDTO.ok().put("check","0");
+//    }
+//
+//    @ApiLog(title = "大版本比较", businessType = BusinessType.SEARCH)
+//    @PostMapping("/versionOnlineCheck")
+//    @ResponseBody
+//    public OutDTO versionOnlineCheck(@RequestBody InDto inDto) {
+//        String version = inDto.getVersion();
+//        if (StringUtils.isEmpty(version)) {
+//            return OutDTO.error(510,"版本号为空!");
+//        }
+//
+//        SysDictData dictData = new SysDictData();
+//        dictData.setDictType("app_online_version");
+//        List<SysDictData> list = dictDataService.selectDictDataList(dictData);
+//        if (!list.isEmpty() && !StringUtils.isEmpty(list.get(0).getDictValue())) {
+//            Integer appVersion = Integer.valueOf(version.replaceAll("\\.", StringUtils.NULLSTR));
+//            Integer dataVersion = Integer.valueOf(list.get(0).getDictValue().replaceAll("\\.", StringUtils.NULLSTR));
+//            log.debug("app当前版本:{},数据库版本:{}",appVersion,dataVersion);
+//            if (appVersion < dataVersion) {
+//                return OutDTO.ok().put("check","1").put("versionCode",dataVersion).put("versionName",list.get(0).getDictValue()).put("versionInfo",list.get(0).getRemark());
+//            }
+//        }
+//        return OutDTO.ok().put("check","0");
+//    }
+//
+//    @ApiLog(title = "七牛token", businessType = BusinessType.SEARCH)
+//    @PostMapping("/qiniu/token")
+//    @ResponseBody
+//    public OutDTO getQiuNiuToken() {
+//        Object tokenCache = redisUtils.get(QiniuUtil.QINIU_TOKEN);
+//        String token;
+//        if(tokenCache==null||StringUtils.isEmpty(tokenCache.toString())){
+//            token = QiniuUtil.getUpToken();
+//            if(StringUtils.isEmpty(token)){
+//                return OutDTO.error(510,"获取七牛token失败!");
+//            }
+//            redisUtils.set(QiniuUtil.QINIU_TOKEN,token,1800);
+//        }else {
+//            token= tokenCache.toString();
+//        }
+//        log.debug("七牛云token:{}",token);
+//        return OutDTO.ok().put("token",token);
+//    }
+//
+//
+//    @ApiLog(title = "七牛token", businessType = BusinessType.SEARCH)
+//    @PostMapping("/v2/qiniu/token")
+//    @ResponseBody
+//    public OutDTO getQiuNiuTokenV2(@RequestBody InDto inDto) {
+//        String bucketName = inDto.getString("bucketName");
+//        if(StringUtils.isEmpty(bucketName)){
+//            bucketName="tzy-admin-public";
+//        }
+//        Object tokenCache = redisUtils.get(QiniuUtil.QINIU_TOKEN+bucketName);
+//        String token;
+//        if(tokenCache==null||StringUtils.isEmpty(tokenCache.toString())){
+//            token = QiniuUtil.getUpToken(bucketName);
+//            if(StringUtils.isEmpty(token)){
+//                return OutDTO.error(510,"获取七牛token失败!");
+//            }
+//            redisUtils.set(QiniuUtil.QINIU_TOKEN+bucketName,token,1800);
+//        }else {
+//            token= tokenCache.toString();
+//        }
+//        log.debug("七牛云token:{}",token);
+//        return OutDTO.ok().put("token",token);
+//    }
+//
+//    @ApiLog(title = "首页banner", businessType = BusinessType.SEARCH)
+//    @PostMapping("/banner")
+//    @ResponseBody
+//    public OutDTO getBanner() {
+//        List<AppCarouselPicture> banners=appCarouselPictureService.getBanner(null);
+//        return OutDTO.ok().put("banner",banners);
+//    }
+//
+//
+//    @ApiLog(title = "根据type查询banner", businessType = BusinessType.SEARCH)
+//    @PostMapping("/banner/type")
+//    @ResponseBody
+//    public OutDTO getBannerByType(@RequestBody InDto inDto) {
+//        String type = inDto.getString("type");
+//        List<AppCarouselPicture> banners=appCarouselPictureService.getBanner(type);
+//        return OutDTO.ok().put("banner",banners);
+//    }
+//
+//	@ApiLog(title = "字典查询信息接口", businessType = BusinessType.SEARCH)
+//	@PostMapping("/v2/common/type")
+//	@ResponseBody
+//	public OutDTO getCommonDictDataNew(@RequestBody InDto inDto) {
+//		String type = inDto.getString("type");
+//		if(StringUtils.isEmpty(type)){
+//			return OutDTO.error500("参数为空!");
+//		}
+//		String status = inDto.getString("status");
+//		if(StringUtils.isEmpty(status)){
+//			status=Constants.STATUS_OK;
+//		}else if (Constants.All.equals(status)){
+//			status=null;
+//		}
+//
+//		List<String> types = Arrays.asList(type.split(","));
+//		HashMap<String, List<SysDictData>> datas = new HashMap<>();
+//		SysDictData dictData = new SysDictData();
+//		for(String t:types){
+//			dictData.setDictType(t);
+//			dictData.setStatus(status);
+//			List<SysDictData> data = commonCacheService.getCommonDictData(t, null, status, "app_cache_" + t, -1);
+//			datas.put(t,data);
+//		}
+//		return OutDTO.ok().put("typeData",datas);
+//	}
+//
+////    @ApiLog(title = "根据type查询banner接口(新)", businessType = BusinessType.SEARCH)
+////    @PostMapping("/v2/banner/type")
+////    @ResponseBody
+////    public OutDTO getBannerNew(@RequestBody InDto inDto) throws Exception {
+////        String type = inDto.getString("type");
+////        if(StringUtils.isEmpty(type)){
+////            return OutDTO.error500("参数为空!");
+////        }
+////        //banner
+////        List<AppCarouselPicture> banners=appCarouselPictureService.getBannerByTypes(Arrays.asList(type.split(",")));
+////        Map<String, List<AppCarouselPictureDTO>> bannerList = banners.stream().map(b -> DozerUtils.map(b, AppCarouselPictureDTO.class))
+////                .collect(Collectors.groupingBy(AppCarouselPictureDTO::getType));
+////        //即将售罄底图
+////        String ratePic= groupApiService.findOneRateGroupPic();
+////        return OutDTO.ok().put("banner",bannerList).put("ratePic",ratePic);
+////    }
+//
+//
+//    @ApiLog(title = "版本校验(新,2合1)", businessType = BusinessType.SEARCH)
+//    @PostMapping("/v2/version/check")
+//    @ResponseBody
+//    public OutDTO versionCheckNew(@RequestBody InDto inDto) {
+//        String version = inDto.getVersion();
+//        String phoneType = inDto.getString("type");
+//        return OutDTO.ok()
+//                .put("storeUpdate", checkStoreVersionUpdate(version, phoneType))
+//                .put("hotUpdateShow", checkAppVersionHotUpdate(version,phoneType));
+//    }
+//
+//    private Map<String, Object> checkStoreVersionUpdate(String version, String phoneType) {
+//        //大版本更新
+//        Map<String, Object> versionUpdate = new HashMap() {{
+//            put("check", 0);
+//        }};
+//        if (StringUtils.isEmpty(version)|| StringUtils.isEmpty(phoneType)) {
+//            return versionUpdate;
+//        }
+//        String type = Constants.PHONE_TYPE_IOS.equals(phoneType) ? "app_online_version_ios" : "app_online_version_android";
+//        List<SysDictData> list = commonCacheService.getCommonDictData("app_online_version", type, null, "app_cache_" + type, -1);
+//        SysDictData data = list.get(0);
+//        if (!list.isEmpty() && !StringUtils.isEmpty(data.getDictValue())) {
+//            Integer appVersion = Integer.valueOf(version.replaceAll("\\.", StringUtils.NULLSTR));
+//            Integer dataVersion = Integer.valueOf(data.getDictValue().replaceAll("\\.", StringUtils.NULLSTR));
+//            log.debug("app当前版本:{},数据库版本:{}", appVersion, dataVersion);
+//            if (appVersion < dataVersion) {
+//                versionUpdate.put("check", "1");
+//                versionUpdate.put("versionCode", dataVersion);
+//                versionUpdate.put("versionName", list.get(0).getDictValue());
+//                versionUpdate.put("versionInfo", list.get(0).getRemark());
+//            }
+//        }
+//        return versionUpdate;
+//    }
+//
+//    private Map<String, Object> checkAppVersionHotUpdate(String version,String phoneType) {
+//        //热更新
+//        Map<String, Object> appVersionData = new HashMap() {{
+//            put("code", 0);
+//        }};
+//        if (StringUtils.isEmpty(version) || StringUtils.isEmpty(phoneType)){
+//            return appVersionData;
+//        }
+//        List<SysDictData> list = commonCacheService.getCommonDictData("stop_update_version", version, "1", "app_cache_stop_update_version", -1);
+//        if (!list.isEmpty()) {
+//            return appVersionData;
+//        }
+//        //查询 最新版本
+//        ApplicationInfo applicationInfo = baseApiService.selectNextVersionAppNew(new AppVersionParam(version, phoneType));
+//        if (null == applicationInfo) {
+//            return appVersionData;
+//        }
+//        appVersionData.put("code", 1);
+//        appVersionData.put("appinfo", applicationInfo);
+//        return appVersionData;
+//    }
+}

+ 54 - 0
poyee-common/poyi-common-web/src/main/resources/application-druid.yml

@@ -0,0 +1,54 @@
+# 数据源配置
+spring:
+    datasource:
+        type: com.alibaba.druid.pool.DruidDataSource
+        driverClassName: org.postgresql.Driver
+        druid:
+            # 主库数据源
+            master:
+                username: postgres
+                password: 123456
+                url: jdbc:postgresql://192.168.50.10:5432/tzy_system
+            # 初始连接数
+            initialSize: 5
+            # 最小连接池数量
+            minIdle: 10
+            # 最大连接池数量
+            maxActive: 20
+            # 配置获取连接等待超时的时间
+            maxWait: 60000
+            # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+            timeBetweenEvictionRunsMillis: 60000
+            # 配置一个连接在池中最小生存的时间,单位是毫秒
+            minEvictableIdleTimeMillis: 300000
+            # 配置一个连接在池中最大生存的时间,单位是毫秒
+            maxEvictableIdleTimeMillis: 900000
+            # 配置检测连接是否有效
+            validationQuery: SELECT 1
+            # 检测连接超时时间(ms)
+            validationQueryTimeout: 200
+            testWhileIdle: true
+            testOnBorrow: false
+            testOnReturn: false
+            removeAbandoned: false
+            logAbandoned: false
+            webStatFilter:
+                enabled: false
+            statViewServlet:
+                enabled: true
+                # 设置白名单,不填则允许所有访问
+                allow:
+                url-pattern: /druid/*
+                # 控制台管理用户名和密码
+                login-username:
+                login-password:
+            filter:
+                stat:
+                    enabled: true
+                    # 慢SQL记录
+                    log-slow-sql: true
+                    slow-sql-millis: 1000
+                    merge-sql: true
+                wall:
+                    config:
+                        multi-statement-allow: true

+ 273 - 0
poyee-common/poyi-common-web/src/main/resources/application.yml

@@ -0,0 +1,273 @@
+# 项目相关配置
+tzy:
+  # 名称
+  name: poyi-common
+  # 版本
+  version: 1.0.0
+  # 版权年份
+  copyrightYear: 2025
+  # 获取ip地址开关
+  addressEnabled: false
+  #版本
+  app-version: dev
+
+#Forest
+forest:
+  #bean-id: config0 # 在spring上下文中bean的id(默认为 forestConfiguration)
+  #  #backend: okhttp3 # 后端HTTP框架(默认为 okhttp3)
+  #  #max-connections: 1000 # 连接池最大连接数(默认为 500)
+  #  #max-route-connections: 500 # 每个路由的最大连接数(默认为 500)
+  timeout: 30000 # 请求超时时间,单位为毫秒(默认为 3000)
+  connect-timeout: 30000 # 连接超时时间,单位为毫秒(默认为 timeout)
+  read-timeout: 300000 # 数据读取超时时间,单位为毫秒(默认为 timeout)
+  #max-retry-count: 0 # 请求失败后重试次数(默认为 0 次不重试)
+  #ssl-protocol: SSLv3 # 单向验证的HTTPS的默认SSL协议(默认为 SSLv3)
+  #logEnabled: true # 打开或关闭日志(默认为 true)
+  #log-request: true # 打开/关闭Forest请求日志(默认为 true)
+  #log-response-status: true # 打开/关闭Forest响应状态日志(默认为 true)
+  #log-response-content: true # 打开/关闭Forest响应内容日志(默认为 false)
+  variables:
+    appleUrl: https://appleid.apple.com/auth
+# 开发环境配置
+server:
+  # 服务器的HTTP端口,默认为80
+  port: 8089
+  tomcat:
+    # tomcat的URI编码
+    uri-encoding: UTF-8
+    # tomcat最大线程数,默认为200
+    max-threads: 800
+    # Tomcat启动初始化的线程数,默认值25
+    min-spare-threads: 30
+    #超时时间
+    connection-timeout: 600000
+    basedir: c://tmp/logs
+    accesslog:
+      enabled: true
+      buffered: true
+      prefix: access_log
+      file-date-format: .yyyy-MM-dd
+
+
+# 日志配置
+logging:
+  console.enabled: ${CONSOLE_ENABLED:true}
+  file.enabled: ${FILE_ENABLED:false}
+  level:
+    com.tzy: debug
+    org.teasoft: debug
+    org.springframework: warn
+  fluentd:
+    enabled: ${FLUENTD_ENABLED:false}
+    host: ${FLUENTD_HOST:127.0.0.1}
+    port: ${FLUENTD_PORT:24225}
+  audit:
+    enabled: ${AUDIT_ENABLED:false}
+    host: ${AUDIT_HOST:192.168.1.51}
+    port: ${AUDIT_PORT:24225}
+
+# Spring配置
+spring:
+  application:
+    name: app
+  jackson:
+    time-zone: GMT+8
+    date-format: yyyy-MM-dd HH:mm:ss
+    #default-property-inclusion: non_null
+  profiles:
+    active: druid
+  # 服务模块
+  devtools:
+    restart:
+      # 热部署开关
+      enabled: false
+  redis:
+      database: 6
+      host: 192.168.50.8
+      port: 6379
+      password: Pass2010    # 密码(默认为空)
+      timeout: 60000  # 连接超时时长(毫秒)
+      pool:
+        max-active: 100  # 连接池最大连接数(使用负值表示没有限制)
+        max-wait: -1ms    # 连接池最大阻塞等待时间(使用负值表示没有限制)
+        max-idle: 10      # 连接池中的最大空闲连接
+        min-idle: 5       # 连接池中的最小空闲连接
+  #mq
+  rabbitmq:
+    host: 192.168.50.10
+    port: 5672
+    username: admin
+    password: admin
+    #确认消息已发送到交换机(Exchange)
+    publisher-confirms: true
+    #确认消息已发送到队列(Queue)
+    publisher-returns: true
+    template:
+      retry:
+        enabled: true
+      mandatory: true
+    listener:
+      simple:
+        acknowledge-mode: manual
+        #并发消费者初始化值
+        #concurrency: 10
+        #并发消费者的最大值
+        #max-concurrency: 20
+        #每个消费者每次监听时可拉取处理的消息数量
+        prefetch: 10
+      direct:
+        retry:
+          enabled: true
+          max-attempts: 1
+
+# MyBatis
+mybatis:
+    # 搜索指定包别名
+    typeAliasesPackage: com.tzy.**.domain
+    # 配置mapper的扫描,找到所有的mapper.xml映射文件
+    mapperLocations: classpath*:mapper/**/*Mapper.xml
+    # 加载全局的配置文件
+    configLocation: classpath:mybatis/mybatis-config.xml
+
+# PageHelper分页插件
+pagehelper:
+  helperDialect: postgresql
+  reasonable: false
+  supportMethodsArguments: true
+  params: count=countSql
+# Swagger配置
+swagger:
+  # 是否开启swagger
+  enabled: true
+
+# 防止XSS攻击
+xss:
+  # 过滤开关
+  enabled: true
+  # 排除链接(多个用逗号分隔)
+  excludes: /system/notice/*
+  # 匹配链接
+  urlPatterns: /system/*,/monitor/*,/tool/*,/base/*,/api/*
+
+#手机验证码
+phone:
+    verification_code_uri: https://coresvc-dev/api/verification/code/
+    verification_code_uri_hk: http://coresvc-dev/api/verification/code/hk/
+authenticate:
+    url: https://coresvc-dev.hobbystocks.cn/api/auth/
+#服务前缀路径
+coreService:
+  baseurl: https://coresvc-dev.hobbystocks.cn
+  smsUrl: /api/reminder/live/on
+  appSmsUrl: /api/appmsg/live/on
+  ipUrl: /api/geo/city
+#admin服务url映射
+adminService:
+  baseurl: https://coresvc-dev.hobbystocks.cn
+  orderNotice: /goods/orderInfo/sendGroupMsg
+#请求卡密服务
+goodsService:
+  baseurl: http://127.0.0.1:8089
+  #baseurl: https://m2-dev.hobbystocks.cn/py-goods
+  groupNumDetailUrl: /api/goods/count/detail/
+  #查询卡密总数量
+  goodsNumByType: /api/goods/num/type
+  #查询卡密总数量
+  goodsPriceByType: /api/goods/price/type
+  #查询指定队伍卡密
+  teamGoodsUrl: /api/goods/group/team/
+  #查询卡密
+  goodsUrl: /api/goods/list
+  #卡密详情
+  goodsInfoUrl: /api/goods/
+  #修改卡密公示信息
+  goodsPublicUrl: /api/goods/edit
+  #选对随机转换,标记卡密状态
+  markStatusUrl: /api/goods/mark/status/
+  #模糊搜索用户id,订单id
+  searchUserIdUrl: /api/goods/id/type
+  #根据条件查询卡密数量
+  searchNumUrl: /api/goods/num/condition
+  #订单预测卡密
+  guessGoodsUrl: /api/goods/guess
+  #订单关联卡密
+  orderGoodsUrl: /api/goods/order
+  #分页查询卡密
+  pageGoodsUrl: /api/goods/list/page
+  #预售拆卡
+  openCardUrl: /api/goods/order/open
+#抽奖码服务
+codeService:
+  baseurl: https://coresvc-dev.hobbystocks.cn
+  codeUrl: /api/lottery/
+  publicUrl: /api/lottery/
+
+tenant:
+  appid: 1658744039
+  secretKey: f58b968b920aa0dbff34fbc0abb7f2a0
+#elasticsearch 配置
+elasticsearch:
+  rest:
+    #uris: localhost:9200,localhost:9300  #测试环境es地址
+    uris: 192.168.50.10:9202  #测试环境es地址
+#卡密配置
+goods:
+    secret: 44d5flklcebb406b867b4f5b3477b0af
+#智子云相关参数
+zhiziyun:
+  #推荐组队
+  recommendInfoUrl: http://rec2.idata.zhiziyun.com/rec
+
+#直播间webSocket地址
+liveWebSocketUrl: http://poyee-im/chat/handler
+#埋点支付通知
+trackPayNoticeUrl: http://track-newdev.hobbystocks.cn/api/handle
+#直播推流key
+liveConfigKey: XzwWBFhRK2Ya8hzEYAi3
+
+trackweb-service:
+  url: https://trackweb-newdev.hobbystocks.cn/api/enter
+
+management:
+  endpoints:
+    web:
+      exposure:
+        include: info, health,metrics,prometheus
+        exclude: shutdown
+      base-path: /actuator
+    enabled-by-default: true
+    jmx:
+      exposure:
+        include: info, health,metrics,prometheus
+  endpoint:
+    health.show-details: never
+    #health.show-details: ALWAYS
+    metrics:
+      enabled: true
+    prometheus:
+      enabled: true
+  metrics:
+    export:
+      prometheus:
+        enabled: true
+        step: 1ms
+        descriptions: true
+    tags:
+      application: poyi-common
+  health:
+    defaults.enabled: false
+    db.enabled: true
+    diskspace.enabled: true
+
+appServer:
+  baseUrl: http://poyee-app
+
+imServer:
+  baseUrl: http://poyee-im
+  userUrl: /api/chat/room/people-list?roomId=%s
+
+forumServer:
+  baseUrl: http://community
+
+mallServer:
+  baseUrl: http://poyee-mall

+ 40 - 0
poyee-common/poyi-common-web/src/main/resources/logback-audit.xml

@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<included>
+    <appender name="FLUENT_SYNC_AUDIT" class="ch.qos.logback.more.appenders.DataFluentAppender">
+        <tag>audit.group_goods</tag>
+        <label>poyee-app.${hostname}</label>
+        <remoteHost>${logging.audit.host}</remoteHost>
+        <port>${logging.audit.port}</port>
+        <encoder charset="UTF-8">
+            <pattern>%logger{15}&lt;%method,%line&gt; - %msg</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <appender name="FLUENT_PAY_SYNC_AUDIT" class="ch.qos.logback.more.appenders.DataFluentAppender">
+        <tag>audit.order_pay</tag>
+        <label>poyee-app.${hostname}</label>
+        <remoteHost>${logging.audit.host}</remoteHost>
+        <port>${logging.audit.port}</port>
+        <encoder charset="UTF-8">
+            <pattern>%logger{15}&lt;%method,%line&gt; - %msg</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <appender name="FLUENT_AUDIT" class="ch.qos.logback.classic.AsyncAppender">
+        <queueSize>100</queueSize>
+        <neverBlock>true</neverBlock>
+        <maxFlushTime>15000</maxFlushTime>
+        <includeCallerData>false</includeCallerData>
+        <appender-ref ref="FLUENT_SYNC_AUDIT" />
+    </appender>
+
+    <appender name="FLUENT_ORDER_AUDIT" class="ch.qos.logback.classic.AsyncAppender">
+        <queueSize>100</queueSize>
+        <neverBlock>true</neverBlock>
+        <maxFlushTime>15000</maxFlushTime>
+        <includeCallerData>false</includeCallerData>
+        <appender-ref ref="FLUENT_PAY_SYNC_AUDIT" />
+    </appender>
+</included>

+ 21 - 0
poyee-common/poyi-common-web/src/main/resources/logback-fluentd.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<included>
+    <appender name="FLUENT_SYNC" class="ch.qos.logback.more.appenders.DataFluentAppender">
+        <tag>logback</tag>
+        <label>poyee-app.${hostname}</label>
+        <remoteHost>${logging.fluentd.host}</remoteHost>
+        <port>${logging.fluentd.port}</port>
+
+        <encoder charset="UTF-8">
+            <pattern>%logger{15}:%L - %msg</pattern>
+        </encoder>
+    </appender>
+
+    <appender name="FLUENT" class="ch.qos.logback.classic.AsyncAppender">
+        <queueSize>500</queueSize>
+        <neverBlock>true</neverBlock>
+        <maxFlushTime>15000</maxFlushTime>
+        <includeCallerData>false</includeCallerData>
+        <appender-ref ref="FLUENT_SYNC" />
+    </appender>
+</included>

+ 163 - 0
poyee-common/poyi-common-web/src/main/resources/logback.xml

@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+    <!-- 日志存放路径 -->
+	<property name="log.path" value="../logs" />
+    <!-- 日志输出格式 -->
+	<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%X{TRACE_ID}] [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
+    <springProperty scope="context" name="logging.console.enabled" source="logging.console.enabled"/>
+    <springProperty scope="context" name="logging.file.enabled" source="logging.file.enabled"/>
+    <springProperty scope="context" name="logging.fluentd.enabled" source="logging.fluentd.enabled"/>
+    <springProperty scope="context" name="logging.fluentd.host" source="logging.fluentd.host"/>
+    <springProperty scope="context" name="logging.fluentd.port" source="logging.fluentd.port"/>
+
+    <springProperty scope="context" name="logging.audit.enabled" source="logging.audit.enabled"/>
+    <springProperty scope="context" name="logging.audit.host" source="logging.audit.host"/>
+    <springProperty scope="context" name="logging.audit.port" source="logging.audit.port"/>
+
+    <if condition='p("logging.fluentd.enabled").equals("true")'>
+        <then>
+            <include resource="logback-fluentd.xml" />
+        </then>
+    </if>
+
+    <if condition='p("logging.audit.enabled").equals("true")'>
+        <then>
+            <include resource="logback-audit.xml" />
+        </then>
+    </if>
+
+	<!-- 控制台输出 -->
+	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+		<encoder>
+			<pattern>${log.pattern}</pattern>
+			<charset>UTF-8</charset>
+		</encoder>
+	</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.TimeBasedRollingPolicy">
+            <!-- 日志文件名格式 -->
+			<fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
+			<!-- 日志最大的历史 60天 -->
+			<maxHistory>60</maxHistory>
+		</rollingPolicy>
+		<encoder>
+			<pattern>${log.pattern}</pattern>
+			<charset>UTF-8</charset>
+		</encoder>
+		<filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <!-- 过滤的级别 -->
+            <level>INFO</level>
+            <!-- 匹配时的操作:接收(记录) -->
+            <onMatch>ACCEPT</onMatch>
+            <!-- 不匹配时的操作:拒绝(不记录) -->
+            <onMismatch>DENY</onMismatch>
+        </filter>
+	</appender>
+	
+	<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.TimeBasedRollingPolicy">
+            <!-- 日志文件名格式 -->
+            <fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
+			<!-- 日志最大的历史 60天 -->
+			<maxHistory>60</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <!-- 过滤的级别 -->
+            <level>ERROR</level>
+			<!-- 匹配时的操作:接收(记录) -->
+            <onMatch>ACCEPT</onMatch>
+			<!-- 不匹配时的操作:拒绝(不记录) -->
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+	
+	<!-- 用户访问日志输出  -->
+    <appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<file>${log.path}/sys-user.log</file>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 按天回滚 daily -->
+            <fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <!-- 日志最大的历史 60天 -->
+            <maxHistory>60</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>${log.pattern}</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+	<!--系统操作日志-->
+    <root level="info">
+        <if condition='p("logging.console.enabled").equals("true")'>
+            <then>
+                <appender-ref ref="console" />
+            </then>
+        </if>
+        <if condition='p("logging.file.enabled").equals("true")'>
+            <then>
+                <appender-ref ref="file_info" />
+                <appender-ref ref="file_error" />
+            </then>
+        </if>
+        <if condition='p("logging.fluentd.enabled").equals("true")'>
+            <then>
+                <appender-ref ref="FLUENT"/>
+            </then>
+        </if>
+    </root>
+
+    <if condition='p("logging.audit.enabled").equals("true")'>
+        <then>
+            <logger name="com.tzy.sportcard.api.service.impl.AllocateGoodsServiceImpl" level="debug" additivity="true">
+                <if condition='p("logging.console.enabled").equals("true")'>
+                    <then>
+                        <appender-ref ref="console" />
+                    </then>
+                </if>
+                <appender-ref ref="FLUENT_AUDIT"/>
+            </logger>
+            <logger name="com.tzy.sportcard.api.mapper.AllocateGoodsApiMapper" level="debug" additivity="true">
+                <if condition='p("logging.console.enabled").equals("true")'>
+                    <then>
+                        <appender-ref ref="console" />
+                    </then>
+                </if>
+                <appender-ref ref="FLUENT_AUDIT"/>
+            </logger>
+            <logger name="com.tzy.common.utils.LogSyncUtil" level="info" additivity="true">
+                <if condition='p("logging.console.enabled").equals("true")'>
+                    <then>
+                        <appender-ref ref="console" />
+                    </then>
+                </if>
+                <appender-ref ref="FLUENT_ORDER_AUDIT"/>
+            </logger>
+        </then>
+    </if>
+
+    <!-- 系统模块日志级别控制  -->
+    <logger name="com.ruoyi" level="info" />
+    <!-- Spring日志级别控制  -->
+    <logger name="org.springframework" level="warn" />
+
+<!--    <logger name="druid.sql" level="debug" />-->
+
+	<!--系统用户操作日志-->
+    <logger name="sys-user" level="info">
+        <if condition='p("logging.file.enabled").equals("true")'>
+            <then>
+                <appender-ref ref="sys-user"/>
+            </then>
+        </if>
+    </logger>
+</configuration> 

+ 15 - 0
poyee-common/poyi-common-web/src/main/resources/mybatis/mybatis-config.xml

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE configuration
+PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-config.dtd">
+<configuration>
+	
+	<settings>
+		<setting name="cacheEnabled"             value="true"  />  <!-- 全局映射器启用缓存 -->
+		<setting name="useGeneratedKeys"         value="true"  />  <!-- 允许 JDBC 支持自动生成主键 -->
+		<setting name="defaultExecutorType"      value="REUSE" />  <!-- 配置默认的执行器 -->
+		<setting name="logImpl"                  value="SLF4J" />  <!-- 指定 MyBatis 所用日志的具体实现 -->
+		<!-- <setting name="mapUnderscoreToCamelCase" value="true"/>  驼峰式命名 -->
+	</settings>
+	
+</configuration>