package com.yeshi.fanli.controller.client; import java.io.PrintWriter; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import java.util.Map; import javax.annotation.Resource; 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.DateUtil; import org.yeshi.utils.JsonUtil; import com.yeshi.fanli.entity.accept.AcceptData; import com.yeshi.fanli.entity.bus.user.UserInfo; import com.yeshi.fanli.exception.order.CommonOrderException; import com.yeshi.fanli.service.inter.config.ConfigService; import com.yeshi.fanli.service.inter.count.HongBaoV2CountService; import com.yeshi.fanli.service.inter.order.CommonOrderService; import com.yeshi.fanli.service.inter.user.UserInfoService; import com.yeshi.fanli.util.account.UserUtil; import com.yeshi.fanli.vo.order.CommonOrderVO; @Controller @RequestMapping("api/v1/user/order") public class UserOrderController { @Resource private ConfigService configService; @Resource private UserInfoService userInfoService; @Resource private CommonOrderService commonOrderService; @Resource private HongBaoV2CountService hongBaoV2CountService; /** * 订单列表 * @param acceptData * @param page * @param uid * @param state 状态:1-未到账 2-已到账 3-已失效 * @param type 类型:1-返利订单 2-分享订单 3-邀请订单 * @param orderState 1有效订单 2 维权订单 3失效订单 * @param orderNo 订单号 * @param startTime 起始时间 * @param endTime 结束时间 * @param slotTime 时间段:1-最近三天 2-最近七天 3最近半月 4本月 5近三月 6近半年 * @param dateType 1-今日 2-昨天 3-本月 4-上个月 | * @param needCount * @param out */ @RequestMapping(value = "getorder", method = RequestMethod.POST) public void getOrder(AcceptData acceptData, Integer page, Long uid, Integer state, Integer type, Integer orderState,String orderNo, String startTime, String endTime, Integer slotTime, boolean needCount, Integer dateType, PrintWriter out) { if (uid == null) { out.print(JsonUtil.loadFalseResult(1, "用户未登录")); return; } if (page == null || page < 1) { page = 1; } if (state != null && state == 0) { state = null;// 所有状态 } if (type != null && type == 0 ) { type = null; // 所有类型订单 } try { if (slotTime != null) { SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); endTime= sd.format(new Date()); startTime = convertDate(slotTime, endTime); } } catch (Exception e) { e.printStackTrace(); } if (endTime != null && endTime.trim().length() > 0) { endTime += " 23:59:59"; } try { long count = 0; int totalValid = 0; int totalProces = 0; int totalInvite = 0; long todayTotal = 0; BigDecimal todayMoney = null; // 查询列表 List list = commonOrderService.getOrderByUid(page, uid, state, type, orderState, orderNo, startTime, endTime, dateType); if (list != null && list.size() > 0) { // 统计总数 count = commonOrderService.countGroupOrderNoByUid(uid, state, type, orderState, orderNo, startTime, endTime, dateType); } // 需要统计筛选信息 :未失效的总金额 以及订单 if (needCount && page == 1) { todayMoney = commonOrderService.countBonusOrderMoney(uid, type, dateType, startTime, endTime); todayTotal = commonOrderService.countBonusOrderNumber(uid, type, dateType, startTime, endTime); // 统计有效的订单数量 、 失效订单数量 、维权订单数量 Map countOrder = commonOrderService.countByUidAndOrderState(uid, type, startTime, endTime, dateType); if (countOrder.get("totalValid") != null) { totalValid = countOrder.get("totalValid").intValue(); } if (countOrder.get("totalProces") != null) { totalProces = countOrder.get("totalProces").intValue(); } if (countOrder.get("totalInvite") != null) { totalInvite = countOrder.get("totalInvite").intValue(); } } if (todayMoney == null) { todayMoney = new BigDecimal(0.00); } String helpUrl = configService.get("order_list_help"); JSONObject data = new JSONObject(); data.put("count", count); data.put("result_list", JsonUtil.getApiCommonGson().toJson(list)); data.put("helpUrl", helpUrl); if (type != null && type == 1) { data.put("todayMoney", "预估返利总额 ¥" + todayMoney.setScale(2, BigDecimal.ROUND_DOWN).toString()); } else if (type != null &&(type == 2 || type == 3)) { data.put("todayMoney", "预估奖金总额 ¥" + todayMoney.setScale(2, BigDecimal.ROUND_DOWN).toString()); } else { data.put("todayMoney", "预估总额 ¥" + todayMoney.setScale(2, BigDecimal.ROUND_DOWN).toString()); } data.put("todayTotal", "共"+ todayTotal+ "笔"); data.put("totalValid", totalValid); // 有效数量 data.put("totalProces", totalProces); // 维权数量 data.put("totalInvite", totalInvite); // 失效数量 out.print(JsonUtil.loadTrueResult(data)); } catch(CommonOrderException e){ out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg())); } catch (Exception e) { out.print(JsonUtil.loadFalseResult(1, "查询失败")); e.printStackTrace(); } } /** * 用户订单统计 * @param acceptData * @param uid 用户id * @param out */ @RequestMapping(value = "countorder", method = RequestMethod.POST) public void countOrder(AcceptData acceptData, Long uid, PrintWriter out) { if (uid == null) { out.print(JsonUtil.loadFalseResult(1, "用户未登录")); return; } try { UserInfo user = userInfoService.selectByPKey(uid); if (user == null) { out.print(JsonUtil.loadFalseResult(1, "用户不存在")); return; } UserInfo userInfo = UserUtil.filterForClientUser(user); JSONObject data = new JSONObject(); data.put("userInfo", userInfo); /* 总订单统计 */ Map countOrder= commonOrderService.countHistoryOrder(uid, null); int self = 0; if (countOrder.get("totalSelf") != null) { self = countOrder.get("totalSelf").intValue(); } int shared = 0; if (countOrder.get("totalShared") != null) { shared = countOrder.get("totalShared").intValue(); } int invite = 0; if (countOrder.get("totalInvite") != null) { invite = countOrder.get("totalInvite").intValue(); } int total = self + shared + invite; data.put("total", total); data.put("self", self); data.put("shared", shared); data.put("invite", invite); /* 今日订单统计 */ Map countToday= commonOrderService.countHistoryOrder(uid, 1); int todaySelf = 0; if (countToday.get("totalSelf") != null) { todaySelf = countToday.get("totalSelf").intValue(); } int todayShared = 0; if (countToday.get("totalShared") != null) { todayShared = countToday.get("totalShared").intValue(); } int todayInvite = 0; if (countToday.get("totalInvite") != null) { todayInvite = countToday.get("totalInvite").intValue(); } int todayTotal = todaySelf + todayShared + todayInvite; JSONObject todaydata = new JSONObject(); todaydata.put("total", todayTotal); todaydata.put("self", todaySelf); todaydata.put("shared", todayShared); todaydata.put("invite", todayInvite); data.put("today", todaydata); /* 昨日订单统计 */ Map countYesterday= commonOrderService.countHistoryOrder(uid, 2); int yesterdaySelf = 0; if (countYesterday.get("totalSelf") != null) { yesterdaySelf = countYesterday.get("totalSelf").intValue(); } int yesterdayShared = 0; if (countYesterday.get("totalShared") != null) { yesterdayShared = countYesterday.get("totalShared").intValue(); } int yesterdayInvite = 0; if (countYesterday.get("totalInvite") != null) { yesterdayInvite = countYesterday.get("totalInvite").intValue(); } int yesterdayTotal = yesterdaySelf + yesterdayShared + yesterdayInvite; JSONObject yesterdaydata = new JSONObject(); yesterdaydata.put("total", yesterdayTotal); yesterdaydata.put("self", yesterdaySelf); yesterdaydata.put("shared", yesterdayShared); yesterdaydata.put("invite", yesterdayInvite); data.put("yesterday", yesterdaydata); out.print(JsonUtil.loadTrueResult(data)); } catch (Exception e) { out.print(JsonUtil.loadFalseResult(1, "获取信息失败")); e.printStackTrace(); } } /** * 统计奖金 * @param acceptData * @param uid * @param out */ @RequestMapping(value = "countBonus", method = RequestMethod.POST) public void countBonus(AcceptData acceptData, Long uid, Integer dateType, PrintWriter out) { if (uid == null) { out.print(JsonUtil.loadFalseResult(1, "用户未登录")); return; } try { Object shareCount = 0; BigDecimal sharemoney = new BigDecimal(0.00); Object inviteCount = 0; BigDecimal inviteMoney = new BigDecimal(0.00); Map shareMap = commonOrderService.countBonusOrderMoneyAndNumber(uid, 2 , dateType, null, null); if (shareMap != null) { Object totalNum = shareMap.get("totalNum"); if (totalNum != null) { shareCount = totalNum; } Object totalmoney = shareMap.get("totalmoney"); if (totalmoney != null) { sharemoney = (BigDecimal) totalmoney; } } // 邀请统计 Map inviteMap = commonOrderService.countBonusOrderMoneyAndNumber(uid, 3 , dateType, null, null); if (inviteMap != null) { Object totalNum = inviteMap.get("totalNum"); if (totalNum != null) { inviteCount = totalNum; } Object totalmoney = inviteMap.get("totalmoney"); if (totalmoney != null) { inviteMoney = (BigDecimal) totalmoney; } } JSONObject data = new JSONObject(); data.put("shareCount", shareCount); data.put("sharemoney", sharemoney.setScale(2, BigDecimal.ROUND_DOWN).toString()); data.put("inviteCount", inviteCount); data.put("inviteMoney", inviteMoney.setScale(2, BigDecimal.ROUND_DOWN).toString()); data.put("showTiCheng", hongBaoV2CountService.getTotalTiChengCount(uid) > 0); out.print(JsonUtil.loadTrueResult(data)); } catch (Exception e) { out.print(JsonUtil.loadFalseResult(1, "获取信息失败")); e.printStackTrace(); } } /** * 时间转换 * @param slotTime * @param startTime * @return * @throws Exception */ public String convertDate (Integer slotTime, String endTime) throws Exception { String startTime = null; switch (slotTime) { case 1: // 最近三天 startTime = DateUtil.reduceDay(2, endTime); break; case 2: // 最近七天 startTime = DateUtil.reduceDay(6, endTime); break; case 3: // 最近15天 (半月) startTime = DateUtil.reduceDay(14, endTime); break; case 4: // 最近三十天 (本月) startTime = DateUtil.reduceDay(29, endTime); break; case 5: // 最近九十天(近三月) startTime = DateUtil.reduceDay(3*30-1, endTime); break; case 6: // 最近一百八十天(近半年) startTime = DateUtil.reduceDay(6*30-1, endTime); break; default: break; } return startTime; } }