From e5faf31965fef7235ade5dc39b03384c3830d088 Mon Sep 17 00:00:00 2001 From: yujian <yujian@123.com> Date: 星期三, 21 八月 2019 14:39:09 +0800 Subject: [PATCH] 券退回 券失效 --- fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java | 198 +++++++++++++++++++++++++++++++------------------ 1 files changed, 124 insertions(+), 74 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 1d3dad9..63c8534 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 @@ -17,6 +17,8 @@ import org.yeshi.utils.DateUtil; import com.yeshi.fanli.dao.mybatis.user.UserSystemCouponMapper; +import com.yeshi.fanli.dto.msg.MsgOtherGiveContentDTO; +import com.yeshi.fanli.entity.bus.msg.MsgOtherDetail.MsgTypeOtherTypeEnum; import com.yeshi.fanli.entity.bus.user.DeviceLotteryRecord; import com.yeshi.fanli.entity.bus.user.HongBaoV2; import com.yeshi.fanli.entity.bus.user.Order; @@ -292,8 +294,6 @@ return null; } - // 鏇存柊杩囨湡鍒� - updateCounponInvalid(uid); // 閫�鍥炲埜 sendBackTimeOutCoupon(uid); @@ -555,8 +555,6 @@ throw new UserSystemCouponException(1, "鐢ㄦ埛鏈櫥褰�"); } - // 鏇存柊杩囨湡鍒� - updateCounponInvalid(uid); // 閫�鍥炲埜 sendBackTimeOutCoupon(uid); @@ -582,8 +580,6 @@ throw new UserSystemCouponException(1, "鍟嗗搧ID涓虹┖"); } - // 鏇存柊杩囨湡鍒� - updateCounponInvalid(uid); // 閫�鍥炲埜 sendBackTimeOutCoupon(uid); @@ -1120,9 +1116,6 @@ return; } - // 楠岃瘉鏄惁澶辨晥 - updateCounponInvalid(uid); - // 寰呮椿绂忓埄鍏嶅崟鍒� List<UserSystemCoupon> list = userSystemCouponMapper.getCouponByTypeAndNotActivated(uid, systemCoupon.getId()); if (list == null || list.size() == 0) { @@ -1207,25 +1200,30 @@ } } - @Transactional @Override - public void updateCounponInvalid(Long uid) { - List<UserSystemCoupon> list = userSystemCouponMapper.getCounponNowInvalid(uid); + public List<UserSystemCoupon> getCounponNowInvalid(int count) { + return userSystemCouponMapper.getCounponNowInvalid(count); + } + + + @Override + public void updateCounponInvalid(List<UserSystemCoupon> list) { if (list == null || list.size() == 0) { return; } for (UserSystemCoupon userSystemCoupon : list) { - // 鏇存柊鍒稿凡杩囨湡 + UserSystemCoupon userCoupon = new UserSystemCoupon(); + userCoupon.setUpdateTime(new Date()); userSystemCoupon.setState(UserSystemCoupon.STATE_OVERDUE); userSystemCouponMapper.updateByPrimaryKeySelective(userSystemCoupon); - SystemCoupon systemCoupon = userSystemCoupon.getSystemCoupon(); - if (systemCoupon == null) { + SystemCoupon baseCoupon = userSystemCoupon.getSystemCoupon(); + if (baseCoupon == null) { continue; } - - SystemCoupon baseCoupon = systemCouponService.selectByPrimaryKey(systemCoupon.getId()); + + baseCoupon = systemCouponService.selectByPrimaryKey(baseCoupon.getId()); if (baseCoupon == null || baseCoupon.getId() == null) { continue; } @@ -1238,8 +1236,11 @@ userOtherMsgNotificationService.freeSheetCouponAlreadyOutOfDate(userSystemCoupon); } else if (baseCoupon.getType() == CouponTypeEnum.rebatePercentCoupon) { userOtherMsgNotificationService.rewardCouponAlreadyOutOfDate(userSystemCoupon); + }else if (baseCoupon.getType() == CouponTypeEnum.freeCouponBuy) { + userOtherMsgNotificationService.outOfDate(userSystemCoupon, MsgTypeOtherTypeEnum.freeCouponBuy); + } else if (baseCoupon.getType() == CouponTypeEnum.freeCouponGive) { + userOtherMsgNotificationService.outOfDate(userSystemCoupon, MsgTypeOtherTypeEnum.freeCouponGive); } - } catch (Exception e) { try { LogHelper.errorDetailInfo(e); @@ -1254,7 +1255,7 @@ @Override public void sendBackTimeOutCoupon(Long uid) { // 瓒呰繃10鍒嗛挓 鏈鍖归厤鐨勫埜 - List<UserSystemCouponRecord> list = userSystemCouponRecordService.getCouponByUsingTimeOut(uid,600L); + List<UserSystemCouponRecord> list = userSystemCouponRecordService.getCouponByUsingTimeOut(uid, 600L); if (list == null || list.size() == 0) { return; } @@ -1378,42 +1379,48 @@ * * @param userSystemCoupon */ - public void sendBackCoupon(UserSystemCoupon userSystemCoupon, UserSystemCouponRecord record) throws Exception { - - int expiryDay = 15; - - SystemCoupon systemCoupon = userSystemCoupon.getSystemCoupon(); - SystemCoupon coupon = systemCouponService.selectByPrimaryKey(systemCoupon.getId()); - if (coupon != null) { - expiryDay = coupon.getExpiryDay(); + public void sendBackCoupon(UserSystemCoupon userCoupon, UserSystemCouponRecord record) throws Exception { + if (userCoupon == null) + return; + + Integer state = userCoupon.getState(); + if (state != UserSystemCoupon.STATE_IN_USE) + return; + + Date now = new Date(); + Date endTime = userCoupon.getEndTime(); + if (endTime != null && endTime.getTime() < now.getTime()) { + + // TODO 杩囨湡 + return; } - - // 缁撴潫鏃ユ湡 - Date endTime = null; - try { - // 浠婂ぉ鍦ㄥ唴 鍑忓幓涓�澶� - String endDay = DateUtil.plusDay(expiryDay - 1, new Date()); - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); - endTime = format.parse(endDay); - } catch (ParseException e) { - e.printStackTrace(); - } - // 鐘舵�佸垵濮嬪寲 - userSystemCoupon.setState(UserSystemCoupon.STATE_CAN_USE); + + // 閫�鍥炲埜 + UserSystemCoupon userSystemCoupon = new UserSystemCoupon(); + userSystemCoupon.setId(userCoupon.getId()); + userSystemCoupon.setGive(false); userSystemCoupon.setUseTime(null); - // 鏈夋晥鏈熸椂闂撮噸鏂板畾涔� - userSystemCoupon.setStartTime(new Date()); - userSystemCoupon.setEndTime(endTime); - + userSystemCoupon.setState(UserSystemCoupon.STATE_CAN_USE); userSystemCoupon.setUpdateTime(new Date()); - userSystemCouponMapper.updateByPrimaryKey(userSystemCoupon); - - if (CouponTypeEnum.welfareFreeCoupon.name().equals(record.getCouponType())) { - userOtherMsgNotificationService.welfareCouponDrawBack(userSystemCoupon, record.getOrderNo()); - } else if (CouponTypeEnum.freeCoupon.name().equals(record.getCouponType())) { - userOtherMsgNotificationService.freeSheetCouponDrawBack(userSystemCoupon, record.getOrderNo()); + + // 浣跨敤璁板綍 + if (record != null) { + UserSystemCouponRecord useRecordUpdate = new UserSystemCouponRecord(); + useRecordUpdate.setId(record.getId()); + useRecordUpdate.setState(UserSystemCouponRecord.STATE_WAIT_TIME_OUT); + useRecordUpdate.setUpdateTime(new Date()); + userSystemCouponRecordService.updateByPrimaryKeySelective(useRecordUpdate); + + if (CouponTypeEnum.welfareFreeCoupon.name().equals(record.getCouponType())) { + userOtherMsgNotificationService.welfareCouponDrawBack(userSystemCoupon, record.getOrderNo()); + } else if (CouponTypeEnum.freeCoupon.name().equals(record.getCouponType())) { + userOtherMsgNotificationService.freeSheetCouponDrawBack(userSystemCoupon, record.getOrderNo()); + } else if (CouponTypeEnum.freeCouponBuy.name().equals(record.getCouponType())) { + userOtherMsgNotificationService.couponDrawBack(userSystemCoupon, record.getOrderNo(), MsgTypeOtherTypeEnum.freeCouponBuy); + } } + } @Override @@ -1699,8 +1706,6 @@ @Override public List<UserSystemCouponVO> getCouponList(long start, int count, Long uid) throws UserSystemCouponException, Exception { - // 鏇存柊杩囨湡鍒� - updateCounponInvalid(uid); // 閫�鍥炲埜 sendBackTimeOutCoupon(uid); @@ -1975,29 +1980,74 @@ @Override - public void sendBackGive(Long id) { - UserSystemCoupon userSystemCoupon = userSystemCouponMapper.selectByPrimaryKey(id); - if (userSystemCoupon == null) - return; - - Integer state = userSystemCoupon.getState(); - if (state != UserSystemCoupon.STATE_IN_USE) - return; - - Date now = new Date(); - Date endTime = userSystemCoupon.getEndTime(); - if (endTime != null && endTime.getTime() < now.getTime()) { + public void sendBackGiveCoupon(List<UserSystemCouponGiveRecord> overdueList) { + for (UserSystemCouponGiveRecord record: overdueList) { + // 鏇存柊璧犻�佽褰� + UserSystemCouponGiveRecord updateRecord = new UserSystemCouponGiveRecord(); + updateRecord.setId(record.getId()); + updateRecord.setState(UserSystemCouponGiveRecord.STATE_OVERDUE); + userSystemCouponGiveRecordService.updateByPrimaryKeySelective(updateRecord); - // TODO 杩囨湡 - return; + // 鏇存柊鍒镐俊鎭� + Long couponId = record.getCouponId(); + if (couponId == null) { + continue; + } + + // 鍒稿垪琛� + UserSystemCoupon userCoupon = userSystemCouponMapper.selectByPrimaryKey(couponId); + if (userCoupon == null) + continue; + + Integer state = userCoupon.getState(); + if (state != UserSystemCoupon.STATE_IN_USE) + return; + + Date now = new Date(); + Date endTime = userCoupon.getEndTime(); + if (endTime != null && endTime.getTime() < now.getTime()) { + + // TODO 杩囨湡 + continue; + } + + // 閫�鍥炲埜 + UserSystemCoupon userSystemCoupon = new UserSystemCoupon(); + userSystemCoupon.setId(userCoupon.getId()); + userSystemCoupon.setGive(false); + userSystemCoupon.setUseTime(null); + userSystemCoupon.setState(UserSystemCoupon.STATE_CAN_USE); + userSystemCoupon.setUpdateTime(new Date()); + userSystemCouponMapper.updateByPrimaryKey(userSystemCoupon); + + // 浣跨敤璁板綍 + UserSystemCouponRecord useRecord = userSystemCouponRecordService.getNearByUserCouponId(couponId); + if (useRecord != null) { + UserSystemCouponRecord useRecordUpdate = new UserSystemCouponRecord(); + useRecordUpdate.setId(useRecord.getId()); + useRecordUpdate.setState(UserSystemCouponRecord.STATE_WAIT_TIME_OUT); + useRecordUpdate.setUpdateTime(new Date()); + userSystemCouponRecordService.updateByPrimaryKeySelective(useRecordUpdate); + } + + SystemCoupon systemCoupon = userCoupon.getSystemCoupon(); + if (systemCoupon != null) + systemCoupon = systemCouponService.selectByPrimaryKey(systemCoupon.getId()); + + if (systemCoupon == null) + continue; + + // 閫�鍥炴秷鎭� + String beiZhu = "璇峰埌鎴戠殑-绂忓埄涓績鏌ョ湅"; + SimpleDateFormat sd = new SimpleDateFormat("yyyy.MM.dd HH.mm"); + MsgOtherGiveContentDTO msgOther = new MsgOtherGiveContentDTO(); + msgOther.setType(MsgOtherGiveContentDTO.TYEP_COUPON); + msgOther.setTitle("璧犻��" + systemCoupon.getName() + "閫�鍥�"); + msgOther.setGiveType("浣犺禒閫佺殑"+ systemCoupon.getName() + "鏈鎴愬姛棰嗗彇"); + msgOther.setGiveTime(sd.format(record.getGiveTime())); + msgOther.setReturnTime(sd.format(new Date())); + userOtherMsgNotificationService.tokenGiveMsg(record.getGiveUid(), beiZhu, msgOther); } - - userSystemCoupon.setGive(false); - userSystemCoupon.setUseTime(null); - userSystemCoupon.setState(UserSystemCoupon.STATE_CAN_USE); - userSystemCoupon.setUpdateTime(new Date()); - userSystemCouponMapper.updateByPrimaryKey(userSystemCoupon); - - // TODO 娑堟伅 } + } -- Gitblit v1.8.0