From 88b54772dbcf5ecab1e2316e4e4626ac901b8908 Mon Sep 17 00:00:00 2001 From: yujian <yujian> Date: 星期二, 22 一月 2019 15:58:24 +0800 Subject: [PATCH] 邀请码添加返回状态 --- fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderProcessServiceImpl.java | 546 +++++++++++++++++++++++++++-------------------------- 1 files changed, 278 insertions(+), 268 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 f4dce2c..6b7878e 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 @@ -2,6 +2,7 @@ import java.math.BigDecimal; import java.util.ArrayList; +import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.HashSet; @@ -19,32 +20,31 @@ import com.yeshi.fanli.dao.mybatis.AccountDetailsMapper; import com.yeshi.fanli.dao.mybatis.AccountMessageMapper; import com.yeshi.fanli.dao.mybatis.HongBaoManageMapper; +import com.yeshi.fanli.dao.mybatis.HongBaoV2Mapper; import com.yeshi.fanli.dao.mybatis.MoneyRecordMapper; import com.yeshi.fanli.dao.mybatis.PidOrderMapper; import com.yeshi.fanli.dao.mybatis.ThreeSaleGiftMapper; import com.yeshi.fanli.dao.mybatis.UserInfoMapper; import com.yeshi.fanli.dao.mybatis.hongbao.HongBaoMapper; import com.yeshi.fanli.dao.mybatis.money.UserMoneyDetailMapper; +import com.yeshi.fanli.dao.mybatis.order.HongBaoOrderMapper; 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; import com.yeshi.fanli.entity.bus.user.HongBaoV2; -import com.yeshi.fanli.entity.bus.user.MoneyRecord; import com.yeshi.fanli.entity.bus.user.Order; -import com.yeshi.fanli.entity.bus.user.OrderItem; import com.yeshi.fanli.entity.bus.user.UserInfo; import com.yeshi.fanli.entity.money.UserMoneyDetail; import com.yeshi.fanli.entity.order.CommonOrder; +import com.yeshi.fanli.entity.order.HongBaoOrder; import com.yeshi.fanli.entity.taobao.PidOrder; import com.yeshi.fanli.entity.taobao.PidUser; import com.yeshi.fanli.entity.taobao.TaoBaoOrder; import com.yeshi.fanli.entity.taobao.TaoBaoUnionConfig; import com.yeshi.fanli.entity.taobao.TaoBaoWeiQuanOrder; -import com.yeshi.fanli.entity.taobao.TaobaoOrderHongBao; import com.yeshi.fanli.exception.HongBaoException; import com.yeshi.fanli.exception.ObjectStateException; import com.yeshi.fanli.exception.OrderItemException; @@ -56,6 +56,7 @@ import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService; import com.yeshi.fanli.service.inter.hongbao.HongBaoService; import com.yeshi.fanli.service.inter.hongbao.HongBaoV2Service; +import com.yeshi.fanli.service.inter.msg.UserMoneyMsgNotificationService; import com.yeshi.fanli.service.inter.order.CommonOrderService; import com.yeshi.fanli.service.inter.order.LostOrderService; import com.yeshi.fanli.service.inter.order.OrderItemServcie; @@ -68,13 +69,11 @@ import com.yeshi.fanli.service.inter.taobao.TaoBaoWeiQuanDrawBackService; import com.yeshi.fanli.service.inter.user.UserNotificationService; import com.yeshi.fanli.util.CMQManager; -import com.yeshi.fanli.util.HongBaoUtil; import com.yeshi.fanli.util.RedisManager; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.TimeUtil; import com.yeshi.fanli.util.factory.AccountDetailsFactory; import com.yeshi.fanli.util.factory.UserMoneyDetailFactory; -import com.yeshi.fanli.util.taobao.TaoBaoOrderUtil; @Service public class OrderProcessServiceImpl implements OrderProcessService { @@ -156,6 +155,12 @@ @Resource private UserMoneyDetailMapper userMoneyDetailMapper; + + @Resource + private HongBaoV2Mapper hongBaoV2Mapper; + + @Resource + private UserMoneyMsgNotificationService userMoneyMsgNotificationService; @Override public void processOrder(Map<String, List<TaoBaoOrder>> orders) { @@ -302,7 +307,7 @@ @Override public void fanli() { // 鑾峰彇涓荤孩鍖� - List<HongBao> hongBaoList = hongBaoMapper.selectCanBalanceHongBaoByType(HongBao.TYPE_TAOBAO, 100); + List<HongBaoV2> hongBaoList = hongBaoV2Mapper.listCanBalanceHongBaoByType(HongBao.TYPE_TAOBAO, 100); // // /** // * 闇�瑕佸疄鏃舵洿鏂板緟杩斿埄鐨勮鍗� @@ -338,16 +343,16 @@ /** * 寮�濮嬭繑鍒� */ - for (HongBao hb : hongBaoList) { + for (HongBaoV2 hb : hongBaoList) { // - if (hb.getState() == HongBao.STATE_SHIXIAO || hb.getState() == HongBao.STATE_YILINGQU) + if (hb.getState() == HongBaoV2.STATE_SHIXIAO || hb.getState() == HongBaoV2.STATE_YILINGQU) continue; - if (hb.getPreGettime() == null || hb.getPreGettime() == 0 - || hb.getPreGettime() > System.currentTimeMillis()) + if (hb.getPreGetTime() == null || hb.getPreGetTime().getTime() == 0 + || hb.getPreGetTime().getTime() > System.currentTimeMillis()) continue; try { - CMQManager.getInstance().addFanLiMsg(hb); + CMQManager.getInstance().addFanLiMsgNew(hb); } catch (Exception e) { try { LogHelper.errorDetailInfo(e); @@ -373,202 +378,140 @@ return validCount >= list.size(); } - @Override - @Transactional - public void processShopingFanliOrder(String orderId, List<TaoBaoOrder> orderList) - throws HongBaoException, OrderItemException { - - List<TaoBaoUnionConfig> configList = taoBaoUnionConfigService.getConfigByTypeCache(PidUser.TYPE_FANLI_ANDROID); - - Order oldOrder = orderMapper.selectOrderByOrderId(orderId); - // 鍘熸潵涓嶅瓨鍦ㄨ鍗� - if (oldOrder == null && orderList.size() > 0) { - // 鑾峰彇浜х敓璁㈠崟鐨凱ID - String mediaId = orderList.get(0).getSourceMediaId(); - String adzoneId = orderList.get(0).getAdPositionId(); - String pid = String.format("mm_%s_%s_%s", configList.get(0).getAccountId(), mediaId, adzoneId); - // 鏌ヨ璇ID鏄惁鏈夊搴旂殑鐢ㄦ埛 - PidUser pidUser = pidUserMapper.selectByPid(pid); - // 鍒ゆ柇鏄惁灞炰簬杩斿埄鐨凱ID - if (pidUser != null && (pidUser.getType() == PidUser.TYPE_FANLI_ANDROID - || pidUser.getType() == PidUser.TYPE_FANLI_IOS)) { - // 濡傛灉鏄鍗曞け鏁堝氨涓嶅鐞� - // 2018-08-02寮�濮嬬敓鏁� - if (isOrderValid(orderList)) - if (TimeUtil.convertToTimeTemp(orderList.get(0).getCreateTime(), "yyyy-MM-dd HH:mm:ss") < TimeUtil - .convertToTimeTemp("2018-08-02", "yyyy-MM-dd")) - return; - - // 娣诲姞鍒拌鍗曚腑鍘� - Order order = new Order(); - order.setBeizhu("PID杩斿埄璁㈠崟"); - order.setCreatetime(System.currentTimeMillis()); - order.setOrderId(orderId); - order.setOrderType(1); - order.setState(Order.STATE_YIZHIFU); - order.setUserInfo(new UserInfo(pidUser.getUid())); - order.setVersion(2); - - // 鍔犲叆鍒拌鍗曡〃 - orderMapper.insertSelective(order); - oldOrder = order; - } - } - - if (oldOrder != null) {// 璇ヨ鍗曞彿鍙互杩斿埄 - // 鍘熸潵澶辨晥鐨勮鍗曚笉鍐嶅鐞� - // if (oldOrder.getState() == Order.STATE_SHIXIAO) - // return; - // 鏇存柊璁㈠崟鐨勭姸鎬� - Order updateOrder = new Order(); - updateOrder.setId(oldOrder.getId()); - updateOrder.setThirdCreateTime( - new Date(TimeUtil.convertToTimeTemp(orderList.get(0).getCreateTime(), "yyyy-MM-dd HH:mm:ss"))); - - if (isOrderValid(orderList)) { - // 澶勭悊璁㈠崟澶辨晥 - updateOrder.setState(Order.STATE_SHIXIAO); - if (oldOrder.getState() == Order.STATE_YIZHIFU) - updateOrder.setDrawbackTime(System.currentTimeMillis()); - updateOrder.setThirdState("璁㈠崟澶辨晥"); - } else// 璁$畻璁㈠崟鐨勬�婚噾棰� - { - BigDecimal money = new BigDecimal(0); - 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) - if (!o.getOrderState().equalsIgnoreCase("璁㈠崟澶辨晥")) { - thirdState = o.getOrderState(); - break; - } - updateOrder.setThirdState(thirdState); - } - orderMapper.updateByPrimaryKeySelective(updateOrder); - Order order = oldOrder; - // 璁㈠崟杩斿埄姣斾緥 - BigDecimal rate = hongBaoManageService.getFanLiRate(); - - // 鏌ユ壘鏄惁瀛樺湪绾㈠寘 - List<HongBao> hongBaoList = hongBaoMapper.selectByOid(order.getId()); - // 杩樻病鏈夊姞鍏ユ湁鏁堢殑璁㈠崟 - if ((hongBaoList == null || hongBaoList.size() == 0)) { - for (TaoBaoOrder taoBaoOrder : orderList) { - // 鍒涘缓OrderItem; - OrderItem orderItem = orderItemService.addOrderItem(taoBaoOrder, order, rate); - hongBaoService.addHongBao(order, taoBaoOrder, orderItem.getId()); - } - } else if (hongBaoList.size() > 0)// 鍘熸潵宸茬粡瀛樺湪璁㈠崟浜� - { - List<TaobaoOrderHongBao> sortList = HongBaoUtil.sortHongBaoAndTaoBaoOrder(orderList, hongBaoList); - orderList = new ArrayList<>(); - hongBaoList = new ArrayList<>(); - if (sortList != null) - for (TaobaoOrderHongBao tb : sortList) { - orderList.add(tb.taoBaoOrder); - hongBaoList.add(tb.hongBao); - } - - if (orderList.size() != hongBaoList.size()) { - LogHelper.userOrder("绾㈠寘鏁板拰璁㈠崟鏁颁笉瀵圭瓑:" + orderId); - return; - } - - for (int i = 0; i < orderList.size(); i++) { - hongBaoService.updateHongBao(hongBaoList.get(i), orderList.get(i)); - orderItemService.updateOrderItem(orderList.get(i), hongBaoList.get(i).getOrderItemId(), rate); - } - } - - } - } + @Resource + private HongBaoOrderMapper hongBaoOrderMapper; @Override @Transactional - public void fanli(HongBao hb) throws TaoBaoWeiQuanException { + public void fanli(HongBaoV2 hb1) throws TaoBaoWeiQuanException { // 鏌ヨ鏈�鏂扮殑绾㈠寘鏁版嵁 - hb = hongBaoMapper.selectByPrimaryKeyForUpdate(hb.getId()); + hb1 = hongBaoV2Mapper.selectByPrimaryKeyForUpdate(hb1.getId()); + // 鏌ヨ绾㈠寘鐩稿叧鑱旂殑璁㈠崟 + HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByHongBaoId(hb1.getId()); + if (hongBaoOrder == null) { + LogHelper.error("杩斿埄澶辫触:" + hb1.getId()); + return; + } // 缁存潈涓殑涓嶈繑鍒� List<TaoBaoWeiQuanOrder> taoBaoWeiQuanList = taoBaoWeiQuanOrderMapper - .selectListByOrderIdAndState(hb.getOrderId(), "缁存潈鍒涘缓"); + .selectListByOrderIdAndState(hongBaoOrder.getCommonOrder().getOrderNo(), "缁存潈鍒涘缓"); if (taoBaoWeiQuanList != null && taoBaoWeiQuanList.size() > 0) return; - taoBaoWeiQuanList = taoBaoWeiQuanOrderMapper.selectListByOrderIdAndState(hb.getOrderId(), "绛夊緟澶勭悊"); + taoBaoWeiQuanList = taoBaoWeiQuanOrderMapper + .selectListByOrderIdAndState(hongBaoOrder.getCommonOrder().getOrderNo(), "绛夊緟澶勭悊"); if (taoBaoWeiQuanList != null && taoBaoWeiQuanList.size() > 0) return; - long currentTimeMillis = System.currentTimeMillis(); - if (hb.getState() != HongBao.STATE_SHIXIAO) { - // 璁剧疆涓哄凡杩斿埄 - // 澶勭悊涓荤孩鍖� - if (hb.getState() != HongBao.STATE_SHIXIAO && hb.getState() != HongBao.STATE_YILINGQU - && hb.getType() == HongBao.TYPE_TAOBAO) { - OrderItem orderItem = null; - if (hb.getOrderItemId() != null) { - orderItem = orderItemMapper.selectByPrimaryKey(hb.getOrderItemId()); - OrderItem updateOrderItem = new OrderItem(); - updateOrderItem.setId(orderItem.getId()); - updateOrderItem.setFanTime(currentTimeMillis); - updateOrderItem.setState(OrderItem.STATE_DAOZHANG); - orderItemMapper.updateByPrimaryKeySelective(updateOrderItem); + // 鏌ヨ鍚屼竴璁㈠崟鍙风殑绾㈠寘 + List<CommonOrder> orderList = commonOrderService.listBySourceTypeAndOrderId( + hongBaoOrder.getCommonOrder().getSourceType(), hongBaoOrder.getCommonOrder().getOrderNo()); + List<HongBaoV2> hongBaoList = new ArrayList<>(); + Map<Long, BigDecimal> userMoney = new HashMap<>(); + Map<Long, List<HongBaoV2>> userHongBao = new HashMap<>(); + Map<Long, Integer> userGoodsCount = new HashMap<>(); + // Map<Long, BigDecimal> userPayMent = new HashMap<>(); + for (CommonOrder co : orderList) { + hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(co.getId()); + hongBaoList.add(hongBaoOrder.getHongBaoV2()); + Long uid = co.getUserInfo().getId(); + if (userGoodsCount.get(uid) == null) + userGoodsCount.put(uid, co.getCount()); + else + userGoodsCount.put(uid, Integer.valueOf(co.getCount() + userGoodsCount.get(uid))); + // if (userPayMent.get(uid) == null) + // userPayMent.put(uid, new BigDecimal(0)); + // if (co.getState() == CommonOrder.STATE_JS) + // userPayMent.put(uid, + // userPayMent.get(uid).add(co.getSettlement())); + // else + // userPayMent.put(uid, userPayMent.get(uid).add(co.getPayment())); + } + + for (HongBaoV2 hb : hongBaoList) { + long currentTimeMillis = System.currentTimeMillis(); + if (hb.getState() != HongBao.STATE_SHIXIAO) { + // 璁剧疆涓哄凡杩斿埄 + // 澶勭悊涓荤孩鍖� + if (hb.getState() != HongBaoV2.STATE_SHIXIAO && hb.getState() != HongBaoV2.STATE_YILINGQU + && hb.getType() == HongBaoV2.TYPE_ZIGOU) { + // 濡傛灉绾㈠寘娌¤棰嗗彇 + Long uid = hb.getUserInfo().getId(); + HongBaoV2 updateHongBao = new HongBaoV2(); + updateHongBao.setId(hb.getId()); + updateHongBao.setState(HongBaoV2.STATE_YILINGQU); + updateHongBao.setGetTime(new Date(currentTimeMillis)); + hongBaoV2Mapper.updateByPrimaryKeySelective(updateHongBao); + if (userMoney.get(uid) == null) + userMoney.put(uid, hb.getMoney()); + else + userMoney.put(uid, userMoney.get(uid).add(hb.getMoney())); + + // 娣诲姞绾㈠寘鍒扮敤鎴� + if (userHongBao.get(uid) == null) + userHongBao.put(uid, new ArrayList<>()); + userHongBao.get(uid).add(hb); } - // 濡傛灉绾㈠寘娌¤棰嗗彇 - HongBao updateHongBao = new HongBao(); - updateHongBao.setId(hb.getId()); - updateHongBao.setState(HongBao.STATE_YILINGQU); - updateHongBao.setGetTime(currentTimeMillis); - hongBaoMapper.updateByPrimaryKeySelective(updateHongBao); - userInfoMapper.addHongBaoByUid(hb.getUserInfo().getId(), hb.getMoney()); - - // ...娑堟伅銆佹槑缁� - HongBaoExtra hongBaoExtra = HongBaoUtil.convert(hb); - // 鏄庣粏鎿嶄綔锛堝鏋滄湇鍔″櫒鎬уソ浜嗗悗锛屽彲鏀规垚寮傛锛� - MoneyRecord moneyRecord = new MoneyRecord(hb.getUserInfo(), hb, hb.getMoney(), hongBaoExtra.getTitle(), - "", currentTimeMillis, 1); - moneyRecordMapper.insertSelective(moneyRecord); - AccountDetails accountDetails = AccountDetailsFactory.create("+" + hb.getMoney(), - AccountDetailsFactory.FANLI, orderItem, null, hb.getUserInfo()); - accountDetailsMapper.insertSelective(accountDetails); - - // 鎻掑叆鏂扮増璧勯噾鏄庣粏 - try { - UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createFanLi(hb.getUserInfo().getId(), - hb.getOrderId(), 1, hb.getId(), hb.getMoney()); - userMoneyDetail.setId(accountDetails.getId()); - userMoneyDetailMapper.insert(userMoneyDetail); - } catch (UserMoneyDetailException e1) { - try { - LogHelper.errorDetailInfo(e1); - } catch (Exception e2) { - e2.printStackTrace(); - } - } - - // 娣诲姞璧勯噾鏄庣粏涓庣孩鍖呯殑鏄犲皠鍏崇郴 - accountDetailsHongBaoMapService.saveAccountDetailsHongBaoMap(hb.getId(), accountDetails.getId()); - - // 缁存潈鎵f锛�2018-08-05鍚庡紑濮嬪疄琛岋級 - if (hb.getBalanceTime() != null - && hb.getBalanceTime().getTime() >= TimeUtil.convertToTimeTemp("2018-08-05", "yyyy-MM-dd")) { - taoBaoWeiQuanDrawBackService.doWeiQuanFanli(hb.getOrderId()); - } - - // 绔欏唴淇�+鎺ㄩ�� - try { - userNotificationService.orderFanliRecieved(hb.getUserInfo().getId(), orderItem.getOrderId(), - orderItem.getFanMoney()); - } catch (Exception e) { - } - } } + + Iterator<Long> its = userMoney.keySet().iterator(); + + while (its.hasNext()) { + // 灏嗚嚜宸辨坊鍔犲埌鐢ㄦ埛 + Long uid = its.next(); + BigDecimal money = userMoney.get(uid); + userInfoMapper.addHongBaoByUid(uid, money); + + AccountDetails accountDetails = AccountDetailsFactory.create("+" + money, AccountDetailsFactory.FANLI, null, + null, new UserInfo(uid)); + accountDetailsMapper.insertSelective(accountDetails); + + // 鎻掑叆鏂扮増璧勯噾鏄庣粏 + try { + UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createFanLi(uid, + hongBaoOrder.getCommonOrder().getOrderNo(), hongBaoOrder.getCommonOrder().getSourceType(), null, + money); + userMoneyDetail.setId(accountDetails.getId()); + userMoneyDetailMapper.insert(userMoneyDetail); + } catch (UserMoneyDetailException e1) { + try { + LogHelper.errorDetailInfo(e1); + } catch (Exception e2) { + e2.printStackTrace(); + } + } + + // 娣诲姞璧勯噾鏄庣粏涓庣孩鍖呯殑鏄犲皠鍏崇郴 + for (HongBaoV2 v2 : userHongBao.get(uid)) { + accountDetailsHongBaoMapService.saveAccountDetailsHongBaoMap(v2.getId(), accountDetails.getId()); + } + + // 绔欏唴淇�+鎺ㄩ�� + UserInfo user = userInfoMapper.selectByPrimaryKey(uid); + try { + userNotificationService.orderFanliRecieved(uid, hongBaoOrder.getCommonOrder().getOrderNo(), + userGoodsCount.get(uid), user.getMyHongBao(), money); + } catch (Exception e) { + try { + LogHelper.errorDetailInfo(e); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + + // 鏂扮増閫氱煡 + userMoneyMsgNotificationService.fanliOrderReceived(uid, hongBaoOrder.getCommonOrder().getOrderNo(), + userGoodsCount.get(uid), money, user.getMyHongBao()); + + } + + // 缁存潈鎵f锛�2018-08-05鍚庡紑濮嬪疄琛岋級 + if (hongBaoOrder.getCommonOrder().getSettleTime() != null && hongBaoOrder.getCommonOrder().getSettleTime() + .getTime() >= TimeUtil.convertToTimeTemp("2018-08-05", "yyyy-MM-dd")) { + taoBaoWeiQuanDrawBackService.doWeiQuanFanli(hongBaoOrder.getCommonOrder().getOrderNo()); + } + } @Override @@ -604,14 +547,10 @@ @Override public void fanliInvaiteAndShare() { // 鏌ュ嚭閭�璇疯禋涓庡垎浜禋璇ヨ繑鍒╃殑鐢ㄦ埛ID - List<Long> shareUids = pidOrderMapper.getUidCanBalanceList(); - List<Long> inviteUids = hongBaoMapper.selectUidCanBalanceHongBaoByChildHongBao(); + List<Long> inviteAndShareUids = hongBaoV2Mapper.listUidCanBanlanceShareAndInvite(1000); Set<Long> uidSets = new HashSet<>(); - if (shareUids != null) - for (Long uid : shareUids) - uidSets.add(uid); - if (inviteUids != null) - for (Long uid : inviteUids) + if (inviteAndShareUids != null) + for (Long uid : inviteAndShareUids) uidSets.add(uid); // 鏍规嵁鐢ㄦ埛ID Iterator<Long> its = uidSets.iterator(); @@ -626,13 +565,23 @@ } } - private HongBao filterWeiQuanINGHongBao(HongBao hongBao) { + private HongBaoV2 filterWeiQuanINGHongBao(HongBaoV2 hongBao) { + + long hbId = hongBao.getId(); + if (hongBao.getParent() != null) { + hbId = hongBao.getParent().getId(); + } + + HongBaoOrder hongbaoOrder = hongBaoOrderMapper.selectByHongBaoId(hbId); + + if (hongbaoOrder == null) + return null; List<TaoBaoWeiQuanOrder> taoBaoWeiQuanList = taoBaoWeiQuanOrderMapper - .selectListByOrderIdAndState(hongBao.getOrderId(), "缁存潈鍒涘缓"); + .selectListByOrderIdAndState(hongbaoOrder.getCommonOrder().getOrderNo(), "缁存潈鍒涘缓"); List<TaoBaoWeiQuanOrder> taoBaoWeiQuanList1 = taoBaoWeiQuanOrderMapper - .selectListByOrderIdAndState(hongBao.getOrderId(), "绛夊緟澶勭悊"); + .selectListByOrderIdAndState(hongbaoOrder.getCommonOrder().getOrderNo(), "绛夊緟澶勭悊"); if ((taoBaoWeiQuanList != null && taoBaoWeiQuanList.size() > 0) || (taoBaoWeiQuanList1 != null && taoBaoWeiQuanList1.size() > 0)) { return null; @@ -647,40 +596,47 @@ * 澶勭悊閭�璇疯禋璁㈠崟 */ // 鏌ヨUID鐨勯個璇疯禋璁㈠崟 - List<HongBao> hongBaoList = hongBaoMapper.selectCanBalanceHongBaoByChildHongBaoAndUid(uid); + List<Integer> types = new ArrayList<>(); + types.add(HongBaoV2.TYPE_YIJI); + types.add(HongBaoV2.TYPE_ERJI); + List<HongBaoV2> hongBaoList = hongBaoV2Mapper.listCanBalanceHongBaoByTypeAndUid(types, uid, 1000); List<Long> hbIdList = new ArrayList<>(); BigDecimal invitemoney = new BigDecimal(0); + Set<String> inviteOrders = new HashSet<>(); + int inviteGoodsCount = 0; + // 闇�瑕佸垽鏂��娆剧殑璁㈠崟鍙� Set<String> drawBackOrders = new HashSet<String>(); - for (HongBao hongBao : hongBaoList) { + for (HongBaoV2 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) { + hongBao = hongBaoV2Mapper.selectByPrimaryKeyForUpdate(hongBao.getId()); + if (hongBao.getState() == HongBaoV2.STATE_BUKELINGQU || hongBao.getState() == HongBaoV2.STATE_KELINGQU) { invitemoney = invitemoney.add(hongBao.getMoney()); - HongBao updateHongBao = new HongBao(); + HongBaoV2 updateHongBao = new HongBaoV2(); updateHongBao.setId(hongBao.getId()); - updateHongBao.setGetTime(System.currentTimeMillis()); - updateHongBao.setState(HongBao.STATE_YILINGQU); - hongBaoMapper.updateByPrimaryKeySelective(updateHongBao); + updateHongBao.setGetTime(new Date()); + updateHongBao.setState(HongBaoV2.STATE_YILINGQU); + updateHongBao.setUpdateTime(new Date()); + hongBaoV2Mapper.updateByPrimaryKeySelective(updateHongBao); // 娣诲姞鍒扮孩鍖呰繑鍒╄褰曢泦鍚� hbIdList.add(hongBao.getId()); + // 2018-08-05 杩囧悗鐨勮鍗曟墠澶勭悊缁存潈 - Date balanceTime = null; - if (hongBao.getParent() != null) - balanceTime = hongBao.getParent().getBalanceTime(); - else - balanceTime = hongBao.getBalanceTime(); + + HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByHongBaoId(hongBao.getParent().getId()); + inviteGoodsCount += hongBaoOrder.getCommonOrder().getCount(); + inviteOrders.add(hongBaoOrder.getCommonOrder().getOrderNo()); + + Date balanceTime = hongBaoOrder.getCommonOrder().getSettleTime(); if (balanceTime != null && balanceTime.getTime() >= TimeUtil.convertToTimeTemp("2018-08-05", "yyyy-MM-dd")) { - if (!StringUtil.isNullOrEmpty(hongBao.getOrderId())) - drawBackOrders.add(hongBao.getOrderId()); - else if (hongBao.getParent() != null && !StringUtil.isNullOrEmpty(hongBao.getParent().getOrderId())) - drawBackOrders.add(hongBao.getParent().getOrderId()); + if (!StringUtil.isNullOrEmpty(hongBaoOrder.getCommonOrder().getOrderNo())) + drawBackOrders.add(hongBaoOrder.getCommonOrder().getOrderNo()); } } } @@ -689,33 +645,37 @@ * 澶勭悊涓�绾т簩绾у垎浜禋(灞炰簬閭�璇疯禋绫诲瀷) */ - List<HongBao> totalHongBaoList = new ArrayList<>(); + List<HongBaoV2> totalHongBaoList = new ArrayList<>(); // 鏌ヨUID鐨勪簩绾ф垨鑰呬笁绾у垎浜禋璁㈠崟 // TODO 鏆傛椂鏌ヨ10000鏉℃暟鎹紝鍚庨潰鍐嶅仛鍒嗛〉 - List<HongBao> hbList = hongBaoMapper.selectCanBalanceHongBaoByTypeAndUid(HongBao.TYPE_SHARE_YIJI, uid, 10000); + types.clear(); + types.add(HongBaoV2.TYPE_SHARE_YIJI); + types.add(HongBaoV2.TYPE_SHARE_ERJI); + List<HongBaoV2> hbList = hongBaoV2Mapper.listCanBalanceHongBaoByTypeAndUid(types, uid, 10000); if (hbList != null && hbList.size() > 0) totalHongBaoList.addAll(hbList); - hbList = hongBaoMapper.selectCanBalanceHongBaoByTypeAndUid(HongBao.TYPE_SHARE_ERJI, uid, 10000); - if (hbList != null && hbList.size() > 0) - totalHongBaoList.addAll(hbList); - - for (HongBao hb : totalHongBaoList) { - if (hb.getState() == HongBao.STATE_BUKELINGQU || hb.getState() == HongBao.STATE_KELINGQU) { + for (HongBaoV2 hb : totalHongBaoList) { + if (hb.getState() == HongBaoV2.STATE_BUKELINGQU || hb.getState() == HongBaoV2.STATE_KELINGQU) { hb = filterWeiQuanINGHongBao(hb); if (hb == null) continue; invitemoney = invitemoney.add(hb.getMoney()); - HongBao updateHongBao = new HongBao(); + HongBaoV2 updateHongBao = new HongBaoV2(); updateHongBao.setId(hb.getId()); - updateHongBao.setGetTime(System.currentTimeMillis()); - updateHongBao.setState(HongBao.STATE_YILINGQU); - hongBaoMapper.updateByPrimaryKeySelective(updateHongBao); + updateHongBao.setGetTime(new Date()); + updateHongBao.setState(HongBaoV2.STATE_YILINGQU); + updateHongBao.setUpdateTime(new Date()); + hongBaoV2Mapper.updateByPrimaryKeySelective(updateHongBao); // 娣诲姞鍒扮孩鍖呰繑鍒╄褰曢泦鍚� hbIdList.add(hb.getId()); - if (!StringUtil.isNullOrEmpty(hb.getOrderId())) - drawBackOrders.add(hb.getOrderId()); + + HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByHongBaoId(hb.getParent().getId()); + inviteGoodsCount += hongBaoOrder.getCommonOrder().getCount(); + inviteOrders.add(hongBaoOrder.getCommonOrder().getOrderNo()); + if (!StringUtil.isNullOrEmpty(hongBaoOrder.getCommonOrder().getOrderNo())) + drawBackOrders.add(hongBaoOrder.getCommonOrder().getOrderNo()); } } @@ -729,8 +689,23 @@ // 娣诲姞鏂扮増璇︽儏璁板綍 try { - UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createInvite(uid, 0, 0, 0, invitemoney, - new Date()); + // 鏌ヨ閭�璇疯禋鐨勬湁鏁堣鍗曪紝澶辨晥璁㈠崟锛岀淮鏉冭鍗� + Calendar ca = Calendar.getInstance(); + Date maxDate = new Date(TimeUtil + .convertToTimeTemp(ca.get(Calendar.YEAR) + "-" + (ca.get(Calendar.MONTH) + 1), "yyyy-M")); + ca.add(Calendar.MONTH, -1); + + Date minDate = new Date(TimeUtil + .convertToTimeTemp(ca.get(Calendar.YEAR) + "-" + (ca.get(Calendar.MONTH) + 1), "yyyy-M")); + long validCount = hongBaoV2Mapper.countInviteOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_JS, + minDate, maxDate); + long weiQuanCount = hongBaoV2Mapper.countInviteOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_WQ, + minDate, maxDate); + long invalidCount = hongBaoV2Mapper.countInviteOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_SX, + minDate, maxDate); + + UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createInvite(uid, (int) validCount, + (int) weiQuanCount, (int) invalidCount, invitemoney, new Date()); userMoneyDetail.setId(accountDetails.getId()); userMoneyDetailMapper.insert(userMoneyDetail); } catch (UserMoneyDetailException e) { @@ -749,10 +724,16 @@ // 鍙戦�佹帹閫� try { // 鎻愭垚鍒拌处娑堟伅閫氱煡 - userNotificationService.tiChengInviteRecieved(uid, invitemoney); + userNotificationService.tiChengInviteRecieved(uid, inviteOrders.size(), inviteGoodsCount, null, + invitemoney); } catch (Exception e) { e.printStackTrace(); } + + // 鏂扮増閫氱煡 + userMoneyMsgNotificationService.inviteOrderReceived(uid, inviteOrders.size(), inviteGoodsCount, invitemoney, + userInfoMapper.selectByPrimaryKey(uid).getMyHongBao()); + for (String orderId : drawBackOrders) taoBaoWeiQuanDrawBackService.doWeiQuanInvite(orderId); } @@ -763,32 +744,38 @@ /** * 澶勭悊鍒嗕韩璧� */ + + int shareGoodsCount = 0; + Set<String> shareOrders = new HashSet<>(); BigDecimal sharemoney = new BigDecimal(0); // 鏌ヨUID鐨勫垎浜禋璁㈠崟 - List<PidOrder> pidOrderList = pidOrderMapper.getCanBalanceListByUid(uid); - for (PidOrder pidOrder : pidOrderList) { - HongBao hongBao = hongBaoMapper.selectByPrimaryKeyForUpdate(pidOrder.getHongBao().getId()); + types.clear(); + types.add(HongBaoV2.TYPE_SHARE_GOODS); + List<HongBaoV2> hongBaoShareList = hongBaoV2Mapper.listCanBalanceHongBaoByTypeAndUid(types, uid, 10000); + for (HongBaoV2 hongBao : hongBaoShareList) { + hongBao = hongBaoV2Mapper.selectByPrimaryKeyForUpdate(hongBao.getId()); hongBao = filterWeiQuanINGHongBao(hongBao); if (hongBao == null) continue; - if (hongBao.getState() == HongBao.STATE_BUKELINGQU || hongBao.getState() == HongBao.STATE_KELINGQU) { + if (hongBao.getState() == HongBaoV2.STATE_BUKELINGQU || hongBao.getState() == HongBaoV2.STATE_KELINGQU) { sharemoney = sharemoney.add(hongBao.getMoney()); - HongBao updateHongBao = new HongBao(); + HongBaoV2 updateHongBao = new HongBaoV2(); updateHongBao.setId(hongBao.getId()); - updateHongBao.setGetTime(System.currentTimeMillis()); + updateHongBao.setGetTime(new Date()); updateHongBao.setState(HongBao.STATE_YILINGQU); - hongBaoMapper.updateByPrimaryKeySelective(updateHongBao); + updateHongBao.setUpdateTime(new Date()); + hongBaoV2Mapper.updateByPrimaryKeySelective(updateHongBao); // 娣诲姞鍒扮孩鍖呰繑鍒╄褰曢泦鍚� hbIdList.add(hongBao.getId()); // 2018-08-05 杩囧悗鐨勮鍗曟墠澶勭悊缁存潈 Date balanceTime = null; - if (hongBao.getParent() != null) - balanceTime = hongBao.getParent().getBalanceTime(); - else - balanceTime = hongBao.getBalanceTime(); + HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByHongBaoId(hongBao.getId()); + if (hongBaoOrder != null) + balanceTime = hongBaoOrder.getCommonOrder().getSettleTime(); + shareOrders.add(hongBaoOrder.getCommonOrder().getOrderNo()); if (balanceTime != null && balanceTime.getTime() >= TimeUtil.convertToTimeTemp("2018-08-05", "yyyy-MM-dd")) { - drawBackOrders.add(pidOrder.getOrderId()); + drawBackOrders.add(hongBaoOrder.getCommonOrder().getOrderNo()); } } } @@ -806,8 +793,24 @@ // 娣诲姞鏂扮増璇︽儏璁板綍 try { - UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createShare(uid, 0, 0, 0, sharemoney, - new Date()); + // 璁$畻鏈湀鐨勬湁鏁堣鍗曪紝澶辨晥璁㈠崟锛岀淮鏉冭鍗� + Calendar ca = Calendar.getInstance(); + + Date maxDate = new Date(TimeUtil + .convertToTimeTemp(ca.get(Calendar.YEAR) + "-" + (ca.get(Calendar.MONTH) + 1), "yyyy-M")); + ca.add(Calendar.MONTH, -1); + + Date minDate = new Date(TimeUtil + .convertToTimeTemp(ca.get(Calendar.YEAR) + "-" + (ca.get(Calendar.MONTH) + 1), "yyyy-M")); + long validCount = commonOrderService.countByUidAndOrderStateWithOrderBalanceTime(uid, + CommonOrder.STATE_JS, minDate, maxDate); + long weiQuanCount = commonOrderService.countByUidAndOrderStateWithOrderBalanceTime(uid, + CommonOrder.STATE_WQ, minDate, maxDate); + long invalidCount = commonOrderService.countByUidAndOrderStateWithOrderBalanceTime(uid, + CommonOrder.STATE_SX, minDate, maxDate); + + UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createShare(uid, (int) validCount, + (int) weiQuanCount, (int) invalidCount, sharemoney, new Date()); userMoneyDetail.setId(accountDetails.getId()); userMoneyDetailMapper.insert(userMoneyDetail); } catch (UserMoneyDetailException e) { @@ -825,10 +828,16 @@ // 鍙戦�佹帹閫� try { // 鎻愭垚鍒拌处娑堟伅閫氱煡 - userNotificationService.tiChengShareRecieved(uid, sharemoney); + userNotificationService.tiChengShareRecieved(uid, shareOrders.size(), shareGoodsCount, null, + sharemoney); } catch (Exception e) { e.printStackTrace(); } + + // 鏂扮増閫氱煡 + userMoneyMsgNotificationService.shareOrderReceived(uid, shareOrders.size(), shareGoodsCount, sharemoney, + userInfoMapper.selectByPrimaryKey(uid).getMyHongBao()); + for (String orderId : drawBackOrders) taoBaoWeiQuanDrawBackService.doWeiQuanShare(orderId); } @@ -875,7 +884,6 @@ } } else { uid = oldOrder.getUserInfo().getId(); - } // 灏氭湭鎵惧埌鍜孭ID瀵瑰簲鐨勭敤鎴� if (uid == null) @@ -899,19 +907,23 @@ thirdState = o.getOrderState(); break; } + + if (StringUtil.isNullOrEmpty(thirdState)) + thirdState = "璁㈠崟澶辨晥"; updateOrder.setThirdState(thirdState); updateOrder.setThirdCreateTime( new Date(TimeUtil.convertToTimeTemp(orderList.get(0).getCreateTime(), "yyyy-MM-dd HH:mm:ss"))); orderMapper.updateByPrimaryKeySelective(updateOrder); // 鐢ㄧ涓�涓瓙璁㈠崟閿佸畾鐢ㄦ埛 - for (TaoBaoOrder taoBaoOrder : orderList) { + List<CommonOrder> commonOrderList = null; + try { + commonOrderList = commonOrderService.addTaoBaoOrder(orderList, uid); + hongBaoV2Service.addHongBao(commonOrderList, HongBaoV2.TYPE_ZIGOU); + } catch (CommonOrderException e) { try { - CommonOrder commonOrder = commonOrderService.addTaoBaoOrder(taoBaoOrder, uid); - hongBaoV2Service.addHongBao(commonOrder, HongBaoV2.TYPE_ZIGOU); - } catch (CommonOrderException e) { - e.printStackTrace(); - } catch (HongBaoException e1) { + LogHelper.errorDetailInfo(e, null, "璁㈠崟鍙�:" + orderId); + } catch (Exception e1) { e1.printStackTrace(); } } @@ -935,15 +947,13 @@ return; // 鐢ㄧ涓�涓瓙璁㈠崟閿佸畾鐢ㄦ埛 - for (TaoBaoOrder taoBaoOrder : orderList) { - try { - CommonOrder commonOrder = commonOrderService.addTaoBaoOrder(taoBaoOrder, uid); - hongBaoV2Service.addHongBao(commonOrder, HongBaoV2.TYPE_SHARE_GOODS); - } catch (CommonOrderException e) { - e.printStackTrace(); - } catch (HongBaoException e1) { - e1.printStackTrace(); - } + try { + List<CommonOrder> commonOrders = commonOrderService.addTaoBaoOrder(orderList, uid); + hongBaoV2Service.addHongBao(commonOrders, HongBaoV2.TYPE_SHARE_GOODS); + } catch (CommonOrderException e) { + e.printStackTrace(); + } catch (HongBaoException e1) { + e1.printStackTrace(); } } -- Gitblit v1.8.0