package com.yeshi.fanli.service.impl.order;
|
|
import java.math.BigDecimal;
|
import java.text.SimpleDateFormat;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import javax.annotation.Resource;
|
|
import org.apache.commons.beanutils.PropertyUtils;
|
import org.springframework.stereotype.Service;
|
|
import com.yeshi.fanli.dao.mybatis.order.CommonOrderMapper;
|
import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoWeiQuanOrderMapper;
|
import com.yeshi.fanli.entity.bus.user.HongBaoV2;
|
import com.yeshi.fanli.entity.order.CommonOrder;
|
import com.yeshi.fanli.entity.order.CommonOrderGoods;
|
import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder;
|
import com.yeshi.fanli.exception.order.CommonOrderException;
|
import com.yeshi.fanli.service.inter.order.CommonOrderService;
|
import com.yeshi.fanli.util.Constant;
|
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
|
import com.yeshi.fanli.vo.order.CommonOrderGoodsVO;
|
import com.yeshi.fanli.vo.order.CommonOrderVO;
|
|
|
@Service
|
public class CommonOrderServiceImpl implements CommonOrderService {
|
|
@Resource
|
private CommonOrderMapper commonOrderMapper;
|
|
@Resource
|
private TaoBaoWeiQuanOrderMapper taoBaoWeiQuanOrderMapper;
|
|
@Override
|
public int insert(CommonOrder record) {
|
return commonOrderMapper.insert(record);
|
}
|
|
@Override
|
public int insertSelective(CommonOrder record) {
|
return commonOrderMapper.insertSelective(record);
|
}
|
|
@Override
|
public int updateByPrimaryKeySelective(CommonOrder record) {
|
return commonOrderMapper.updateByPrimaryKeySelective(record);
|
}
|
|
@Override
|
public int updateByPrimaryKey(CommonOrder record) {
|
return commonOrderMapper.updateByPrimaryKey(record);
|
}
|
|
@Override
|
public int deleteByPrimaryKey(Long id) {
|
return commonOrderMapper.deleteByPrimaryKey(id);
|
}
|
|
@Override
|
public CommonOrder selectByPrimaryKey(Long id) {
|
return commonOrderMapper.selectByPrimaryKey(id);
|
}
|
|
@Override
|
public List<CommonOrderVO> listGroupOrderNoByUid(long start, int count, Long uid, Integer state,
|
Integer type,Integer orderState, String orderNo, String startTime,String endTime,
|
Integer dateType) throws CommonOrderException{
|
return commonOrderMapper.listGroupOrderNoByUid(start, count, uid, state, type, orderState,
|
orderNo, startTime, endTime, dateType);
|
}
|
|
@Override
|
public long countGroupOrderNoByUid(Long uid,Integer state, Integer type, Integer orderState,
|
String orderNo, String startTime,String endTime, Integer dateType) throws CommonOrderException{
|
return commonOrderMapper.countGroupOrderNoByUid(uid, state, type, orderState, orderNo,
|
startTime, endTime, dateType);
|
}
|
|
@Override
|
public List<CommonOrderVO> getOrderByUid (Integer page, Long uid, Integer state, Integer type,
|
Integer orderState, String orderNo, String startTime, String endTime, Integer dateType) throws CommonOrderException {
|
|
int pageSize = Constant.PAGE_SIZE;
|
|
List<CommonOrderVO> listOrder = listGroupOrderNoByUid((page - 1) * pageSize, pageSize, uid,
|
state, type, orderState, orderNo, startTime, endTime, dateType);
|
|
// 订单信息为空
|
if (listOrder == null || listOrder.size() == 0) {
|
listOrder = new ArrayList<CommonOrderVO>();
|
return listOrder;
|
}
|
|
// 商品信息
|
List<CommonOrderVO> listGoods = commonOrderMapper.listByOrderNoAndType(listOrder);
|
// 订单商品为空
|
if (listGoods ==null || listGoods.size() == 0) {
|
return listOrder;
|
}
|
|
// 数据加工重新组织
|
listDataFactory(listOrder, listGoods);
|
|
return listOrder;
|
}
|
|
|
@Override
|
public Map<String, BigDecimal> countOrderByHongBaoType(Long uid, Integer day) {
|
return commonOrderMapper.countOrderByHongBaoType(uid, day);
|
}
|
|
@Override
|
public long countOrder(Long uid,Integer type, Integer day) {
|
return commonOrderMapper.countBonusOrder(uid, type, day);
|
}
|
|
@Override
|
public BigDecimal countOrderMoney(Long uid, Integer type, Integer day) {
|
return commonOrderMapper.countBonusOrderMoney(uid, type, day);
|
}
|
|
@Override
|
public Map<String, BigDecimal> countByUidAndOrderState(Long uid, Integer type, String startTime,String endTime) {
|
return commonOrderMapper.countByUidAndOrderState(uid, type, startTime, endTime);
|
}
|
|
public void listDataFactory (List<CommonOrderVO> listOrder, List<CommonOrderVO> listGoods ) {
|
|
/* 组合商品信息 */
|
for (CommonOrderVO commonOrder: listGoods) {
|
|
CommonOrderGoods goods = commonOrder.getCommonOrderGoods();
|
if (goods == null) {
|
continue;
|
}
|
|
String orderNo1 = commonOrder.getOrderNo();
|
Integer sourceType = commonOrder.getSourceType();
|
|
for (CommonOrderVO order: listOrder) {
|
String orderNo2 = order.getOrderNo();
|
Integer sourceType2 = order.getSourceType();
|
|
// 来源、订单号相同
|
if (sourceType.equals(sourceType2) && orderNo1.equals(orderNo2)) {
|
// 加入商品信息
|
List<CommonOrderGoodsVO> listOrderGoods = order.getListOrderGoods();
|
|
CommonOrderGoodsVO commonGoodsVO = new CommonOrderGoodsVO();
|
try {
|
PropertyUtils.copyProperties(commonGoodsVO, goods);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
|
commonGoodsVO.setActualCount(commonOrder.getTotalCount());
|
commonGoodsVO.setActualPay(commonOrder.getTotalSettlement());
|
|
listOrderGoods.add(commonGoodsVO);
|
|
break;
|
}
|
}
|
}
|
|
SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd HH:mm");
|
SimpleDateFormat formatday = new SimpleDateFormat("yyyy.MM.dd");
|
|
for (CommonOrderVO order: listOrder) {
|
Date createTime = order.getCreateTime();
|
if (createTime != null) {
|
order.setObtainTime(createTime.getTime());
|
}
|
|
Date thirdCreateTime = order.getThirdCreateTime();
|
if (thirdCreateTime != null) {
|
order.setDownTime(format.format(thirdCreateTime));
|
}
|
|
Date settleTime = order.getSettleTime();
|
if (settleTime != null) {
|
order.setReceiveTime(format.format(settleTime));
|
}
|
|
/* 订单状态 转换处理*/
|
String orderStateContent = "";
|
Map<String, String> orderStateMap = new HashMap<String, String>();
|
|
Integer orderState = order.getState();
|
if (CommonOrder.STATE_FK == orderState ) {
|
orderStateContent = "已付款";
|
} else if (CommonOrder.STATE_JS == orderState) {
|
orderStateContent = "已收货";
|
} else if (CommonOrder.STATE_SX == orderState) {
|
orderStateContent = "已退款";
|
} else if (CommonOrder.STATE_WQ == orderState) {
|
orderStateContent = "已维权";
|
|
/* 订单维权 判断是否全部维权 */
|
List<TaoBaoWeiQuanOrder> listWQ =
|
taoBaoWeiQuanOrderMapper.selectListByOrderIdAndState(order.getOrderNo(), "维权成功");
|
|
boolean isPart = true;
|
if (listWQ != null && listWQ.size() > 0) {
|
BigDecimal fanTotalMoney = new BigDecimal(0);
|
for (TaoBaoWeiQuanOrder weiQuanOrder: listWQ) {
|
BigDecimal fanMoney = weiQuanOrder.getFanMoney();
|
if (fanMoney != null) {
|
fanTotalMoney = MoneyBigDecimalUtil.add(fanTotalMoney, fanMoney);
|
}
|
}
|
|
if (fanTotalMoney.compareTo(order.getHongBao()) >= 0) {
|
isPart = false;
|
}
|
}
|
|
if (isPart) {
|
order.setHongBaoState(HongBaoV2.STATE_BUFENSHIXIAO); // 部分失效
|
} else {
|
order.setHongBaoState(HongBaoV2.STATE_SHIXIAO); // 全部失效
|
}
|
}
|
orderStateMap.put("content", orderStateContent);
|
orderStateMap.put("fontColor", "#666666");
|
order.setOrderState(orderStateMap);
|
|
String hongbaoInfo = "";
|
/* 订单返利类型 转换 */
|
Integer hongBaoType = order.getHongBaoType();
|
if (HongBaoV2.TYPE_ZIGOU == hongBaoType || 2 == hongBaoType) {
|
// 自购
|
hongbaoInfo = "返利";
|
order.setHongBaoType(1);
|
order.setHongBaoTypePic(CommonOrder.TYPE_FANLI);
|
} else if (HongBaoV2.TYPE_SHARE_GOODS == hongBaoType || HongBaoV2.TYPE_SHARE_YIJI == hongBaoType
|
|| HongBaoV2.TYPE_SHARE_ERJI == hongBaoType) {
|
// 分享
|
hongbaoInfo = "奖金";
|
order.setHongBaoType(2);
|
order.setHongBaoTypePic(CommonOrder.TYPE_SHARE);
|
} else if (HongBaoV2.TYPE_YAOQING == hongBaoType || HongBaoV2.TYPE_YIJI == hongBaoType
|
|| HongBaoV2.TYPE_ERJI == hongBaoType) {
|
// 邀请
|
hongbaoInfo = "奖金";
|
order.setHongBaoType(3);
|
order.setHongBaoTypePic(CommonOrder.TYPE_INVITE);
|
}
|
|
|
String hongBaoDate = "";
|
String hongBaoState_Str = "";
|
String hongbaoInfoFontColor = "#E5005C";
|
|
|
/* 红包状态 转换 */
|
String stateContent = "";
|
Integer orderHongBaoState = null;
|
Integer hongBaoState = order.getHongBaoState();
|
if (HongBaoV2.STATE_KELINGQU == hongBaoState || HongBaoV2.STATE_BUKELINGQU == hongBaoState) {
|
orderHongBaoState = 1;
|
stateContent = "未到账";
|
hongBaoState_Str = "预估";
|
hongbaoInfoFontColor = "#888888";
|
|
Date preAccountTime = order.getPreAccountTime();
|
if (preAccountTime != null) {
|
hongBaoDate = "预计到账时间" + formatday.format(preAccountTime);
|
}
|
|
} else if (HongBaoV2.STATE_YILINGQU == hongBaoState) {
|
orderHongBaoState = 3;
|
stateContent = "已到账";
|
|
Date accountTime = order.getAccountTime();
|
if (accountTime != null) {
|
hongBaoDate = "到账时间" + formatday.format(accountTime);
|
}
|
|
} else if (HongBaoV2.STATE_BUFENSHIXIAO == hongBaoState) {
|
stateContent = "部分失效";
|
orderHongBaoState = 3;
|
Date accountTime = order.getAccountTime();
|
if (accountTime != null) {
|
hongBaoDate = "到账时间" + formatday.format(accountTime);
|
}
|
|
} else if (HongBaoV2.STATE_SHIXIAO == hongBaoState) {
|
orderHongBaoState = 4;
|
stateContent = "已失效";
|
hongBaoDate = " ";
|
}
|
order.setHongBaoState(orderHongBaoState);
|
order.setAccountState(stateContent);
|
order.setHongBaoDate(hongBaoDate);
|
|
if ("奖金".equals(hongbaoInfo) && hongBaoState_Str.trim().length() > 0) {
|
hongbaoInfo = hongBaoState_Str + hongbaoInfo;
|
}
|
BigDecimal hongBao = order.getHongBao();
|
if (hongBao == null) {
|
hongBao = new BigDecimal(0);
|
}
|
Map<String, String> hongBaoMap = new HashMap<String, String>();
|
hongBaoMap.put("content", hongbaoInfo + " ¥" + hongBao);
|
hongBaoMap.put("fontColor", hongbaoInfoFontColor);
|
order.setHongBaoInfo(hongBaoMap);
|
}
|
|
}
|
}
|