package com.yeshi.fanli.controller.admin; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import java.util.Map; import javax.annotation.Resource; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.yeshi.utils.JsonUtil; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.yeshi.fanli.entity.admin.OrderAdmin; import com.yeshi.fanli.service.inter.count.HongBaoV2CountService; import com.yeshi.fanli.service.inter.hongbao.HongBaoService; import com.yeshi.fanli.service.inter.order.OrderService; import com.yeshi.fanli.tag.PageEntity; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.StringUtil; @Controller @RequestMapping("admin/new/api/v1/order") public class OrderAdminController { @Resource private OrderService orderService; @Resource private HongBaoService hongBaoService; @Resource private HongBaoV2CountService hongBaoV2CountService; @RequestMapping(value = "getOrderList", method = RequestMethod.POST) public void getOrderList(int pageIndex, String key, PrintWriter out) { List orderAdminList = hongBaoService.getOrderAdminList(pageIndex, key); int count = orderService.getCount(key); int totalPage = count % Constant.PAGE_SIZE == 0 ? count / Constant.PAGE_SIZE : count / Constant.PAGE_SIZE + 1; PageEntity pe = new PageEntity(pageIndex, Constant.PAGE_SIZE, count, totalPage); JSONObject data = new JSONObject(); data.put("pe", pe); data.put("orderList", JsonUtil.getSimpleGsonWithDateAndSerialization().toJson(orderAdminList)); out.print(JsonUtil.loadTrueResult(data)); } /** * 统计历史渠道产生订单的金额 * * @param callback * @param channelArray * 名字数组 * @param type * 统计类型 1-24小时 2-所有 * @param dateType * 类型 1日 2月 3年 * @param year * 2018 * @param startTime * 2018-12-01 * @param endTime * 2018-12-01 * @param out */ @RequestMapping(value = "getHistoryOderByChannel") public void getHistoryOderByChannel(String callback, String channelArray, Integer dateType, Integer type, String year, String startTime, String endTime, PrintWriter out) { if (StringUtil.isNullOrEmpty(channelArray)) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请选择统计对应名称")); return; } if (dateType == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请选择排列方式")); return; } if (dateType == 1 && (StringUtil.isNullOrEmpty(startTime) && StringUtil.isNullOrEmpty(endTime))) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请选择时间区间")); return; } if (!StringUtil.isNullOrEmpty(startTime) && StringUtil.isNullOrEmpty(endTime)) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请选结束日期")); return; } if (StringUtil.isNullOrEmpty(startTime) && !StringUtil.isNullOrEmpty(endTime)) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请选起始日期")); return; } if (dateType != 1 && (!StringUtil.isNullOrEmpty(startTime) || !StringUtil.isNullOrEmpty(endTime))) { startTime = null; endTime = null; } try { Gson gson = new Gson(); List list = gson.fromJson(channelArray, new TypeToken>() { }.getType()); if (list == null || list.size() == 0) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("参数格式不正确")); return; } JSONArray array = new JSONArray(); for (String channel : list) { JSONObject channelData = new JSONObject(); List resultList = null; if (type == 1) { resultList = hongBaoService.count24HOderByChannel(channel, dateType, year, startTime, endTime); } else if (type == 2) { resultList = hongBaoService.countHistoryOderByChannel(channel, dateType, year, startTime, endTime); } if (resultList == null) { resultList = new ArrayList(); } channelData.put("name", channel); channelData.put("infos", resultList); array.add(channelData); } JSONObject data = new JSONObject(); data.put("result_list", array); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常")); e.printStackTrace(); } } /** * 验证统计信息参数 * @param shwoType * @param startTime * @param endTime * @return */ public String validateParams(Integer shwoType, String startTime, String endTime) { if (shwoType == null) { return "请选择视图类型"; } if (shwoType == 1 && (StringUtil.isNullOrEmpty(startTime) && StringUtil.isNullOrEmpty(endTime))) { return "请选择时间区间"; } if (!StringUtil.isNullOrEmpty(startTime) && StringUtil.isNullOrEmpty(endTime)) { return "请选结束日期"; } if (StringUtil.isNullOrEmpty(startTime) && !StringUtil.isNullOrEmpty(endTime)) { return "请选起始日期"; } return null; } /** * 统计提现申请总次数 * @param callback * @param channelArray 渠道名 为空是统计所有 * @param dateType 显示视图:日-1 、月-2、 年-3 * @param state 状态: 1-未到账 2-已到账 3-已失效 * @param year * @param startTime * @param endTime * @param out */ @RequestMapping(value = "getHongBaoNum") public void getHongBaoNum(String callback,String channelArray, Integer dateType, Integer state, String year, String startTime, String endTime, PrintWriter out) { String validateMsg = validateParams(dateType, startTime, endTime); if (validateMsg != null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(validateMsg)); return; } try { JSONObject data = countHongBao(channelArray, dateType, state, year, startTime, endTime, 1); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("系统异常")); e.printStackTrace(); } } /** * 统计提现申请总金额 * @param callback * @param channelArray 渠道名 为空是统计所有 * @param dateType 显示视图:日-1 、月-2、 年-3 * @param state 状态: 1-未到账 2-已到账 3-已失效 * @param year * @param startTime * @param endTime * @param out */ @RequestMapping(value = "getHongBaoMoney") public void getHongBaoMoney(String callback,String channelArray, Integer dateType, Integer state, String year, String startTime, String endTime, PrintWriter out) { String validateMsg = validateParams(dateType, startTime, endTime); if (validateMsg != null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(validateMsg)); return; } try { JSONObject data = countHongBao( channelArray, dateType, state, year, startTime, endTime, 2); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("系统异常")); e.printStackTrace(); } } /** * 统计红包信息 * @param channelArray * @param dateType * @param state * @param year * @param startTime * @param endTime * @return * @throws Exception */ public JSONObject countHongBao(String channelArray, Integer dateType, Integer state, String year, String startTime, String endTime, int countType) throws Exception { if (dateType != 1 && (!StringUtil.isNullOrEmpty(startTime) || !StringUtil.isNullOrEmpty(endTime))) { startTime = null; endTime = null; } List channelList = null; if (channelArray != null && channelArray.trim().length() > 0) { Gson gson = new Gson(); channelList = gson.fromJson(channelArray, new TypeToken>() {}.getType()); } if (channelList == null || channelList.size() == 0) { channelList = new ArrayList(); channelList.add("all"); } JSONArray array = new JSONArray(); for (String channel : channelList) { JSONObject channelData = new JSONObject(); List> resultList = null; if (countType == 1 ) { resultList = hongBaoV2CountService.countHongBaoNum(channel, dateType, state, year, startTime, endTime); } else if (countType == 2) { resultList = hongBaoV2CountService.countHongBaoMoney(channel, dateType, state, year, startTime, endTime); } if (resultList == null) { resultList = new ArrayList>(); } if ("all".equalsIgnoreCase(channel)) { channel = "总计"; } channelData.put("name", channel); channelData.put("infos", resultList); array.add(channelData); } JSONObject data = new JSONObject(); data.put("result_list", array); return data; } }