From 114685cc870d0e00dc157656ae9039f285d3f5f1 Mon Sep 17 00:00:00 2001 From: Administrator <Administrator@S0ZHK00LKCA6OYY> Date: 星期五, 30 十一月 2018 15:59:42 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java | 92 ++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 81 insertions(+), 11 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java index 5bfd4be..1e2fae5 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java @@ -26,6 +26,7 @@ import com.yeshi.fanli.dao.mybatis.order.OrderItemMapper; import com.yeshi.fanli.dao.mybatis.order.OrderMapper; import com.yeshi.fanli.dao.mybatis.share.PidUserMapper; +import com.yeshi.fanli.dao.mybatis.taobao.TaoBaoWeiQuanOrderMapper; import com.yeshi.fanli.entity.bus.user.AccountDetails; import com.yeshi.fanli.entity.bus.user.HongBao; import com.yeshi.fanli.entity.bus.user.HongBaoExtra; @@ -45,6 +46,7 @@ import com.yeshi.fanli.exception.TaoBaoWeiQuanException; import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.hongbao.HongBaoService; +import com.yeshi.fanli.service.inter.order.LostOrderService; import com.yeshi.fanli.service.inter.order.OrderItemServcie; import com.yeshi.fanli.service.inter.order.OrderProcessService; import com.yeshi.fanli.service.inter.order.OrderService; @@ -128,6 +130,12 @@ @Resource private RedisManager redisManager; + @Resource + private LostOrderService lostOrderService; + + @Resource + private TaoBaoWeiQuanOrderMapper taoBaoWeiQuanOrderMapper; + @Override public void processOrder(Map<String, List<TaoBaoOrder>> orders) { List<TaoBaoUnionConfig> configList = taoBaoUnionConfigService.getConfigByTypeCache(PidUser.TYPE_FANLI_ANDROID); @@ -163,6 +171,7 @@ /** * 鍒╃敤redis鐨勫師瀛愭�у皢璁㈠崟鍙烽攣浣忥紝涓嶈鍏朵粬澶勭悊 + * * @param orderId */ private void redisLockOrder(String orderId) { @@ -172,6 +181,7 @@ /** * 璁㈠崟瑙i攣 + * * @param orderId */ private void redisUnlockOrder(String orderId) { @@ -181,6 +191,7 @@ /** * 璁㈠崟鏄惁琚攣浣忎簡 + * * @param orderId * @return */ @@ -202,12 +213,16 @@ try { String orderId = its.next(); // 澶勭悊绾㈠寘涓庡瓙绾㈠寘 -// if (isRedisLockOrder(orderId)) -// continue; -// redisLockOrder(orderId); + // if (isRedisLockOrder(orderId)) + // continue; + // redisLockOrder(orderId); processShopingFanliOrder(orderId, orders.get(orderId)); -// redisUnlockOrder(orderId); + // redisUnlockOrder(orderId); // 鍑洪敊浜嗗氨涓嶅鐞嗚璁㈠崟浜嗭紝闇�瑕佸畾鏈熸鏌� + + // 鏇存敼涓㈠け璁㈠崟鐨勭姸鎬� + lostOrderService.processSuceess(orderId); + } catch (HongBaoException e1) { e1.printStackTrace(); } catch (OrderItemException e2) { @@ -383,8 +398,13 @@ } else// 璁$畻璁㈠崟鐨勬�婚噾棰� { BigDecimal money = new BigDecimal(0); - for (TaoBaoOrder o : orderList) - money = money.add(o.getPayment()); + for (TaoBaoOrder o : orderList) { + if (o.getOrderState().equalsIgnoreCase("璁㈠崟缁撶畻")) + money = money.add(o.getSettlement()); + else { + money = money.add(o.getPayment()); + } + } updateOrder.setMoney(money); String thirdState = null; for (TaoBaoOrder o : orderList) @@ -438,6 +458,16 @@ public void fanli(HongBao hb) throws TaoBaoWeiQuanException { // 鏌ヨ鏈�鏂扮殑绾㈠寘鏁版嵁 hb = hongBaoMapper.selectByPrimaryKeyForUpdate(hb.getId()); + // 缁存潈涓殑涓嶈繑鍒� + List<TaoBaoWeiQuanOrder> taoBaoWeiQuanList = taoBaoWeiQuanOrderMapper + .selectListByOrderIdAndState(hb.getOrderId(), "缁存潈鍒涘缓"); + if (taoBaoWeiQuanList != null && taoBaoWeiQuanList.size() > 0) + return; + + taoBaoWeiQuanList = taoBaoWeiQuanOrderMapper.selectListByOrderIdAndState(hb.getOrderId(), "绛夊緟澶勭悊"); + if (taoBaoWeiQuanList != null && taoBaoWeiQuanList.size() > 0) + return; + long currentTimeMillis = System.currentTimeMillis(); if (hb.getState() != HongBao.STATE_SHIXIAO) { // 璁剧疆涓哄凡杩斿埄 @@ -505,9 +535,9 @@ List<TaoBaoOrder> orderList = taoBaoOrderService.getTaoBaoOrderByOrderId(order.getOrderId()); if (orderList != null && orderList.size() > 0 & !StringUtil.isNullOrEmpty(orderList.get(0).getSettlementTime())) - order.setJieSuanTime(orderList.get(0).getSettlementTime()); - if (TimeUtil.convertToTimeTemp(order.getJieSuanTime(), "yyyy-MM-dd HH:mm:ss") >= TimeUtil - .convertToTimeTemp("2018-08-05", "yyyy-MM-dd")) { + order.setJieSuanTime( + new Date(TimeUtil.convertToTimeTemp(orderList.get(0).getSettlementTime(), "yyyy-MM-dd HH:mm:ss"))); + if (order.getJieSuanTime().getTime() >= TimeUtil.convertToTimeTemp("2018-08-05", "yyyy-MM-dd")) { return; } try { @@ -543,17 +573,37 @@ } } + private HongBao filterWeiQuanINGHongBao(HongBao hongBao) { + + List<TaoBaoWeiQuanOrder> taoBaoWeiQuanList = taoBaoWeiQuanOrderMapper + .selectListByOrderIdAndState(hongBao.getOrderId(), "缁存潈鍒涘缓"); + + List<TaoBaoWeiQuanOrder> taoBaoWeiQuanList1 = taoBaoWeiQuanOrderMapper + .selectListByOrderIdAndState(hongBao.getOrderId(), "绛夊緟澶勭悊"); + if ((taoBaoWeiQuanList != null && taoBaoWeiQuanList.size() > 0) + || (taoBaoWeiQuanList1 != null && taoBaoWeiQuanList1.size() > 0)) { + return null; + } + return hongBao; + } + @Override @Transactional public void fanliInvaiteAndShare(Long uid) throws TaoBaoWeiQuanException { + /** + * 澶勭悊閭�璇疯禋璁㈠崟 + */ // 鏌ヨUID鐨勯個璇疯禋璁㈠崟 List<HongBao> hongBaoList = hongBaoMapper.selectCanBalanceHongBaoByChildHongBaoAndUid(uid); - BigDecimal money = new BigDecimal(0); + BigDecimal money = new BigDecimal(0); // 闇�瑕佸垽鏂��娆剧殑璁㈠崟鍙� Set<String> drawBackOrders = new HashSet<String>(); - for (HongBao hongBao : hongBaoList) { + hongBao = filterWeiQuanINGHongBao(hongBao); + if (hongBao == null) + continue; + hongBao = hongBaoMapper.selectByPrimaryKeyForUpdate(hongBao.getId()); if (hongBao.getState() == HongBao.STATE_BUKELINGQU || hongBao.getState() == HongBao.STATE_KELINGQU) { money = money.add(hongBao.getMoney()); @@ -578,10 +628,17 @@ } } + /** + * 澶勭悊椤剁骇鍒嗕韩璧� + */ + // 鏌ヨUID鐨勫垎浜禋璁㈠崟 List<PidOrder> pidOrderList = pidOrderMapper.getCanBalanceListByUid(uid); for (PidOrder pidOrder : pidOrderList) { HongBao hongBao = hongBaoMapper.selectByPrimaryKeyForUpdate(pidOrder.getHongBao().getId()); + hongBao = filterWeiQuanINGHongBao(hongBao); + if (hongBao == null) + continue; if (hongBao.getState() == HongBao.STATE_BUKELINGQU || hongBao.getState() == HongBao.STATE_KELINGQU) { money = money.add(hongBao.getMoney()); HongBao updateHongBao = new HongBao(); @@ -602,10 +659,15 @@ } } + /** + * 澶勭悊涓�绾т簩绾у垎浜禋 + */ + List<HongBao> totalHongBaoList = new ArrayList<>(); // 鏌ヨUID鐨勪簩绾ф垨鑰呬笁绾у垎浜禋璁㈠崟 // TODO 鏆傛椂鏌ヨ10000鏉℃暟鎹紝鍚庨潰鍐嶅仛鍒嗛〉 List<HongBao> hbList = hongBaoMapper.selectCanBalanceHongBaoByTypeAndUid(HongBao.TYPE_SHARE_YIJI, uid, 10000); + if (hbList != null && hbList.size() > 0) totalHongBaoList.addAll(hbList); @@ -613,8 +675,12 @@ if (hbList != null && hbList.size() > 0) totalHongBaoList.addAll(hbList); + for (HongBao hb : totalHongBaoList) { if (hb.getState() == HongBao.STATE_BUKELINGQU || hb.getState() == HongBao.STATE_KELINGQU) { + hb = filterWeiQuanINGHongBao(hb); + if (hb == null) + continue; money = money.add(hb.getMoney()); HongBao updateHongBao = new HongBao(); updateHongBao.setId(hb.getId()); @@ -626,6 +692,10 @@ } } + /** + * 澧炲姞鐢ㄦ埛璧勯噾璁板綍 + */ + if (money.compareTo(new BigDecimal(0)) > 0) { userInfoMapper.addHongBaoByUid(uid, money); // 娣诲姞璁板綍 -- Gitblit v1.8.0