Browse Source

update jboot to 1.3.0 / add:admin-b2c module

Rlax 7 years ago
parent
commit
1ae8e9afc1

+ 3 - 1
README.md

@@ -15,7 +15,7 @@
 
 ### 技术选型
 
- - 核心框架:jboot 1.2.9
+ - 核心框架:jboot 1.3.0
  - 模版引擎:jfinal 3.3
  - 注册中心:consul/zookeeper
  - RPC:motan/dubbo
@@ -35,6 +35,7 @@
  - jboot-admin-base:框架相关代码
  - jboot-admin:后台管理客户端模块
  - jboot-wechat:微信公众号客户端模块
+ - jboot-b2c:b2c客户端模块
  - jboot-admin-service:系统服务端模块,包含api、entity、provider三个子模块
  - jboot-admin-service-api:系统服务api模块,定义服务端与客户端api标准
  - jboot-admin-service-entity:系统服务实体模块,定义服务所需model、dto、服务状态类
@@ -47,6 +48,7 @@
 
     1、2018-01-18: 添加微信公众号模块jboot-wechat,微信公众号demo
     2、2018-01-23: 添加B2C服务端模块jboot-b2c-service,b2c商品管理demo
+    3、2018-01-25: 添加B2C客户端模块,初始化上传,作为商城秒杀demo模块
  
 ### 项目使用
 

+ 110 - 0
jboot-b2c/pom.xml

@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>jboot-admin-parent</artifactId>
+        <groupId>io.jboot.admin</groupId>
+        <version>1.0</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>jboot-b2c</artifactId>
+    <packaging>jar</packaging>
+
+    <dependencies>
+        <dependency>
+            <groupId>io.jboot.admin</groupId>
+            <artifactId>jboot-b2c-service-api</artifactId>
+            <version>1.0</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                    <encoding>UTF-8</encoding>
+                    <!--必须添加compilerArgument配置,才能使用JFinal的Controller方法带参数的功能-->
+                    <compilerArgument>-parameters</compilerArgument>
+                </configuration>
+            </plugin>
+
+
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>appassembler-maven-plugin</artifactId>
+                <version>1.10</version>
+                <configuration>
+                    <assembleDirectory>${project.build.directory}/jboot-b2c</assembleDirectory>
+                    <repositoryName>lib</repositoryName>
+                    <binFolder>bin</binFolder>
+                    <configurationDirectory>webRoot</configurationDirectory>
+                    <copyConfigurationDirectory>true</copyConfigurationDirectory>
+                    <configurationSourceDirectory>src/main/resources</configurationSourceDirectory>
+                    <repositoryLayout>flat</repositoryLayout>
+                    <encoding>UTF-8</encoding>
+                    <logsDirectory>logs</logsDirectory>
+                    <tempDirectory>tmp</tempDirectory>
+                    <programs>
+                        <!--程序打包 mvn package appassembler:assemble -->
+                        <program>
+                            <mainClass>io.jboot.Jboot</mainClass>
+                            <id>jboot</id>
+                            <platforms>
+                                <platform>windows</platform>
+                                <platform>unix</platform>
+                            </platforms>
+                        </program>
+                    </programs>
+                    <daemons>
+                        <!-- 后台程序打包:mvn clean package appassembler:generate-daemons -->
+                        <daemon>
+                            <mainClass>io.jboot.Jboot</mainClass>
+                            <id>jboot-b2c</id>
+                            <platforms>
+                                <platform>jsw</platform>
+                            </platforms>
+                            <generatorConfigurations>
+                                <generatorConfiguration>
+                                    <generator>jsw</generator>
+                                    <includes>
+                                        <include>linux-x86-32</include>
+                                        <include>linux-x86-64</include>
+                                        <include>macosx-universal-32</include>
+                                        <include>macosx-universal-64</include>
+                                        <include>windows-x86-32</include>
+                                        <include>windows-x86-64</include>
+                                    </includes>
+                                    <configuration>
+                                        <property>
+                                            <name>configuration.directory.in.classpath.first</name>
+                                            <value>webRoot</value>
+                                        </property>
+                                        <property>
+                                            <name>wrapper.ping.timeout</name>
+                                            <value>120</value>
+                                        </property>
+                                        <property>
+                                            <name>set.default.REPO_DIR</name>
+                                            <value>lib</value>
+                                        </property>
+                                        <property>
+                                            <name>wrapper.logfile</name>
+                                            <value>logs/wrapper.log</value>
+                                        </property>
+                                    </configuration>
+                                </generatorConfiguration>
+                            </generatorConfigurations>
+                        </daemon>
+                    </daemons>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

+ 14 - 0
jboot-b2c/src/main/java/io/jboot/b2c/Application.java

@@ -0,0 +1,14 @@
+package io.jboot.b2c;
+
+import io.jboot.Jboot;
+
+/**
+ * 服务启动入口
+ * @author Rlax
+ *
+ */
+public class Application {
+    public static void main(String [] args){
+        Jboot.run(args);
+    }
+}

+ 96 - 0
jboot-b2c/src/main/java/io/jboot/b2c/config/JfinalConfigListener.java

@@ -0,0 +1,96 @@
+package io.jboot.b2c.config;
+
+import com.google.inject.Binder;
+import com.jfinal.captcha.CaptchaManager;
+import com.jfinal.config.Constants;
+import com.jfinal.config.Interceptors;
+import com.jfinal.config.Routes;
+import com.jfinal.ext.handler.ContextPathHandler;
+import com.jfinal.template.Engine;
+import io.jboot.Jboot;
+import io.jboot.admin.base.captcha.CaptchaCache;
+import io.jboot.admin.base.common.AppInfo;
+import io.jboot.admin.base.interceptor.BusinessExceptionInterceptor;
+import io.jboot.admin.base.interceptor.NotNullParaInterceptor;
+import io.jboot.admin.base.web.render.AppRenderFactory;
+import io.jboot.aop.jfinal.JfinalHandlers;
+import io.jboot.aop.jfinal.JfinalPlugins;
+import io.jboot.server.ContextListeners;
+import io.jboot.server.JbootServer;
+import io.jboot.server.Servlets;
+import io.jboot.server.listener.JbootAppListenerBase;
+
+/**
+ * jfinal config
+ * @author Rlax
+ *
+ */
+public class JfinalConfigListener extends JbootAppListenerBase {
+    @Override
+    public void onJfinalConstantConfig(Constants constants) {
+        constants.setError401View("/template/401.html");
+        constants.setError403View("/template/403.html");
+        constants.setError404View("/template/404.html");
+        constants.setError500View("/template/500.html");
+        constants.setRenderFactory(new AppRenderFactory());
+    }
+
+    @Override
+    public void onJfinalRouteConfig(Routes routes) {
+        routes.setBaseViewPath("/template");
+    }
+
+    @Override
+    public void onJfinalEngineConfig(Engine engine) {
+        engine.setDevMode(true);
+        AppInfo app = Jboot.config(AppInfo.class);
+        engine.addSharedObject("APP", app);
+        engine.addSharedObject("RESOURCE_HOST", app.getResourceHost());
+    }
+
+    @Override
+    public void onInterceptorConfig(Interceptors interceptors) {
+        interceptors.add(new NotNullParaInterceptor("/template/exception.html"));
+        interceptors.add(new BusinessExceptionInterceptor("/template/exception.html"));
+    }
+
+    @Override
+    public void onJfinalPluginConfig(JfinalPlugins plugins) {
+
+    }
+
+    @Override
+    public void onHandlerConfig(JfinalHandlers handlers) {
+        handlers.add(new ContextPathHandler("ctxPath"));
+    }
+
+    @Override
+    public void onJFinalStarted() {
+
+    }
+
+    @Override
+    public void onJFinalStop() {
+    }
+
+    @Override
+    public void onJbootStarted() {
+        /** 集群模式下验证码使用 redis 缓存 */
+        CaptchaManager.me().setCaptchaCache(new CaptchaCache());
+    }
+
+    @Override
+    public void onAppStartBefore(JbootServer jbootServer) {
+
+    }
+
+    @Override
+    public void onJbootDeploy(Servlets servlets, ContextListeners listeners) {
+
+    }
+
+    @Override
+    public void onGuiceConfigure(Binder binder) {
+
+    }
+}

+ 6 - 0
jboot-b2c/src/main/resources/banner.txt

@@ -0,0 +1,6 @@
+       __  .______     ______     ______   .___________.        ___       _______  .___  ___.  __  .__   __.
+      |  | |   _  \   /  __  \   /  __  \  |           |       /   \     |       \ |   \/   | |  | |  \ |  |
+      |  | |  |_)  | |  |  |  | |  |  |  | `---|  |----`      /  ^  \    |  .--.  ||  \  /  | |  | |   \|  |
+.--.  |  | |   _  <  |  |  |  | |  |  |  |     |  |          /  /_\  \   |  |  |  ||  |\/|  | |  | |  . `  |
+|  `--'  | |  |_)  | |  `--'  | |  `--'  |     |  |         /  _____  \  |  '--'  ||  |  |  | |  | |  |\   |
+ \______/  |______/   \______/   \______/      |__|        /__/     \__\ |_______/ |__|  |__| |__| |__| \__|

+ 102 - 0
jboot-b2c/src/main/resources/jboot.properties

@@ -0,0 +1,102 @@
+#---------------------------------------------------------------------------------#
+# app info
+jboot.admin.app.name=jboot-admin管理系统
+jboot.admin.app.org=Rlax
+jboot.admin.app.orgWebsite=https://gitee.com/rlaxuc/jboot-admin
+jboot.admin.app.resourceHost
+jboot.admin.app.copyRight=2017 © copyright 京ICP备12345678号
+#---------------------------------------------------------------------------------#
+
+#---------------------------------------------------------------------------------#
+#jboot的开发模式
+jboot.mode=dev
+jboot.bannerEnable=true
+jboot.bannerFile=banner.txt
+jboot.cron4jEnable=false
+jboot.cron4jFile=cron4j.properties
+
+#type default undertow (support:undertow)
+jboot.server.type=undertow
+jboot.server.host=
+jboot.server.port=8879
+jboot.server.contextPath=
+#---------------------------------------------------------------------------------#
+
+#---------------------------------------------------------------------------------#
+#jboot.hystrix
+jboot.hystrix.url=/hystrix.stream
+jboot.hystrix.propertie
+#jboot.hystrix.keys=findPage:findPage;findById:findById
+jboot.hystrix.closeAutoHystrix=false
+#---------------------------------------------------------------------------------#
+
+#---------------------------------------------------------------------------------#
+#jboot.metrics
+jboot.metrics.url=/metrics.html
+jboot.metrics.reporter=slf4j
+#---------------------------------------------------------------------------------#
+
+#---------------------------------------------------------------------------------#
+jboot.tracing.type=zipkin
+jboot.tracing.serviceName=jboot-b2c
+jboot.tracing.url=http://127.0.0.1:9411/api/v2/spans
+#---------------------------------------------------------------------------------#
+
+#---------------------------------------------------------------------------------#
+#type default motan (support:local,motan,dubbo)
+#use motan + consul
+jboot.rpc.type = motan
+jboot.rpc.registryType = consul
+jboot.rpc.registryAddress = 127.0.0.1:8500
+
+#use dubbo + zookeeper
+#jboot.rpc.type = dubbo
+#jboot.rpc.registryType = zookeeper
+#jboot.rpc.registryAddress = 127.0.0.1:2181
+
+jboot.rpc.requestTimeOut=5000
+jboot.rpc.callMode=registry
+jboot.rpc.registryName=register
+jboot.rpc.registryUserName
+jboot.rpc.registryPassword
+#rpc service config
+jboot.rpc.host=127.0.0.1
+jboot.rpc.defaultPort
+jboot.rpc.defaultGroup=b2c-service
+jboot.rpc.defaultVersion=1.0
+#rpc hystrix config
+jboot.rpc.proxy
+jboot.rpc.hystrixEnable=true
+jboot.rpc.hystrixTimeout=30000
+jboot.rpc.hystrixKeys
+jboot.rpc.hystrixAutoConfig=true
+jboot.rpc.hystrixFallbackFactory
+jboot.rpc.serialization=fst
+#---------------------------------------------------------------------------------#
+
+#---------------------------------------------------------------------------------#
+jboot.config.remoteEnable=false
+jboot.config.remoteUrl
+#作为配置中心
+jboot.config.serverEnable=false
+jboot.config.path
+jboot.config.exclude
+#---------------------------------------------------------------------------------#
+
+#---------------------------------------------------------------------------------#
+# cache config : type default ehcache (support:ehcache,redis,ehredis)
+jboot.cache.type=redis
+jboot.cache.redis.host=127.0.0.1
+jboot.cache.redis.password=123456
+jboot.cache.redis.database=0
+#---------------------------------------------------------------------------------#
+
+#---------------------------------------------------------------------------------#
+# mq config : type default redis (support: redis,activemq,rabbitmq,hornetq,aliyunmq )
+jboot.mq.type=redis
+jboot.mq.redis.host=127.0.0.1
+jboot.mq.redis.port=6379
+jboot.mq.redis.password=123456
+jboot.mq.redis.channel=message-channel
+jboot.mq.redis.database=0
+#---------------------------------------------------------------------------------#

+ 148 - 0
jboot-b2c/src/main/resources/logback.xml

@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!-- 级别从高到低 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 TRACE 、 ALL -->
+<!-- 日志输出规则 根据当前ROOT 级别,日志输出时,级别高于root默认的级别时 会输出 -->
+<!-- 以下 每个配置的 filter 是过滤掉输出文件里面,会出现高级别文件,依然出现低级别的日志信息,通过filter 过滤只记录本级别的日志 -->
+<!-- scan 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。 -->
+<!-- scanPeriod 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
+<!-- debug 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
+<configuration scan="true" scanPeriod="60 seconds" debug="false">
+
+    <!-- 动态日志级别 -->
+    <jmxConfigurator/>
+
+    <!-- 定义日志文件 输出位置 -->
+    <property name="log_dir" value="logs"/>
+
+    <!-- 日志最大的历史 30天 -->
+    <property name="maxHistory" value="30"/>
+
+    <!-- ConsoleAppender 控制台输出日志 -->
+    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>
+                <!-- 设置日志输出格式 -->
+                %d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n
+            </pattern>
+        </encoder>
+    </appender>
+
+    <!-- ERROR级别日志 -->
+    <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 RollingFileAppender -->
+    <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 过滤器,只记录WARN级别的日志 -->
+        <!-- 果日志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝日志。 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <!-- 设置过滤级别 -->
+            <level>ERROR</level>
+            <!-- 用于配置符合过滤条件的操作 -->
+            <onMatch>ACCEPT</onMatch>
+            <!-- 用于配置不符合过滤条件的操作 -->
+            <onMismatch>DENY</onMismatch>
+        </filter>
+        <!-- 最常用的滚动策略,它根据时间来制定滚动策略.既负责滚动也负责出发滚动 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!--日志输出位置 可相对、和绝对路径 -->
+            <fileNamePattern>
+                ${log_dir}/error/%d{yyyy-MM-dd}/logs.log
+            </fileNamePattern>
+            <!-- 可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件假设设置每个月滚动,且<maxHistory>是6, 则只保存最近6个月的文件,删除之前的旧文件。注意,删除旧文件是,那些为了归档而创建的目录也会被删除 -->
+            <maxHistory>${maxHistory}</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>
+                <!-- 设置日志输出格式 -->
+                %d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n
+            </pattern>
+        </encoder>
+    </appender>
+
+
+    <!-- WARN级别日志 appender -->
+    <appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 过滤器,只记录WARN级别的日志 -->
+        <!-- 果日志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝日志。 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <!-- 设置过滤级别 -->
+            <level>WARN</level>
+            <!-- 用于配置符合过滤条件的操作 -->
+            <onMatch>ACCEPT</onMatch>
+            <!-- 用于配置不符合过滤条件的操作 -->
+            <onMismatch>DENY</onMismatch>
+        </filter>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!--日志输出位置 可相对、和绝对路径 -->
+            <fileNamePattern>${log_dir}/warn/%d{yyyy-MM-dd}/logs.log</fileNamePattern>
+            <maxHistory>${maxHistory}</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n</pattern>
+        </encoder>
+    </appender>
+
+
+    <!-- INFO级别日志 appender -->
+    <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>INFO</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${log_dir}/info/%d{yyyy-MM-dd}/logs.log</fileNamePattern>
+            <maxHistory>${maxHistory}</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n</pattern>
+        </encoder>
+    </appender>
+
+
+    <!-- DEBUG级别日志 appender -->
+    <appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>DEBUG</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${log_dir}/debug/%d{yyyy-MM-dd}/logs.log</fileNamePattern>
+            <maxHistory>${maxHistory}</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n</pattern>
+        </encoder>
+    </appender>
+
+
+    <!-- TRACE级别日志 appender -->
+    <appender name="TRACE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>TRACE</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${log_dir}/trace/%d{yyyy-MM-dd}/logs.log</fileNamePattern>
+            <maxHistory>${maxHistory}</maxHistory>
+        </rollingPolicy>
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n</pattern>
+        </encoder>
+    </appender>
+
+
+    <!-- root级别   DEBUG -->
+    <root>
+        <!-- 打印debug级别日志及以上级别日志 -->
+        <level value="info"/>
+        <!-- 控制台输出 -->
+        <appender-ref ref="console"/>
+        <!-- 文件输出 -->
+        <!--<appender-ref ref="ERROR"/>-->
+        <!--<appender-ref ref="INFO"/>-->
+        <!--<appender-ref ref="WARN"/>-->
+        <!--<appender-ref ref="DEBUG"/>-->
+        <!--<appender-ref ref="TRACE"/>-->
+    </root>
+</configuration>

+ 2 - 1
pom.xml

@@ -13,7 +13,7 @@
 
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <jboot.version>1.2.9</jboot.version>
+        <jboot.version>1.3.0</jboot.version>
         <slf4j-log4j12.version>1.7.25</slf4j-log4j12.version>
         <logback.version>1.1.11</logback.version>
     </properties>
@@ -24,6 +24,7 @@
         <module>jboot-admin-service</module>
         <module>jboot-wechat</module>
         <module>jboot-b2c-service</module>
+        <module>jboot-b2c</module>
     </modules>
 
     <dependencyManagement>