From b3007afcb9b8ca4302497a2c1c3e0d990b10a388 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期四, 03 一月 2019 14:52:40 +0800 Subject: [PATCH] 新版订单与返利 --- fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java | 259 +++++++++++++++++++++++++++++++-------------------- 1 files changed, 159 insertions(+), 100 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java index 6e2da6e..d4bbb37 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java @@ -3,6 +3,7 @@ import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -12,30 +13,41 @@ import org.apache.commons.beanutils.PropertyUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import com.yeshi.fanli.dao.mybatis.order.CommonOrderGoodsMapper; 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.bus.user.UserInfo; import com.yeshi.fanli.entity.order.CommonOrder; import com.yeshi.fanli.entity.order.CommonOrderGoods; +import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; +import com.yeshi.fanli.entity.taobao.TaoBaoOrder; import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder; import com.yeshi.fanli.exception.order.CommonOrderException; +import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException; import com.yeshi.fanli.service.inter.order.CommonOrderService; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.MoneyBigDecimalUtil; +import com.yeshi.fanli.util.factory.CommonOrderGoodsFactory; +import com.yeshi.fanli.util.taobao.TaoBaoOrderUtil; +import com.yeshi.fanli.util.taobao.TaoKeApiUtil; 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; - + + @Resource + private CommonOrderGoodsMapper commonOrderGoodsMapper; + @Override public int insert(CommonOrder record) { return commonOrderMapper.insert(record); @@ -65,58 +77,57 @@ 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); + 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); + 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 { - + 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); - + + 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; + 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) { + public long countOrder(Long uid, Integer type, Integer day) { return commonOrderMapper.countBonusOrder(uid, type, day); } @@ -124,46 +135,46 @@ 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, Integer day) { - return commonOrderMapper.countByUidAndOrderState(uid, type, startTime, endTime, day); + public Map<String, BigDecimal> countByUidAndOrderState(Long uid, Integer type, String startTime, String endTime, + Integer day) { + return commonOrderMapper.countByUidAndOrderState(uid, type, startTime, endTime, day); } - -public void listDataFactory (List<CommonOrderVO> listOrder, List<CommonOrderVO> listGoods ) { - - /* 缁勫悎鍟嗗搧淇℃伅 */ - for (CommonOrderVO commonOrder: listGoods) { - + + 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) { + + 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(); } - + Integer hongBaoType = order.getHongBaoType(); // 閭�璇疯鍗曚俊鎭繚鎶� - if (HongBaoV2.TYPE_YAOQING == hongBaoType || HongBaoV2.TYPE_YIJI == hongBaoType - || HongBaoV2.TYPE_ERJI == hongBaoType) { + if (HongBaoV2.TYPE_YAOQING == hongBaoType || HongBaoV2.TYPE_YIJI == hongBaoType + || HongBaoV2.TYPE_ERJI == hongBaoType) { Map<String, String> titleMap = new HashMap<String, String>(); titleMap.put("content", "涓轰繚闅滅敤鎴烽殣绉侊紝鍟嗗搧淇℃伅宸查殣钘�!"); titleMap.put("fontColor", "#888888"); @@ -171,14 +182,13 @@ commonGoodsVO.setTitle(null); commonGoodsVO.setGoodsTitle(titleMap); } - - + commonGoodsVO.setActualCount(commonOrder.getTotalCount() + "浠�"); String settlement = commonOrder.getTotalSettlement().setScale(2, BigDecimal.ROUND_DOWN).toString(); commonGoodsVO.setActualPay("瀹炰粯娆撅細楼" + settlement); - + listOrderGoods.add(commonGoodsVO); - + Integer orderType = commonOrder.getOrderType(); if (orderType == null) { String shopType = commonGoodsVO.getShopType(); @@ -186,41 +196,41 @@ commonOrder.setOrderType(1); } else if (CommonOrderGoodsVO.TYPE_TMALL.equalsIgnoreCase(shopType)) { commonOrder.setOrderType(2); - } + } } - + break; } - } + } } - + SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd HH:mm"); SimpleDateFormat formatday = new SimpleDateFormat("yyyy.MM.dd"); - - for (CommonOrderVO order: listOrder) { + + 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 hongBaoState = order.getHongBaoState(); - + Integer orderState = order.getState(); - if (CommonOrder.STATE_FK == orderState ) { + if (CommonOrder.STATE_FK == orderState) { orderStateContent = "宸蹭粯娆�"; } else if (CommonOrder.STATE_JS == orderState) { orderStateContent = "宸叉敹璐�"; @@ -228,27 +238,27 @@ orderStateContent = "鏈粯娆�/宸查��娆�"; } else if (CommonOrder.STATE_WQ == orderState) { orderStateContent = "宸茬淮鏉�"; - - /* 璁㈠崟缁存潈 鍒ゆ柇鏄惁鍏ㄩ儴缁存潈 */ - List<TaoBaoWeiQuanOrder> listWQ = - taoBaoWeiQuanOrderMapper.selectListByOrderIdAndState(order.getOrderNo(), "缁存潈鎴愬姛"); - + + /* 璁㈠崟缁存潈 鍒ゆ柇鏄惁鍏ㄩ儴缁存潈 */ + List<TaoBaoWeiQuanOrder> listWQ = taoBaoWeiQuanOrderMapper + .selectListByOrderIdAndState(order.getOrderNo(), "缁存潈鎴愬姛"); + boolean isPart = false;// 榛樿澶辨晥 - - if (listWQ != null && listWQ.size() > 0) { + + if (listWQ != null && listWQ.size() > 0) { BigDecimal fanTotalMoney = new BigDecimal(0); - for (TaoBaoWeiQuanOrder weiQuanOrder: listWQ) { + for (TaoBaoWeiQuanOrder weiQuanOrder : listWQ) { BigDecimal fanMoney = weiQuanOrder.getFanMoney(); if (fanMoney != null) { fanTotalMoney = MoneyBigDecimalUtil.add(fanTotalMoney, fanMoney); } } - + if (fanTotalMoney.compareTo(order.getHongBao()) < 0) { isPart = true; } } - + if (isPart) { hongBaoState = HongBaoV2.STATE_BUFENSHIXIAO; // 閮ㄥ垎澶辨晥 } else { @@ -258,82 +268,80 @@ 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.setOrderOrigin("1"); order.setHongBaoTypePic(CommonOrder.TYPE_FANLI); - } else if (HongBaoV2.TYPE_SHARE_GOODS == hongBaoType || HongBaoV2.TYPE_SHARE_YIJI == hongBaoType + } else if (HongBaoV2.TYPE_SHARE_GOODS == hongBaoType || HongBaoV2.TYPE_SHARE_YIJI == hongBaoType || HongBaoV2.TYPE_SHARE_ERJI == hongBaoType) { // 鍒嗕韩 hongbaoInfo = "濂栭噾"; order.setOrderOrigin("2"); order.setHongBaoTypePic(CommonOrder.TYPE_SHARE); - } else if (HongBaoV2.TYPE_YAOQING == hongBaoType || HongBaoV2.TYPE_YIJI == hongBaoType + } else if (HongBaoV2.TYPE_YAOQING == hongBaoType || HongBaoV2.TYPE_YIJI == hongBaoType || HongBaoV2.TYPE_ERJI == hongBaoType) { // 閭�璇� hongbaoInfo = "濂栭噾"; order.setOrderOrigin("3"); order.setHongBaoTypePic(CommonOrder.TYPE_INVITE); } - - + String hongBaoDate = null; String hongBaoState_Str = ""; String hongbaoInfoFontColor = "#E5005C"; - + /* 绾㈠寘鐘舵�� 杞崲 */ String stateContent = ""; String stateFontColor = "#E5005C"; Integer orderHongBaoState = null; - + if (HongBaoV2.STATE_KELINGQU == hongBaoState || HongBaoV2.STATE_BUKELINGQU == hongBaoState) { orderHongBaoState = 1; stateContent = "鏈埌璐�"; hongBaoState_Str = "棰勪及"; - + 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 = "閮ㄥ垎澶辨晥"; + stateContent = "閮ㄥ垎澶辨晥"; orderHongBaoState = 3; Date accountTime = order.getAccountTime(); if (accountTime != null) { hongBaoDate = "鍒拌处鏃堕棿锛�" + formatday.format(accountTime); } - + } else if (HongBaoV2.STATE_SHIXIAO == hongBaoState) { orderHongBaoState = 4; - stateContent = "宸插け鏁�"; + stateContent = "宸插け鏁�"; hongbaoInfoFontColor = "#888888"; } order.setHongBaoState(orderHongBaoState); order.setHongBaoDate(hongBaoDate); - + Map<String, String> stateMap = new HashMap<String, String>(); stateMap.put("content", stateContent); stateMap.put("fontColor", stateFontColor); order.setAccountState(stateMap); - + hongbaoInfo = hongBaoState_Str + hongbaoInfo; - + BigDecimal hongBao = order.getHongBao(); if (hongBao == null) { hongBao = new BigDecimal(0); @@ -343,13 +351,64 @@ hongBaoMap.put("fontColor", hongbaoInfoFontColor); order.setHongBaoInfo(hongBaoMap); } - } + } @Override public List<CommonOrder> listBySourceTypeAndOrderId(int sourceType, String orderId) { - - - + return null; - } + } + + @Transactional + @Override + public CommonOrder addTaoBaoOrder(TaoBaoOrder taoBaoOrder, Long uid) throws CommonOrderException { + CommonOrder commonOrder = commonOrderMapper.selectByOrderNoAndOrderTypeAndOrderBy(taoBaoOrder.getOrderId(), + Constant.SOURCE_TYPE_TAOBAO, taoBaoOrder.getOrderBy()); + if (commonOrder == null)// 鏂板 + { + commonOrder = TaoBaoOrderUtil.convert(taoBaoOrder); + CommonOrderGoods goods = new CommonOrderGoods(); + goods.setGoodsId(taoBaoOrder.getAuctionId() + ""); + goods.setGoodsType(Constant.SOURCE_TYPE_TAOBAO); + // 鍟嗗搧鏄惁宸茬粡鎻掑叆 + List<CommonOrderGoods> commonGoodsList = commonOrderGoodsMapper + .listByGoodsIdAndGoodsType(goods.getGoodsId(), goods.getGoodsType()); + if (commonGoodsList.size() <= 0)// 涓嶅瓨鍦ㄥ氨鎻掑叆鍟嗗搧 + { + TaoBaoGoodsBrief taoBaoGoods = null; + try { + taoBaoGoods = TaoKeApiUtil.getSimpleGoodsInfo(taoBaoOrder.getAuctionId()); + } catch (TaobaoGoodsDownException e) { + e.printStackTrace(); + } + if (taoBaoGoods != null) { + goods = CommonOrderGoodsFactory.create(taoBaoGoods); + } + goods.setCreateTime(new Date()); + goods.setUpdateTime(new Date()); + commonOrderGoodsMapper.insertSelective(goods); + } else + goods.setId(commonGoodsList.get(commonGoodsList.size() - 1).getId()); + commonOrder.setCommonOrderGoods(goods); + commonOrder.setUserInfo(new UserInfo(uid)); + commonOrder.setCreateTime(new Date()); + commonOrderMapper.insertSelective(commonOrder); + return commonOrder; + } else {// 淇敼 + // 宸茬粡缁撶畻鎴栬�呭凡缁忓け鏁堢殑璁㈠崟涓嶅鐞� + if (commonOrder.getState() == CommonOrder.STATE_JS || commonOrder.getState() == CommonOrder.STATE_SX) + return commonOrder; + CommonOrder newCommonOrder = TaoBaoOrderUtil.convert(taoBaoOrder); + CommonOrder updateCommonOrder = new CommonOrder(commonOrder.getId()); + updateCommonOrder.seteIncome(newCommonOrder.geteIncome()); + updateCommonOrder.setEstimate(newCommonOrder.getEstimate()); + updateCommonOrder.setPayment(newCommonOrder.getPayment()); + updateCommonOrder.setSettlement(newCommonOrder.getSettlement()); + updateCommonOrder.setSettleTime(newCommonOrder.getSettleTime()); + updateCommonOrder.setState(newCommonOrder.getState()); + updateCommonOrder.setUpdateTime(new Date()); + commonOrderMapper.updateByPrimaryKeySelective(updateCommonOrder); + return commonOrderMapper.selectByPrimaryKey(updateCommonOrder.getId()); + } + } } -- Gitblit v1.8.0