generated from root/miduo_server
357 lines
16 KiB
Java
357 lines
16 KiB
Java
package com.jmfy.controller;
|
||
|
||
import com.alibaba.fastjson.JSON;
|
||
import com.alibaba.fastjson.JSONObject;
|
||
import com.jmfy.dao.GSUserDao;
|
||
import com.jmfy.dao.MailDao;
|
||
import com.jmfy.dao.ServerInfoDao;
|
||
import com.jmfy.dao.UserInfoDao;
|
||
import com.jmfy.model.*;
|
||
import com.jmfy.redisProperties.RedisUserKey;
|
||
|
||
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;
|
||
import org.springframework.ui.ModelMap;
|
||
import org.springframework.web.bind.annotation.RequestMapping;
|
||
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.*;
|
||
import java.lang.reflect.Field;
|
||
import java.lang.reflect.Method;
|
||
import java.math.BigDecimal;
|
||
import java.net.HttpURLConnection;
|
||
import java.net.URL;
|
||
import java.text.DateFormat;
|
||
import java.text.SimpleDateFormat;
|
||
import java.util.*;
|
||
|
||
/**
|
||
* Created by huangds on 2017/10/24.
|
||
*/
|
||
@Controller
|
||
public class OrderInfoController {
|
||
@Resource
|
||
private UserInfoDao userInfoDao;
|
||
|
||
|
||
@Resource
|
||
private ServerInfoDao serverInfoDao;
|
||
private static final Logger LOGGER = LoggerFactory.getLogger(OrderInfoController.class);
|
||
|
||
@RequestMapping(value = "/getOrder", method = {RequestMethod.POST, RequestMethod.GET})
|
||
public String getOrder(HttpSession session, HttpServletRequest request, ModelMap map ) 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 serverId1 = parameterMap.get("serverId");
|
||
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(Integer.valueOf(serverId1)!=0&&!String.valueOf(serverId).equals(serverId1))
|
||
{
|
||
continue;
|
||
}
|
||
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(simpleDateFormat.format(Long.parseLong(payTime)));
|
||
corder.setProductid(cgPayOrder.getGoodsId());
|
||
corder.setServerId(String.valueOf(serverId));
|
||
// 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;
|
||
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);
|
||
}
|
||
}
|
||
map.put("cgPayOrders",cgPayOrders);
|
||
return "userOrderInfo";
|
||
}
|
||
|
||
|
||
@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);
|
||
URL url = new URL("http://60.1.1.212:9991/delivery/callback");
|
||
HttpURLConnection urlCon = (HttpURLConnection)url.openConnection();
|
||
urlCon.setDoOutput(true);
|
||
urlCon.setDoInput(true);
|
||
urlCon.setRequestMethod("POST");
|
||
urlCon.setRequestProperty("Cookie","lhuj1i5hcu80edg3fjhesj4ak3");
|
||
OutputStreamWriter out = new OutputStreamWriter(urlCon.getOutputStream(), "UTF-8");
|
||
out.write(params);
|
||
out.flush();
|
||
out.close();
|
||
BufferedReader reader = new BufferedReader(new InputStreamReader(urlCon.getInputStream(), "UTF-8"));
|
||
String line;
|
||
while ((line = reader.readLine()) != null) {
|
||
sb.append(line);
|
||
}
|
||
return JSON.parseObject(sb.toString());
|
||
}
|
||
@RequestMapping(value = "toOrderPage",method = RequestMethod.GET)
|
||
public String toOrderPage(ModelMap map){
|
||
try {
|
||
List<ServerInfo> allServerInfo = serverInfoDao.getAllServerInfo();
|
||
map.addAttribute("serverInfo",allServerInfo);
|
||
} catch (Exception e) {
|
||
e.printStackTrace();
|
||
}
|
||
return "findOrder";
|
||
}
|
||
@RequestMapping(value = "toExporOrderPage",method = RequestMethod.GET)
|
||
public String toExporOrderPage(ModelMap map){
|
||
return "exporOrder";
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
private static boolean isNumeric(String str) {
|
||
try {
|
||
new BigDecimal(str).toString();
|
||
} catch (Exception e) {
|
||
return false;//异常
|
||
}
|
||
return true;
|
||
}
|
||
}
|