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.hongbao.HongBaoService;
|
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 HongBaoService hongBaoService;
|
|
/**
|
* 订单列表
|
* @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 hh:mm:ss");
|
startTime = sd.format(new Date());
|
endTime = convertDate(slotTime, startTime);
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
|
try {
|
long count = 0;
|
List<CommonOrderVO> 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);
|
}
|
|
int totalValid = 0;
|
int totalProces = 0;
|
int totalInvite = 0;
|
long todayTotal = 0;
|
BigDecimal todayMoney = null;
|
// 需要统计信息
|
if (needCount && page == 1) {
|
Map<String, BigDecimal> 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();
|
}
|
|
todayTotal = commonOrderService.countOrder(uid, type, 1);
|
todayMoney = commonOrderService.countOrderMoney(uid, type , 1);
|
}
|
|
if (todayMoney == null) {
|
todayMoney = new BigDecimal(0);
|
}
|
|
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);
|
} else {
|
data.put("todayMoney", "预估奖金总额 ¥" + todayMoney);
|
}
|
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<String, BigDecimal> countOrder= commonOrderService.countOrderByHongBaoType(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<String, BigDecimal> countToday= commonOrderService.countOrderByHongBaoType(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<String, BigDecimal> countYesterday= commonOrderService.countOrderByHongBaoType(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 {
|
|
JSONObject data = new JSONObject();
|
// 分享统计
|
BigDecimal sharemoney = commonOrderService.countOrderMoney(uid,2, dateType);
|
data.put("shareCount", commonOrderService.countOrder(uid, 2, dateType));
|
data.put("sharemoney", sharemoney.setScale(2, BigDecimal.ROUND_DOWN).toString());
|
// 邀请统计
|
BigDecimal inviteMoney = commonOrderService.countOrderMoney(uid,3, dateType);
|
data.put("inviteCount", commonOrderService.countOrder(uid, 3, dateType));
|
data.put("inviteMoney", inviteMoney.setScale(2, BigDecimal.ROUND_DOWN).toString());
|
|
data.put("showTiCheng", hongBaoService.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 startTime) throws Exception {
|
String endTime = null;
|
|
switch (slotTime) {
|
case 1: // 最近三天
|
endTime = DateUtil.plusDay(3, startTime);
|
break;
|
case 2: // 最近七天
|
endTime = DateUtil.plusDay(7, startTime);
|
break;
|
case 3: // 最近15天 (半月)
|
endTime = DateUtil.plusDay(15, startTime);
|
break;
|
case 4: // 最近三十天 (本月)
|
endTime = DateUtil.plusDay(30, startTime);
|
break;
|
case 5: // 最近九十天(近三月)
|
endTime = DateUtil.plusDay(3*30, startTime);
|
break;
|
case 6: // 最近一百八十天(近半年)
|
endTime = DateUtil.plusDay(6*30, startTime);
|
break;
|
default:
|
break;
|
}
|
|
return endTime;
|
}
|
}
|