From 573c491b4a1ba60e12a5678a01c1546c0077c1ee Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 30 七月 2019 09:07:42 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java | 890 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 828 insertions(+), 62 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 ec1d2b1..d8e6169 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 @@ -13,27 +13,56 @@ import org.apache.commons.beanutils.PropertyUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.yeshi.utils.taobao.TbImgUtil; import com.yeshi.fanli.dao.mybatis.order.CommonOrderGoodsMapper; import com.yeshi.fanli.dao.mybatis.order.CommonOrderMapper; +import com.yeshi.fanli.dao.mybatis.order.CommonOrderTradeIdMapMapper; import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoWeiQuanOrderMapper; +import com.yeshi.fanli.dto.pdd.PDDGoodsDetail; import com.yeshi.fanli.entity.bus.user.HongBaoV2; import com.yeshi.fanli.entity.bus.user.UserInfo; +import com.yeshi.fanli.entity.bus.user.UserSystemCouponRecord; +import com.yeshi.fanli.entity.goods.CommonGoods; +import com.yeshi.fanli.entity.jd.JDGoods; +import com.yeshi.fanli.entity.jd.JDOrder; +import com.yeshi.fanli.entity.jd.JDOrderItem; import com.yeshi.fanli.entity.order.CommonOrder; import com.yeshi.fanli.entity.order.CommonOrderGoods; +import com.yeshi.fanli.entity.order.CommonOrderTradeIdMap; +import com.yeshi.fanli.entity.order.HongBaoOrder; +import com.yeshi.fanli.entity.pdd.PDDOrder; +import com.yeshi.fanli.entity.system.SystemCoupon.CouponTypeEnum; 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.log.LogHelper; +import com.yeshi.fanli.service.inter.common.JumpDetailV2Service; +import com.yeshi.fanli.service.inter.config.ConfigService; +import com.yeshi.fanli.service.inter.config.SystemCouponService; +import com.yeshi.fanli.service.inter.goods.CommonGoodsService; +import com.yeshi.fanli.service.inter.hongbao.HongBaoV2Service; import com.yeshi.fanli.service.inter.order.CommonOrderService; +import com.yeshi.fanli.service.inter.order.HongBaoOrderService; +import com.yeshi.fanli.service.inter.user.UserSystemCouponRecordService; +import com.yeshi.fanli.service.inter.user.UserSystemCouponService; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.MoneyBigDecimalUtil; +import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.factory.CommonOrderGoodsFactory; +import com.yeshi.fanli.util.factory.goods.CommonOrderFactory; +import com.yeshi.fanli.util.jd.JDApiUtil; +import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil; import com.yeshi.fanli.util.taobao.TaoBaoOrderUtil; +import com.yeshi.fanli.util.taobao.TaoBaoUtil; import com.yeshi.fanli.util.taobao.TaoKeApiUtil; +import com.yeshi.fanli.vo.msg.ClientTextStyleVO; import com.yeshi.fanli.vo.order.CommonOrderGoodsVO; import com.yeshi.fanli.vo.order.CommonOrderVO; + +import net.sf.json.JSONObject; @Service public class CommonOrderServiceImpl implements CommonOrderService { @@ -46,6 +75,41 @@ @Resource private CommonOrderGoodsMapper commonOrderGoodsMapper; + + @Resource + private JumpDetailV2Service jumpDetailV2Service; + + @Resource + private ConfigService configService; + + @Resource + private UserSystemCouponService userSystemCouponService; + + @Resource + private UserSystemCouponRecordService userSystemCouponRecordService; + + @Resource + private SystemCouponService systemCouponService; + + @Resource + private HongBaoV2Service hongBaoV2Service; + + @Resource + private CommonOrderTradeIdMapMapper commonOrderTradeIdMapMapper; + + @Resource + private CommonGoodsService commonGoodsService; + + @Resource + private HongBaoOrderService hongBaoOrderService; + + // 濂栧姳璁㈠崟鍥剧墖 + public final static String PIC_REWARD = "http://img.flqapp.com/resource/order/order_state_reward.png"; + + // 鍏嶅崟鐘舵�佸浘鐗� + public final static String PIC_FREE_ON = "http://img.flqapp.com/resource/order/order_state_freeing.png"; + public final static String PIC_FREE_FAIL = "http://img.flqapp.com/resource/order/order_state_free_fail.png"; + public final static String PIC_FREE_SUCCEED = "http://img.flqapp.com/resource/order/order_state_free_suc.png"; @Override public int insert(CommonOrder record) { @@ -114,7 +178,7 @@ } // 鏁版嵁鍔犲伐閲嶆柊缁勭粐 - listDataFactory(listOrder, listGoods); + listDataFactory(listOrder, listGoods, uid); return listOrder; } @@ -135,12 +199,26 @@ } @Override + public Map<String, Object> countBonusOrderMoneyAndNumber(Long uid, Integer type, Integer day, String startTime, + String endTime) { + return commonOrderMapper.countBonusOrderMoneyAndNumber(uid, type, day, startTime, endTime); + } + + @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 void listDataFactory(List<CommonOrderVO> listOrder, List<CommonOrderVO> listGoods) { + public void listDataFactory(List<CommonOrderVO> listOrder, List<CommonOrderVO> listGoods, Long uid) { + + List<String> listNo = new ArrayList<String>(); + for (CommonOrderVO commonOrderVO : listOrder) { + listNo.add(commonOrderVO.getOrderNo()); + } + + // 宸茬粡浣跨敤鍒歌鍗� + List<UserSystemCouponRecord> couponRecordList = userSystemCouponRecordService.getRecordByOrderNoList(listNo); /* 缁勫悎鍟嗗搧淇℃伅 */ for (CommonOrderVO commonOrder : listGoods) { @@ -169,6 +247,11 @@ e.printStackTrace(); } + String picture = commonGoodsVO.getPicture(); + if (!StringUtil.isNullOrEmpty(picture) && !picture.contains("320x320")) { + commonGoodsVO.setPicture(TbImgUtil.getTBSize320Img(picture)); + } + Integer hongBaoType = order.getHongBaoType(); // 閭�璇疯鍗曚俊鎭繚鎶� if (HongBaoV2.TYPE_YAOQING == hongBaoType || HongBaoV2.TYPE_YIJI == hongBaoType @@ -190,7 +273,7 @@ totalSettlement = commonOrder.getTotalPayment(); } // 瀹炰粯娆� - commonGoodsVO.setActualPay("瀹炰粯娆撅細楼" + totalSettlement); + commonGoodsVO.setActualPay("浠樻閲戦锛毬�" + totalSettlement); listOrderGoods.add(commonGoodsVO); @@ -212,15 +295,16 @@ SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd HH:mm"); SimpleDateFormat formatday = new SimpleDateFormat("yyyy.MM.dd"); + // 鏄惁瀛樺湪濂栧姳鍒� + boolean hasRewardCoupon = userSystemCouponService.hasRewardCoupon(uid); + + /* 缁勭粐璁㈠崟鐘舵�� 绛変俊鎭� */ 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)); + order.setObtainTime(thirdCreateTime.getTime()); } Date settleTime = order.getSettleTime(); @@ -232,9 +316,23 @@ String orderStateContent = ""; Map<String, String> orderStateMap = new HashMap<String, String>(); + // 璁㈠崟鐘舵�� + Integer orderState = order.getState(); + // 绾㈠寘鐘舵�� Integer hongBaoState = order.getHongBaoState(); - Integer orderState = order.getState(); + Integer stateWholeOrder = order.getStateWholeOrder(); + if (CommonOrder.STATE_WHOLE_ORDER_BUFENYOUXIAO == stateWholeOrder) { + // 鏁翠釜璁㈠崟閮ㄥ垎澶辨晥锛氬垽鏂湡瀹炵姸鎬� 璁㈠崟銆佺孩鍖� + CommonOrderVO buFenOrder = commonOrderMapper.getBuFenOrderState(uid, order.getOrderNo()); + if (buFenOrder != null) { + // 鏈夋晥鐨勮鍗曠姸鎬� + orderState = buFenOrder.getState(); + // 鏈夋晥鐨勭孩鍖呯姸鎬� + hongBaoState = buFenOrder.getHongBaoState(); + } + } + if (CommonOrder.STATE_FK == orderState) { orderStateContent = "宸蹭粯娆�"; } else if (CommonOrder.STATE_JS == orderState) { @@ -275,6 +373,8 @@ order.setOrderState(orderStateMap); String hongbaoInfo = ""; + // 璁㈠崟鏍囪瘑 + List<String> signList = new ArrayList<String>(); /* 璁㈠崟杩斿埄绫诲瀷 杞崲 */ Integer hongBaoType = order.getHongBaoType(); if (HongBaoV2.TYPE_ZIGOU == hongBaoType || 2 == hongBaoType) { @@ -282,11 +382,14 @@ hongbaoInfo = "杩斿埄"; order.setOrderOrigin("1"); order.setHongBaoTypePic(CommonOrder.TYPE_FANLI); + signList.add(CommonOrder.TYPE_FANLI); } else if (HongBaoV2.TYPE_SHARE_GOODS == hongBaoType) { // 鍒嗕韩 hongbaoInfo = "濂栭噾"; order.setOrderOrigin("2"); order.setHongBaoTypePic(CommonOrder.TYPE_SHARE); + signList.add(CommonOrder.TYPE_SHARE); + } else if (HongBaoV2.TYPE_YAOQING == hongBaoType || HongBaoV2.TYPE_YIJI == hongBaoType || HongBaoV2.TYPE_ERJI == hongBaoType || HongBaoV2.TYPE_SHARE_YIJI == hongBaoType || HongBaoV2.TYPE_SHARE_ERJI == hongBaoType) { @@ -294,6 +397,7 @@ hongbaoInfo = "濂栭噾"; order.setOrderOrigin("3"); order.setHongBaoTypePic(CommonOrder.TYPE_INVITE); + signList.add(CommonOrder.TYPE_INVITE); } String hongBaoDate = null; @@ -355,13 +459,125 @@ hongBaoMap.put("content", hongbaoInfo + " 楼" + hongBao.setScale(2, BigDecimal.ROUND_DOWN).toString()); hongBaoMap.put("fontColor", hongbaoInfoFontColor); order.setHongBaoInfo(hongBaoMap); + + // 闈炶嚜璐殑璁㈠崟 涓嶆樉绀鸿繑鍒┿�佸厤鍗曡鎯� + if (HongBaoV2.TYPE_ZIGOU != hongBaoType) { + // 璁㈠崟鏍囪瘑 + order.setSignList(signList); + + } else { + + // 鏄惁鍏嶅崟鍟嗗搧 + boolean freeOrder = false; + // 鏄惁濂栧姳鎴愬姛 + boolean rewardSuccess = false; + + // 濂栧姳璁㈠崟銆佸厤鍗� 浣跨敤璁板綍 + if (couponRecordList != null && couponRecordList.size() > 0) { + + for (UserSystemCouponRecord couponRecord : couponRecordList) { + // 璁㈠崟鍙峰尮閰� + if (order.getOrderNo().equals(couponRecord.getOrderNo())) { + + String systemCouponType = couponRecord.getCouponType(); + Integer state = couponRecord.getState(); + + // 濂栧姳璁㈠崟: 涓旀垚鍔� + if (CouponTypeEnum.rebatePercentCoupon.name().equals(systemCouponType) + && UserSystemCouponRecord.STATE_SUCCESS == state) { + rewardSuccess = true; + signList.add(PIC_REWARD); // 鍔犲叆濂栧姳鎴愬姛鍥剧墖 + + } else if (CouponTypeEnum.freeCoupon.name().equals(systemCouponType) + || CouponTypeEnum.welfareFreeCoupon.name().equals(systemCouponType)) { + + if (UserSystemCouponRecord.STATE_FREE_ON == state) { + // 鍏嶅崟涓� + freeOrder = true; + signList.add(PIC_FREE_ON); + } else if (UserSystemCouponRecord.STATE_SUCCESS == state) { + // 鍏嶅崟鎴愬姛 + freeOrder = true; + signList.add(PIC_FREE_SUCCEED); + } else if (UserSystemCouponRecord.STATE_FAIL_RULE == state + || UserSystemCouponRecord.STATE_FAIL_DRAWBACK == state) { + // 瑙勫垯涓嶅尮閰嶃�侀��娆� + freeOrder = true; + signList.add(PIC_FREE_FAIL); + } + } + + break; + } + } + } + + // 璁㈠崟鏍囪瘑 + order.setSignList(signList); + + boolean rewardOrder = false; + + int type = 1; // 1 甯歌璺宠浆椤甸潰 2寮瑰嚭閫夐」锛堝鍔卞埜锛� + if (rewardSuccess) { + // 濂栧姳鎴愬姛 + rewardOrder = true; + } else if (hasRewardCoupon && !freeOrder && HongBaoV2.TYPE_ZIGOU == hongBaoType + && HongBaoV2.STATE_YILINGQU == hongBaoState) { + // 鏈夊彲鐢ㄧ殑濂栧姳鍒� 銆侀潪鍏嶅崟璁㈠崟 銆佷笖宸插埌璐︾殑 銆佽繑鍒╄鍗� + type = 2; + rewardOrder = true; + } + + if (rewardOrder) { + ClientTextStyleVO rewardStyleVO = new ClientTextStyleVO(); + // 濂栧姳鍒歌繘搴﹁鎯� + rewardStyleVO.setContent("杩斿埄濂栧姳 >"); + rewardStyleVO.setColor("#E5005C"); + rewardStyleVO.setBottomColor("#FFDCEA"); + + Map<String, Object> jumpLink = new HashMap<String, Object>(); + jumpLink.put("orderNo", order.getOrderNo()); + + Map<String, Object> jump = new HashMap<String, Object>(); + jump.put("type", type); + jump.put("params", jumpLink); + jump.put("jumpDetail", jumpDetailV2Service.getByTypeCache("rewardCouponDetail")); + + Map<String, Object> rewardMap = new HashMap<String, Object>(); + rewardMap.put("text", rewardStyleVO); + rewardMap.put("jump", jump); + + order.setRewardDetail(rewardMap); + } + + if (freeOrder) { + ClientTextStyleVO rewardStyleVO = new ClientTextStyleVO(); + // 杩斿埄銆佸厤鍗曡鎯� + rewardStyleVO.setContent("鍏嶅崟璇︽儏 >"); + rewardStyleVO.setColor("#E5005C"); + rewardStyleVO.setBottomColor("#FFDCEA"); + + Map<String, Object> jumpLink = new HashMap<String, Object>(); + jumpLink.put("orderNo", order.getOrderNo()); + + Map<String, Object> jump = new HashMap<String, Object>(); + jump.put("type", 1); // 椤甸潰璺宠浆 + jump.put("params", jumpLink); + jump.put("jumpDetail", jumpDetailV2Service.getByTypeCache("freeCouponDetail")); + + Map<String, Object> rewardMap = new HashMap<String, Object>(); + rewardMap.put("text", rewardStyleVO); + rewardMap.put("jump", jump); + + order.setRewardDetail(rewardMap); + } + } } } @Override public List<CommonOrder> listBySourceTypeAndOrderId(int sourceType, String orderId) { - - return null; + return commonOrderMapper.listBySourceTypeAndOrderNo(sourceType, orderId); } @Transactional @@ -386,69 +602,619 @@ wholeOrderState = CommonOrder.STATE_WHOLE_ORDER_BUFENYOUXIAO; for (TaoBaoOrder taoBaoOrder : taoBaoOrders) { - CommonOrder commonOrder = commonOrderMapper.selectByOrderNoAndOrderTypeAndOrderBy(taoBaoOrder.getOrderId(), - Constant.SOURCE_TYPE_TAOBAO, taoBaoOrder.getOrderBy()); - if (commonOrder == null)// 鏂板 + CommonOrder newCommonOrder = TaoBaoOrderUtil.convert(taoBaoOrder); + CommonOrderGoods cog = new CommonOrderGoods(); + cog.setGoodsId(taoBaoOrder.getAuctionId() + ""); + cog.setGoodsType(Constant.SOURCE_TYPE_TAOBAO); + newCommonOrder.setCommonOrderGoods(cog); + newCommonOrder.setStateWholeOrder(wholeOrderState); + // 璁㈠崟鍟嗗搧鎻掑叆 + List<CommonOrderGoods> commonGoodsList = commonOrderGoodsMapper.listByGoodsIdAndGoodsType(cog.getGoodsId(), + cog.getGoodsType()); + if (commonGoodsList.size() <= 0)// 涓嶅瓨鍦ㄥ氨鎻掑叆鍟嗗搧 { - 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; + TaoBaoGoodsBrief taoBaoGoods = null; + try { + taoBaoGoods = TaoKeApiUtil.getSimpleGoodsInfo(taoBaoOrder.getAuctionId()); + } catch (TaobaoGoodsDownException e) { + e.printStackTrace(); + LogHelper.errorDetailInfo(e, "AUCTIONID:" + taoBaoOrder.getAuctionId(), ""); try { - taoBaoGoods = TaoKeApiUtil.getSimpleGoodsInfo(taoBaoOrder.getAuctionId()); - } catch (TaobaoGoodsDownException e) { - e.printStackTrace(); + taoBaoGoods = TaoBaoUtil.getSimpleGoodsBrief(taoBaoOrder.getAuctionId()); + } catch (Exception e1) { + CommonGoods commonGoods = commonGoodsService.getCommonGoodsByGoodsIdAndGoodsType( + taoBaoOrder.getAuctionId(), Constant.SOURCE_TYPE_TAOBAO); + if (commonGoods != null) + taoBaoGoods = TaoBaoUtil.convert(commonGoods); } - 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()); - commonOrder.setStateWholeOrder(wholeOrderState); - commonOrderMapper.insertSelective(commonOrder); - - commonOrderList.add(commonOrder); - continue; - } else {// 淇敼 - // 宸茬粡缁撶畻鎴栬�呭凡缁忓け鏁堢殑璁㈠崟涓嶅鐞� - if (commonOrder.getState() == CommonOrder.STATE_JS || commonOrder.getState() == CommonOrder.STATE_SX) { - commonOrderList.add(commonOrder); - continue; } - 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.setStateWholeOrder(wholeOrderState); - updateCommonOrder.setUpdateTime(new Date()); - commonOrderMapper.updateByPrimaryKeySelective(updateCommonOrder); - commonOrderList.add(commonOrderMapper.selectByPrimaryKey(updateCommonOrder.getId())); - continue; + if (taoBaoGoods != null) { + cog = CommonOrderGoodsFactory.create(taoBaoGoods); + } + cog.setCreateTime(new Date()); + cog.setUpdateTime(new Date()); + commonOrderGoodsMapper.insertSelective(cog); } + newCommonOrder.setUserInfo(new UserInfo(uid)); + commonOrderList.add(addCommonOrder(newCommonOrder)); } return commonOrderList; } + @Transactional + @Override + public List<CommonOrder> addPDDOrder(List<PDDOrder> pddOrderList, Long uid) throws CommonOrderException { + List<CommonOrder> commonOrderList = new ArrayList<>(); + // 鍒ゆ柇鎵�鏈夌殑璁㈠崟鐘舵�� + int invalidCount = 0; + for (PDDOrder order : pddOrderList) { + if (order.getOrderStatus() == -1 || order.getOrderStatus() == 4 || order.getOrderStatus() == 8) { + invalidCount++; + } + } + // 鑾峰彇鏁翠綋璁㈠崟鐨勭姸鎬� + int wholeOrderState = 0; + if (pddOrderList.size() == invalidCount) + wholeOrderState = CommonOrder.STATE_WHOLE_ORDER_SHIXIAO; + else if (invalidCount == 0) + wholeOrderState = CommonOrder.STATE_WHOLE_ORDER_YOUXIAO; + else + wholeOrderState = CommonOrder.STATE_WHOLE_ORDER_BUFENYOUXIAO; + + for (PDDOrder pddOrder : pddOrderList) { + CommonOrder newCommonOrder = CommonOrderFactory.create(pddOrder); + CommonOrderGoods cog = new CommonOrderGoods(); + cog.setGoodsId(pddOrder.getGoodsId() + ""); + cog.setGoodsType(Constant.SOURCE_TYPE_PDD); + newCommonOrder.setCommonOrderGoods(cog); + newCommonOrder.setStateWholeOrder(wholeOrderState); + // 璁㈠崟鍟嗗搧鎻掑叆 + List<CommonOrderGoods> commonGoodsList = commonOrderGoodsMapper.listByGoodsIdAndGoodsType(cog.getGoodsId(), + cog.getGoodsType()); + if (commonGoodsList.size() <= 0)// 涓嶅瓨鍦ㄥ氨鎻掑叆鍟嗗搧 + { + PDDGoodsDetail pddGoods = null; + pddGoods = PinDuoDuoApiUtil.getGoodsDetail(Long.parseLong(cog.getGoodsId())); + if (pddGoods != null) { + cog = CommonOrderGoodsFactory.create(pddGoods); + } + cog.setCreateTime(new Date()); + cog.setUpdateTime(new Date()); + commonOrderGoodsMapper.insertSelective(cog); + newCommonOrder.setCommonOrderGoods(cog); + } + newCommonOrder.setUserInfo(new UserInfo(uid)); + commonOrderList.add(addCommonOrder(newCommonOrder)); + } + return commonOrderList; + } + + @Transactional + @Override + public List<CommonOrder> addJDOrder(JDOrder jdOrder, Long uid) throws CommonOrderException { + List<CommonOrder> commonOrderList = new ArrayList<>(); + // 鍒ゆ柇鎵�鏈夌殑璁㈠崟鐘舵�� + int invalidCount = 0; + for (JDOrderItem tb : jdOrder.getOrderItemList()) { + if (tb.getValidCode() < 16) { + invalidCount++; + } + } + + // 鑾峰彇鏁翠綋璁㈠崟鐨勭姸鎬� + int wholeOrderState = 0; + if (jdOrder.getOrderItemList().size() == invalidCount) + wholeOrderState = CommonOrder.STATE_WHOLE_ORDER_SHIXIAO; + else if (invalidCount == 0) + wholeOrderState = CommonOrder.STATE_WHOLE_ORDER_YOUXIAO; + else + wholeOrderState = CommonOrder.STATE_WHOLE_ORDER_BUFENYOUXIAO; + + List<JDOrderItem> orderItemList = jdOrder.getOrderItemList(); + jdOrder.setOrderItemList(null); + + for (JDOrderItem itemOrder : orderItemList) { + itemOrder.setOrder(jdOrder); + CommonOrder newCommonOrder = CommonOrderFactory.create(itemOrder); + CommonOrderGoods cog = new CommonOrderGoods(); + cog.setGoodsId(itemOrder.getSkuId() + ""); + cog.setGoodsType(Constant.SOURCE_TYPE_JD); + newCommonOrder.setCommonOrderGoods(cog); + newCommonOrder.setStateWholeOrder(wholeOrderState); + // 璁㈠崟鍟嗗搧鎻掑叆 + List<CommonOrderGoods> commonGoodsList = commonOrderGoodsMapper.listByGoodsIdAndGoodsType(cog.getGoodsId(), + cog.getGoodsType()); + if (commonGoodsList.size() <= 0)// 涓嶅瓨鍦ㄥ氨鎻掑叆鍟嗗搧 + { + JDGoods goods = JDApiUtil.getGoodsDetail(itemOrder.getSkuId()); + + if (goods != null) { + cog = CommonOrderGoodsFactory.create(goods); + } + cog.setCreateTime(new Date()); + cog.setUpdateTime(new Date()); + commonOrderGoodsMapper.insertSelective(cog); + } + newCommonOrder.setUserInfo(new UserInfo(uid)); + commonOrderList.add(addCommonOrder(newCommonOrder)); + } + return commonOrderList; + } + + /** + * 娣诲姞璁㈠崟 + * + * @param commonOrder + */ + @Transactional + private CommonOrder addCommonOrder(CommonOrder commonOrder) throws CommonOrderException { + // 鍒ゆ柇鍟嗗搧鏄惁瀛樺湪 + if (commonOrder == null) + throw new CommonOrderException(1, "璁㈠崟涓虹┖"); + if (commonOrder.getUserInfo() == null) + throw new CommonOrderException(2, "璁㈠崟鐢ㄦ埛涓虹┖"); + + if (commonOrder.getCommonOrderGoods() == null || commonOrder.getCommonOrderGoods().getGoodsId() == null + || commonOrder.getCommonOrderGoods().getGoodsType() == null) + throw new CommonOrderException(3, "璁㈠崟鍟嗗搧涓虹┖"); + // 涓嶅瓨鍦ㄥ氨鎻掑叆锛屽瓨鍦ㄥ氨涓嶇 + CommonOrderGoods goods = commonOrder.getCommonOrderGoods(); + + // 涔嬪墠涓嶅瓨鍦ㄤ簬鏁版嵁搴� + if (commonOrder.getCommonOrderGoods().getId() == null) { + List<CommonOrderGoods> commonGoodsList = commonOrderGoodsMapper + .listByGoodsIdAndGoodsType(goods.getGoodsId(), goods.getGoodsType()); + + if (commonGoodsList == null || commonGoodsList.size() < 1) {// 涓嶅瓨鍦� + commonOrderGoodsMapper.insertSelective(goods); + } else {// 瀛樺湪 + goods = commonGoodsList.get(0); + } + if (goods.getId() == null) + throw new CommonOrderException(4, "鍟嗗搧鎻掑叆澶辫触"); + commonOrder.setCommonOrderGoods(goods); + } + + CommonOrder oldCommonOrder = null; + + if (!StringUtil.isNullOrEmpty(commonOrder.getTradeId())) + oldCommonOrder = commonOrderMapper.selectBySourceTypeAndTradeId(commonOrder.getSourceType(), + commonOrder.getTradeId()); + else + oldCommonOrder = commonOrderMapper.selectByOrderNoAndOrderTypeAndOrderBy(commonOrder.getOrderNo(), + commonOrder.getSourceType(), commonOrder.getOrderBy()); + + if (oldCommonOrder == null)// 鏂板 + { + commonOrder.setCreateTime(new Date()); + commonOrderMapper.insertSelective(commonOrder); + // 鎻掑叆鏄犲皠锛屼繚璇佷氦鏄揑D鐨勫畬鏁存�� + commonOrderTradeIdMapMapper.insertSelective(new CommonOrderTradeIdMap(commonOrder.getId(), + commonOrder.getTradeId(), new Date(), commonOrder.getSourceType())); + return commonOrder; + } else {// 淇敼 + // 宸茬粡缁撶畻锛屽凡缁忓け鏁堬紝鐘舵�佹湭鏀瑰彉鐨勮鍗曚笉澶勭悊 + if (oldCommonOrder.getState() == CommonOrder.STATE_JS || oldCommonOrder.getState() == CommonOrder.STATE_SX + || (oldCommonOrder.getState().intValue() == commonOrder.getState())) { + return oldCommonOrder; + } + // 浜ゆ槗ID涓�鑷存墠淇敼 + if (commonOrder.getTradeId() != null + && commonOrder.getTradeId().equalsIgnoreCase(oldCommonOrder.getTradeId())) { + CommonOrder updateCommonOrder = new CommonOrder(oldCommonOrder.getId()); + updateCommonOrder.seteIncome(commonOrder.geteIncome()); + updateCommonOrder.setEstimate(commonOrder.getEstimate()); + updateCommonOrder.setPayment(commonOrder.getPayment()); + updateCommonOrder.setSettlement(commonOrder.getSettlement()); + updateCommonOrder.setSettleTime(commonOrder.getSettleTime()); + updateCommonOrder.setState(commonOrder.getState()); + updateCommonOrder.setStateWholeOrder(commonOrder.getStateWholeOrder()); + updateCommonOrder.setUpdateTime(new Date()); + updateCommonOrder.setTradeId(commonOrder.getTradeId()); + commonOrderMapper.updateByPrimaryKeySelective(updateCommonOrder); + return commonOrderMapper.selectByPrimaryKey(updateCommonOrder.getId()); + } else + return oldCommonOrder; + } + } + @Override public long countByUidAndOrderStateWithOrderBalanceTime(Long uid, int state, Date minDate, Date maxDate) { - return commonOrderMapper.countByUidAndOrderStateWithOrderBalanceTime(uid, state, minDate, maxDate); } + + @Override + public List<CommonOrderVO> listQueryByUid(long start, int count, Long uid, Integer state, Integer type, + Integer orderState, String orderNo, String startTime, String endTime, Integer dateType) + throws CommonOrderException { + + List<CommonOrderVO> list = commonOrderMapper.listQueryByUid(start, count, uid, state, type, orderState, orderNo, + startTime, endTime, dateType); + + if (list == null) { + list = new ArrayList<CommonOrderVO>(); + } + + if (list.size() == 0) { + return list; + } + + SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); + for (CommonOrderVO order : list) { + + // 涓嬪崟鏃堕棿 + Date thirdCreateTime = order.getThirdCreateTime(); + if (thirdCreateTime != null) { + order.setDownTime(format.format(thirdCreateTime)); + } + // 鏀惰揣鏃堕棿 + Date settleTime = order.getSettleTime(); + if (settleTime != null) { + order.setReceiveTime(format.format(settleTime)); + } + + // 鍒拌处鏃堕棿 + Date accountTime = order.getAccountTime(); + if (accountTime != null) { + order.setHongBaoDate(format.format(accountTime)); + } + + BigDecimal settlement = order.getSettlement(); + if (settlement != null && settlement.compareTo(new BigDecimal(0)) > 0) { + order.setPayment(settlement); // 瀹為檯浠樻閲戦 + } + + /* 璁㈠崟杩斿埄绫诲瀷 杞崲 */ + Integer hongBaoType = order.getHongBaoType(); + if (HongBaoV2.TYPE_ZIGOU == hongBaoType || 2 == hongBaoType) { + // 鑷喘 + order.setHongBaoType(1); + } else if (HongBaoV2.TYPE_SHARE_GOODS == hongBaoType) { + // 鍒嗕韩 + order.setHongBaoType(2); + } else if (HongBaoV2.TYPE_YAOQING == hongBaoType || HongBaoV2.TYPE_YIJI == hongBaoType + || HongBaoV2.TYPE_ERJI == hongBaoType || HongBaoV2.TYPE_SHARE_YIJI == hongBaoType + || HongBaoV2.TYPE_SHARE_ERJI == hongBaoType) { + // 閭�璇� + order.setHongBaoType(3); + } + + Integer hongBaoState = order.getHongBaoState(); + if (HongBaoV2.STATE_KELINGQU == hongBaoState || HongBaoV2.STATE_BUKELINGQU == hongBaoState) { + // 鏈埌璐� + order.setHongBaoState(1); + + } else if (HongBaoV2.STATE_YILINGQU == hongBaoState) { + // 宸插埌璐� + order.setHongBaoState(2); + + } else if (HongBaoV2.STATE_SHIXIAO == hongBaoState) { + // 宸插け鏁� + order.setHongBaoState(3); + } + + } + + return list; + + } + + @Override + public long countQueryByUid(Long uid, Integer state, Integer type, Integer orderState, String orderNo, + String startTime, String endTime, Integer dateType) throws CommonOrderException { + return commonOrderMapper.countQueryByUid(uid, state, type, orderState, orderNo, startTime, endTime, dateType); + } + + @Override + public List<CommonOrderVO> listQuery(long start, int count, Integer keyType, String key, Integer state, + Integer type, Integer orderState, String startTime, String endTime) throws CommonOrderException { + + List<CommonOrderVO> list = commonOrderMapper.listQuery(start, count, keyType, key, state, type, orderState, + startTime, endTime); + + if (list == null) { + list = new ArrayList<CommonOrderVO>(); + } + + if (list.size() == 0) { + return list; + } + + SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); + for (CommonOrderVO order : list) { + + // 涓嬪崟鏃堕棿 + Date thirdCreateTime = order.getThirdCreateTime(); + if (thirdCreateTime != null) { + order.setDownTime(format.format(thirdCreateTime)); + } + // 鏀惰揣鏃堕棿 + Date settleTime = order.getSettleTime(); + if (settleTime != null) { + order.setReceiveTime(format.format(settleTime)); + } + + // 鍒拌处鏃堕棿 + Date accountTime = order.getAccountTime(); + if (accountTime != null) { + order.setHongBaoDate(format.format(accountTime)); + } + + BigDecimal settlement = order.getSettlement(); + if (settlement != null && settlement.compareTo(new BigDecimal(0)) > 0) { + order.setPayment(settlement); // 瀹為檯浠樻閲戦 + } + + /* 璁㈠崟杩斿埄绫诲瀷 杞崲 */ + Integer hongBaoType = order.getHongBaoType(); + if (HongBaoV2.TYPE_ZIGOU == hongBaoType || 2 == hongBaoType) { + // 鑷喘 + order.setHongBaoType(1); + } else if (HongBaoV2.TYPE_SHARE_GOODS == hongBaoType) { + // 鍒嗕韩 + order.setHongBaoType(2); + } else if (HongBaoV2.TYPE_YAOQING == hongBaoType || HongBaoV2.TYPE_YIJI == hongBaoType + || HongBaoV2.TYPE_ERJI == hongBaoType || HongBaoV2.TYPE_SHARE_YIJI == hongBaoType + || HongBaoV2.TYPE_SHARE_ERJI == hongBaoType) { + // 閭�璇� + order.setHongBaoType(3); + } + + Integer hongBaoState = order.getHongBaoState(); + if (HongBaoV2.STATE_KELINGQU == hongBaoState || HongBaoV2.STATE_BUKELINGQU == hongBaoState) { + // 鏈埌璐� + order.setHongBaoState(1); + + } else if (HongBaoV2.STATE_YILINGQU == hongBaoState) { + // 宸插埌璐� + order.setHongBaoState(2); + + } else if (HongBaoV2.STATE_SHIXIAO == hongBaoState) { + // 宸插け鏁� + order.setHongBaoState(3); + } + + List<HongBaoV2> listhb = hongBaoV2Service.listChildrenById(order.getHongbaoId()); + if (listhb != null && listhb.size() > 0) { + if (listhb.size() == 1) { + UserInfo userInfo = listhb.get(0).getUserInfo(); + if (userInfo != null) { + order.setLevelOneId(userInfo.getId() + ""); + order.setLevelOneMoney(listhb.get(0).getMoney() + ""); + } + } else if (listhb.size() == 2) { + UserInfo userInfo = listhb.get(0).getUserInfo(); + if (userInfo != null) { + order.setLevelOneId(userInfo.getId() + ""); + order.setLevelOneMoney(listhb.get(0).getMoney() + ""); + } + + UserInfo userInfo2 = listhb.get(1).getUserInfo(); + if (userInfo2 != null) { + order.setLevelTwoId(userInfo2.getId() + ""); + order.setLevelTwoMoney(listhb.get(1).getMoney() + ""); + } + } + } + + } + + return list; + + } + + @Override + public long countQuery(Integer keyType, String key, Integer state, Integer type, Integer orderState, + String startTime, String endTime) throws CommonOrderException { + return commonOrderMapper.countQuery(keyType, key, state, type, orderState, startTime, endTime); + } + + @Override + public CommonOrderVO getInfoByOrderNo(Long uid, String orderNo) throws CommonOrderException { + List<CommonOrderVO> list = getOrderByUid(1, uid, null, null, null, orderNo, null, null, null); + if (list == null || list.size() == 0) { + return null; + } else { + return list.get(0); + } + } + + @Override + public CommonOrderVO getCommonOrderByOrderNo(Long uid, String orderNo, Integer orderState) + throws CommonOrderException { + + CommonOrderVO commonOrderVO = commonOrderMapper.getCommonOrderByOrderNo(uid, orderNo, orderState); + // 璁㈠崟淇℃伅涓虹┖ + if (commonOrderVO == null) { + return null; + } + + List<CommonOrderVO> listOrder = new ArrayList<CommonOrderVO>(); + listOrder.add(commonOrderVO); + + // 鍟嗗搧淇℃伅 + List<CommonOrderVO> listGoods = commonOrderMapper.listOrderGoodsInfo(listOrder); + // 璁㈠崟鍟嗗搧涓虹┖ + if (listGoods == null || listGoods.size() == 0) { + return null; + } + + /* 缁勫悎鍟嗗搧淇℃伅 */ + for (CommonOrderVO commonOrder : listGoods) { + + CommonOrderGoods goods = commonOrder.getCommonOrderGoods(); + if (goods == null) { + continue; + } + + String orderNo1 = commonOrder.getOrderNo(); + Integer sourceType = commonOrder.getSourceType(); + + String orderNo2 = commonOrderVO.getOrderNo(); + Integer sourceType2 = commonOrderVO.getSourceType(); + + // 鏉ユ簮銆佽鍗曞彿鐩稿悓 + if (sourceType.equals(sourceType2) && orderNo1.equals(orderNo2)) { + // 鍔犲叆鍟嗗搧淇℃伅 + List<CommonOrderGoodsVO> listOrderGoods = commonOrderVO.getListOrderGoods(); + + CommonOrderGoodsVO commonGoodsVO = new CommonOrderGoodsVO(); + try { + PropertyUtils.copyProperties(commonGoodsVO, goods); + } catch (Exception e) { + e.printStackTrace(); + } + + String picture = commonGoodsVO.getPicture(); + if (!StringUtil.isNullOrEmpty(picture) && !picture.contains("320x320")) { + commonGoodsVO.setPicture(TbImgUtil.getTBSize320Img(picture)); + } + + Integer hongBaoType = commonOrderVO.getHongBaoType(); + // 閭�璇疯鍗曚俊鎭繚鎶� + if (HongBaoV2.TYPE_YAOQING == hongBaoType || HongBaoV2.TYPE_YIJI == hongBaoType + || HongBaoV2.TYPE_ERJI == hongBaoType || HongBaoV2.TYPE_SHARE_YIJI == hongBaoType + || HongBaoV2.TYPE_SHARE_ERJI == hongBaoType) { + Map<String, String> titleMap = new HashMap<String, String>(); + titleMap.put("content", "涓轰繚闅滅敤鎴烽殣绉侊紝鍟嗗搧淇℃伅宸查殣钘�!"); + titleMap.put("fontColor", "#888888"); + titleMap.put("bottomColor", "#E9E9E9"); + commonGoodsVO.setTitle(null); + commonGoodsVO.setGoodsTitle(titleMap); + } + + // 璐拱鏁伴噺 + commonGoodsVO.setActualCount(commonOrder.getTotalCount() + "浠�"); + + BigDecimal totalSettlement = commonOrder.getTotalSettlement(); + if (totalSettlement == null || totalSettlement.compareTo(new BigDecimal(0)) <= 0) { + totalSettlement = commonOrder.getTotalPayment(); + } + // 瀹炰粯娆� + commonGoodsVO.setActualPay("浠樻閲戦锛毬�" + totalSettlement); + + listOrderGoods.add(commonGoodsVO); + + Integer orderType = commonOrder.getOrderType(); + if (orderType == null) { + String shopType = commonGoodsVO.getShopType(); + if (CommonOrderGoodsVO.TYPE_TAOBAO.equalsIgnoreCase(shopType)) { + commonOrder.setOrderType(1); + } else if (CommonOrderGoodsVO.TYPE_TMALL.equalsIgnoreCase(shopType)) { + commonOrder.setOrderType(2); + } + } + + break; + } + } + + return commonOrderVO; + } + + @Override + public List<CommonOrderVO> getCouponHongbaoByOrderNo(Long uid, Integer hongBaoState, String orderNo) + throws CommonOrderException { + + List<CommonOrderVO> listOrder = commonOrderMapper.getCouponHongbaoByOrderNo(uid, hongBaoState, orderNo); + + // 璁㈠崟淇℃伅涓虹┖ + if (listOrder == null || listOrder.size() == 0) { + listOrder = new ArrayList<CommonOrderVO>(); + return listOrder; + } + + // 鍟嗗搧淇℃伅 + List<CommonOrderVO> listGoods = commonOrderMapper.listOrderGoodsInfo(listOrder); + // 璁㈠崟鍟嗗搧涓虹┖ + if (listGoods == null || listGoods.size() == 0) { + return listOrder; + } + + // 鏁版嵁鍔犲伐閲嶆柊缁勭粐 + listDataFactory(listOrder, listGoods, uid); + + return listOrder; + } + + @Override + public JSONObject getRewardJumpInfo(String orderNo) { + + JSONObject map = new JSONObject(); + // 璁㈠崟鏍囪瘑 + List<String> signList = new ArrayList<String>(); + signList.add(CommonOrder.TYPE_FANLI); + signList.add(PIC_REWARD); // 鍔犲叆濂栧姳鎴愬姛鍥剧墖 + map.put("signList", signList); + + ClientTextStyleVO rewardStyleVO = new ClientTextStyleVO(); + // 濂栧姳鍒歌繘搴﹁鎯� + rewardStyleVO.setContent("杩斿埄濂栧姳 >"); + rewardStyleVO.setColor("#E5005C"); + rewardStyleVO.setBottomColor("#FFDCEA"); + + Map<String, Object> jumpLink = new HashMap<String, Object>(); + jumpLink.put("orderNo", orderNo); + + Map<String, Object> jump = new HashMap<String, Object>(); + jump.put("type", 1); + jump.put("params", jumpLink); + jump.put("jumpDetail", jumpDetailV2Service.getByTypeCache("rewardCouponDetail")); + + Map<String, Object> rewardMap = new HashMap<String, Object>(); + rewardMap.put("text", rewardStyleVO); + rewardMap.put("jump", jump); + + map.put("rewardDetail", rewardMap); + + return map; + } + + @Override + public CommonOrder selectBySourceTypeAndTradeId(int sourceType, String tradeId) { + + return commonOrderMapper.selectBySourceTypeAndTradeId(sourceType, tradeId); + } + + @Transactional + @Override + public void deleteErrorCommonOrder(Long coId) { + // 鏌ヨ鏄惁杩斿埄鍒拌处 + HongBaoOrder hongBaoOrder = hongBaoOrderService.selectDetailByCommonOrderId(coId); + if (hongBaoOrder.getHongBaoV2().getState() == HongBaoV2.STATE_YILINGQU) + return; + List<HongBaoV2> hongBaoList = hongBaoV2Service.listChildrenById(hongBaoOrder.getHongBaoV2().getId()); + boolean canDelete = true; + for (HongBaoV2 child : hongBaoList) + if (child.getState() == HongBaoV2.STATE_YILINGQU) { + canDelete = false; + break; + } + // 涓嶈兘鍒犻櫎 + if (!canDelete) + return; + + // 鍒犻櫎child + for (HongBaoV2 child : hongBaoList) + hongBaoV2Service.deleteByPrimaryKey(child.getId()); + // 鍒犻櫎涓荤孩鍖� + hongBaoV2Service.deleteByPrimaryKey(hongBaoOrder.getHongBaoV2().getId()); + // 鍒犻櫎hongbaoOrder + hongBaoOrderService.deleteByPrimaryKey(hongBaoOrder.getId()); + // 鍒犻櫎CommonOrder + commonOrderMapper.deleteByPrimaryKey(hongBaoOrder.getCommonOrder().getId()); + } + + @Override + public List<CommonOrder> listBySourceTypeAndTradeId(int sourceType, String tradeId) { + return commonOrderMapper.listBySourceTypeAndTradeId(sourceType, tradeId); + } + + @Override + public List<CommonOrder> listBySourceTypeAndStateAndThirdCrateTime(int sourceType, Integer state, Long minTime, + Long maxTime, int page, int pageSize) { + return commonOrderMapper.listBySourceTypeAndStateAndThirdCrateTime(sourceType, state, minTime, maxTime, + (page - 1) * pageSize, pageSize); + } + } -- Gitblit v1.8.0