From 5b16b6d8c05f97845f864d0a36f5b7443533962e Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 14 四月 2020 18:44:21 +0800 Subject: [PATCH] 资金明细整改 --- fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java | 196 ++++++++++++++++++++++++------------------------- 1 files changed, 96 insertions(+), 100 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..95e137b 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,7 +946,7 @@ valid = true; } } - + if (!valid) throw new UserSystemCouponException(1, "璇ヨ鍗曚笉鑳戒娇鐢ㄥ鍔卞埜"); } @@ -983,7 +973,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 +999,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 +1022,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); @@ -1357,8 +1357,7 @@ return userRecordVO; } - - @Transactional(rollbackFor=Exception.class) + @Transactional(rollbackFor = Exception.class) @Override public void updateStateByDrawback(String orderNo) throws Exception { @@ -1380,7 +1379,7 @@ sendBackCoupon(record.getUserSystemCoupon(), record); } - @Transactional(rollbackFor=Exception.class) + @Transactional(rollbackFor = Exception.class) @Override public void updateStateByArrivalAccount(String orderNo) throws Exception { @@ -1398,14 +1397,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 +1473,6 @@ return isfree; } - - /** * 闅忔満鍒告瘮渚� * @@ -1531,7 +1527,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) { @@ -1587,7 +1583,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 +2010,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 +2065,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 +2194,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 +2269,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 +2282,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 +2298,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 +2463,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