From e1dcef9d29c8de98c603cd4880f6b272c23f1cc0 Mon Sep 17 00:00:00 2001 From: yujian <yujian@123.com> Date: 星期四, 29 八月 2019 11:53:04 +0800 Subject: [PATCH] 券退回 --- fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 112 insertions(+), 6 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 684416c..d0d61fd 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 @@ -16,6 +16,7 @@ import org.yeshi.utils.DateUtil; import com.yeshi.fanli.dao.mybatis.user.UserSystemCouponMapper; +import com.yeshi.fanli.dto.msg.MsgOtherCouponActivateDTO; import com.yeshi.fanli.dto.msg.MsgOtherGiveContentDTO; import com.yeshi.fanli.entity.bus.msg.MsgOtherDetail.MsgTypeOtherTypeEnum; import com.yeshi.fanli.entity.bus.user.DeviceLotteryRecord; @@ -196,7 +197,7 @@ @Override @Transactional - public void insertUserCoupon(Long uid, String couponType, String source, BigDecimal percent) + public UserSystemCoupon insertUserCoupon(Long uid, String couponType, String source, BigDecimal percent) throws UserSystemCouponException, Exception { if (couponType == null || uid == null) { @@ -212,7 +213,7 @@ // 闅忔満濂栧姳鍒� if (percent == null || percent.compareTo(new BigDecimal(0)) < 1) { randomRewardCoupon(1, uid, source); - return; + return null; } else { coupon = systemCouponService.getCouponByTypeAndPercent(couponType, percent); } @@ -299,6 +300,8 @@ e1.printStackTrace(); } } + + return userCoupon; } @Transactional @@ -1612,7 +1615,10 @@ // 閫�鍥炲埜 sendBackTimeOutCoupon(uid); - + + // 璧犻�佺殑閫�鍥� + sendBackGiveUser(uid); + List<UserSystemCouponVO> listVO = userSystemCouponMapper.getUserCouponVOList(start, count, uid); if (listVO == null || listVO.size() == 0) { @@ -1697,6 +1703,15 @@ listTip.add("婊¤冻鏉′欢鍚庯紝绯荤粺灏嗚嚜鍔ㄦ縺娲伙紝骞跺湪娑堟伅-鍏跺畠娑堟伅涓彁閱掋��"); userCouponVO.setTips(listTip); userCouponVO.setPopup(true); + + // 楠岃瘉鏄惁宸茬疮璁�3鍗� + executor.execute(new Runnable() { + @Override + public void run() { + freeCouponActivate(userCouponVO.getId(), uid, userCouponVO.getCreateTime()); + } + }); + } else if (CouponTypeEnum.welfareFreeCoupon == type) { jumpBtn = new HashMap<String, Object>(); if (inviteCode != null && inviteCode.trim().length() > 0) { @@ -1710,7 +1725,11 @@ if (UserSystemCoupon.STATE_IN_USE == state && (CouponTypeEnum.freeCouponBuy == type || CouponTypeEnum.freeCoupon == type || CouponTypeEnum.welfareFreeCoupon == type)) { - userCouponVO.setInUseExplain(configService.get("free_coupon_using-help")); + List<String> listTip = new ArrayList<String>(); + listTip.add("绯荤粺姝e湪鍒ゆ柇鏄惁绗﹀悎鍏嶅崟闇�姹傦紱"); + listTip.add("绯荤粺姝e湪鍚屾娣樺疂璁㈠崟锛�"); + listTip.add("鏈娇鐢ㄦ垚鍔熺殑鍏嶅崟鍒镐細鍘熻矾閫�鍥炪��"); + userCouponVO.setTipsUsing(listTip); } // 鏄惁宸茶禒閫� @@ -1965,6 +1984,80 @@ } + /** + * 鍏嶅崟鍒告縺娲� + * @param uid + */ + public void freeCouponActivate(Long id,Long uid, Date date) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + long count = commonOrderCountService.countValidOrderByDate(uid, sdf.format(date)); + + String activateNum = configService.get("free_coupon_activate_num"); + int num = Integer.parseInt(activateNum); + + if (count >= num) { + UserSystemCoupon coupon = userSystemCouponMapper.selectByPrimaryKey(id); + if (coupon == null || coupon.getState() != UserSystemCoupon.STATE_CAN_USE + || coupon.getStateActivated() != 0) + return; + + Date nowDate = new Date(); + Date endTime2 = coupon.getEndTime(); + if (endTime2 != null && endTime2.getTime() <= nowDate.getTime()) + return; + + + SystemCoupon systemCoupon = coupon.getSystemCoupon(); + if (systemCoupon == null) + return; + + systemCoupon = systemCouponService.selectByPrimaryKey(systemCoupon.getId()); + if (systemCoupon == null || systemCoupon.getType() != CouponTypeEnum.freeCoupon) + return; + + + try { + Integer expiryDay = systemCoupon.getExpiryDay(); + String endDay = DateUtil.plusDay(expiryDay - 1, nowDate); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + Date endTime = format.parse(endDay); + + UserSystemCoupon userCoupon = new UserSystemCoupon(); + userCoupon.setId(coupon.getId()); + userCoupon.setStateActivated(1); + userCoupon.setEndTime(endTime); + userCoupon.setStartTime(nowDate); + userCoupon.setUpdateTime(new Date()); + userSystemCouponMapper.updateByPrimaryKeySelective(userCoupon); + + // 璧犻�佽褰� + UserSystemCouponGiveRecord giveRecord = userSystemCouponGiveRecordService.getByReceiveId(id); + if (giveRecord == null) + return; + + Long giveUid = giveRecord.getGiveUid(); + UserInfo userInfo = userInfoService.selectByPKey(giveUid); + if (userInfo == null) + return; + + String beiZhu = "璇峰埌鎴戠殑-绂忓埄涓績涓煡鐪�"; + SimpleDateFormat sd = new SimpleDateFormat("yyyy.MM.dd HH:mm"); + MsgOtherCouponActivateDTO msgOther = new MsgOtherCouponActivateDTO(); + msgOther.setTitle("鍏嶅崟鍒告縺娲�"); + msgOther.setType("鍏嶅崟鍒哥郴缁熷凡鑷姩婵�娲�"); + msgOther.setExplain("婊¤冻"+ systemCoupon.getActivateDay() +"澶╁唴浜х敓"+ num +"绗斿凡鍒拌处杩斿埄璁㈠崟"); + msgOther.setGiveUser("鏄电О锛�"+ userInfo.getNickName() +" ID锛�" + giveUid); + msgOther.setReceiveTime(sd.format(giveRecord.getReceiveTime())); + msgOther.setValidityTime(expiryDay + "澶�"); + userOtherMsgNotificationService.giveCouponActivateMsg(uid, beiZhu, msgOther); + } catch (Exception e) { + e.printStackTrace(); + LogHelper.errorDetailInfo(e); + } + } + } + + @Transactional @Override public void updateInvalidSate(Long uid) { @@ -2098,6 +2191,16 @@ } + @Transactional + @Override + public void sendBackGiveUser(Long uid) { + List<UserSystemCouponGiveRecord> list =userSystemCouponGiveRecordService.overdueListByUser(uid); + if (list == null || list.size() == 0) { + return; + } + sendBackGiveCoupon(list); + } + @Override public void sendBackGiveCoupon(List<UserSystemCouponGiveRecord> overdueList) { for (UserSystemCouponGiveRecord record: overdueList) { @@ -2160,14 +2263,17 @@ // 閫�鍥炴秷鎭� String couponName = systemCoupon.getName(); - if (CouponTypeEnum.freeCouponGive == systemCoupon.getType()) + if (CouponTypeEnum.freeCouponGive == systemCoupon.getType()) { couponName = "鍏嶅崟鍒�"; + } else if (CouponTypeEnum.rebatePercentCoupon == systemCoupon.getType()) { + couponName = "濂栧姳鍒�"; + } String beiZhu = "璇峰埌鎴戠殑-绂忓埄涓績鏌ョ湅"; SimpleDateFormat sd = new SimpleDateFormat("yyyy.MM.dd HH:mm"); MsgOtherGiveContentDTO msgOther = new MsgOtherGiveContentDTO(); msgOther.setType(MsgOtherGiveContentDTO.TYEP_COUPON); - msgOther.setTitle("璧犻��" + couponName + "閫�鍥�"); + msgOther.setTitle(couponName + "閫�鍥�"); msgOther.setGiveType("浣犺禒閫佺殑"+ couponName + "鏈鎴愬姛棰嗗彇"); msgOther.setGiveTime(sd.format(record.getGiveTime())); msgOther.setReturnTime(sd.format(new Date())); -- Gitblit v1.8.0