From 28cf328a098334b51a3e9d2d56f983fb8c862211 Mon Sep 17 00:00:00 2001 From: yujian <yujian@163.com> Date: 星期六, 23 五月 2020 09:54:38 +0800 Subject: [PATCH] 足迹、收藏订单兼容新需求 --- fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java | 221 +++++++++++++++++++++++++++++------------------------- 1 files changed, 119 insertions(+), 102 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java index 00ebf73..38dc60c 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java @@ -43,6 +43,7 @@ import com.yeshi.fanli.entity.common.JumpDetailV2; 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.system.ConfigKeyEnum; import com.yeshi.fanli.entity.system.SystemCoupon; import com.yeshi.fanli.entity.system.SystemCoupon.CouponTypeEnum; @@ -178,7 +179,7 @@ @Resource(name = "producer") private Producer producer; - + @Resource private UserInviteService userInviteService; @@ -227,34 +228,33 @@ return userSystemCouponMapper.countUserCouponList(uid); } - - @Override - @Transactional(rollbackFor=Exception.class) - public UserSystemCoupon freeCouponWin(Long uid, CouponTypeEnum typeEnum, String source, int num, boolean notify) throws UserSystemCouponException, Exception{ + @Transactional(rollbackFor = Exception.class) + public UserSystemCoupon freeCouponWin(Long uid, CouponTypeEnum typeEnum, String source, int num, boolean notify) + throws UserSystemCouponException, Exception { if (typeEnum == null || uid == null || StringUtil.isNullOrEmpty(source) || num < 1) { throw new UserSystemCouponException(1, "鍙傛暟涓嶆纭�"); } - + SystemCoupon coupon = systemCouponService.getCouponByType(typeEnum.name()); if (coupon == null) { throw new UserSystemCouponException(1, "鍒哥被鍨嬩笉姝g‘"); } - + // 婵�娲荤姸鎬� int stateActivated = 0; // 鑷喘鍏嶅崟鍒搞�佽禒閫佸厤鍗曞埜鍙洿鎺ヤ娇鐢� if (coupon.getType() == CouponTypeEnum.freeCouponBuy || coupon.getType() == CouponTypeEnum.freeCouponGive) { stateActivated = 1; } - + // 鏈夋晥鏃堕暱 Integer expiryDay = null; if (stateActivated == 0) expiryDay = coupon.getActivateDay(); if (expiryDay == null || expiryDay == 0) expiryDay = coupon.getExpiryDay(); - + // 璁$畻缁撴潫鏃ユ湡 Date nowTime = new Date(); String endDay = DateUtil.plusDay(expiryDay - 1, nowTime); @@ -263,10 +263,10 @@ endDay += " 23:59:59"; } Date endTime = format.parse(endDay); - + UserSystemCoupon userSystemCoupon = null; - for (int i = 0; i < num; i ++) { - UserSystemCoupon userCoupon = new UserSystemCoupon(); + for (int i = 0; i < num; i++) { + UserSystemCoupon userCoupon = new UserSystemCoupon(); userCoupon.setUid(uid); userCoupon.setSource(source); userCoupon.setSystemCoupon(coupon); @@ -281,28 +281,28 @@ if (typeEnum == CouponTypeEnum.freeCoupon) { userSystemCouponActivateService.addActivateRecord(userCoupon.getId()); } - + if (num == 1) { userSystemCoupon = userCoupon; - } - } - + } + } + executor.execute(new Runnable() { @Override - public void run() { + public void run() { if (notify) { // 娑堟伅鎺ㄩ�� try { - userOtherMsgNotificationService.freeCouponWinMsg(uid, typeEnum.getDesc(), source, - num, "鎴愬姛鑾峰緱", nowTime, endTime); + userOtherMsgNotificationService.freeCouponWinMsg(uid, typeEnum.getDesc(), source, num, "鎴愬姛鑾峰緱", + nowTime, endTime); } catch (Exception e) { - e.printStackTrace(); + e.printStackTrace(); } } - + // 绂忓埄涓績绾㈢偣 UserInfoExtra extra = userInfoExtraService.getUserInfoExtra(uid); if (extra != null) { - UserInfoExtra updateExtra = new UserInfoExtra(); + UserInfoExtra updateExtra = new UserInfoExtra(); updateExtra.setId(extra.getId()); if (extra.getCouponNews() == null) { updateExtra.setCouponNews(1); @@ -313,26 +313,24 @@ } } }); - - return userSystemCoupon; + + return userSystemCoupon; } - - @Override - @Transactional(rollbackFor=Exception.class) - public UserSystemCoupon rewardCouponWin(Long uid, String source, int num, boolean notify, - BigDecimal percent) throws UserSystemCouponException, Exception{ - if (uid == null || percent == null|| StringUtil.isNullOrEmpty(source) || num < 1) { + @Transactional(rollbackFor = Exception.class) + public UserSystemCoupon rewardCouponWin(Long uid, String source, int num, boolean notify, BigDecimal percent) + throws UserSystemCouponException, Exception { + if (uid == null || percent == null || StringUtil.isNullOrEmpty(source) || num < 1) { throw new UserSystemCouponException(1, "鍙傛暟涓嶆纭�"); } - + String name = CouponTypeEnum.rebatePercentCoupon.name(); SystemCoupon coupon = systemCouponService.getCouponByTypeAndPercent(name, percent); if (coupon == null) { throw new UserSystemCouponException(1, "鍒哥被鍨嬩笉姝g‘"); } - + // 璁$畻缁撴潫鏃ユ湡 Date nowTime = new Date(); Integer expiryDay = coupon.getExpiryDay(); @@ -342,10 +340,10 @@ endDay += " 23:59:59"; } Date endTime = format.parse(endDay); - + UserSystemCoupon userSystemCoupon = null; - for (int i = 0; i < num; i ++) { - UserSystemCoupon userCoupon = new UserSystemCoupon(); + for (int i = 0; i < num; i++) { + UserSystemCoupon userCoupon = new UserSystemCoupon(); userCoupon.setUid(uid); userCoupon.setSource(source); userCoupon.setSystemCoupon(coupon); @@ -358,24 +356,24 @@ userSystemCouponMapper.insertSelective(userCoupon); if (num == 1) { userSystemCoupon = userCoupon; - } - } - + } + } + executor.execute(new Runnable() { @Override - public void run() { + public void run() { if (notify) { // 娑堟伅鎺ㄩ�� try { userOtherMsgNotificationService.rewardCouponWinMsg(uid, source, num, "鎴愬姛鑾峰緱", nowTime, endTime); } catch (Exception e) { - e.printStackTrace(); + e.printStackTrace(); } } - + // 绂忓埄涓績绾㈢偣 UserInfoExtra extra = userInfoExtraService.getUserInfoExtra(uid); if (extra != null) { - UserInfoExtra updateExtra = new UserInfoExtra(); + UserInfoExtra updateExtra = new UserInfoExtra(); updateExtra.setId(extra.getId()); if (extra.getCouponNews() == null) { updateExtra.setCouponNews(1); @@ -386,15 +384,11 @@ } } }); - - return userSystemCoupon; - } - - - - - @Transactional(rollbackFor=Exception.class) + return userSystemCoupon; + } + + @Transactional(rollbackFor = Exception.class) @Override public List<UserSystemCouponVO> getUserCouponVOList(long start, int count, Long uid, boolean changeJump) throws UserSystemCouponException, Exception { @@ -660,7 +654,7 @@ return hasCoupon; } - @Transactional(rollbackFor=Exception.class) + @Transactional(rollbackFor = Exception.class) @Override public List<UserSystemCouponVO> getOrderCouponList(Long uid) throws UserSystemCouponException, Exception { @@ -683,7 +677,7 @@ return getEnableListByCouponId(uid, 1, couponList); } - @Transactional(rollbackFor=Exception.class) + @Transactional(rollbackFor = Exception.class) @Override public List<UserSystemCouponVO> getGoodsCouponList(Long uid, Long auctionId) throws UserSystemCouponException, Exception { @@ -751,8 +745,7 @@ return userSystemCouponMapper.countUsableByUid(uid, listCouponId); } - - + @Override public long countGiveFreeCoupon(Long uid) { if (uid == null) @@ -769,8 +762,6 @@ return userSystemCouponMapper.countUsableByUid(uid, listCouponId); } - - @Override public long countUsableRewardCoupon(Long uid) { @@ -914,26 +905,25 @@ } } } - + if (weiquan) { throw new UserSystemCouponException(1, "浜诧紝寰堥仐鎲撅紝鍞悗缁存潈璁㈠崟涓嶈兘浣跨敤杩斿埄濂栧姳鍒竳"); } - // 璁㈠崟 - List<CommonOrderVO> listVo = commonOrderService.listGroupOrderNoByUid(0, 1, uid, 2, 1,1, orderNo, null, - null, null, sourceType); - if (listVo == null || listVo.size() == 0) + List<CommonOrderVO> listVo = commonOrderService.listGroupOrderNoByUid(0, 1, uid, 2, 1, 1, orderNo, null, null, + null, sourceType); + if (listVo == null || listVo.size() == 0) throw new UserSystemCouponException(1, "浜诧紝寰堥仐鎲撅紝璇ヨ鍗曞凡涓嶈兘浣跨敤杩斿埄濂栧姳鍒竳"); - + CommonOrderVO orderVO = listVo.get(0); - + // 2.1鏂扮増 Date thirdCreateTime = orderVO.getThirdCreateTime(); Date accountTime = orderVO.getAccountTime(); - if (thirdCreateTime == null || accountTime == null) + if (thirdCreateTime == null || accountTime == null) throw new UserSystemCouponException(1, "璇ヨ鍗曚笉鑳戒娇鐢ㄥ鍔卞埜"); - + long downOrderTime = thirdCreateTime.getTime(); long limitDate = TimeUtil.convertDateToTemp(Constant.VIP_ONLINE_TIME); if (downOrderTime > limitDate) { @@ -956,12 +946,13 @@ valid = true; } } - + if (!valid) throw new UserSystemCouponException(1, "璇ヨ鍗曚笉鑳戒娇鐢ㄥ鍔卞埜"); } BigDecimal hongBao = orderVO.getHongBao(); + // 绾㈠寘鐘舵�� Integer hongBaoState = orderVO.getHongBaoState(); // 绾㈠寘绫诲瀷 @@ -974,6 +965,11 @@ if (order == null) throw new UserSystemCouponException(1, "璇ヨ鍗曚笉瀛樺湪"); + // 浣跨敤濂栧姳鍒� 閲戦棰濋檺鍒� + if (hongBao.compareTo(Constant.REWARD_COUPON_LIMIT_MONEY) > 0){ + throw new UserSystemCouponException(1, "璇ヨ鍗曚笉鑳戒娇鐢ㄥ鍔卞埜"); + } + /* 濂栭噾璁$畻 浠ュ強鐩稿叧绾㈠寘淇℃伅澶勭悊 */ // 杞崲鎴愬皬鏁扮偣 @@ -983,7 +979,7 @@ UserSystemCouponUseMQMsg mqMsg = new UserSystemCouponUseMQMsg(userSystemCoupon.getId(), order.getOrderId(), sourceType, systemCoupon.getType().name()); - + if (Constant.IS_TEST) { useRewardCouponCore(userSystemCoupon, money, hongBao, uid, order); } else { // 浜嬪姟娑堟伅 @@ -1009,7 +1005,7 @@ } } - @Transactional(rollbackFor=Exception.class) + @Transactional(rollbackFor = Exception.class) public void useRewardCouponCore(UserSystemCoupon userSystemCoupon, BigDecimal money, BigDecimal hongBao, Long uid, Order order) throws Exception { org.springframework.transaction.TransactionStatus transactionStatus = transactionManager @@ -1032,9 +1028,19 @@ // 2.鎻掑叆鍏宠仈 orderHongBaoMapService.addOrderHongBaoMap(hongBaoV2, order); + // 璁$畻璇ヨ鍗曞師鏈夎繑鍒� + List<HongBaoOrder> hongBaoOrderlist = hongBaoOrderService + .listDetailByOrderIdAndSourceType(order.getOrderId(), order.getOrderType()); + BigDecimal originalMoney = new BigDecimal(0); + if (hongBaoOrderlist != null) + for (HongBaoOrder ho : hongBaoOrderlist) { + if (ho.getHongBaoV2() != null && ho.getHongBaoV2().getState() == HongBaoV2.STATE_YILINGQU) + originalMoney = originalMoney.add(ho.getHongBaoV2().getMoney()); + } + // 3.鎻掑叆璧勯噾鏄庣粏,鐢ㄦ埛浣欓 UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createOrderReward(order.getOrderId(), - order.getOrderType(), money, new UserInfo(uid)); + order.getOrderType(), money, originalMoney, new UserInfo(uid)); userMoneyDetailService.addUserMoneyDetail(userMoneyDetail); userInfoService.addMoney(new UserInfo(uid), money); @@ -1060,7 +1066,22 @@ couponRecord.setUpdateTime(date); userSystemCouponRecordService.insertSelective(couponRecord); - // 娑堟伅鎺ㄩ�� + int goodsCount = 0; + String orderId = order.getOrderId(); + Integer orderType = order.getOrderType(); + List<CommonOrder> orderList = commonOrderService.listBySourceTypeAndOrderId(orderType, orderId); + if (orderList != null && orderList.size() > 0) { + for (CommonOrder co : orderList) { + goodsCount += co.getCount(); + } + } + + // 璧勯噾娑堟伅 + UserInfo userInfo = userInfoService.selectByPKey(uid); + userMoneyMsgNotificationService.rewardCounponReceived(uid, orderId, orderType, goodsCount, + money, userInfo.getMyHongBao(), order.getThirdCreateTime()); + + // 鍒镐娇鐢ㄦ垚鍔熸秷鎭� try { userOtherMsgNotificationService.rewardCouponEndMsg(uid, userSystemCoupon.getSource(), 1, "浣跨敤鎴愬姛"); } catch (Exception e) { @@ -1357,8 +1378,7 @@ return userRecordVO; } - - @Transactional(rollbackFor=Exception.class) + @Transactional(rollbackFor = Exception.class) @Override public void updateStateByDrawback(String orderNo) throws Exception { @@ -1380,7 +1400,7 @@ sendBackCoupon(record.getUserSystemCoupon(), record); } - @Transactional(rollbackFor=Exception.class) + @Transactional(rollbackFor = Exception.class) @Override public void updateStateByArrivalAccount(String orderNo) throws Exception { @@ -1398,14 +1418,13 @@ record.setState(UserSystemCouponRecord.STATE_SUCCESS); userSystemCouponRecordService.updateByPrimaryKeySelective(record); } - - + @Override public List<UserSystemCoupon> getCounponNowInvalid(int count) { return userSystemCouponMapper.getCounponNowInvalid(count); } - @Transactional(rollbackFor=Exception.class) + @Transactional(rollbackFor = Exception.class) @Override public boolean updateCouponRecordUsed(Long uid, String orderNo, BigDecimal payment, Long auctionId) throws Exception { @@ -1475,8 +1494,6 @@ return isfree; } - - /** * 闅忔満鍒告瘮渚� * @@ -1531,7 +1548,7 @@ } @Override - @Transactional(rollbackFor=Exception.class) + @Transactional(rollbackFor = Exception.class) public void exchangeCoupon(Long uid, String couponType, String source, BigDecimal percent) throws UserSystemCouponException, Exception { if (couponType == null || uid == null) { @@ -1553,7 +1570,7 @@ if (couponType == CouponTypeEnum.freeCoupon.name()) { stateActivated = 0; // } else if (couponType == CouponTypeEnum.welfareFreeCoupon.name() - && threeSaleSerivce.countSuccessFirstTeam(uid) <= 0) { + && threeSaleSerivce.countFirstTeam(uid) <= 0) { stateActivated = 0; // 鏃犱笅绾ч槦鍛� --寰呮縺娲� } @@ -1587,7 +1604,7 @@ insertSelective(userCoupon); } - @Transactional(rollbackFor=Exception.class) + @Transactional(rollbackFor = Exception.class) @Override public List<UserSystemCouponVO> getCouponList(AcceptData acceptData, long start, int count, Long uid) throws UserSystemCouponException, Exception { @@ -2014,16 +2031,17 @@ continue; } - try { // 娑堟伅鎺ㄩ�� Long uid = userCoupon.getUid(); String source = userCoupon.getSource(); - if (baseCoupon.getType() == CouponTypeEnum.freeCoupon || baseCoupon.getType() == CouponTypeEnum.freeCouponBuy) { - userOtherMsgNotificationService.freeCouponEndMsg(uid, "鑷喘鍏嶅崟鍒�", source, 1, "宸茶繃鏈�"); - } else if (baseCoupon.getType() == CouponTypeEnum.freeCouponGive) { - userOtherMsgNotificationService.freeCouponEndMsg(uid, "璧犻�佸厤鍗曞埜", source, 1, "宸茶繃鏈�"); - } if (baseCoupon.getType() == CouponTypeEnum.rebatePercentCoupon) { - userOtherMsgNotificationService.rewardCouponEndMsg(uid, source, 1, "宸茶繃鏈�"); + if (baseCoupon.getType() == CouponTypeEnum.freeCoupon + || baseCoupon.getType() == CouponTypeEnum.freeCouponBuy) { + userOtherMsgNotificationService.freeCouponEndMsg(uid, "鑷喘鍏嶅崟鍒�", source, 1, "宸茶繃鏈�"); + } else if (baseCoupon.getType() == CouponTypeEnum.freeCouponGive) { + userOtherMsgNotificationService.freeCouponEndMsg(uid, "璧犻�佸厤鍗曞埜", source, 1, "宸茶繃鏈�"); + } + if (baseCoupon.getType() == CouponTypeEnum.rebatePercentCoupon) { + userOtherMsgNotificationService.rewardCouponEndMsg(uid, source, 1, "宸茶繃鏈�"); } } catch (Exception e) { e.printStackTrace(); @@ -2068,7 +2086,7 @@ Long uid = userCoupon.getUid(); String source = userCoupon.getSource(); Date startTime = userCoupon.getStartTime(); - if (CouponTypeEnum.freeCoupon.name().equals(record.getCouponType()) + if (CouponTypeEnum.freeCoupon.name().equals(record.getCouponType()) || CouponTypeEnum.freeCouponBuy.name().equals(record.getCouponType())) { userOtherMsgNotificationService.freeCouponWinMsg(uid, "鑷喘鍏嶅崟鍒�", source, 1, "浣跨敤閫�鍥�", startTime, endTime); } @@ -2197,11 +2215,11 @@ String source = userCoupon.getSource(); CouponTypeEnum type = systemCoupon.getType(); if (CouponTypeEnum.freeCouponGive == type) { - userOtherMsgNotificationService.freeCouponWinMsg(uid, type.getDesc(), source, 1, "浣跨敤閫�鍥�", + userOtherMsgNotificationService.freeCouponWinMsg(uid, type.getDesc(), source, 1, "浣跨敤閫�鍥�", userCoupon.getStartTime(), userCoupon.getEndTime()); } else if (CouponTypeEnum.rebatePercentCoupon == systemCoupon.getType()) { - userOtherMsgNotificationService.rewardCouponWinMsg(uid, source, 1, "浣跨敤閫�鍥�", - userCoupon.getStartTime(), userCoupon.getEndTime()); + userOtherMsgNotificationService.rewardCouponWinMsg(uid, source, 1, "浣跨敤閫�鍥�", userCoupon.getStartTime(), + userCoupon.getEndTime()); } } @@ -2272,11 +2290,11 @@ String source = userCoupon.getSource(); CouponTypeEnum type = systemCoupon.getType(); if (CouponTypeEnum.freeCouponGive == type) { - userOtherMsgNotificationService.freeCouponWinMsg(uid, type.getDesc(), source, 1, "浣跨敤閫�鍥�", + userOtherMsgNotificationService.freeCouponWinMsg(uid, type.getDesc(), source, 1, "浣跨敤閫�鍥�", userCoupon.getStartTime(), userCoupon.getEndTime()); } else if (CouponTypeEnum.rebatePercentCoupon == systemCoupon.getType()) { - userOtherMsgNotificationService.rewardCouponWinMsg(uid, source, 1, "浣跨敤閫�鍥�", - userCoupon.getStartTime(), userCoupon.getEndTime()); + userOtherMsgNotificationService.rewardCouponWinMsg(uid, source, 1, "浣跨敤閫�鍥�", userCoupon.getStartTime(), + userCoupon.getEndTime()); } } } @@ -2285,13 +2303,13 @@ public boolean getValidRebateCoupon(Long uid) { // 杩囨湡鍒� updateInvalidSate(uid); - - List<UserSystemCouponVO> listCoupon = userSystemCouponMapper.getValidByUidAndType(uid, CouponTypeEnum.rebatePercentCoupon.name()); + + List<UserSystemCouponVO> listCoupon = userSystemCouponMapper.getValidByUidAndType(uid, + CouponTypeEnum.rebatePercentCoupon.name()); if (listCoupon == null || listCoupon.size() == 0) return false; return true; } - @Override public List<UserSystemCouponVO> listIncludeNotExchange(Long uid) throws Exception { @@ -2301,8 +2319,8 @@ // 閫�鍥炲埜 sendBackTimeOutCoupon(uid); - - List<UserSystemCouponVO> listCoupon = userSystemCouponMapper.getValidByUidAndType(uid, CouponTypeEnum.rebatePercentCoupon.name()); + List<UserSystemCouponVO> listCoupon = userSystemCouponMapper.getValidByUidAndType(uid, + CouponTypeEnum.rebatePercentCoupon.name()); if (listCoupon == null || listCoupon.size() == 0) return null; @@ -2466,8 +2484,7 @@ public void run() { Long uid = coupon.getUid(); String source = coupon.getSource(); - userOtherMsgNotificationService.freeCouponWinMsg(uid, "鑷喘鍏嶅崟鍒�", source, 1, - "婵�娲绘垚鍔�", nowDate, endTime); + userOtherMsgNotificationService.freeCouponWinMsg(uid, "鑷喘鍏嶅崟鍒�", source, 1, "婵�娲绘垚鍔�", nowDate, endTime); } }); } catch (Exception e) { -- Gitblit v1.8.0