From 11c098089f8c4714188e91032e5a19e8fe94bf96 Mon Sep 17 00:00:00 2001 From: yujian <yujian@123.com> Date: 星期四, 22 八月 2019 09:26:52 +0800 Subject: [PATCH] Merge branch 'div' of ssh://193.112.35.168:29418/fanli-server into div --- fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java | 236 ++++++++++++++++++++++++++++++++++------------------------- 1 files changed, 136 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 1d3dad9..43b17bc 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 @@ -1,7 +1,6 @@ package com.yeshi.fanli.service.impl.user; import java.math.BigDecimal; -import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; @@ -17,6 +16,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 +293,6 @@ return null; } - // 鏇存柊杩囨湡鍒� - updateCounponInvalid(uid); // 閫�鍥炲埜 sendBackTimeOutCoupon(uid); @@ -555,8 +554,6 @@ throw new UserSystemCouponException(1, "鐢ㄦ埛鏈櫥褰�"); } - // 鏇存柊杩囨湡鍒� - updateCounponInvalid(uid); // 閫�鍥炲埜 sendBackTimeOutCoupon(uid); @@ -582,8 +579,6 @@ throw new UserSystemCouponException(1, "鍟嗗搧ID涓虹┖"); } - // 鏇存柊杩囨湡鍒� - updateCounponInvalid(uid); // 閫�鍥炲埜 sendBackTimeOutCoupon(uid); @@ -1120,9 +1115,6 @@ return; } - // 楠岃瘉鏄惁澶辨晥 - updateCounponInvalid(uid); - // 寰呮椿绂忓埄鍏嶅崟鍒� List<UserSystemCoupon> list = userSystemCouponMapper.getCouponByTypeAndNotActivated(uid, systemCoupon.getId()); if (list == null || list.size() == 0) { @@ -1207,25 +1199,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 +1235,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 +1254,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; } @@ -1266,32 +1266,9 @@ userSystemCouponRecordService.updateByPrimaryKeySelective(couponRecord); UserSystemCoupon userSystemCoupon = couponRecord.getUserSystemCoupon(); - - int expiryDay = 15; - - SystemCoupon systemCoupon = userSystemCoupon.getSystemCoupon(); - SystemCoupon coupon = systemCouponService.selectByPrimaryKey(systemCoupon.getId()); - if (coupon != null) { - expiryDay = coupon.getExpiryDay(); - } - - // 缁撴潫鏃ユ湡 - 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.setUseTime(null); - - // 鏈夋晥鏈熸椂闂撮噸鏂板畾涔� - userSystemCoupon.setStartTime(new Date()); - userSystemCoupon.setEndTime(endTime); userSystemCoupon.setUpdateTime(new Date()); userSystemCouponMapper.updateByPrimaryKey(userSystemCoupon); } @@ -1378,42 +1355,50 @@ * * @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()) { + // 杩囨湡 + List<UserSystemCoupon> list = new ArrayList<UserSystemCoupon>(); + list.add(userCoupon); + updateCounponInvalid(list); + 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 +1684,6 @@ @Override public List<UserSystemCouponVO> getCouponList(long start, int count, Long uid) throws UserSystemCouponException, Exception { - // 鏇存柊杩囨湡鍒� - updateCounponInvalid(uid); // 閫�鍥炲埜 sendBackTimeOutCoupon(uid); @@ -1748,7 +1731,7 @@ userCouponVO.setCouponPicture(systemCoupon.getPicture()); } - if (UserSystemCoupon.STATE_CAN_USE == state) { + if (UserSystemCoupon.STATE_CAN_USE == state || UserSystemCoupon.STATE_IN_USE == state) { int differentDays = 0; if (endTime != null && startTime != null) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); @@ -1848,12 +1831,19 @@ } tips = tips.replace("{鍙d护}", tokenRecord.getToken()).replace("{涓嬭浇閾炬帴}", configService.get("app_down_link")); } + + Date endTimeGive = record.getEndTime(); + if (endTimeGive != null) { + Map<String, Object> remainDays = new HashMap<String, Object>(); + remainDays.put("content", "鍓╀綑" + DateUtil.dateDiff2(new Date(), endTimeGive) + "杩囨湡"); + remainDays.put("fontColor", "#F14242"); + userCouponVO.setRemainDays(remainDays); + } } } else { tips = ""; } userCouponVO.setGiveTips(tips); - } else if (UserSystemCoupon.STATE_END_USE == state) { if (give && CouponTypeEnum.freeCouponGive == type) { userCouponVO.setState(UserSystemCoupon.STATE_GIVE_END); @@ -1975,29 +1965,75 @@ @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()) { + List<UserSystemCoupon> list = new ArrayList<UserSystemCoupon>(); + list.add(userCoupon); + updateCounponInvalid(list); + 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