Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
caosy
/
fun-admin
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
c22a50e1
authored
Jun 05, 2018
by
chongli
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
会服用户订单统计模块
parent
fbffdb59
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
1163 additions
and
1 deletions
src/main/java/com/ctrip/fun/admin/controller/market/UserOrderBehaviourStatisticsController.java
src/main/java/com/ctrip/fun/admin/form/statistics/UserStatisticsQueryForm.java
src/main/java/com/ctrip/fun/admin/service/market/AbstractStatisticsExcelExportService.java
src/main/java/com/ctrip/fun/admin/service/market/UserOrderBehaviourExcelExportService.java
src/main/java/com/ctrip/fun/admin/service/market/UserOrderBehaviourStatisticsService.java
src/main/resources/config/spring-service.xml
src/main/resources/properties/service.properties
src/main/webapp/WEB-INF/templates/common/layout.ftl
src/main/webapp/WEB-INF/templates/market/listCourseUserOrderInfo.ftl
src/main/webapp/WEB-INF/templates/market/listUserCourseOrderBehaviour.ftl
src/main/webapp/WEB-INF/templates/market/listUserEventOrderBehaviour.ftl
src/main/webapp/WEB-INF/templates/market/listValidUserOrder.ftl
src/main/webapp/resource/js/app/statistics.js
src/main/java/com/ctrip/fun/admin/controller/market/UserOrderBehaviourStatisticsController.java
0 → 100644
View file @
c22a50e1
package
com
.
ctrip
.
fun
.
admin
.
controller
.
market
;
import
java.io.IOException
;
import
java.text.SimpleDateFormat
;
import
java.util.Calendar
;
import
java.util.List
;
import
javax.servlet.ServletOutputStream
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.ui.ModelMap
;
import
org.springframework.util.StringUtils
;
import
org.springframework.web.bind.annotation.ModelAttribute
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
com.ctrip.fun.admin.controller.statistics.AbstractStatisticsController
;
import
com.ctrip.fun.admin.form.PaginationForm
;
import
com.ctrip.fun.admin.form.statistics.StatisticsQueryForm
;
import
com.ctrip.fun.admin.form.statistics.UserStatisticsQueryForm
;
import
com.ctrip.fun.admin.service.market.UserOrderBehaviourExcelExportService
;
import
com.ctrip.fun.admin.service.market.UserOrderBehaviourStatisticsService
;
import
com.ctrip.fun.common.core.util.DateUtil
;
import
com.ctrip.fun.common.vo.PagedResponseBean
;
import
com.ctrip.fun.common.vo.market.UserOrderBehaviourStatisticsBean
;
import
com.ctrip.fun.common.vo.statistics.query.UserStatisticsQuery
;
@Controller
@RequestMapping
(
value
=
"/userOrderBehaviour"
)
public
class
UserOrderBehaviourStatisticsController
extends
AbstractStatisticsController
{
@Autowired
private
UserOrderBehaviourStatisticsService
userOrderBehaviourStatisticsService
;
@Autowired
private
UserOrderBehaviourExcelExportService
userOrderBehaviourExcelExportService
;
@RequestMapping
(
value
=
"/listUserCourseOrderBehaviour"
,
method
=
RequestMethod
.
GET
)
public
String
listUserCourseOrderBehaviour
(
HttpServletRequest
request
,
@ModelAttribute
(
"dto"
)
UserStatisticsQueryForm
dto
,
ModelMap
model
)
{
this
.
listUserOrderBehaviour
(
request
,
dto
,
model
);
return
"market/listUserCourseOrderBehaviour"
;
}
@RequestMapping
(
value
=
"/listUserEventOrderBehaviour"
,
method
=
RequestMethod
.
GET
)
public
String
listUserEventOrderBehaviour
(
HttpServletRequest
request
,
@ModelAttribute
(
"dto"
)
UserStatisticsQueryForm
dto
,
ModelMap
model
)
{
this
.
listUserOrderBehaviour
(
request
,
dto
,
model
);
return
"market/listUserEventOrderBehaviour"
;
}
private
void
listUserOrderBehaviour
(
HttpServletRequest
request
,
UserStatisticsQueryForm
dto
,
ModelMap
model
)
{
UserStatisticsQuery
query
=
new
UserStatisticsQuery
();
preHandlerQueryData
(
dto
,
query
);
query
.
setSearchDateStart
(
DateUtil
.
addDateField
(
query
.
getSearchDateEnd
(),
Calendar
.
YEAR
,
-
2
));
dto
.
setSearchDateStart
(
DateUtil
.
addDateField
(
query
.
getSearchDateEnd
(),
Calendar
.
YEAR
,
-
2
));
if
(
dto
.
getStatisticsType
()==
0
){
query
.
setStatisticsType
(
1
);
}
else
{
query
.
setStatisticsType
(
dto
.
getStatisticsType
());
}
int
currentPage
=
0
;
int
pageSize
;
int
total
;
int
pageCount
;
if
(
StringUtils
.
hasText
(
request
.
getParameter
(
"page"
)))
{
currentPage
=
Integer
.
parseInt
(
request
.
getParameter
(
"page"
));
}
query
.
setPagerOffset
(
currentPage
*
query
.
getPagerPerPage
());
PagedResponseBean
<
UserOrderBehaviourStatisticsBean
>
response
=
userOrderBehaviourStatisticsService
.
listUserOrderBehaviour
(
""
,
query
);
pageSize
=
query
.
getPagerPerPage
();
total
=
response
.
getCount
();
pageCount
=
(
0
==
total
%
pageSize
)
?
(
total
/
pageSize
)
:
(
total
/
pageSize
+
1
);
model
.
put
(
"list"
,
response
.
getResult
());
model
.
put
(
"paginationData"
,
new
PaginationForm
(
currentPage
,
pageSize
,
pageCount
,
total
));
StringBuilder
excel
=
new
StringBuilder
(
"excelExport?searchDateStart="
);
SimpleDateFormat
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
String
searchDateStart
=
(
query
.
getSearchDateStart
()
==
null
)
?
(
""
)
:
(
format
.
format
(
query
.
getSearchDateStart
()));
String
searchDateEnd
=
(
query
.
getSearchDateEnd
()
==
null
)
?
(
""
)
:
(
format
.
format
(
query
.
getSearchDateEnd
()));
excel
.
append
(
searchDateStart
);
excel
.
append
(
"&searchDateEnd="
);
excel
.
append
(
searchDateEnd
);
excel
.
append
(
"&statisticsType="
);
excel
.
append
(
query
.
getStatisticsType
());
model
.
put
(
"excelpath"
,
excel
.
toString
());
model
.
put
(
"searchDateStart"
,
searchDateStart
);
model
.
put
(
"searchDateEnd"
,
searchDateEnd
);
}
@RequestMapping
(
value
=
"/listCourseUserOrderInfo"
,
method
=
RequestMethod
.
GET
)
public
String
listCourseUserOrderInfo
(
HttpServletRequest
request
,
@ModelAttribute
(
"dto"
)
UserStatisticsQueryForm
dto
,
ModelMap
model
)
{
UserStatisticsQuery
query
=
new
UserStatisticsQuery
();
preHandlerQueryData
(
dto
,
query
);
query
.
setSearchDateStart
(
DateUtil
.
addDateField
(
query
.
getSearchDateEnd
(),
Calendar
.
YEAR
,
-
2
));
if
(
dto
.
getStatisticsType
()==
0
){
query
.
setStatisticsType
(
1
);
}
else
{
query
.
setStatisticsType
(
dto
.
getStatisticsType
());
}
if
(
dto
.
getCourseName
()==
null
){
dto
.
setCourseName
(
""
);
}
if
(
dto
.
getMobileNo
()==
null
){
dto
.
setMobileNo
(
""
);
}
query
.
setCourseName
(
dto
.
getCourseName
());
query
.
setDayOfWeek
(
dto
.
getDayOfWeek
());
query
.
setMobileNo
(
dto
.
getMobileNo
());
int
currentPage
=
0
;
int
pageSize
;
int
total
;
int
pageCount
;
if
(
StringUtils
.
hasText
(
request
.
getParameter
(
"page"
)))
{
currentPage
=
Integer
.
parseInt
(
request
.
getParameter
(
"page"
));
}
query
.
setPagerOffset
(
currentPage
*
query
.
getPagerPerPage
());
PagedResponseBean
<
UserOrderBehaviourStatisticsBean
>
response
=
userOrderBehaviourStatisticsService
.
listCourseUserOrderInfo
(
""
,
query
);
pageSize
=
query
.
getPagerPerPage
();
total
=
response
.
getCount
();
pageCount
=
(
0
==
total
%
pageSize
)
?
(
total
/
pageSize
)
:
(
total
/
pageSize
+
1
);
model
.
put
(
"list"
,
response
.
getResult
());
model
.
put
(
"paginationData"
,
new
PaginationForm
(
currentPage
,
pageSize
,
pageCount
,
total
));
StringBuilder
excel
=
new
StringBuilder
(
"excelExport?searchDateStart="
);
SimpleDateFormat
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
String
searchDateStart
=
(
query
.
getSearchDateStart
()
==
null
)
?
(
""
)
:
(
format
.
format
(
query
.
getSearchDateStart
()));
String
searchDateEnd
=
(
query
.
getSearchDateEnd
()
==
null
)
?
(
""
)
:
(
format
.
format
(
query
.
getSearchDateEnd
()));
excel
.
append
(
searchDateStart
);
excel
.
append
(
"&searchDateEnd="
);
excel
.
append
(
searchDateEnd
);
excel
.
append
(
"&statisticsType="
);
excel
.
append
(
query
.
getStatisticsType
());
model
.
put
(
"excelpath"
,
""
);
model
.
put
(
"searchDateStart"
,
searchDateStart
);
model
.
put
(
"searchDateEnd"
,
searchDateEnd
);
model
.
put
(
"courseName"
,
dto
.
getCourseName
());
model
.
put
(
"mobileNo"
,
dto
.
getMobileNo
());
model
.
put
(
"dayOfWeek"
,
dto
.
getDayOfWeek
());
return
"market/listCourseUserOrderInfo"
;
}
@RequestMapping
(
value
=
"/listValidUserOrder"
,
method
=
RequestMethod
.
GET
)
public
String
listValidUserOrder
(
HttpServletRequest
request
,
@ModelAttribute
(
"dto"
)
UserStatisticsQueryForm
dto
,
ModelMap
model
)
{
UserStatisticsQuery
query
=
new
UserStatisticsQuery
();
preHandlerQueryData
(
dto
,
query
);
query
.
setSearchDateStart
(
DateUtil
.
addDateField
(
query
.
getSearchDateEnd
(),
Calendar
.
YEAR
,
-
2
));
if
(
dto
.
getCourseName
()==
null
){
dto
.
setCourseName
(
""
);
}
if
(
dto
.
getMobileNo
()==
null
){
dto
.
setMobileNo
(
""
);
}
if
(
dto
.
getName
()==
null
){
dto
.
setName
(
""
);
}
if
(
dto
.
getOrderCategory
()==
null
){
dto
.
setOrderCategory
(
""
);
}
query
.
setOrderCategory
(
dto
.
getOrderCategory
());
query
.
setCourseName
(
dto
.
getCourseName
());
query
.
setDayOfWeek
(
dto
.
getDayOfWeek
());
query
.
setName
(
dto
.
getName
());
query
.
setMobileNo
(
dto
.
getMobileNo
());
int
currentPage
=
0
;
int
pageSize
;
int
total
;
int
pageCount
;
if
(
StringUtils
.
hasText
(
request
.
getParameter
(
"page"
)))
{
currentPage
=
Integer
.
parseInt
(
request
.
getParameter
(
"page"
));
}
query
.
setPagerOffset
(
currentPage
*
query
.
getPagerPerPage
());
PagedResponseBean
<
UserOrderBehaviourStatisticsBean
>
response
=
userOrderBehaviourStatisticsService
.
listValidUserOrder
(
""
,
query
);
pageSize
=
query
.
getPagerPerPage
();
total
=
response
.
getCount
();
pageCount
=
(
0
==
total
%
pageSize
)
?
(
total
/
pageSize
)
:
(
total
/
pageSize
+
1
);
model
.
put
(
"list"
,
response
.
getResult
());
model
.
put
(
"paginationData"
,
new
PaginationForm
(
currentPage
,
pageSize
,
pageCount
,
total
));
SimpleDateFormat
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
String
searchDateStart
=
(
query
.
getSearchDateStart
()
==
null
)
?
(
""
)
:
(
format
.
format
(
query
.
getSearchDateStart
()));
String
searchDateEnd
=
(
query
.
getSearchDateEnd
()
==
null
)
?
(
""
)
:
(
format
.
format
(
query
.
getSearchDateEnd
()));
model
.
put
(
"searchDateStart"
,
searchDateStart
);
model
.
put
(
"searchDateEnd"
,
searchDateEnd
);
model
.
put
(
"courseName"
,
dto
.
getCourseName
());
model
.
put
(
"mobileNo"
,
dto
.
getMobileNo
());
model
.
put
(
"name"
,
dto
.
getName
());
model
.
put
(
"orderCategory"
,
dto
.
getOrderCategory
());
return
"market/listValidUserOrder"
;
}
@RequestMapping
(
value
=
"/excelExport"
,
method
=
RequestMethod
.
GET
)
public
String
getExcelExport
(
HttpServletRequest
request
,
@ModelAttribute
(
"dto"
)
UserStatisticsQueryForm
dto
,
HttpServletResponse
response
)
{
UserStatisticsQuery
query
=
new
UserStatisticsQuery
();
preHandlerQueryData
(
dto
,
query
);
query
.
setSearchDateStart
(
DateUtil
.
addDateField
(
query
.
getSearchDateEnd
(),
Calendar
.
YEAR
,
-
2
));
if
(
dto
.
getStatisticsType
()==
0
){
query
.
setStatisticsType
(
1
);
}
else
{
query
.
setStatisticsType
(
dto
.
getStatisticsType
());
}
query
.
setPagerOffset
(-
1
);
query
.
setPagerPerPage
(-
1
);
userOrderBehaviourExcelExportService
.
setStatisticsType
(
query
.
getStatisticsType
());
List
<
UserOrderBehaviourStatisticsBean
>
responseBean
=
userOrderBehaviourExcelExportService
.
list
(
""
,
query
);
response
.
setContentType
(
"application/binary;charset=ISO8859-1"
);
String
filename
=
userOrderBehaviourExcelExportService
.
createExcelName
(
query
);
try
{
ServletOutputStream
outputStream
=
response
.
getOutputStream
();
filename
=
filename
.
replaceAll
(
"-"
,
""
);
response
.
setHeader
(
"Content-disposition"
,
"attachment;filename="
+
new
String
(
filename
.
getBytes
(
"gb2312"
),
"ISO8859-1"
)
+
".xlsx"
);
userOrderBehaviourExcelExportService
.
exportExcel
(
filename
,
responseBean
,
outputStream
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
@SuppressWarnings
(
"unchecked"
)
@Override
protected
<
T
extends
StatisticsQueryForm
>
T
getNewStatisticsQueryForm
()
{
return
(
T
)
new
UserStatisticsQueryForm
();
}
}
src/main/java/com/ctrip/fun/admin/form/statistics/UserStatisticsQueryForm.java
View file @
c22a50e1
...
@@ -6,6 +6,22 @@ public class UserStatisticsQueryForm extends StatisticsQueryForm {
...
@@ -6,6 +6,22 @@ public class UserStatisticsQueryForm extends StatisticsQueryForm {
* 是否有余额
* 是否有余额
*/
*/
private
Boolean
hasBalance
=
false
;
private
Boolean
hasBalance
=
false
;
/**
* 订单分析类型1单定场订单分析 14 赛事订单分析
*/
private
int
statisticsType
;
private
int
dayOfWeek
;
//1:星期日 2:星期一 3:星期二 4:星期三 5:星期四 6:星期五 7:星期六
private
String
courseName
;
//球场名称
private
String
mobileNo
;
//打球人电话
private
String
name
;
//打球人姓名
private
String
orderCategory
;
//订单类型
public
Boolean
getHasBalance
()
{
public
Boolean
getHasBalance
()
{
return
hasBalance
;
return
hasBalance
;
...
@@ -15,4 +31,53 @@ public class UserStatisticsQueryForm extends StatisticsQueryForm {
...
@@ -15,4 +31,53 @@ public class UserStatisticsQueryForm extends StatisticsQueryForm {
this
.
hasBalance
=
hasBalance
;
this
.
hasBalance
=
hasBalance
;
}
}
public
int
getStatisticsType
()
{
return
statisticsType
;
}
public
void
setStatisticsType
(
int
statisticsType
)
{
this
.
statisticsType
=
statisticsType
;
}
public
int
getDayOfWeek
()
{
return
dayOfWeek
;
}
public
void
setDayOfWeek
(
int
dayOfWeek
)
{
this
.
dayOfWeek
=
dayOfWeek
;
}
public
String
getCourseName
()
{
return
courseName
;
}
public
void
setCourseName
(
String
courseName
)
{
this
.
courseName
=
courseName
;
}
public
String
getMobileNo
()
{
return
mobileNo
;
}
public
void
setMobileNo
(
String
mobileNo
)
{
this
.
mobileNo
=
mobileNo
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
String
getOrderCategory
()
{
return
orderCategory
;
}
public
void
setOrderCategory
(
String
orderCategory
)
{
this
.
orderCategory
=
orderCategory
;
}
}
}
src/main/java/com/ctrip/fun/admin/service/market/AbstractStatisticsExcelExportService.java
0 → 100644
View file @
c22a50e1
package
com
.
ctrip
.
fun
.
admin
.
service
.
market
;
import
java.io.IOException
;
import
java.io.OutputStream
;
import
java.lang.reflect.Field
;
import
java.util.Collection
;
import
java.util.List
;
import
org.apache.poi.xssf.usermodel.XSSFCell
;
import
org.apache.poi.xssf.usermodel.XSSFCellStyle
;
import
org.apache.poi.xssf.usermodel.XSSFRow
;
import
org.apache.poi.xssf.usermodel.XSSFSheet
;
import
org.apache.poi.xssf.usermodel.XSSFWorkbook
;
import
com.ctrip.fun.admin.service.BaseService
;
import
com.ctrip.fun.admin.utility.ExportUtil
;
import
com.ctrip.fun.common.vo.statistics.query.StatisticsQuery
;
/**
* @author b.xu
* @version 2014-7-30
*/
public
abstract
class
AbstractStatisticsExcelExportService
<
H
extends
StatisticsQuery
,
T
>
extends
BaseService
{
/**
* @param listType
* 返回excel列属性
* @return
*/
public
abstract
String
[]
getRowsName
();
public
abstract
void
setCellByListType
(
XSSFRow
row
,
T
bean
,
Integer
cellNum
,
XSSFCellStyle
bodyCellStyle
);
/**
* @param userId
* @param query
* @return
*/
public
abstract
List
<
T
>
list
(
String
userId
,
StatisticsQuery
query
);
/**
* 获得excel文件
*
* @param filename
* @param title
* @param collection
* @param outputStream
*/
public
void
exportExcel
(
String
filename
,
Collection
<
T
>
collection
,
OutputStream
outputStream
)
{
XSSFWorkbook
workBook
=
new
XSSFWorkbook
();
XSSFSheet
sheet
=
workBook
.
createSheet
();
ExportUtil
exportUtil
=
new
ExportUtil
(
workBook
,
sheet
);
XSSFCellStyle
headStyle
=
exportUtil
.
getHeadStyle
();
XSSFCellStyle
bodyStyle
=
exportUtil
.
getBodyStyle
();
String
title
[]
=
this
.
getRowsName
();
XSSFRow
headRow
=
sheet
.
createRow
(
0
);
XSSFCell
cell
=
null
;
for
(
int
i
=
0
;
i
<
title
.
length
;
i
++)
{
cell
=
headRow
.
createCell
(
i
);
cell
.
setCellStyle
(
headStyle
);
cell
.
setCellValue
(
title
[
i
]);
sheet
.
setColumnWidth
(
i
,
8000
);
}
int
count
=
1
;
for
(
T
item
:
collection
)
{
XSSFRow
row
=
sheet
.
createRow
(
count
++);
row
.
setHeightInPoints
(
30
);
this
.
setCellByListType
(
row
,
item
,
title
.
length
,
bodyStyle
);
}
try
{
workBook
.
write
(
outputStream
);
outputStream
.
flush
();
outputStream
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
finally
{
try
{
outputStream
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
}
public
String
createExcelName
(
H
form
)
{
StringBuilder
excelName
=
new
StringBuilder
();
Class
orderQueryFormClass
=
form
.
getClass
();
Field
[]
orderQueryFormField
=
orderQueryFormClass
.
getDeclaredFields
();
for
(
int
i
=
0
;
i
<
orderQueryFormField
.
length
;
i
++)
{
try
{
orderQueryFormField
[
i
].
setAccessible
(
true
);
if
((
orderQueryFormField
[
i
].
get
(
form
)
!=
null
)
&&
(!
orderQueryFormField
[
i
].
get
(
form
).
toString
()
.
equals
(
""
)))
{
if
(!
orderQueryFormField
[
i
].
get
(
form
).
toString
()
.
equals
(
"0"
))
{
excelName
.
append
(
orderQueryFormField
[
i
].
get
(
form
)
.
toString
()
+
"+"
);
}
}
}
catch
(
IllegalArgumentException
|
IllegalAccessException
e
)
{
e
.
printStackTrace
();
}
}
return
excelName
.
toString
();
}
}
src/main/java/com/ctrip/fun/admin/service/market/UserOrderBehaviourExcelExportService.java
0 → 100644
View file @
c22a50e1
package
com
.
ctrip
.
fun
.
admin
.
service
.
market
;
import
java.text.SimpleDateFormat
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.apache.poi.xssf.usermodel.XSSFCell
;
import
org.apache.poi.xssf.usermodel.XSSFCellStyle
;
import
org.apache.poi.xssf.usermodel.XSSFRow
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.core.ParameterizedTypeReference
;
import
org.springframework.http.HttpEntity
;
import
org.springframework.http.HttpMethod
;
import
com.ctrip.fun.common.vo.PagedResponseBean
;
import
com.ctrip.fun.common.vo.Request
;
import
com.ctrip.fun.common.vo.Response
;
import
com.ctrip.fun.common.vo.market.UserOrderBehaviourStatisticsBean
;
import
com.ctrip.fun.common.vo.statistics.query.StatisticsQuery
;
import
com.ctrip.fun.common.vo.statistics.query.UserStatisticsQuery
;
public
class
UserOrderBehaviourExcelExportService
extends
AbstractStatisticsExcelExportService
<
UserStatisticsQuery
,
UserOrderBehaviourStatisticsBean
>
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
UserOrderBehaviourExcelExportService
.
class
);
private
int
statisticsType
=
0
;
@Override
public
String
[]
getRowsName
()
{
String
[]
title
=
null
;
switch
(
statisticsType
)
{
case
1
:
title
=
new
String
[]
{
"手机号"
,
"社员到期时间"
,
"用户名"
,
"下单次数"
};
break
;
case
2
:
title
=
new
String
[]
{
"用户名"
,
"手机号"
,
"性别"
,
"生日"
,
"vipGrade"
,
"社员到期时间"
};
break
;
case
3
:
title
=
new
String
[]
{
"手机号"
,
"社员到期时间"
,
"用户名"
,
"下单次数"
};
break
;
default
:
title
=
new
String
[]
{
"用户名"
,
"手机号"
,
"性别"
,
"生日"
,
"社员到期时间"
};
}
return
title
;
}
@Override
public
void
setCellByListType
(
XSSFRow
row
,
UserOrderBehaviourStatisticsBean
bean
,
Integer
cellNum
,
XSSFCellStyle
bodyCellStyle
)
{
List
<
String
>
valueList
=
new
ArrayList
<
String
>();
switch
(
statisticsType
){
case
1
:
valueList
.
add
(
bean
.
getMobileNo
());
valueList
.
add
(
bean
.
getCommuneExpireTimeDesc
());
valueList
.
add
(
bean
.
getUserName
());
valueList
.
add
(
bean
.
getPalceOrderTimes
()+
""
);
break
;
case
2
:
valueList
.
add
(
bean
.
getUserName
());
valueList
.
add
(
bean
.
getMobileNo
());
valueList
.
add
(
bean
.
getGender
());
valueList
.
add
(
bean
.
getBirth
());
valueList
.
add
(
bean
.
getVipGrade
()+
""
);
valueList
.
add
(
bean
.
getCommuneExpireTimeDesc
());
break
;
case
3
:
valueList
.
add
(
bean
.
getMobileNo
());
valueList
.
add
(
bean
.
getCommuneExpireTimeDesc
());
valueList
.
add
(
bean
.
getUserName
());
valueList
.
add
(
bean
.
getPalceOrderTimes
()+
""
);
break
;
default
:
valueList
.
add
(
bean
.
getUserName
());
valueList
.
add
(
bean
.
getMobileNo
());
valueList
.
add
(
bean
.
getGender
());
valueList
.
add
(
bean
.
getBirth
());
valueList
.
add
(
bean
.
getCommuneExpireTimeDesc
());
}
for
(
int
i
=
0
;
i
<
cellNum
;
i
++)
{
XSSFCell
cell
=
row
.
createCell
(
i
);
cell
.
setCellStyle
(
bodyCellStyle
);
if
(
valueList
.
get
(
i
)
==
null
)
{
cell
.
setCellValue
(
""
);
}
else
{
cell
.
setCellValue
(
valueList
.
get
(
i
));
}
}
}
public
List
<
UserOrderBehaviourStatisticsBean
>
list
(
String
userId
,
StatisticsQuery
query
)
{
String
uri
=
super
.
getServiceUri
(
"uri.userOrderBehaviour.listUserOrderBehaviour"
);
UserStatisticsQuery
sub_query
=
(
UserStatisticsQuery
)
query
;
PagedResponseBean
<
UserOrderBehaviourStatisticsBean
>
responseBean
=
new
PagedResponseBean
<
UserOrderBehaviourStatisticsBean
>(
0
,
new
ArrayList
<
UserOrderBehaviourStatisticsBean
>());
HttpEntity
<
Request
<
UserStatisticsQuery
>>
entity
=
new
HttpEntity
<
Request
<
UserStatisticsQuery
>>(
new
Request
<
UserStatisticsQuery
>(
userId
,
sub_query
));
Response
<
PagedResponseBean
<
UserOrderBehaviourStatisticsBean
>>
response
=
super
.
exchange
(
uri
,
HttpMethod
.
POST
,
entity
,
new
ParameterizedTypeReference
<
Response
<
PagedResponseBean
<
UserOrderBehaviourStatisticsBean
>>>()
{
}).
getBody
();
if
(
response
.
getStatus
()
==
0
)
{
responseBean
=
response
.
getBody
();
}
else
{
logger
.
error
(
"[查询用户下单行为] status: {}, msg: {}"
,
response
.
getStatus
(),
response
.
getMessage
());
}
return
(
List
<
UserOrderBehaviourStatisticsBean
>)
responseBean
.
getResult
();
}
@Override
public
String
createExcelName
(
UserStatisticsQuery
form
)
{
SimpleDateFormat
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
String
filename
=
format
.
format
(
form
.
getSearchDateStart
())+
"_"
+
format
.
format
(
form
.
getSearchDateEnd
());
switch
(
form
.
getStatisticsType
())
{
case
1
:
filename
+=
"单定场有效下单用户"
;
break
;
case
2
:
filename
+=
"单定场无有效下单用户"
;
break
;
case
3
:
filename
+=
"赛事有效下单用户"
;
break
;
default
:
filename
+=
"赛事无有效下单用户"
;
break
;
}
return
filename
;
}
public
void
setStatisticsType
(
int
statisticsType
)
{
this
.
statisticsType
=
statisticsType
;
}
}
src/main/java/com/ctrip/fun/admin/service/market/UserOrderBehaviourStatisticsService.java
0 → 100644
View file @
c22a50e1
package
com
.
ctrip
.
fun
.
admin
.
service
.
market
;
import
java.util.ArrayList
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.core.ParameterizedTypeReference
;
import
org.springframework.http.HttpEntity
;
import
org.springframework.http.HttpMethod
;
import
com.ctrip.fun.admin.service.statistics.AbstractStatisticsService
;
import
com.ctrip.fun.common.vo.PagedResponseBean
;
import
com.ctrip.fun.common.vo.Request
;
import
com.ctrip.fun.common.vo.Response
;
import
com.ctrip.fun.common.vo.market.UserOrderBehaviourStatisticsBean
;
import
com.ctrip.fun.common.vo.statistics.query.UserStatisticsQuery
;
public
class
UserOrderBehaviourStatisticsService
extends
AbstractStatisticsService
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
UserOrderBehaviourStatisticsService
.
class
);
public
PagedResponseBean
<
UserOrderBehaviourStatisticsBean
>
listUserOrderBehaviour
(
String
userId
,
UserStatisticsQuery
query
)
{
String
uri
=
super
.
getServiceUri
(
"uri.userOrderBehaviour.listUserOrderBehaviour"
);
PagedResponseBean
<
UserOrderBehaviourStatisticsBean
>
responseBean
=
new
PagedResponseBean
<
UserOrderBehaviourStatisticsBean
>(
0
,
new
ArrayList
<
UserOrderBehaviourStatisticsBean
>());
HttpEntity
<
Request
<
UserStatisticsQuery
>>
entity
=
new
HttpEntity
<
Request
<
UserStatisticsQuery
>>(
new
Request
<
UserStatisticsQuery
>(
userId
,
query
));
Response
<
PagedResponseBean
<
UserOrderBehaviourStatisticsBean
>>
response
=
super
.
exchange
(
uri
,
HttpMethod
.
POST
,
entity
,
new
ParameterizedTypeReference
<
Response
<
PagedResponseBean
<
UserOrderBehaviourStatisticsBean
>>>()
{
}).
getBody
();
if
(
response
.
getStatus
()
==
0
)
{
responseBean
=
response
.
getBody
();
}
else
{
logger
.
error
(
"[查询用户下单行为] status: {}, msg: {}"
,
response
.
getStatus
(),
response
.
getMessage
());
}
return
responseBean
;
}
public
PagedResponseBean
<
UserOrderBehaviourStatisticsBean
>
listCourseUserOrderInfo
(
String
userId
,
UserStatisticsQuery
query
)
{
String
uri
=
super
.
getServiceUri
(
"uri.userOrderBehaviour.listCourseUserOrderInfo"
);
PagedResponseBean
<
UserOrderBehaviourStatisticsBean
>
responseBean
=
new
PagedResponseBean
<
UserOrderBehaviourStatisticsBean
>(
0
,
new
ArrayList
<
UserOrderBehaviourStatisticsBean
>());
HttpEntity
<
Request
<
UserStatisticsQuery
>>
entity
=
new
HttpEntity
<
Request
<
UserStatisticsQuery
>>(
new
Request
<
UserStatisticsQuery
>(
userId
,
query
));
Response
<
PagedResponseBean
<
UserOrderBehaviourStatisticsBean
>>
response
=
super
.
exchange
(
uri
,
HttpMethod
.
POST
,
entity
,
new
ParameterizedTypeReference
<
Response
<
PagedResponseBean
<
UserOrderBehaviourStatisticsBean
>>>()
{
}).
getBody
();
if
(
response
.
getStatus
()
==
0
)
{
responseBean
=
response
.
getBody
();
}
else
{
logger
.
error
(
"[查询用户下单行为] status: {}, msg: {}"
,
response
.
getStatus
(),
response
.
getMessage
());
}
return
responseBean
;
}
public
PagedResponseBean
<
UserOrderBehaviourStatisticsBean
>
listValidUserOrder
(
String
userId
,
UserStatisticsQuery
query
)
{
String
uri
=
super
.
getServiceUri
(
"uri.userOrderBehaviour.listValidUserOrder"
);
PagedResponseBean
<
UserOrderBehaviourStatisticsBean
>
responseBean
=
new
PagedResponseBean
<
UserOrderBehaviourStatisticsBean
>(
0
,
new
ArrayList
<
UserOrderBehaviourStatisticsBean
>());
HttpEntity
<
Request
<
UserStatisticsQuery
>>
entity
=
new
HttpEntity
<
Request
<
UserStatisticsQuery
>>(
new
Request
<
UserStatisticsQuery
>(
userId
,
query
));
Response
<
PagedResponseBean
<
UserOrderBehaviourStatisticsBean
>>
response
=
super
.
exchange
(
uri
,
HttpMethod
.
POST
,
entity
,
new
ParameterizedTypeReference
<
Response
<
PagedResponseBean
<
UserOrderBehaviourStatisticsBean
>>>()
{
}).
getBody
();
if
(
response
.
getStatus
()
==
0
)
{
responseBean
=
response
.
getBody
();
}
else
{
logger
.
error
(
"[查询用户下单行为] status: {}, msg: {}"
,
response
.
getStatus
(),
response
.
getMessage
());
}
return
responseBean
;
}
}
src/main/resources/config/spring-service.xml
View file @
c22a50e1
...
@@ -214,7 +214,13 @@
...
@@ -214,7 +214,13 @@
<bean
name=
"userDestinationStatisticsService"
<bean
name=
"userDestinationStatisticsService"
class=
"com.ctrip.fun.admin.service.statistics.user.UserDestinationStatisticsService"
class=
"com.ctrip.fun.admin.service.statistics.user.UserDestinationStatisticsService"
parent=
"abstractStatisticsService"
/>
parent=
"abstractStatisticsService"
/>
<bean
name=
"userOrderBehaviourStatisticsService"
class=
"com.ctrip.fun.admin.service.market.UserOrderBehaviourStatisticsService"
parent=
"abstractStatisticsService"
/>
<bean
name=
"userOrderBehaviourExcelExportService"
class=
"com.ctrip.fun.admin.service.market.UserOrderBehaviourExcelExportService"
parent=
"abstractStatisticsService"
/>
<bean
name=
"courseUserStatisticsService"
<bean
name=
"courseUserStatisticsService"
class=
"com.ctrip.fun.admin.service.statistics.course.CourseUserStatisticsService"
class=
"com.ctrip.fun.admin.service.statistics.course.CourseUserStatisticsService"
parent=
"abstractStatisticsService"
/>
parent=
"abstractStatisticsService"
/>
...
...
src/main/resources/properties/service.properties
View file @
c22a50e1
...
@@ -462,6 +462,9 @@ uri.communeAdm.myBindList=/fun-golf-service/communeAdm/myBindList
...
@@ -462,6 +462,9 @@ uri.communeAdm.myBindList=/fun-golf-service/communeAdm/myBindList
uri.communeAdm.getByCommuneExtId
=
/fun-golf-service/communeAdm/getByCommuneExtId
uri.communeAdm.getByCommuneExtId
=
/fun-golf-service/communeAdm/getByCommuneExtId
uri.communeAdm.findAllLabels
=
/fun-golf-service/communeAdm/findAllLabels
uri.communeAdm.findAllLabels
=
/fun-golf-service/communeAdm/findAllLabels
uri.communeAdm.updateLabels
=
/fun-golf-service/communeAdm/updateLabels
uri.communeAdm.updateLabels
=
/fun-golf-service/communeAdm/updateLabels
uri.userOrderBehaviour.listUserOrderBehaviour
=
/fun-golf-service/userOrderBehaviour/listUserOrderBehaviour
uri.userOrderBehaviour.listCourseUserOrderInfo
=
/fun-golf-service/userOrderBehaviour/listCourseUserOrderInfo
uri.userOrderBehaviour.listValidUserOrder
=
/fun-golf-service/userOrderBehaviour/listValidUserOrder
# workPoint
# workPoint
uri.workPoint.queryWorkPointLogsList
=
/fun-golf-service/userWorkPointLog/query
uri.workPoint.queryWorkPointLogsList
=
/fun-golf-service/userWorkPointLog/query
...
...
src/main/webapp/WEB-INF/templates/common/layout.ftl
View file @
c22a50e1
...
@@ -505,6 +505,19 @@ ${pageCss}
...
@@ -505,6 +505,19 @@ ${pageCss}
<li
<#
if
current =
=
"
communeAdm_myBindList
"
>
class="active"
</
#
if>
>
<li
<#
if
current =
=
"
communeAdm_myBindList
"
>
class="active"
</
#
if>
>
<a
href=
"/communeAdm/myBindList"
>
我管理的社员
</a>
<a
href=
"/communeAdm/myBindList"
>
我管理的社员
</a>
</li>
</li>
<li
class=
"nav-header"
>
用户下单行为分析
</li>
<li
<#
if
current =
=
"
userOrderBehaviour_listUserCourseOrderBehaviour
"
>
class="active"
</
#
if>
>
<a
href=
"/userOrderBehaviour/listUserCourseOrderBehaviour?statisticsType=1"
>
单订场下单
</a>
</li>
<li
<#
if
current =
=
"
userOrderBehaviour_listUserEventOrderBehaviour
"
>
class="active"
</
#
if>
>
<a
href=
"/userOrderBehaviour/listUserEventOrderBehaviour?statisticsType=3"
>
赛事下单
</a>
</li>
<li
<#
if
current =
=
"
userOrderBehaviour_listCourseUserOrderInfo
"
>
class="active"
</
#
if>
>
<a
href=
"/userOrderBehaviour/listCourseUserOrderInfo?dayOfWeek=1"
>
球场下单用户分析
</a>
</li>
<li
<#
if
current =
=
"
userOrderBehaviour_listValidUserOrder
"
>
class="active"
</
#
if>
>
<a
href=
"/userOrderBehaviour/listValidUserOrder"
>
用户有效订单查询
</a>
</li>
</ul>
</ul>
</
#
if>
</
#
if>
</div>
</div>
...
...
src/main/webapp/WEB-INF/templates/market/listCourseUserOrderInfo.ftl
0 → 100644
View file @
c22a50e1
<#assign pageJsContent>
<script src="${staticServer}/js/lib/highcharts.js"></script>
<script src="${staticServer}/js/app/myHighcharts.js"></script>
<script src="${staticServer}/js/app/statistics.js"></script>
<script>
</script>
</#assign>
<#assign pageCssContent>
<link rel="stylesheet" href='${staticServer}/css/app/statistics.css'/>
<style>
</style>
</#assign>
<@com.layout title="用户下单行为分析" module="communeAdm" current="userOrderBehaviour_listCourseUserOrderInfo" pageCss=pageCssContent pageJs=pageJsContent>
<form id="J_Form" class="form-inline search-box" action="/userOrderBehaviour/listCourseUserOrderInfo" method="get">
<table class="labTable">
<tr style="height:40px;">
<td style="width:350px;padding-left:10px;">
查询时间:<br/>
<input type="date" name="searchDateStart" value="${searchDateStart}" style="margin-left: 0px;width:150px" class="input-medium">
<input type="date" name="searchDateEnd" value="${searchDateEnd}" style="margin-left: 0px;width:150px" class="input-medium">
</td>
<td style="width:200px;padding-left:10px;">
球场名称:<input type="text" name="courseName" style="margin-left: 0px;width:160px" value="${courseName}" />
</td>
<td style="margin-left: 200px;">
打球人电话:<input type="text" name="mobileNo" style="margin-left: 0px;width:140px" value="${mobileNo}" />
</td>
<td>
DayOfWeek:
<select name='dayOfWeek' style="width:100px;">
<option value='0' <#if dto.dayOfWeek==0>selected</#if> >所有</option>
<option value='2' <#if dto.dayOfWeek==2>selected</#if> >周一</option>
<option value='3' <#if dto.dayOfWeek==3>selected</#if> >周二</option>
<option value='4' <#if dto.dayOfWeek==4>selected</#if> >周三</option>
<option value='5' <#if dto.dayOfWeek==5>selected</#if> >周四</option>
<option value='6' <#if dto.dayOfWeek==6>selected</#if> >周五</option>
<option value='7' <#if dto.dayOfWeek==7>selected</#if> >周六</option>
<option value='1' <#if dto.dayOfWeek==1>selected</#if> >周日</option>
</select>
</td>
<td style="width:200px;"><a id="anyTime_J_submit" class="btn btn-primary">查询</a></td>
</tr>
</table>
<#if errorMsg??>
<table class="labTable"><tr><td class="red">error:${errorMsg!}</td></tr></table>
</#if>
<table class="table table-bordered table-striped widthShow">
<thead>
<tr>
<th>球场名称</th>
<th>用户名</th>
<th>手机号</th>
<th>性别</th>
<th>用户属性</th>
<th>社员到期时间</th>
<#if dto.dayOfWeek!=0>
<th>dayOfWeek</th>
</#if>
<th>下单次数</th>
</tr>
</thead>
<tbody class="J_shift">
<#list list as item>
<tr>
<td>${item.courseName!}</td>
<td>${item.userName!}</td>
<td>${item.mobileNo!}</td>
<#if item.gender??>
<#if (item.gender=="M")>
<td>男</td>
<#elseif (item.gender=="F")>
<td>女</td>
<#else>
<td>未知</td>
</#if>
<#else>
<td>未知</td>
</#if>
<td>${item.vipGrade!}</td>
<td>${item.communeExpireTimeDesc!}</td>
<#if dto.dayOfWeek!=0>
<td>
<#switch item.dayOfWeek>
<#case 1>
周日 <#break>
<#case 2>
周一<#break>
<#case 3>
周二<#break>
<#case 4>
周三<#break>
<#case 5>
周四<#break>
<#case 6>
周五<#break>
<#default>
周六
</#switch>
</td>
</#if>
<td><a href='/userOrderBehaviour/listValidUserOrder?searchDateStart=${searchDateStart}&searchDateEnd=${searchDateEnd}&courseName=${item.courseName!}&mobileNo=${item.mobileNo!}&name=${item.userName!}&dayOfWeek=${item.dayOfWeek!}'>${item.palceOrderTimes!}</a> </td>
</tr>
</#list>
</tbody>
</table>
<div class="pagination pagination-left">
<a href="${excelpath}">excel导出</a>
</div>
<div class="pagination pagination-right" style="width:1100px;">
<ul class="pagination pagination-right">
<@paginator.first />
<@paginator.previous />
<@paginator.numbers separator=""/>
<@paginator.next />
<@paginator.last />
</ul>
<@paginator.statistics />
</div>
</div>
</form>
</@com.layout>
src/main/webapp/WEB-INF/templates/market/listUserCourseOrderBehaviour.ftl
0 → 100644
View file @
c22a50e1
<#assign pageJsContent>
<script src="${staticServer}/js/lib/highcharts.js"></script>
<script src="${staticServer}/js/app/myHighcharts.js"></script>
<script src="${staticServer}/js/app/statistics.js"></script>
<script>
</script>
</#assign>
<#assign pageCssContent>
<link rel="stylesheet" href='${staticServer}/css/app/statistics.css'/>
<style>
</style>
</#assign>
<@com.layout title="用户下单行为分析" module="communeAdm" current="userOrderBehaviour_listUserCourseOrderBehaviour" pageCss=pageCssContent pageJs=pageJsContent>
<form id="J_Form" class="form-inline search-box" action="/userOrderBehaviour/listUserCourseOrderBehaviour" method="get">
<table class="labTable">
<tr style="height:40px;">
<td style="width:500px;padding-left:10px;"><@com.textInputTwoDate type="date" path1="dto.searchDateStart" path2="dto.searchDateEnd" attributes="style=\"margin-left: 0px;\"" label="查询时间:"/></td>
<td>
<select name='statisticsType' style="margin-left:65px;">
<option value='1' <#if dto.statisticsType==1>selected</#if> >单定场有效下单用户</option>
<option value='2' <#if dto.statisticsType==2>selected</#if> >单定场无有效下单用户</option>
</select>
</td>
<td style="width:200px;"><a id="anyTime_J_submit" class="btn btn-primary">查询</a></td>
</tr>
</table>
<#if errorMsg??>
<table class="labTable"><tr><td class="red">error:${errorMsg!}</td></tr></table>
</#if>
<#if dto.statisticsType==1 || dto.statisticsType==3>
<table class="table table-bordered table-striped widthShow">
<tr>
<th>手机号</th>
<th>社员到期时间</th>
<th>用户名</th>
<th>下单次数</th>
</tr>
<#list list as item>
<tr>
<td>${item.mobileNo!}</td>
<td>${item.communeExpireTimeDesc!}</td>
<td>${item.userName!}</td>
<td><a href="/userOrderBehaviour/listValidUserOrder?mobileNo=${item.mobileNo!}&searchDateStart=${searchDateStart}&searchDateEnd=${searchDateEnd}&orderCategory=1">${item.palceOrderTimes!}</a></td>
</tr>
</#list>
</table>
</#if>
<#if dto.statisticsType==2>
<table class="table table-bordered table-striped widthShow">
<tr>
<th>用户名</th>
<th>手机号</th>
<th>性别</th>
<th>生日</th>
<th>vipGrade</th>
<th>社员到期时间</th>
</tr>
<#list list as item>
<tr>
<td>${item.userName!}</td>
<td>${item.mobileNo!}</td>
<#if item.gender??>
<#if (item.gender=="M")>
<td>男</td>
<#elseif (item.gender=="F")>
<td>女</td>
<#else>
<td>未知</td>
</#if>
<#else>
<td>未知</td>
</#if>
<td>${item.birth!}</td>
<td>${item.vipGrade!}</td>
<td>${item.communeExpireTimeDesc!}</td>
</tr>
</#list>
</table>
</#if>
<#if dto.statisticsType==4>
<table class="table table-bordered table-striped widthShow">
<thead>
<tr>
<th>用户名</th>
<th>手机号</th>
<th>性别</th>
<th>生日</th>
<th>社员到期时间</th>
</tr>
</thead>
<tbody class="J_shift">
<#list list as item>
<tr>
<td>${item.userName!}</td>
<td>${item.mobileNo!}</td>
<#if item.gender??>
<#if (item.gender=="M")>
<td>男</td>
<#elseif (item.gender=="F")>
<td>女</td>
<#else>
<td>未知</td>
</#if>
<#else>
<td>未知</td>
</#if>
<td>${item.birth!}</td>
<td>${item.communeExpireTimeDesc!}</td>
</tr>
</#list>
</tbody>
</table>
</#if>
<div class="pagination pagination-left">
<a href="${excelpath}">excel导出</a>
</div>
<div class="pagination pagination-right" style="width:1100px;">
<ul class="pagination pagination-right">
<@paginator.first />
<@paginator.previous />
<@paginator.numbers separator=""/>
<@paginator.next />
<@paginator.last />
</ul>
<@paginator.statistics />
</div>
</div>
</form>
</@com.layout>
src/main/webapp/WEB-INF/templates/market/listUserEventOrderBehaviour.ftl
0 → 100644
View file @
c22a50e1
<#assign pageJsContent>
<script src="${staticServer}/js/lib/highcharts.js"></script>
<script src="${staticServer}/js/app/myHighcharts.js"></script>
<script src="${staticServer}/js/app/statistics.js"></script>
<script>
</script>
</#assign>
<#assign pageCssContent>
<link rel="stylesheet" href='${staticServer}/css/app/statistics.css'/>
<style>
</style>
</#assign>
<@com.layout title="用户下单行为分析" module="communeAdm" current="userOrderBehaviour_listUserEventOrderBehaviour" pageCss=pageCssContent pageJs=pageJsContent>
<form id="J_Form" class="form-inline search-box" action="/userOrderBehaviour/listUserEventOrderBehaviour" method="get">
<table class="labTable">
<tr style="height:40px;">
<td style="width:500px;padding-left:10px;"><@com.textInputTwoDate type="date" path1="dto.searchDateStart" path2="dto.searchDateEnd" attributes="style=\"margin-left: 0px;\"" label="查询时间:"/></td>
<td>
<select name='statisticsType' style="margin-left:65px;">
<option value='3' <#if dto.statisticsType==3>selected</#if> >赛事有效下单用户</option>
<option value='4' <#if dto.statisticsType==4>selected</#if> >赛事无有效下单用户</option>
</select>
</td>
<td style="width:200px;"><a id="anyTime_J_submit" class="btn btn-primary">查询</a></td>
</tr>
</table>
<#if errorMsg??>
<table class="labTable"><tr><td class="red">error:${errorMsg!}</td></tr></table>
</#if>
<#if dto.statisticsType==3>
<table class="table table-bordered table-striped widthShow">
<tr>
<th>手机号</th>
<th>社员到期时间</th>
<th>用户名</th>
<th>下单次数</th>
</tr>
<#list list as item>
<tr>
<td>${item.mobileNo!}</td>
<td>${item.communeExpireTimeDesc!}</td>
<td>${item.userName!}</td>
<td><a href="/userOrderBehaviour/listValidUserOrder?mobileNo=${item.mobileNo!}&searchDateStart=${searchDateStart}&searchDateEnd=${searchDateEnd}&orderCategory=14">${item.palceOrderTimes!}</a></td>
</tr>
</#list>
</table>
</#if>
<#if dto.statisticsType==4>
<table class="table table-bordered table-striped widthShow">
<thead>
<tr>
<th>用户名</th>
<th>手机号</th>
<th>性别</th>
<th>生日</th>
<th>社员到期时间</th>
</tr>
</thead>
<tbody class="J_shift">
<#list list as item>
<tr>
<td>${item.userName!}</td>
<td>${item.mobileNo!}</td>
<#if item.gender??>
<#if (item.gender=="M")>
<td>男</td>
<#elseif (item.gender=="F")>
<td>女</td>
<#else>
<td>未知</td>
</#if>
<#else>
<td>未知</td>
</#if>
<td>${item.birth!}</td>
<td>${item.communeExpireTimeDesc!}</td>
</tr>
</#list>
</tbody>
</table>
</#if>
<div class="pagination pagination-left">
<a href="${excelpath}">excel导出</a>
</div>
<div class="pagination pagination-right" style="width:1100px;">
<ul class="pagination pagination-right">
<@paginator.first />
<@paginator.previous />
<@paginator.numbers separator=""/>
<@paginator.next />
<@paginator.last />
</ul>
<@paginator.statistics />
</div>
</div>
</form>
</@com.layout>
src/main/webapp/WEB-INF/templates/market/listValidUserOrder.ftl
0 → 100644
View file @
c22a50e1
<#assign pageJsContent>
<script src="${staticServer}/js/lib/highcharts.js"></script>
<script src="${staticServer}/js/app/myHighcharts.js"></script>
<script src="${staticServer}/js/app/statistics.js"></script>
<script>
</script>
</#assign>
<#assign pageCssContent>
<link rel="stylesheet" href='${staticServer}/css/app/statistics.css'/>
<style>
</style>
</#assign>
<@com.layout title="用户下单行为分析" module="communeAdm" current="userOrderBehaviour_listValidUserOrder" pageCss=pageCssContent pageJs=pageJsContent>
<form id="J_Form" class="form-inline search-box" action="/userOrderBehaviour/listValidUserOrder" method="get">
<table class="labTable">
<tr style="height:40px;">
<td style="width:250px;padding-left:10px;">
查询时间:
<input type="date" name="searchDateStart" value="${searchDateStart}" style="margin-left: 0px;width:150px" class="input-medium">
<input type="date" name="searchDateEnd" value="${searchDateEnd}" style="margin-left: 0px;width:150px" class="input-medium">
</td>
<td style="width:180px;">
球场名称: <input type="text" name="courseName" style="margin-left: 15px;width:160px" value="${courseName}" />
</td>
<td style="margin-left: 100px;">
打球人电话:<input type="text" name="mobileNo" style="margin-left: 0px;width:160px" value="${mobileNo}" />
</td>
</tr>
<tr>
<td>
订单类型:
<select name='orderCategory' style="width:150px;margin-left:10px;">
<option value='' selected >订单类型</option>
<option value='1' <#if dto.orderCategory=='1'>selected</#if> >单定场订单</option>
<option value='14' <#if dto.orderCategory=='14'>selected</#if> >赛事订单</option>
</select>
</td>
<td>
DayOfWeek:
<select name='dayOfWeek' style="width:100px;">
<option value='0' <#if dto.dayOfWeek==0>selected</#if> >所有</option>
<option value='2' <#if dto.dayOfWeek==2>selected</#if> >周一</option>
<option value='3' <#if dto.dayOfWeek==3>selected</#if> >周二</option>
<option value='4' <#if dto.dayOfWeek==4>selected</#if> >周三</option>
<option value='5' <#if dto.dayOfWeek==5>selected</#if> >周四</option>
<option value='6' <#if dto.dayOfWeek==6>selected</#if> >周五</option>
<option value='7' <#if dto.dayOfWeek==7>selected</#if> >周六</option>
<option value='1' <#if dto.dayOfWeek==1>selected</#if> >周日</option>
</select>
</td>
<td style="width:200px;"><a id="anyTime_J_submit" class="btn btn-primary">查询</a></td>
</tr>
</table>
<#if errorMsg??>
<table class="labTable"><tr><td class="red">error:${errorMsg!}</td></tr></table>
</#if>
<table class="table table-bordered table-striped widthShow">
<thead>
<tr>
<th>球场名称</th>
<th>用户名</th>
<th>手机号</th>
<th>订单号</th>
<th>订单日期</th>
<th>打球日期</th>
<th>实付金额</th>
<th>TeeTime</th>
</tr>
</thead>
<tbody class="J_shift">
<#list list as item>
<tr>
<td>${item.courseName!}</td>
<td>${item.userName!}</td>
<td> <a href='/system/user/list?mobilePhone=${item.mobileNo!}'>${item.mobileNo!}</a></td>
<#if item.orderCategory??>
<#if (item.orderCategory=="1")>
<td><a href="/order/orderList/list_all?orderNo=${item.orderNo!}&orderStartDate=${searchDateStart}&orderEndDate=${searchDateEnd}">${item.orderNo!}</a> </td>
<#elseif (item.orderCategory=="14")>
<td><a href="/eventActivityOrder/orderList/list_all?orderNo=${item.orderNo!}&orderStartDate=${searchDateStart}&orderEndDate=${searchDateEnd}">${item.orderNo!}</a> </td>
<#else>
<td><a href="">${item.orderNo!}</a> </td>
</#if>
<#else>
<td>未知</td>
</#if>
<td>${item.orderDate?substring(0,10)}</td>
<td>${item.playDate?substring(0,10)}(
<#switch item.dayOfWeek>
<#case 1>
周日 <#break>
<#case 2>
周一<#break>
<#case 3>
周二<#break>
<#case 4>
周三<#break>
<#case 5>
周四<#break>
<#case 6>
周五<#break>
<#default>
周六
</#switch>
)
</td>
<td>${item.actualAmount!} </td>
<td>${item.teeTime!} </td>
</tr>
</#list>
</tbody>
</table>
<div class="pagination pagination-right" style="width:1100px;">
<ul class="pagination pagination-right">
<@paginator.first />
<@paginator.previous />
<@paginator.numbers separator=""/>
<@paginator.next />
<@paginator.last />
</ul>
<@paginator.statistics />
</div>
</div>
</form>
</@com.layout>
\ No newline at end of file
src/main/webapp/resource/js/app/statistics.js
View file @
c22a50e1
...
@@ -57,6 +57,11 @@ $(function(){
...
@@ -57,6 +57,11 @@ $(function(){
$
(
"#J_Form"
).
submit
();
$
(
"#J_Form"
).
submit
();
});
});
//任何时间
$
(
"#anyTime_J_submit"
).
click
(
function
(){
$
(
"#J_Form"
).
submit
();
});
//昨天
//昨天
$
(
"#J_submit_yestoday"
).
click
(
function
(){
$
(
"#J_submit_yestoday"
).
click
(
function
(){
var
date
=
new
Date
();
var
date
=
new
Date
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment