From d73ab2021def996f6c89f3a51c8fa1b5d65fe3b3 Mon Sep 17 00:00:00 2001 From: yujian <yujian@123.com> Date: 星期四, 29 八月 2019 12:28:46 +0800 Subject: [PATCH] 奖励券跳转资金详情 --- fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java | 170 +++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 155 insertions(+), 15 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 80019c7..d8024a5 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 @@ -310,6 +313,9 @@ return null; } + // 杩囨湡鍒� + updateInvalidSate(uid); + // 閫�鍥炲埜 sendBackTimeOutCoupon(uid); @@ -573,6 +579,9 @@ throw new UserSystemCouponException(1, "鐢ㄦ埛鏈櫥褰�"); } + // 杩囨湡鍒� + updateInvalidSate(uid); + // 閫�鍥炲埜 sendBackTimeOutCoupon(uid); @@ -598,6 +607,9 @@ throw new UserSystemCouponException(1, "鍟嗗搧ID涓虹┖"); } + // 杩囨湡鍒� + updateInvalidSate(uid); + // 閫�鍥炲埜 sendBackTimeOutCoupon(uid); @@ -898,7 +910,7 @@ userRecordVO.setCouponEffect("杩斿埄楼" + hongBao.setScale(2, BigDecimal.ROUND_DOWN) + "宸茶繑" + percent + "%"); // 璧勯噾鏄庣粏 - JumpDetailV2 welfareCore = jumpDetailV2Service.getByTypeCache("capitalDetails"); + JumpDetailV2 welfareCore = jumpDetailV2Service.getByTypeCache("moneyDetails"); Map<String, Object> jumpWelfare = new HashMap<String, Object>(); jumpWelfare.put("jumpDetail", welfareCore); Map<String, Object> jumpparms = new HashMap<String, Object>(); @@ -1224,10 +1236,7 @@ return userSystemCouponMapper.getCounponNowInvalid(count); } - - - @Transactional @Override public boolean updateCouponRecordUsed(Long uid, String orderNo, BigDecimal payment, Long auctionId) @@ -1600,9 +1609,17 @@ @Override public List<UserSystemCouponVO> getCouponList(long start, int count, Long uid) throws UserSystemCouponException, Exception { + + // 杩囨湡鍒� + updateInvalidSate(uid); + // 閫�鍥炲埜 sendBackTimeOutCoupon(uid); - + + // 璧犻�佺殑閫�鍥� + sendBackGiveUser(uid); + + List<UserSystemCouponVO> listVO = userSystemCouponMapper.getUserCouponVOList(start, count, uid); if (listVO == null || listVO.size() == 0) { return listVO; @@ -1686,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) { @@ -1699,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); } // 鏄惁宸茶禒閫� @@ -1787,7 +1817,7 @@ Date useTime = userCouponVO.getUseTime(); if (useTime != null) { Map<String, Object> remainDays = new HashMap<String, Object>(); - remainDays.put("content", "浜�" + sdf.format(useTime) + "鎴愬姛璧犻��"); + remainDays.put("content", "浜�" + sdf.format(useTime) + "璧犻��"); remainDays.put("fontColor", "#CCCCCC"); userCouponVO.setRemainDays(remainDays); } @@ -1795,7 +1825,7 @@ Date useTime = userCouponVO.getUseTime(); if (useTime != null) { Map<String, Object> remainDays = new HashMap<String, Object>(); - remainDays.put("content", "浜�" + sdf.format(useTime) + "鎴愬姛浣跨敤"); + remainDays.put("content", "浜�" + sdf.format(useTime) + "浣跨敤"); remainDays.put("fontColor", "#CCCCCC"); userCouponVO.setRemainDays(remainDays); } @@ -1954,6 +1984,91 @@ } + /** + * 鍏嶅崟鍒告縺娲� + * @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) { + List<UserSystemCoupon> list = userSystemCouponMapper.getCounponNowInvalidByUid(uid); + if (list == null || list.size() == 0) { + return; + } + updateCounponInvalid(list); + } + + @Override public void updateCounponInvalid(List<UserSystemCoupon> list) { if (list == null || list.size() == 0) { @@ -1998,6 +2113,7 @@ } } } + /** * 閫�鍥炲埜 鍒濆鏁版嵁 @@ -2065,8 +2181,8 @@ couponRecord.setUpdateTime(new Date()); userSystemCouponRecordService.updateByPrimaryKeySelective(couponRecord); - UserSystemCoupon userSystemCoupon = couponRecord.getUserSystemCoupon(); // 鐘舵�佸垵濮嬪寲 + UserSystemCoupon userSystemCoupon = couponRecord.getUserSystemCoupon(); userSystemCoupon.setState(UserSystemCoupon.STATE_CAN_USE); userSystemCoupon.setUseTime(null); userSystemCoupon.setUpdateTime(new Date()); @@ -2074,6 +2190,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) { @@ -2134,16 +2260,20 @@ if (systemCoupon == null) continue; - String couponName = systemCoupon.getName(); - if (CouponTypeEnum.freeCouponGive == systemCoupon.getType()) - couponName = "鍏嶅崟鍒�"; // 閫�鍥炴秷鎭� + String couponName = systemCoupon.getName(); + 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())); @@ -2154,6 +2284,9 @@ @Override public boolean getIncludeExchange(Long uid) { + // 杩囨湡鍒� + updateInvalidSate(uid); + String percent = configService.get("exchange_rebate_percent"); if (StringUtil.isNullOrEmpty(percent)) percent = "35"; @@ -2166,6 +2299,9 @@ @Override public boolean getIncludeNotExchange(Long uid) { + // 杩囨湡鍒� + updateInvalidSate(uid); + String percent = configService.get("exchange_rebate_percent"); if (StringUtil.isNullOrEmpty(percent)) percent = "35"; @@ -2178,6 +2314,10 @@ @Override public List<UserSystemCouponVO> listIncludeNotExchange(Long uid) throws Exception{ + // 杩囨湡鍒� + updateInvalidSate(uid); + + // 閫�鍥炲埜 sendBackTimeOutCoupon(uid); String percent = configService.get("exchange_rebate_percent"); -- Gitblit v1.8.0