Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
晶之木
miaosha
提交
26fdc152
M
miaosha
项目概览
晶之木
/
miaosha
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
miaosha
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
26fdc152
编写于
1月 23, 2019
作者:
Q
qiurunze
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
提交注冊登陸
上级
3dc731e7
变更
29
隐藏空白更改
内联
并排
Showing
29 changed file
with
855 addition
and
230 deletion
+855
-230
miaosha-admin/miaosha-admin-web/pom.xml
miaosha-admin/miaosha-admin-web/pom.xml
+8
-1
miaosha-admin/miaosha-admin-web/src/main/java/com/geekq/web/controller/BaseController.java
...rc/main/java/com/geekq/web/controller/BaseController.java
+7
-0
miaosha-admin/miaosha-admin-web/src/main/java/com/geekq/web/controller/LoginController.java
...c/main/java/com/geekq/web/controller/LoginController.java
+30
-0
miaosha-admin/miaosha-admin-web/src/main/java/com/geekq/web/controller/PayController.java
...src/main/java/com/geekq/web/controller/PayController.java
+2
-19
miaosha-admin/miaosha-admin-web/src/main/java/com/geekq/web/interceptor/LoginInterceptor.java
...main/java/com/geekq/web/interceptor/LoginInterceptor.java
+32
-0
miaosha-admin/miaosha-admin-web/src/main/java/com/geekq/web/interceptor/RequiredLogin.java
...rc/main/java/com/geekq/web/interceptor/RequiredLogin.java
+12
-0
miaosha-admin/miaosha-admin-web/src/main/resources/spring/applicationContext-service.xml
.../src/main/resources/spring/applicationContext-service.xml
+0
-11
miaosha-admin/miaosha-admin-web/src/main/resources/spring/springmvc.xml
...miaosha-admin-web/src/main/resources/spring/springmvc.xml
+44
-8
miaosha-admin/miaosha-admin-web/src/main/webapp/WEB-INF/views/checkmail_result.ftl
...in-web/src/main/webapp/WEB-INF/views/checkmail_result.ftl
+1
-1
miaosha-admin/miaosha-admin-web/src/main/webapp/WEB-INF/views/common/head-tpl.ftl
...min-web/src/main/webapp/WEB-INF/views/common/head-tpl.ftl
+2
-2
miaosha-admin/miaosha-admin-web/src/main/webapp/WEB-INF/web.xml
...a-admin/miaosha-admin-web/src/main/webapp/WEB-INF/web.xml
+34
-53
miaosha-admin/miaosha-admin-web/src/main/webapp/borrow.html
miaosha-admin/miaosha-admin-web/src/main/webapp/borrow.html
+3
-3
miaosha-admin/miaosha-admin-web/src/main/webapp/images/geekq.png
...-admin/miaosha-admin-web/src/main/webapp/images/geekq.png
+0
-0
miaosha-admin/miaosha-admin-web/src/main/webapp/images/miaoshaxitong.png
...iaosha-admin-web/src/main/webapp/images/miaoshaxitong.png
+0
-0
miaosha-admin/miaosha-admin-web/src/main/webapp/login.html
miaosha-admin/miaosha-admin-web/src/main/webapp/login.html
+12
-19
miaosha-admin/miaosha-admin-web/src/main/webapp/register.html
...sha-admin/miaosha-admin-web/src/main/webapp/register.html
+1
-1
miaosha-admin/miaosha-common/pom.xml
miaosha-admin/miaosha-common/pom.xml
+23
-0
miaosha-admin/miaosha-common/src/main/java/com/geekq/common/enums/MessageStatus.java
...n/src/main/java/com/geekq/common/enums/MessageStatus.java
+67
-0
miaosha-admin/miaosha-common/src/main/java/com/geekq/common/enums/ResultStatus.java
...on/src/main/java/com/geekq/common/enums/ResultStatus.java
+103
-0
miaosha-admin/miaosha-common/src/main/java/com/geekq/common/utils/Constanst.java
...ommon/src/main/java/com/geekq/common/utils/Constanst.java
+26
-0
miaosha-admin/miaosha-common/src/main/java/com/geekq/common/utils/IMoocJSONResult.java
...src/main/java/com/geekq/common/utils/IMoocJSONResult.java
+0
-112
miaosha-admin/miaosha-common/src/main/java/com/geekq/common/utils/MD5/MD5Utils.java
...on/src/main/java/com/geekq/common/utils/MD5/MD5Utils.java
+65
-0
miaosha-admin/miaosha-common/src/main/java/com/geekq/common/utils/SnowflakeIdWorker.java
...c/main/java/com/geekq/common/utils/SnowflakeIdWorker.java
+163
-0
miaosha-admin/miaosha-common/src/main/java/com/geekq/common/utils/ValidatorUtil.java
...n/src/main/java/com/geekq/common/utils/ValidatorUtil.java
+21
-0
miaosha-admin/miaosha-common/src/main/java/com/geekq/common/utils/resultbean/AbstractResult.java
...ava/com/geekq/common/utils/resultbean/AbstractResult.java
+63
-0
miaosha-admin/miaosha-common/src/main/java/com/geekq/common/utils/resultbean/ResultGeekQ.java
...n/java/com/geekq/common/utils/resultbean/ResultGeekQ.java
+52
-0
miaosha-admin/miaosha-common/src/main/java/com/geekq/common/validator/MobileCheck.java
...src/main/java/com/geekq/common/validator/MobileCheck.java
+19
-0
miaosha-admin/miaosha-common/src/main/java/com/geekq/common/validator/MobileValidator.java
...main/java/com/geekq/common/validator/MobileValidator.java
+30
-0
miaosha-admin/miaosha-common/src/main/java/com/geekq/common/vo/LoginVo.java
...sha-common/src/main/java/com/geekq/common/vo/LoginVo.java
+35
-0
未找到文件。
miaosha-admin/miaosha-admin-web/pom.xml
浏览文件 @
26fdc152
...
...
@@ -78,7 +78,14 @@
<groupId>
org.springframework
</groupId>
<artifactId>
spring-aspects
</artifactId>
</dependency>
<!-- xml freemarket 模板配置-->
<dependency>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-context-support
</artifactId>
<version>
3.2.4.RELEASE
</version>
</dependency>
<!-- JSP相关 -->
<dependency>
<groupId>
jstl
</groupId>
...
...
miaosha-admin/miaosha-admin-web/src/main/java/com/geekq/web/controller/BaseController.java
0 → 100644
浏览文件 @
26fdc152
package
com.geekq.web.controller
;
/**
* @author 邱润泽
*/
abstract
public
class
BaseController
{
}
miaosha-admin/miaosha-admin-web/src/main/java/com/geekq/web/controller/LoginController.java
0 → 100644
浏览文件 @
26fdc152
package
com.geekq.web.controller
;
import
com.geekq.common.utils.resultbean.ResultGeekQ
;
import
com.geekq.common.vo.LoginVo
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.validation.Valid
;
/**
* @author 邱润泽
* 登录模块
*/
@Controller
public
class
LoginController
extends
BaseController
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
LoginController
.
class
);
@RequestMapping
(
"/login"
)
@ResponseBody
public
ResultGeekQ
<
Boolean
>
dologin
(
HttpServletResponse
response
,
LoginVo
loginVo
)
{
ResultGeekQ
<
Boolean
>
result
=
ResultGeekQ
.
build
();
logger
.
info
(
loginVo
.
toString
());
return
result
;
}
}
miaosha-admin/miaosha-admin-web/src/main/java/com/geekq/web/controller/PayController.java
浏览文件 @
26fdc152
package
com.geekq.web.controller
;
import
org.apache.commons.lang3.StringUtils
;
import
com.geekq.web.service.CulsterService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
com.geekq.common.utils.IMoocJSONResult
;
import
com.geekq.web.service.CulsterService
;
/**
* @Description: 订购商品controller
...
...
@@ -24,17 +19,5 @@ public class PayController {
return
"login"
;
}
@GetMapping
(
"/buy"
)
@ResponseBody
public
IMoocJSONResult
doGetlogin
(
String
itemId
)
{
if
(
StringUtils
.
isNotBlank
(
itemId
))
{
buyService
.
displayBuy
(
itemId
);
}
else
{
return
IMoocJSONResult
.
errorMsg
(
"商品id不能为空"
);
}
return
IMoocJSONResult
.
ok
();
}
}
miaosha-admin/miaosha-admin-web/src/main/java/com/geekq/web/interceptor/LoginInterceptor.java
0 → 100644
浏览文件 @
26fdc152
package
com.geekq.web.interceptor
;
import
org.springframework.web.method.HandlerMethod
;
import
org.springframework.web.servlet.handler.HandlerInterceptorAdapter
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
/**
* @author 邱润泽
* 拦截器 拦截至主页面
*/
public
class
LoginInterceptor
extends
HandlerInterceptorAdapter
{
// @Override
// public boolean preHandle(HttpServletRequest request,
// HttpServletResponse response, Object handler) throws Exception {
// if (handler instanceof HandlerMethod) {
// HandlerMethod hm = (HandlerMethod) handler;
// RequiredLogin rl = hm.getMethodAnnotation(RequiredLogin.class);
// if (rl != null) {
//// if (request.getSession().getAttribute(
//// UserContext.LOGIN_IN_SESSION) == null) {
// response.sendRedirect("/login.html");
// return false;
// }
//// }
// }
// return super.preHandle(request, response, handler);
// }
}
miaosha-admin/miaosha-admin-web/src/main/java/com/geekq/web/interceptor/RequiredLogin.java
0 → 100644
浏览文件 @
26fdc152
package
com.geekq.web.interceptor
;
import
java.lang.annotation.ElementType
;
import
java.lang.annotation.Retention
;
import
java.lang.annotation.RetentionPolicy
;
import
java.lang.annotation.Target
;
@Target
(
ElementType
.
METHOD
)
@Retention
(
RetentionPolicy
.
RUNTIME
)
public
@interface
RequiredLogin
{
}
miaosha-admin/miaosha-admin-web/src/main/resources/spring/applicationContext-service.xml
浏览文件 @
26fdc152
...
...
@@ -18,15 +18,4 @@
<!-- 通知spring使用cglib而不是jdk的来生成代理方法 AOP可以拦截到Service -->
<aop:aspectj-autoproxy
proxy-target-class=
"true"
></aop:aspectj-autoproxy>
<!-- 配置viewResolver -->
<bean
id=
"viewResolver"
class=
"org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"
>
<!-- 把session中的属性直接添加到freemarker的上下文中,我们就可以在页面上直接使用session中的属性 -->
<property
name=
"exposeSessionAttributes"
value=
"true"
/>
<!-- 配置模板文件的后缀 -->
<property
name=
"suffix"
value=
".ftl"
/>
<!-- 配置输出文件的编码类型 -->
<property
name=
"contentType"
value=
"text/html;charset=UTF-8"
/>
</bean>
</beans>
miaosha-admin/miaosha-admin-web/src/main/resources/spring/springmvc.xml
浏览文件 @
26fdc152
...
...
@@ -11,6 +11,8 @@
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd"
>
<!--<import resource="classpath:spring/applicationContext-service.xml" />-->
<context:component-scan
base-package=
"com.geekq.web.controller"
/>
<!-- 自动创建代理 对@AspectJ注解的支持 -->
...
...
@@ -18,20 +20,53 @@
<aop:aspectj-autoproxy
proxy-target-class=
"true"
></aop:aspectj-autoproxy>
<mvc:annotation-driven
/>
<!-- 配置拦截器 -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping
path=
"/**"
/>
<bean
class=
"com.geekq.web.interceptor.LoginInterceptor"
/>
</mvc:interceptor>
<!--<mvc:interceptor>-->
<!--<mvc:mapping path="/**" />-->
<!--<bean class="com.eloan.uiweb.interceptor.AddGlobalUtilInterceptor" />-->
<!--</mvc:interceptor>-->
</mvc:interceptors>
<!-- 开启aop,对类代理 -->
<aop:config
proxy-target-class=
"true"
></aop:config>
<!-- 静态资源映射 -->
<!-- 缓存存在时间 cache-period 1年 修改-->
<mvc:resources
mapping=
"/**/**"
location=
"/**/"
cache-period=
"31556926"
/>
<!--<!–处理上传 –>-->
<!--<bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver" id="multipartResolver">-->
<!--<!– 在spring中,SpEL,#{}中的内容都是可以让spring来帮我们计算的内容 –>-->
<!--<property name="maxUploadSize" value="#{1024*1024*100}" />-->
<!--</bean>-->
<!--<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">-->
<!--<property name="prefix" value="/WEB-INF/jsp/" />-->
<!--<property name="suffix" value=".jsp" />-->
<!--<property name="viewClass" value="org.springframework.web.servlet.view.InternalResourceView" />-->
<!--<property name="prefix" value="/WEB-INF/" />-->
<!--<property name="suffix" value=".html" />-->
<!--<property name="order" value="1" />-->
<!--</bean>-->
<!-- 配置freemarker本身 -->
<bean
class=
"org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"
>
<!-- freemarker模板的编码 -->
<property
name=
"defaultEncoding"
value=
"UTF-8"
/>
<!-- freemarker找模板的目录 -->
<property
name=
"templateLoaderPath"
value=
"/WEB-INF/views/"
/>
<!-- freemarker的一些基本输出设置 -->
<property
name=
"freemarkerSettings"
>
<value>
number_format = 0.##
datetime_format = yyyy-MM-dd HH:mm:ss
</value>
</property>
</bean>
<!-- 配置viewResolver -->
<bean
id=
"viewResolver"
...
...
@@ -40,12 +75,13 @@
<property
name=
"exposeSessionAttributes"
value=
"true"
/>
<!-- 配置模板文件的后缀 -->
<property
name=
"suffix"
value=
".ftl"
/>
<property
name=
"order"
value=
"1"
/>
<!-- 配置输出文件的编码类型 -->
<property
name=
"contentType"
value=
"text/html;charset=UTF-8"
/>
</bean>
<!--
属性文件不能跨容器,要在controller中也能被访问到,也需要配置
-->
<
context:property-placeholder
location=
"classpath:resource/*.properties"
/
>
<!--
<!– 属性文件不能跨容器,要在controller中也能被访问到,也需要配置 –>
-->
<
!--<context:property-placeholder location="classpath:resource/*.properties" />--
>
</beans>
miaosha-admin/miaosha-admin-web/src/main/webapp/WEB-INF/views/checkmail_result.ftl
浏览文件 @
26fdc152
...
...
@@ -33,7 +33,7 @@
<div
class=
"container"
style=
"position: relative;"
>
<ul
class=
"nav navbar-nav navbar-right"
>
<li><a
href=
"/"
>
首页
</a></li>
<li><a
href=
"/login.html"
>
登录
</a></li>
<li><a
href=
"/
WEB-INF/
login.html"
>
登录
</a></li>
<li><a
href=
"#"
>
帮助
</a></li>
</ul>
</div>
...
...
miaosha-admin/miaosha-admin-web/src/main/webapp/WEB-INF/views/common/head-tpl.ftl
浏览文件 @
26fdc152
...
...
@@ -3,8 +3,8 @@
<ul class="nav navbar-nav navbar-right">
<li><a href="/">首页</a></li>
<#if !logininfo??>
<li><a href="/login.html">登录</a></li>
<li><a href="/register.html">快速注册</a></li>
<li><a href="/
WEB-INF/
login.html">登录</a></li>
<li><a href="/
WEB-INF/
register.html">快速注册</a></li>
<#else>
<li>
<a class="el-current-user" href="/personal.do">
...
...
miaosha-admin/miaosha-admin-web/src/main/webapp/WEB-INF/web.xml
浏览文件 @
26fdc152
<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns=
"http://java.sun.com/xml/ns/javaee"
xmlns:web=
"http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation=
"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version=
"2.5"
>
<web-app
id=
"WebApp_9"
version=
"2.4"
xmlns=
"http://java.sun.com/xml/ns/j2ee"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
>
<display-name>
miaosha-admin-web
</display-name>
<welcome-file-list>
<welcome-file>
index.html
</welcome-file>
<welcome-file>
index.htm
</welcome-file>
<welcome-file>
index.jsp
</welcome-file>
<welcome-file>
default.html
</welcome-file>
<welcome-file>
default.htm
</welcome-file>
<welcome-file>
default.jsp
</welcome-file>
</welcome-file-list>
<!-- 加载log4j -->
<context-param>
<param-name>
log4jConfigLocation
</param-name>
<param-value>
classpath:log4j.properties
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.util.Log4jConfigListener
</listener-class>
</listener>
<servlet>
<servlet-name>
springMVC
</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>
contextConfigLocation
</param-name>
<param-value>
classpath:/spring/springmvc.xml
</param-value>
</init-param>
<load-on-startup>
1
</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>
springMVC
</servlet-name>
<url-pattern>
*.do
</url-pattern>
</servlet-mapping>
<!-- 加载spring容器 -->
<context-param>
<param-name>
contextConfigLocation
</param-name>
<param-value>
classpath:spring/applicationContext-*.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!-- 解决post乱码 -->
<filter>
<filter-name>
CharacterEncodingFilter
</filter-name>
<filter-name>
characterEncoding
</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>
encoding
</param-name>
...
...
@@ -43,24 +26,22 @@
</init-param>
</filter>
<filter-mapping>
<filter-name>
CharacterEncodingFilter
</filter-name>
<url-pattern>
/*
</url-pattern>
<filter-name>
characterEncoding
</filter-name>
<url-pattern>
*.do
</url-pattern>
</filter-mapping>
<!-- springmvc的前端控制器 -->
<servlet>
<servlet-name>
miaosha-admin-web
</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>
contextConfigLocation
</param-name>
<param-value>
classpath:spring/springmvc.xml
</param-value>
</init-param>
<load-on-startup>
1
</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>
miaosha-admin-web
</servlet-name>
<url-pattern>
/
</url-pattern>
</servlet-mapping>
<!-- 加载spring容器 -->
<context-param>
<param-name>
contextConfigLocation
</param-name>
<param-value>
classpath:spring/applicationContext-*.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!-- 必须配置这个listener,才能在spring中使用RequestContextHolder -->
<listener>
<listener-class>
org.springframework.web.context.request.RequestContextListener
</listener-class>
</listener>
</web-app>
miaosha-admin/miaosha-admin-web/src/main/webapp/borrow.html
浏览文件 @
26fdc152
...
...
@@ -15,8 +15,8 @@
<div
class=
"container"
style=
"position: relative;"
>
<ul
class=
"nav navbar-nav navbar-right"
>
<li><a
href=
"/"
>
首页
</a></li>
<li><a
href=
"/
lo
gin.html"
>
登录
</a></li>
<li><a
href=
"/
regis
ter.html"
>
快速注册
</a></li>
<li><a
href=
"/
WEB-INF/login.html
gin.html"
>
登录
</a></li>
<li><a
href=
"/
WEB-INF/register.html
ter.html"
>
快速注册
</a></li>
<li><a
href=
"#"
>
帮助
</a></li>
</ul>
</div>
...
...
@@ -59,7 +59,7 @@
<li>
材料认证分数达到30分
</li>
<li>
视频认证
</li>
</ul>
<a
href=
"/
lo
gin.html"
class=
"el-borrow-apply"
>
<a
href=
"/
WEB-INF/login.html
gin.html"
class=
"el-borrow-apply"
>
登陆后申请
</a>
</div>
...
...
miaosha-admin/miaosha-admin-web/src/main/webapp/images/geekq.png
0 → 100644
浏览文件 @
26fdc152
40.3 KB
miaosha-admin/miaosha-admin-web/src/main/webapp/images/miaoshaxitong.png
0 → 100644
浏览文件 @
26fdc152
10.4 KB
miaosha-admin/miaosha-admin-web/src/main/webapp/login.html
浏览文件 @
26fdc152
...
...
@@ -2,7 +2,7 @@
<html>
<head>
<meta
http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
>
<title>
蓝源Eloan-P2P
平台->用户登录
</title>
<title>
秒杀
平台->用户登录
</title>
<link
rel=
"stylesheet"
href=
"/js/bootstrap-3.3.2-dist/css/bootstrap.css"
type=
"text/css"
/>
<link
rel=
"stylesheet"
href=
"/css/core.css"
type=
"text/css"
/>
<script
type=
"text/javascript"
src=
"/js/jquery/jquery-2.1.3.js"
></script>
...
...
@@ -52,7 +52,7 @@
});
},
rules
:{
usernam
e
:
"
required
"
,
mobil
e
:
"
required
"
,
password
:
"
required
"
}
});
...
...
@@ -78,7 +78,7 @@
<div
class=
"navbar navbar-default el-navbar"
>
<div
class=
"container"
>
<div
class=
"navbar-header"
>
<
a
href=
""
><img
alt=
"Brand"
src=
"/images/logo.png"
></a
>
<
!--<a href=""><img alt="Brand" src="/images/miaoshaxitong.png"></a>--
>
<span
class=
"el-page-title"
>
用户登录
</span>
</div>
</div>
...
...
@@ -89,9 +89,9 @@
<form
id=
"loginForm"
class=
"form-horizontal el-login-form"
action=
"/login.do"
method=
"post"
>
<p
class=
"h4"
style=
"margin: 10px 10px 20px 110px;color:#999;"
>
请输入用户名和密码
</p>
<div
class=
"form-group"
>
<label
class=
"control-label col-sm-2"
>
用户名
</label>
<label
class=
"control-label col-sm-2"
>
手机号码
</label>
<div
class=
"col-sm-10"
>
<input
type=
"text"
autocomplete=
"off"
name=
"
usernam
e"
class=
"form-control"
value=
"stef"
/>
<input
type=
"text"
autocomplete=
"off"
name=
"
mobil
e"
class=
"form-control"
value=
"stef"
/>
</div>
</div>
<div
class=
"form-group"
>
...
...
@@ -117,22 +117,15 @@
<div
class=
"container-foot-2"
>
<div
class=
"context"
>
<div
class=
"left"
>
<p>
专注于高级Java开发工程师的培养
</p>
<p>
版权所有:
 
2015广州小码哥教育科技有限公司
</p>
<p>
地
  
址:
 
广州市天河区棠下荷光三横路盛达商务园D座5楼
</p>
<p>
电
  
话: 020-29007520
  
邮箱:
 
service@520it.com
</p>
<p>
<a
href=
"http://www.miitbeian.gov.cn"
style=
"color: #ffffff"
>
ICP备案
:粤ICP备字1504547
</a>
</p>
<p>
<a
href=
"http://www.gzjd.gov.cn/wlaqjc/open/validateSite.do"
style=
"color: #ffffff"
>
穗公网安备:44010650010086
</a>
</p>
<p>
we -- hello -- world
</p>
<p>
版权所有:
 
GeekQ
</p>
<p>
地
  
址:
 
北京市
</p>
<p>
Q
  
Q: 3341386488
  
</p>
<p>
邮 箱:
 
QiuRunZe_key@163.com
</p>
</div>
<div
class=
"right"
>
<a
target=
"_blank"
href=
"http
://weibo.com/ITxiaomage
"
><img
src=
"/images/
sina
.png"
></a>
<a
target=
"_blank"
href=
"http
s://github.com/qiurunze123/miaosha
"
><img
src=
"/images/
geekq
.png"
></a>
</div>
<div
class=
"clearfix"
></div>
</div>
...
...
miaosha-admin/miaosha-admin-web/src/main/webapp/register.html
浏览文件 @
26fdc152
...
...
@@ -111,7 +111,7 @@
<div
class=
"container"
style=
"position: relative;"
>
<ul
class=
"nav navbar-nav navbar-right"
>
<li><a
href=
"/"
>
首页
</a></li>
<li><a
href=
"/login.html"
>
登录
</a></li>
<li><a
href=
"/
WEB-INF/
login.html"
>
登录
</a></li>
<li><a
href=
"#"
>
帮助
</a></li>
</ul>
</div>
...
...
miaosha-admin/miaosha-common/pom.xml
浏览文件 @
26fdc152
...
...
@@ -28,6 +28,29 @@
<groupId>
com.fasterxml.jackson.core
</groupId>
<artifactId>
jackson-databind
</artifactId>
</dependency>
<!-- 校验处理工具包 -->
<dependency>
<groupId>
javax.validation
</groupId>
<artifactId>
validation-api
</artifactId>
<version>
2.0.1.Final
</version>
</dependency>
<!--lombook引用-->
<dependency>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
<version>
1.18.2
</version>
<scope>
provided
</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator -->
<dependency>
<groupId>
org.hibernate
</groupId>
<artifactId>
hibernate-validator
</artifactId>
<version>
5.3.5.Final
</version>
</dependency>
<!-- httpclient -->
<dependency>
<groupId>
org.apache.httpcomponents
</groupId>
...
...
miaosha-admin/miaosha-common/src/main/java/com/geekq/common/enums/MessageStatus.java
0 → 100644
浏览文件 @
26fdc152
package
com.geekq.common.enums
;
public
class
MessageStatus
{
public
static
final
Integer
ZORE
=
0
;
/**
* 消息类型
*/
public
enum
messageType
{
maiosha_message
(
"秒杀消息"
),
buy_message
(
"购买消息"
),
system_message
(
"系统消息"
);
private
String
message
;
private
messageType
(
String
message
){
this
.
message
=
message
;
}
public
String
getMessage
()
{
return
message
;
}
}
/**
* 消息内容
*/
public
enum
ContentEnum
{
system_message_register
(
7000
,
"尊敬的用户你好,你已经成功注册!"
),
system_message_register_head
(
7001
,
"注册成功"
);
private
int
code
;
private
String
message
;
private
ContentEnum
(
int
code
,
String
message
)
{
this
.
code
=
code
;
this
.
message
=
message
;
}
public
int
getCode
()
{
return
code
;
}
public
String
getMessage
()
{
return
message
;
}
}
/**
* 消息类型
*/
public
enum
sendType
{
// maiosha_message("秒杀消息"),
// buy_message("购买消息"),
// system_message("系统消息");
// private String message;
//
// private messageType(String message){
// this.message = message;
// }
//
// public String getMessage() {
// return message;
// }
}
}
miaosha-admin/miaosha-common/src/main/java/com/geekq/common/enums/ResultStatus.java
0 → 100644
浏览文件 @
26fdc152
package
com.geekq.common.enums
;
/**
* 普通返回类
* 1打头 系统系列错误
* 2 注册登录系列错误
* 3 check 系列错误
* 4 秒杀错误
* 5 商品错误
* 6 订单错误
* @author qiurunze
*/
public
enum
ResultStatus
{
SUCCESS
(
0
,
"成功"
),
FAILD
(-
1
,
"失败"
),
EXCEPTION
(-
1
,
"系统异常"
),
PARAM_ERROR
(
10000
,
"参数错误"
),
SYSTEM_ERROR
(
10001
,
"系统错误"
),
FILE_NOT_EXIST
(
10002
,
"文件不存在"
),
FILE_NOT_DOWNLOAD
(
10003
,
"文件没有下载"
),
FILE_NOT_GENERATE
(
10004
,
"文件没有生成"
),
FILE_NOT_STORAGE
(
10005
,
"文件没有入库"
),
SYSTEM_DB_ERROR
(
10006
,
"数据库系统错误"
),
FILE_ALREADY_DOWNLOAD
(
10007
,
"文件已经下载"
),
DATA_ALREADY_PEXISTS
(
10008
,
"数据已经存在"
),
/**
* 注册登录
*/
RESIGETR_SUCCESS
(
20000
,
"注册成功!"
),
RESIGETER_FAIL
(
200001
,
"注册失败!"
),
CODE_FAIL
(
200002
,
"验证码不一致!"
),
/**
* check
*/
BIND_ERROR
(
30001
,
"参数校验异常:%s"
),
ACCESS_LIMIT_REACHED
(
30002
,
"请求非法!"
),
REQUEST_ILLEGAL
(
30004
,
"访问太频繁!"
),
SESSION_ERROR
(
30005
,
"Session不存在或者已经失效!"
),
PASSWORD_EMPTY
(
30006
,
"登录密码不能为空!"
),
MOBILE_EMPTY
(
30007
,
"手机号不能为空!"
),
MOBILE_ERROR
(
30008
,
"手机号格式错误!"
),
MOBILE_NOT_EXIST
(
30009
,
"手机号不存在!"
),
PASSWORD_ERROR
(
30010
,
"密码错误!"
),
USER_NOT_EXIST
(
30011
,
"用户不存在!"
),
/**
* 订单模块
*/
ORDER_NOT_EXIST
(
60001
,
"订单不存在"
),
/**
* 秒杀模块
*/
MIAO_SHA_OVER
(
40001
,
"商品已经秒杀完毕"
),
REPEATE_MIAOSHA
(
40002
,
"不能重复秒杀"
),
MIAOSHA_FAIL
(
40003
,
"秒杀失败"
);
/**
* 商品模块
*/
private
int
code
;
private
String
message
;
private
ResultStatus
(
int
code
,
String
message
)
{
this
.
code
=
code
;
this
.
message
=
message
;
}
public
int
getCode
()
{
return
this
.
code
;
}
public
void
setCode
(
int
code
)
{
this
.
code
=
code
;
}
public
String
getMessage
()
{
return
this
.
message
;
}
public
void
setMessage
(
String
message
)
{
this
.
message
=
message
;
}
public
String
getName
()
{
return
this
.
name
();
}
public
String
getOutputName
()
{
return
this
.
name
();
}
public
String
toString
()
{
return
this
.
getName
();
}
private
ResultStatus
(
Object
...
args
)
{
this
.
message
=
String
.
format
(
this
.
message
,
args
);
}
}
miaosha-admin/miaosha-common/src/main/java/com/geekq/common/utils/Constanst.java
0 → 100644
浏览文件 @
26fdc152
package
com.geekq.common.utils
;
public
class
Constanst
{
public
static
String
CLOSE_ORDER_INFO_TASK_LOCK
=
"CLOSE_ORDER_INFO_KEY"
;
public
static
String
COUNTLOGIN
=
"count:login"
;
public
enum
orderStaus
{
ORDER_NOT_PAY
(
"新建未支付"
);
orderStaus
(
String
name
){
this
.
name
=
name
;
}
private
String
name
;
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
}
}
miaosha-admin/miaosha-common/src/main/java/com/geekq/common/utils/IMoocJSONResult.java
已删除
100644 → 0
浏览文件 @
3dc731e7
package
com.geekq.common.utils
;
/**
*
* @Description: 自定义响应数据结构
* 这个类是提供给门户,ios,安卓,微信商城用的
* 门户接受此类数据后需要使用本类的方法转换成对于的数据类型格式(类,或者list)
* 其他自行处理
* 200:表示成功
* 500:表示错误,错误信息在msg字段中
* 501:bean验证错误,不管多少个错误都以map形式返回
* 502:拦截器拦截到用户token出错
* 555:异常抛出信息
*/
public
class
IMoocJSONResult
{
// 响应业务状态
private
Integer
status
;
// 响应消息
private
String
msg
;
// 响应中的数据
private
Object
data
;
private
String
ok
;
// 不使用
public
static
IMoocJSONResult
build
(
Integer
status
,
String
msg
,
Object
data
)
{
return
new
IMoocJSONResult
(
status
,
msg
,
data
);
}
public
static
IMoocJSONResult
ok
(
Object
data
)
{
return
new
IMoocJSONResult
(
data
);
}
public
static
IMoocJSONResult
ok
()
{
return
new
IMoocJSONResult
(
null
);
}
public
static
IMoocJSONResult
errorMsg
(
String
msg
)
{
return
new
IMoocJSONResult
(
500
,
msg
,
null
);
}
public
static
IMoocJSONResult
errorMap
(
Object
data
)
{
return
new
IMoocJSONResult
(
501
,
"error"
,
data
);
}
public
static
IMoocJSONResult
errorTokenMsg
(
String
msg
)
{
return
new
IMoocJSONResult
(
502
,
msg
,
null
);
}
public
static
IMoocJSONResult
errorException
(
String
msg
)
{
return
new
IMoocJSONResult
(
555
,
msg
,
null
);
}
public
IMoocJSONResult
()
{
}
// public static LeeJSONResult build(Integer status, String msg) {
// return new LeeJSONResult(status, msg, null);
// }
public
IMoocJSONResult
(
Integer
status
,
String
msg
,
Object
data
)
{
this
.
status
=
status
;
this
.
msg
=
msg
;
this
.
data
=
data
;
}
public
IMoocJSONResult
(
Object
data
)
{
this
.
status
=
200
;
this
.
msg
=
"OK"
;
this
.
data
=
data
;
}
public
Boolean
isOK
()
{
return
this
.
status
==
200
;
}
public
Integer
getStatus
()
{
return
status
;
}
public
void
setStatus
(
Integer
status
)
{
this
.
status
=
status
;
}
public
String
getMsg
()
{
return
msg
;
}
public
void
setMsg
(
String
msg
)
{
this
.
msg
=
msg
;
}
public
Object
getData
()
{
return
data
;
}
public
void
setData
(
Object
data
)
{
this
.
data
=
data
;
}
public
String
getOk
()
{
return
ok
;
}
public
void
setOk
(
String
ok
)
{
this
.
ok
=
ok
;
}
}
miaosha-admin/miaosha-common/src/main/java/com/geekq/common/utils/MD5/MD5Utils.java
0 → 100644
浏览文件 @
26fdc152
package
com.geekq.common.utils.MD5
;
import
org.apache.commons.codec.digest.DigestUtils
;
import
java.security.SecureRandom
;
import
java.util.Arrays
;
import
java.util.Random
;
/**
* @author 邱润泽
*/
public
class
MD5Utils
{
private
static
final
String
getSaltT
(){
SecureRandom
random
=
new
SecureRandom
();
byte
bytes
[]
=
new
byte
[
15
];
random
.
nextBytes
(
bytes
);
String
salt
=
org
.
apache
.
commons
.
codec
.
binary
.
Base64
.
encodeBase64String
(
bytes
);
return
salt
;
}
private
static
String
getSalt
=
getSaltT
();
public
static
String
MD5
(
String
keyName
){
/**
* 返回16
*/
return
DigestUtils
.
md5Hex
(
keyName
);
}
/**
* 测试使用
* @param inputPass
* @return
*/
public
static
String
inputPassFormPass
(
String
inputPass
){
String
str
=
""
+
getSalt
.
charAt
(
0
)
+
getSalt
.
charAt
(
2
)
+
inputPass
+
getSalt
.
charAt
(
4
)
+
getSalt
.
charAt
(
6
)
;
return
MD5
(
str
);
}
/**
* 盐值salt 随机 二次加密
* @param inputPass
* @return
*/
public
static
String
formPassFormPass
(
String
inputPass
){
String
str
=
""
+
getSalt
.
charAt
(
0
)
+
getSalt
.
charAt
(
2
)
+
inputPass
+
getSalt
.
charAt
(
4
)
+
getSalt
.
charAt
(
6
)
;
return
MD5
(
str
);
}
/**
* 第二次md5--反解密 用户登录验证 --- salt 可随机
* @param formPass
* @param salt
* @return
*/
public
static
String
formPassToDBPass
(
String
formPass
,
String
salt
)
{
String
str
=
""
+
salt
.
charAt
(
0
)
+
salt
.
charAt
(
2
)+
formPass
+
salt
.
charAt
(
4
)
+
salt
.
charAt
(
6
)
;
return
MD5
(
str
);
}
}
miaosha-admin/miaosha-common/src/main/java/com/geekq/common/utils/SnowflakeIdWorker.java
0 → 100644
浏览文件 @
26fdc152
package
com.geekq.common.utils
;
/**
* Twitter_Snowflake<br>
* SnowFlake的结构如下(每部分用-分开):<br>
* 0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000 <br>
* 1位标识,由于long基本类型在Java中是带符号的,最高位是符号位,正数是0,负数是1,所以id一般是正数,最高位是0<br>
* 41位时间截(毫秒级),注意,41位时间截不是存储当前时间的时间截,而是存储时间截的差值(当前时间截 - 开始时间截)
* 得到的值),这里的的开始时间截,一般是我们的id生成器开始使用的时间,由我们程序来指定的(如下下面程序IdWorker类的startTime属性)。41位的时间截,可以使用69年,年T = (1L << 41) / (1000L * 60 * 60 * 24 * 365) = 69<br>
* 10位的数据机器位,可以部署在1024个节点,包括5位datacenterId和5位workerId<br>
* 12位序列,毫秒内的计数,12位的计数顺序号支持每个节点每毫秒(同一机器,同一时间截)产生4096个ID序号<br>
* 加起来刚好64位,为一个Long型。<br>
* SnowFlake的优点是,整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞(由数据中心ID和机器ID作区分),并且效率较高,经测试,SnowFlake每秒能够产生26万ID左右。
*/
public
class
SnowflakeIdWorker
{
// ==============================Fields===========================================
/** 开始时间截 (2015-01-01) */
private
final
long
twepoch
=
1420041600000L
;
/** 机器id所占的位数 */
private
final
long
workerIdBits
=
5L
;
/** 数据标识id所占的位数 */
private
final
long
datacenterIdBits
=
5L
;
/** 支持的最大机器id,结果是31 (这个移位算法可以很快的计算出几位二进制数所能表示的最大十进制数) */
private
final
long
maxWorkerId
=
-
1L
^
(-
1L
<<
workerIdBits
);
/** 支持的最大数据标识id,结果是31 */
private
final
long
maxDatacenterId
=
-
1L
^
(-
1L
<<
datacenterIdBits
);
/** 序列在id中占的位数 */
private
final
long
sequenceBits
=
12L
;
/** 机器ID向左移12位 */
private
final
long
workerIdShift
=
sequenceBits
;
/** 数据标识id向左移17位(12+5) */
private
final
long
datacenterIdShift
=
sequenceBits
+
workerIdBits
;
/** 时间截向左移22位(5+5+12) */
private
final
long
timestampLeftShift
=
sequenceBits
+
workerIdBits
+
datacenterIdBits
;
/** 生成序列的掩码,这里为4095 (0b111111111111=0xfff=4095) */
private
final
long
sequenceMask
=
-
1L
^
(-
1L
<<
sequenceBits
);
/** 工作机器ID(0~31) */
private
long
workerId
;
/** 数据中心ID(0~31) */
private
long
datacenterId
;
/** 毫秒内序列(0~4095) */
private
long
sequence
=
0L
;
/** 上次生成ID的时间截 */
private
long
lastTimestamp
=
-
1L
;
//==============================Constructors=====================================
/**
* 构造函数
* @param workerId 工作ID (0~31)
* @param datacenterId 数据中心ID (0~31)
*/
public
SnowflakeIdWorker
(
long
workerId
,
long
datacenterId
)
{
if
(
workerId
>
maxWorkerId
||
workerId
<
0
)
{
throw
new
IllegalArgumentException
(
String
.
format
(
"worker Id can't be greater than %d or less than 0"
,
maxWorkerId
));
}
if
(
datacenterId
>
maxDatacenterId
||
datacenterId
<
0
)
{
throw
new
IllegalArgumentException
(
String
.
format
(
"datacenter Id can't be greater than %d or less than 0"
,
maxDatacenterId
));
}
this
.
workerId
=
workerId
;
this
.
datacenterId
=
datacenterId
;
}
/**
* 生成订单唯一ID
* @param workerId
* @param datacenterId
* @return
*/
public
static
long
getOrderId
(
long
workerId
,
long
datacenterId
){
SnowflakeIdWorker
idWorker
=
new
SnowflakeIdWorker
(
0
,
0
);
return
idWorker
.
nextId
();
}
// ==============================Methods==========================================
/**
* 获得下一个ID (该方法是线程安全的)
* @return SnowflakeId
*/
public
synchronized
long
nextId
()
{
long
timestamp
=
timeGen
();
//如果当前时间小于上一次ID生成的时间戳,说明系统时钟回退过这个时候应当抛出异常
if
(
timestamp
<
lastTimestamp
)
{
throw
new
RuntimeException
(
String
.
format
(
"Clock moved backwards. Refusing to generate id for %d milliseconds"
,
lastTimestamp
-
timestamp
));
}
//如果是同一时间生成的,则进行毫秒内序列
if
(
lastTimestamp
==
timestamp
)
{
sequence
=
(
sequence
+
1
)
&
sequenceMask
;
//毫秒内序列溢出
if
(
sequence
==
0
)
{
//阻塞到下一个毫秒,获得新的时间戳
timestamp
=
tilNextMillis
(
lastTimestamp
);
}
}
//时间戳改变,毫秒内序列重置
else
{
sequence
=
0L
;
}
//上次生成ID的时间截
lastTimestamp
=
timestamp
;
//移位并通过或运算拼到一起组成64位的ID
return
((
timestamp
-
twepoch
)
<<
timestampLeftShift
)
//
|
(
datacenterId
<<
datacenterIdShift
)
//
|
(
workerId
<<
workerIdShift
)
//
|
sequence
;
}
/**
* 阻塞到下一个毫秒,直到获得新的时间戳
* @param lastTimestamp 上次生成ID的时间截
* @return 当前时间戳
*/
protected
long
tilNextMillis
(
long
lastTimestamp
)
{
long
timestamp
=
timeGen
();
while
(
timestamp
<=
lastTimestamp
)
{
timestamp
=
timeGen
();
}
return
timestamp
;
}
/**
* 返回以毫秒为单位的当前时间
* @return 当前时间(毫秒)
*/
protected
long
timeGen
()
{
return
System
.
currentTimeMillis
();
}
//==============================Test=============================================
/** 测试 */
public
static
void
main
(
String
[]
args
)
{
SnowflakeIdWorker
idWorker
=
new
SnowflakeIdWorker
(
0
,
0
);
for
(
int
i
=
0
;
i
<
1000
;
i
++)
{
long
id
=
idWorker
.
nextId
();
System
.
out
.
println
(
Long
.
toBinaryString
(
id
));
System
.
out
.
println
(
id
);
}
}
}
miaosha-admin/miaosha-common/src/main/java/com/geekq/common/utils/ValidatorUtil.java
0 → 100644
浏览文件 @
26fdc152
package
com.geekq.common.utils
;
import
org.apache.commons.lang3.StringUtils
;
import
java.util.regex.Matcher
;
import
java.util.regex.Pattern
;
public
class
ValidatorUtil
{
private
static
final
Pattern
mobile_pattern
=
Pattern
.
compile
(
"1\\d{10}"
);
public
static
boolean
isMobile
(
String
src
)
{
if
(
StringUtils
.
isEmpty
(
src
))
{
return
false
;
}
Matcher
m
=
mobile_pattern
.
matcher
(
src
);
return
m
.
matches
();
}
}
miaosha-admin/miaosha-common/src/main/java/com/geekq/common/utils/resultbean/AbstractResult.java
0 → 100644
浏览文件 @
26fdc152
package
com.geekq.common.utils.resultbean
;
import
com.geekq.common.enums.ResultStatus
;
public
class
AbstractResult
{
private
ResultStatus
status
;
private
int
code
;
private
String
message
;
protected
AbstractResult
(
ResultStatus
status
,
String
message
)
{
this
.
code
=
status
.
getCode
();
this
.
status
=
status
;
this
.
message
=
message
;
}
protected
AbstractResult
(
ResultStatus
status
)
{
this
.
code
=
status
.
getCode
();
this
.
message
=
status
.
getMessage
();
this
.
status
=
status
;
}
public
static
boolean
isSuccess
(
AbstractResult
result
)
{
return
result
!=
null
&&
result
.
status
==
ResultStatus
.
SUCCESS
&&
result
.
getCode
()
==
ResultStatus
.
SUCCESS
.
getCode
();
}
public
AbstractResult
withError
(
ResultStatus
status
)
{
this
.
status
=
status
;
return
this
;
}
public
AbstractResult
withError
(
String
message
)
{
this
.
status
=
ResultStatus
.
SYSTEM_ERROR
;
this
.
message
=
message
;
return
this
;
}
public
AbstractResult
withError
(
int
code
,
String
message
)
{
this
.
code
=
code
;
this
.
message
=
message
;
return
this
;
}
public
AbstractResult
success
()
{
this
.
status
=
ResultStatus
.
SUCCESS
;
return
this
;
}
public
ResultStatus
getStatus
()
{
return
this
.
status
;
}
public
String
getMessage
()
{
return
this
.
message
==
null
?
this
.
status
.
getMessage
()
:
this
.
message
;
}
public
int
getCode
()
{
return
this
.
code
;
}
public
void
setCode
(
int
code
)
{
this
.
code
=
code
;
}
}
miaosha-admin/miaosha-common/src/main/java/com/geekq/common/utils/resultbean/ResultGeekQ.java
0 → 100644
浏览文件 @
26fdc152
package
com.geekq.common.utils.resultbean
;
import
com.geekq.common.enums.ResultStatus
;
import
java.io.Serializable
;
public
class
ResultGeekQ
<
T
>
extends
AbstractResult
implements
Serializable
{
private
static
final
long
serialVersionUID
=
867933019328199779L
;
private
T
data
;
private
Integer
count
;
protected
ResultGeekQ
(
ResultStatus
status
,
String
message
)
{
super
(
status
,
message
);
}
protected
ResultGeekQ
(
ResultStatus
status
)
{
super
(
status
);
}
public
static
<
T
>
ResultGeekQ
<
T
>
build
()
{
return
new
ResultGeekQ
(
ResultStatus
.
SUCCESS
,
(
String
)
null
);
}
public
static
<
T
>
ResultGeekQ
<
T
>
build
(
String
message
)
{
return
new
ResultGeekQ
(
ResultStatus
.
SUCCESS
,
message
);
}
public
static
<
T
>
ResultGeekQ
<
T
>
error
(
ResultStatus
status
)
{
return
new
ResultGeekQ
<
T
>(
status
);
}
public
T
getData
()
{
return
data
;
}
public
void
setData
(
T
data
)
{
this
.
data
=
data
;
}
public
Integer
getCount
()
{
return
this
.
count
;
}
public
void
setCount
(
Integer
count
)
{
this
.
count
=
count
;
}
public
void
success
(
T
value
)
{
this
.
success
();
this
.
data
=
value
;
this
.
count
=
0
;
}
}
miaosha-admin/miaosha-common/src/main/java/com/geekq/common/validator/MobileCheck.java
0 → 100644
浏览文件 @
26fdc152
package
com.geekq.common.validator
;
import
javax.validation.Constraint
;
import
javax.validation.Payload
;
import
java.lang.annotation.*
;
@Target
({
ElementType
.
METHOD
,
ElementType
.
FIELD
,
ElementType
.
ANNOTATION_TYPE
,
ElementType
.
CONSTRUCTOR
,
ElementType
.
PARAMETER
})
@Retention
(
RetentionPolicy
.
RUNTIME
)
@Documented
@Constraint
(
validatedBy
=
{
MobileValidator
.
class
})
public
@interface
MobileCheck
{
boolean
required
()
default
true
;
String
message
()
default
"手机号码格式有误!"
;
Class
<?>[]
groups
()
default
{};
Class
<?
extends
Payload
>[]
payload
()
default
{};
}
miaosha-admin/miaosha-common/src/main/java/com/geekq/common/validator/MobileValidator.java
0 → 100644
浏览文件 @
26fdc152
package
com.geekq.common.validator
;
import
com.geekq.common.utils.ValidatorUtil
;
import
org.apache.commons.lang3.StringUtils
;
import
javax.validation.ConstraintValidator
;
import
javax.validation.ConstraintValidatorContext
;
public
class
MobileValidator
implements
ConstraintValidator
<
MobileCheck
,
String
>
{
private
boolean
require
=
false
;
@Override
public
void
initialize
(
MobileCheck
isMobile
)
{
require
=
isMobile
.
required
()
;
}
@Override
public
boolean
isValid
(
String
value
,
ConstraintValidatorContext
constraintValidatorContext
)
{
if
(
require
){
return
ValidatorUtil
.
isMobile
(
value
)
;
}
else
{
if
(
StringUtils
.
isEmpty
(
value
)){
return
true
;
}
else
{
return
ValidatorUtil
.
isMobile
(
value
)
;
}
}
}
}
miaosha-admin/miaosha-common/src/main/java/com/geekq/common/vo/LoginVo.java
0 → 100644
浏览文件 @
26fdc152
package
com.geekq.common.vo
;
import
com.geekq.common.validator.MobileCheck
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.NoArgsConstructor
;
import
lombok.Setter
;
import
org.hibernate.validator.constraints.Length
;
import
javax.validation.constraints.NotNull
;
/**
* @author 邱润泽
*/
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
public
class
LoginVo
{
@NotNull
@MobileCheck
private
String
mobile
;
@NotNull
@Length
(
min
=
32
)
private
String
password
;
@Override
public
String
toString
()
{
return
"LoginVo{"
+
"mobile='"
+
mobile
+
'\''
+
", password='"
+
password
+
'\''
+
'}'
;
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录