generated from root/miduo_server
全服订单下载
parent
ba9756992c
commit
2dc1b8771a
|
|
@ -13,6 +13,7 @@ import com.jmfy.utils.FileCacheUtils;
|
|||
import com.jmfy.utils.JsonUtil;
|
||||
import com.jmfy.utils.RedisUtil;
|
||||
import config.SRechargeCommodityConfig;
|
||||
import org.apache.poi.hssf.usermodel.*;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Controller;
|
||||
|
|
@ -22,11 +23,11 @@ import org.springframework.web.bind.annotation.RequestMethod;
|
|||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.io.*;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
import java.math.BigDecimal;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
|
|
@ -39,8 +40,6 @@ import java.util.*;
|
|||
*/
|
||||
@Controller
|
||||
public class OrderInfoController {
|
||||
@Resource
|
||||
private MailDao mailDao;
|
||||
@Resource
|
||||
private UserInfoDao userInfoDao;
|
||||
@Resource
|
||||
|
|
@ -78,7 +77,7 @@ public class OrderInfoController {
|
|||
CGPayOrder cgPayOrder = entry.getValue();
|
||||
String accountid = cgPayOrder.getUserId();
|
||||
int serverId = cgPayOrder.getServerId();
|
||||
GSUser gsUser = gsUserDao.findUserInfo(serverId, Integer.parseInt(cgPayOrder.getUserId()));
|
||||
// GSUser gsUser = gsUserDao.findUserInfo(serverId, Integer.parseInt(cgPayOrder.getUserId()));
|
||||
|
||||
if(Integer.valueOf(serverId1)!=0&&!String.valueOf(serverId).equals(serverId1))
|
||||
{
|
||||
|
|
@ -102,8 +101,11 @@ public class OrderInfoController {
|
|||
corder.setPayTime(payTime);
|
||||
corder.setProductid(cgPayOrder.getGoodsId());
|
||||
corder.setServerId(String.valueOf(serverId));
|
||||
Date registerDate = new Date(gsUser.getPlayerManager().getCreateTime());
|
||||
corder.setRegisterTime(simpleDateFormat.format(registerDate));
|
||||
// if(gsUser!=null){
|
||||
// Date registerDate = new Date(gsUser.getPlayerManager().getCreateTime());
|
||||
// corder.setRegisterTime(simpleDateFormat.format(registerDate));
|
||||
// }
|
||||
|
||||
// SRechargeCommodityConfig config = rechargeMap.get(Integer.parseInt(cgPayOrder.getGoodsId()));
|
||||
|
||||
SRechargeCommodityConfig config;
|
||||
|
|
@ -140,6 +142,171 @@ public class OrderInfoController {
|
|||
}
|
||||
|
||||
|
||||
@RequestMapping(value = "/exportExcelRequest", method = {RequestMethod.POST, RequestMethod.GET})
|
||||
public void exportExcelRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
|
||||
HashMap<String, String> parameterMap = JsonUtil.getInstence().getParameterMap(request);
|
||||
long startTime = JsonUtil.getAppointTimeInXDay(Long.parseLong(JsonUtil.date3TimeStamp(request.getParameter("startTime"))), 0);
|
||||
long endTime = JsonUtil.getAppointTimeInXDay(Long.parseLong(JsonUtil.date3TimeStamp(request.getParameter("endTime"))), 0);
|
||||
String userId = parameterMap.get("userId");
|
||||
String startData = JsonUtil.timeStamp2Date(String.valueOf(startTime));
|
||||
List<String> days = JsonUtil.getDays(startData,JsonUtil.timeStamp2Date(String.valueOf(endTime)));
|
||||
// SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
Map<Integer, SRechargeCommodityConfig> rechargeMap = FileCacheUtils.rechargeMap;
|
||||
Map<Integer,String> itemMap = FileCacheUtils.itemNameMap;
|
||||
List<Corder> cgPayOrders = new ArrayList<>();
|
||||
|
||||
CUserInfo userInfo =null;
|
||||
if(userId!=null&&!userId.isEmpty()){
|
||||
userInfo = userInfoDao.findUserInfoByUserId(Integer.parseInt(userId));
|
||||
}
|
||||
|
||||
for (String date :days){
|
||||
Map<String, CGPayOrder> map1 = RedisUtil.getInstence().getMap(RedisUserKey.C_PAYORDER_MAP + ":" + date, CGPayOrder.class, -1);
|
||||
for (Map.Entry<String,CGPayOrder> entry: map1.entrySet()){
|
||||
CGPayOrder cgPayOrder = entry.getValue();
|
||||
String accountid = cgPayOrder.getUserId();
|
||||
int serverId = cgPayOrder.getServerId();
|
||||
// GSUser gsUser = gsUserDao.findUserInfo(serverId, Integer.parseInt(cgPayOrder.getUserId()));
|
||||
|
||||
if (userInfo!=null &&!accountid.equals(userInfo.getId())){
|
||||
continue;
|
||||
}
|
||||
String amount = cgPayOrder.getAmount();
|
||||
double amountDouble;
|
||||
if(!amount.contains(".")){
|
||||
amountDouble = Integer.parseInt(amount)/100D;
|
||||
} else{
|
||||
amountDouble = Double.parseDouble(amount);
|
||||
}
|
||||
Corder corder = new Corder();
|
||||
corder.setAccountid(accountid);
|
||||
corder.setAmount(String.format("%.2f",amountDouble));
|
||||
corder.setOrderNo(cgPayOrder.getOrderId());
|
||||
String payTime = cgPayOrder.getDelivery_time();
|
||||
corder.setPayTime(payTime);
|
||||
corder.setProductid(cgPayOrder.getGoodsId());
|
||||
corder.setServerId(String.valueOf(serverId));
|
||||
// Date registerDate = new Date(gsUser.getPlayerManager().getCreateTime());
|
||||
// corder.setRegisterTime(simpleDateFormat.format(registerDate));
|
||||
// SRechargeCommodityConfig config = rechargeMap.get(Integer.parseInt(cgPayOrder.getGoodsId()));
|
||||
|
||||
SRechargeCommodityConfig config;
|
||||
int goodsId;
|
||||
if(isNumeric(cgPayOrder.getGoodsId())){
|
||||
goodsId = Integer.parseInt(cgPayOrder.getGoodsId());
|
||||
config =rechargeMap.get(goodsId);
|
||||
}else {
|
||||
config = SRechargeCommodityConfig.sdkRechargeCommodityConfigMap.get(cgPayOrder.getGoodsId());
|
||||
}
|
||||
|
||||
corder.setProductName(config==null?"":config.getName());
|
||||
corder.setCurrency_code(cgPayOrder.getCurrency_code()==null?"":cgPayOrder.getCurrency_code());
|
||||
corder.setCurrency_price(cgPayOrder.getCurrency_price()==null?"":cgPayOrder.getCurrency_price());
|
||||
|
||||
int[][] baseReward = config.getBaseReward();
|
||||
StringBuilder builder = new StringBuilder();
|
||||
if(baseReward!=null&&baseReward.length>0){
|
||||
Arrays.stream(baseReward).forEach(n->{
|
||||
if(builder.length()!=0){
|
||||
builder.append("、");
|
||||
}
|
||||
builder.append(itemMap.getOrDefault(n[0],"")).append("*").append(n[1]);
|
||||
});
|
||||
}
|
||||
corder.setProductContent(builder.toString());
|
||||
|
||||
corder.setRecharge_type(cgPayOrder.getRecharge_type());
|
||||
cgPayOrders.add(corder);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
HttpSession session = request.getSession();
|
||||
session.setAttribute("state", null);
|
||||
// 生成提示信息,
|
||||
response.setContentType("application/csv;charset=gbk");
|
||||
String codedFileName = null;
|
||||
OutputStream fOut = null;
|
||||
try
|
||||
{
|
||||
// 进行转码,使其支持中文文件名
|
||||
codedFileName = java.net.URLEncoder.encode("中文", "UTF-8");
|
||||
// response.setHeader("content-disposition", "attachment;filename=" + codedFileName + ".xls");
|
||||
response.addHeader("Content-Disposition", "attachment; filename=" + codedFileName + ".xls");
|
||||
// 产生工作簿对象
|
||||
HSSFWorkbook workbook = new HSSFWorkbook();
|
||||
//产生工作表对象
|
||||
HSSFSheet sheet = workbook.createSheet();
|
||||
int rowIndex = 1,cellIndex = 0;
|
||||
Field[] field = cgPayOrders.get(0).getClass().getDeclaredFields(); //获取实体类的所有属性,返回Field数组
|
||||
HSSFRow headerRow = sheet.createRow(0);//创建一行
|
||||
while (cellIndex<field.length){
|
||||
HSSFCell cell = headerRow.createCell(cellIndex);//创建一列
|
||||
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
|
||||
cell.setCellValue(field[cellIndex].getName());
|
||||
cellIndex++;
|
||||
}
|
||||
|
||||
for(int i=0;i<cgPayOrders.size();i++){
|
||||
cellIndex=0;
|
||||
HSSFRow currentRow = sheet.createRow(rowIndex);//创建一行
|
||||
while (cellIndex<field.length){
|
||||
HSSFCell cell = currentRow.createCell(cellIndex);//创建一列
|
||||
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
|
||||
Object value=getFieldValueByName(field[cellIndex].getName(),cgPayOrders.get(i));//通过反射获取属性的value
|
||||
String returnValue;
|
||||
if(value!=null){
|
||||
if(value.getClass()== Date.class){
|
||||
DateFormat to_type = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
returnValue=to_type.format(value);
|
||||
}
|
||||
else{
|
||||
returnValue=String.valueOf(value);
|
||||
}
|
||||
}else{
|
||||
returnValue="";
|
||||
}
|
||||
cell.setCellValue(returnValue);
|
||||
cellIndex++;
|
||||
}
|
||||
rowIndex++;
|
||||
}
|
||||
fOut = response.getOutputStream();
|
||||
workbook.write(fOut);
|
||||
}
|
||||
catch (UnsupportedEncodingException e1)
|
||||
{}
|
||||
catch (Exception e)
|
||||
{}
|
||||
finally
|
||||
{
|
||||
try
|
||||
{
|
||||
fOut.flush();
|
||||
fOut.close();
|
||||
}
|
||||
catch (IOException e)
|
||||
{}
|
||||
session.setAttribute("state", "open");
|
||||
}
|
||||
System.out.println("文件生成...");
|
||||
}
|
||||
|
||||
|
||||
public static Object getFieldValueByName(String fieldName, Object o) {
|
||||
try {
|
||||
String firstLetter = fieldName.substring(0, 1).toUpperCase();
|
||||
String getter = "get" + firstLetter + fieldName.substring(1);
|
||||
Method method = o.getClass().getMethod(getter, new Class[] {});
|
||||
Object value = method.invoke(o, new Object[] {});
|
||||
return value;
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static JSONObject sendGet(String params) throws IOException {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
// URL url = new URL(URL);
|
||||
|
|
@ -170,6 +337,14 @@ public class OrderInfoController {
|
|||
}
|
||||
return "findOrder";
|
||||
}
|
||||
@RequestMapping(value = "toExporOrderPage",method = RequestMethod.GET)
|
||||
public String toExporOrderPage(ModelMap map){
|
||||
return "exporOrder";
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private static boolean isNumeric(String str) {
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -2,10 +2,10 @@ package com.jmfy.model;
|
|||
|
||||
public class Corder {
|
||||
|
||||
private String accountid; //玩家id
|
||||
|
||||
private String orderNo; //平台订单好
|
||||
|
||||
private String accountid; //玩家id
|
||||
|
||||
private String payTime; //支付时间
|
||||
|
||||
private String productid; //礼包id
|
||||
|
|
|
|||
|
|
@ -0,0 +1,174 @@
|
|||
<!--_meta 作为公共模版分离出去-->
|
||||
<!DOCTYPE HTML>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<meta charset="utf-8"/>
|
||||
<meta name="renderer" content="webkit|ie-comp|ie-stand"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
|
||||
<meta name="viewport"
|
||||
content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
|
||||
<meta http-equiv="Cache-Control" content="no-siteapp"/>
|
||||
<link rel="Bookmark" href="../favicon.ico"/>
|
||||
<link rel="Shortcut Icon" href="../favicon.ico"/>
|
||||
<!--[if lt IE 9]>
|
||||
<script type="text/javascript" src="../static/lib/html5shiv.js"></script>
|
||||
<script type="text/javascript" src="../static/lib/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
<link rel="stylesheet" type="text/css" href="../static/h-ui/css/H-ui.min.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="../static/h-ui.admin/css/H-ui.admin.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="../static/lib/Hui-iconfont/1.0.8/iconfont.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="../static/h-ui.admin/skin/default/skin.css" id="skin"/>
|
||||
<link rel="stylesheet" type="text/css" href="../static/h-ui.admin/css/style.css"/>
|
||||
<!--[if IE 6]>
|
||||
<script type="text/javascript" src="../static/lib/DD_belatedPNG_0.0.8a-min.js"></script>
|
||||
<script>DD_belatedPNG.fix('*');</script>
|
||||
<![endif]-->
|
||||
<!--/meta 作为公共模版分离出去-->
|
||||
|
||||
<title>玩家订单查询</title>
|
||||
</head>
|
||||
<body>
|
||||
<nav class="breadcrumb"><i class="Hui-iconfont"></i> 首页
|
||||
<span class="c-gray en">></span>
|
||||
个人信息管理
|
||||
<span class="c-gray en">></span>
|
||||
订单查询
|
||||
<a class="btn btn-success radius r" style="line-height:1.6em;margin-top:3px"
|
||||
href="javascript:location.replace(location.href);" title="刷新"><i class="Hui-iconfont"></i></a>
|
||||
</nav>
|
||||
<div class="page-container">
|
||||
<form class="form form-horizontal" id="form-article-add" action="/exportExcelRequest" method="post"
|
||||
onsubmit="return exportExcel()">
|
||||
<div id="tab-system" class="HuiTab">
|
||||
<div class="tabBar cl">
|
||||
<span>生成玩家订单</span>
|
||||
</div>
|
||||
<div class="tabCon">
|
||||
<div class="row cl">
|
||||
<label class="form-label col-xs-4 col-sm-2">
|
||||
<span class="c-red">*</span>
|
||||
开始时间:</label>
|
||||
<div class="formControls col-xs-8 col-sm-9">
|
||||
<input autocomplete="off" type="text"
|
||||
onfocus="WdatePicker({ dateFmt:'yyyy-MM-dd HH:mm:ss',minDate:'#F{$dp.$D(\'datemin\')}' })"
|
||||
id="datemin" class="input-text Wdate" style="width:180px;" name="startTime">
|
||||
<span class="STARTTIME"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row cl">
|
||||
<label class="form-label col-xs-4 col-sm-2">
|
||||
<span class="c-red">*</span>
|
||||
结束时间:</label>
|
||||
<div class="formControls col-xs-8 col-sm-9">
|
||||
<input autocomplete="off" type="text"
|
||||
onfocus="WdatePicker({ dateFmt:'yyyy-MM-dd HH:mm:ss',minDate:'#F{$dp.$D(\'datemin\')}' })"
|
||||
id="datemax" class="input-text Wdate" style="width:180px;" name="endTime">
|
||||
<span class="ENDTIME"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row cl">
|
||||
<label class="form-label col-xs-4 col-sm-2">
|
||||
<span class="c-red"></span>
|
||||
用户ID:</label>
|
||||
<div class="formControls col-xs-8 col-sm-9">
|
||||
<input autocomplete="off" type="text" name="userId" placeholder="游戏中的玩家id(可不填)" value=""
|
||||
class="input-text"/>
|
||||
<span class="USERID"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row cl">
|
||||
<div class="col-xs-8 col-sm-9 col-xs-offset-4 col-sm-offset-2">
|
||||
<button class="btn btn-primary radius" type="submit" ><i
|
||||
class="Hui-iconfont"></i> 开始导出
|
||||
</button>
|
||||
<span class="startExport"></span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
<!--_footer 作为公共模版分离出去-->
|
||||
<script type="text/javascript" src="../static/lib/jquery/1.9.1/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="../static/lib/layer/2.4/layer.js"></script>
|
||||
<script type="text/javascript" src="../static/h-ui/js/H-ui.min.js"></script>
|
||||
<script type="text/javascript" src="../static/h-ui.admin/js/H-ui.admin.js"></script> <!--/_footer 作为公共模版分离出去-->
|
||||
|
||||
<!--请在下方写此页面业务相关的脚本-->
|
||||
<script type="text/javascript" src="../static/lib/My97DatePicker/4.8/WdatePicker.js"></script>
|
||||
<script type="text/javascript" src="../static/lib/jquery.validation/1.14.0/jquery.validate.js"></script>
|
||||
<script type="text/javascript" src="../static/lib/jquery.validation/1.14.0/validate-methods.js"></script>
|
||||
<script type="text/javascript" src="../static/lib/jquery.validation/1.14.0/messages_zh.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(function () {
|
||||
$('.skin-minimal input').iCheck({
|
||||
checkboxClass: 'icheckbox-blue',
|
||||
radioClass: 'iradio-blue',
|
||||
increaseArea: '20%'
|
||||
});
|
||||
$("#tab-system").Huitab({
|
||||
index: 0
|
||||
});
|
||||
});
|
||||
|
||||
var intervalFlag = true; //是否执行轮询的标志
|
||||
function exportExcel() {
|
||||
var erroCode = $('.SERVERID');
|
||||
var startExport = $('.startExport');
|
||||
|
||||
var serverId = $("#serverId").val();
|
||||
var userId = $("input[name='userId']").val();
|
||||
var startTime = $("input[name='startTime']").val();
|
||||
var endTime = $("input[name='endTime']").val();
|
||||
|
||||
if (startTime === '' || startTime == null) {
|
||||
erroCode = $('.STARTTIME');
|
||||
erroCode.html('<span style="color: red; ">开始时间不能为空!</span>');
|
||||
return false;
|
||||
}
|
||||
if (endTime === '' || endTime == null) {
|
||||
erroCode = $('.ENDTIME');
|
||||
erroCode.html('<span style="color: red; ">结束时间不能为空!</span>');
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// 进度查询
|
||||
function getProgress(interVal) {
|
||||
$._post2('/exportExcelRequestResult', {}, function (res) {
|
||||
if (res.arrangeStatus == 0) {
|
||||
//成功
|
||||
clearInterval(interVal); //清空轮询
|
||||
intervalFlag = false; //设置为不执行轮询
|
||||
} else if (res.arrangeStatus == 1) {
|
||||
//失败
|
||||
clearInterval(interVal);
|
||||
intervalFlag = false;
|
||||
} else if (res.arrangeStatus == 2) {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 隔两秒访问
|
||||
function interval() {
|
||||
var pro;
|
||||
// 定时器
|
||||
var interVal;
|
||||
var time = 1;
|
||||
interVal = setInterval(function () {
|
||||
// 获取返回对象
|
||||
pro = getProgress(interVal);
|
||||
startExport.html('<span style="color: red; ">正在处理..</span>');
|
||||
}, 2000);
|
||||
}
|
||||
|
||||
</script>
|
||||
<!--/请在上方写此页面业务相关的脚本-->
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -134,6 +134,7 @@
|
|||
<ul>
|
||||
<li><a data-href="toFlowPage" data-title="道具日志" href="javascript:;">道具日志</a></li>
|
||||
<li><a data-href="toOrderPage" data-title="订单列表" href="javascript:;">订单列表</a></li>
|
||||
<li><a data-href="toExporOrderPage" data-title="下载订单列表" href="javascript:;">下载订单列表</a></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
|
|
|
|||
|
|
@ -53,7 +53,6 @@
|
|||
<th width="200">货币类型</th>
|
||||
<th width="200">货币数量</th>
|
||||
<th width="200">支付方式</th>
|
||||
<th width="200">注册时间</th>
|
||||
|
||||
|
||||
<!--<th width="240">操作</th>-->
|
||||
|
|
@ -72,7 +71,6 @@
|
|||
<td th:text="${obj.currency_code}" style="text-align: center;"></td>
|
||||
<td th:text="${obj.currency_price}" style="text-align: center;"></td>
|
||||
<td th:text="${obj.recharge_type}" style="text-align: center;"></td>
|
||||
<td th:text="${obj.registerTime}" style="text-align: center;"></td>
|
||||
|
||||
</tr>
|
||||
</tbody>
|
||||
|
|
@ -141,6 +139,7 @@
|
|||
// alert(parse);
|
||||
for (let item in parse) {
|
||||
str += parse[item];
|
||||
str+= "\t"
|
||||
str += ',';
|
||||
}
|
||||
str += '\n';
|
||||
|
|
|
|||
Loading…
Reference in New Issue