From 221b5c8d0de3f6b17a00d543503a79c13b28ba12 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期三, 13 十一月 2019 16:45:57 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/div' into div --- fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java | 115 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 113 insertions(+), 2 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 56e599c..42f0976 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 @@ -21,6 +21,7 @@ import org.yeshi.utils.entity.DateInfo; import com.aliyun.openservices.ons.api.Message; +import com.aliyun.openservices.ons.api.Producer; import com.aliyun.openservices.ons.api.SendResult; import com.aliyun.openservices.ons.api.transaction.LocalTransactionExecuter; import com.aliyun.openservices.ons.api.transaction.TransactionProducer; @@ -174,6 +175,11 @@ @Resource private UserSystemCouponActivateService userSystemCouponActivateService; + + @Resource(name = "producer") + private Producer producer; + + @Override public int insertSelective(UserSystemCoupon record) { @@ -906,7 +912,8 @@ }, null); System.out.println(result); } catch (Exception e) { - throw new Exception(); + e.printStackTrace(); + throw e; } } } @@ -2070,7 +2077,20 @@ } tips = tips.replace("{鍙d护}", token).replace("{涓嬭浇閾炬帴}", configService.get("app_down_link")); - return createUserCouponVOo(userSystemCoupon, systemCoupon, giveRecord, tips); + UserSystemCouponVO couponVO = createUserCouponVOo(userSystemCoupon, systemCoupon, giveRecord, tips); + + UserSystemCouponUseMQMsg msg = new UserSystemCouponUseMQMsg(); + msg.setUserSystemCouponId(id); + msg.setCouponType(type.name()); + Message message = new Message(MQTopicName.TOPIC_USER.name(), UserTopicTagEnum.systemCouponDrawback.name(), + new Gson().toJson(msg).getBytes()); + try { + producer.send(message); + } catch (Exception e) { + throw new UserSystemCouponException(1, "鍒涘缓璧犻�佷俊鎭け璐�"); + } + + return couponVO; } private UserSystemCouponVO createUserCouponVOo(UserSystemCoupon userSystemCoupon, SystemCoupon systemCoupon, @@ -2255,9 +2275,100 @@ sendBackGiveCoupon(list); } + + @Override + @RequestSerializableByKeyService(key = "#id") + @Transactional(rollbackFor = Exception.class) + public void sendBackByGiveId(Long couponId) { + if (couponId == null) + return; + + UserSystemCoupon userCoupon = userSystemCouponMapper.selectByPrimaryKey(couponId); + if (userCoupon == null) + return; + + Integer state = userCoupon.getState(); + if (state != UserSystemCoupon.STATE_IN_USE) + return; + + UserSystemCouponGiveRecord giveRecord = userSystemCouponGiveRecordService.getByCouponId(couponId); + if (giveRecord == null) + return; + + if (giveRecord.getState() != null && giveRecord.getState() != UserSystemCouponGiveRecord.STATE_INIT) + return; + + // 鏇存柊璧犻�佽褰� + UserSystemCouponGiveRecord updateRecord = new UserSystemCouponGiveRecord(); + updateRecord.setId(giveRecord.getId()); + updateRecord.setState(UserSystemCouponGiveRecord.STATE_OVERDUE); + userSystemCouponGiveRecordService.updateByPrimaryKeySelective(updateRecord); + + // 鍙d护澶辨晥 + tokenRecordService.invalidByCoupon(giveRecord.getId()); + + + 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; + } + + // 閫�鍥炲埜 + 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.updateByPrimaryKeySelective(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) + return; + + // 閫�鍥炴秷鎭� + 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.setGiveType("浣犺禒閫佺殑" + couponName + "鏈鎴愬姛棰嗗彇"); + msgOther.setGiveTime(sd.format(giveRecord.getGiveTime())); + msgOther.setReturnTime(sd.format(new Date())); + userOtherMsgNotificationService.tokenGiveMsg(giveRecord.getGiveUid(), beiZhu, msgOther); + } + + @Override public void sendBackGiveCoupon(List<UserSystemCouponGiveRecord> overdueList) { for (UserSystemCouponGiveRecord record : overdueList) { + if (record.getState() != null && record.getState() != UserSystemCouponGiveRecord.STATE_INIT) + continue; + // 鏇存柊璧犻�佽褰� UserSystemCouponGiveRecord updateRecord = new UserSystemCouponGiveRecord(); updateRecord.setId(record.getId()); -- Gitblit v1.8.0