From 0ab675a4d553bc22119e4d0bf6a27f44467cac53 Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期六, 14 十二月 2019 10:54:26 +0800
Subject: [PATCH] 红包 + 会员生效日期
---
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java | 149 ++++++++++++++++++++++++++-----------------------
1 files changed, 80 insertions(+), 69 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 ee28c64..6adf1af 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
@@ -177,15 +177,12 @@
@Resource
private UserSystemCouponActivateService userSystemCouponActivateService;
-
+
@Resource(name = "producer")
private Producer producer;
- @Lazy
@Resource
private UserVIPInfoService userVIPInfoService;
-
-
@Override
public int insertSelective(UserSystemCoupon record) {
@@ -302,8 +299,8 @@
userCoupon.setCreateTime(new Date());
userCoupon.setUpdateTime(new Date());
userSystemCouponMapper.insertSelective(userCoupon);
-
- if(coupon.getType() == CouponTypeEnum.freeCoupon) {
+
+ if (coupon.getType() == CouponTypeEnum.freeCoupon) {
userSystemCouponActivateService.addActivateRecord(userCoupon.getId());
}
@@ -742,7 +739,7 @@
return userSystemCouponMapper.countUsableByUid(uid, listCouponId);
}
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
@Override
public void useGoodsCoupon(Long uid, Long id, Long goodId, Integer sourceType)
throws UserSystemCouponException, Exception {
@@ -819,7 +816,7 @@
}
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
@Override
public void useOrderCoupon(Long uid, Long id, String orderNo, Integer sourceType, AcceptData acceptData)
throws UserSystemCouponException, Exception {
@@ -856,43 +853,62 @@
if (orderNo == null || orderNo.trim().length() == 0)
throw new UserSystemCouponException(1, "璁㈠崟鍙蜂笉瀛樺湪");
- // 璁㈠崟
- CommonOrderVO orderVO = commonOrderService.getCommonOrderByOrderNo(uid, orderNo, CommonOrder.STATE_JS,
- sourceType);
- if (orderVO == null)
- throw new UserSystemCouponException(1, "璁㈠崟淇℃伅鑾峰彇澶辫触");
-
- // 鐗堟湰鍖哄垎锛�2.1
- if (VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
- Date thirdCreateTime = orderVO.getThirdCreateTime();
- if (thirdCreateTime != null) {
- long downOrderTime = thirdCreateTime.getTime();
- long limitDate = TimeUtil.parse(Constant.COUPON_REWARD_TIME).getTime();
- if (downOrderTime > limitDate) {
- Date endDay = DateUtil.plusDayDate(4, thirdCreateTime);
- long currentTime = java.lang.System.currentTimeMillis();
- if (endDay.getTime() > currentTime) {
- boolean valid = false;
- DateInfo dateInfo = DateUtil.dateDiff3(currentTime, endDay.getTime());
- if (dateInfo != null) {
- if (dateInfo.getDay() > 0)
- valid = true;
-
- if (!valid && dateInfo.getHour() > 0)
- valid = true;
-
- if (!valid && dateInfo.getMinute() > 0)
- valid = true;
-
- if (!valid && dateInfo.getSecond() > 0)
- valid = true;
- }
-
- if (!valid)
- throw new UserSystemCouponException(1, "璇ヨ鍗曞凡瓒呰繃鏈夋晥浣跨敤濂栧姳鍒告椂闂�");
- }
+ // 妫�鏌ヨ鍗曞彿鏄惁缁存潈
+ List<CommonOrder> commonOrderList = commonOrderService.listBySourceTypeAndOrderId(sourceType, orderNo);
+ boolean weiquan = false;
+ if (commonOrderList != null) {
+ for (CommonOrder commonOrder : commonOrderList) {
+ if (commonOrder.getState() == CommonOrder.STATE_WQ) {
+ weiquan = true;
+ break;
}
}
+ }
+
+ if (weiquan) {
+ throw new UserSystemCouponException(1, "浜诧紝寰堥仐鎲撅紝鍞悗缁存潈璁㈠崟涓嶈兘浣跨敤杩斿埄濂栧姳鍒竳");
+ }
+
+
+ // 璁㈠崟
+ List<CommonOrderVO> listVo = commonOrderService.listGroupOrderNoByUid(0, 1, uid, 2, 1,1, orderNo, null,
+ null, null, sourceType);
+ if (listVo == null || listVo.size() == 0)
+ throw new UserSystemCouponException(1, "浜诧紝寰堥仐鎲撅紝璇ヨ鍗曞凡涓嶈兘浣跨敤杩斿埄濂栧姳鍒竳");
+
+ CommonOrderVO orderVO = listVo.get(0);
+
+ // 2.1鏂扮増
+ Date thirdCreateTime = orderVO.getThirdCreateTime();
+ Date accountTime = orderVO.getAccountTime();
+ if (thirdCreateTime == null || accountTime == null)
+ throw new UserSystemCouponException(1, "璇ヨ鍗曚笉鑳戒娇鐢ㄥ鍔卞埜");
+
+ long downOrderTime = thirdCreateTime.getTime();
+ long limitDate = TimeUtil.convertDateToTemp(Constant.VIP_ONLINE_TIME);
+ if (downOrderTime > limitDate) {
+ boolean valid = false;
+ Date endDay = DateUtil.plusDayDate(Constant.COUPON_REWARD_LIMIT_DAY, accountTime);
+ long currentTime = java.lang.System.currentTimeMillis();
+ if (endDay.getTime() > currentTime) {
+ DateInfo dateInfo = DateUtil.dateDiff3(currentTime, endDay.getTime());
+ if (dateInfo != null) {
+ if (dateInfo.getDay() > 0)
+ valid = true;
+
+ if (!valid && dateInfo.getHour() > 0)
+ valid = true;
+
+ if (!valid && dateInfo.getMinute() > 0)
+ valid = true;
+
+ if (!valid && dateInfo.getSecond() > 0)
+ valid = true;
+ }
+ }
+
+ if (!valid)
+ throw new UserSystemCouponException(1, "璇ヨ鍗曚笉鑳戒娇鐢ㄥ鍔卞埜");
}
BigDecimal hongBao = orderVO.getHongBao();
@@ -918,8 +934,7 @@
UserSystemCouponUseMQMsg mqMsg = new UserSystemCouponUseMQMsg(userSystemCoupon.getId(), order.getOrderId(),
sourceType, systemCoupon.getType().name());
// 浜嬪姟娑堟伅
- Message msg =MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.useSystemCoupon,
- mqMsg);
+ Message msg = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.useSystemCoupon, mqMsg);
try {
SendResult result = orderTransactionProducer.send(msg, new LocalTransactionExecuter() {
@Override
@@ -1905,7 +1920,7 @@
userCouponVO.setState(UserSystemCoupon.STATE_GIVE_ONLY);
} else {// 鍙娇鐢� 鍙禒閫�
userCouponVO.setState(UserSystemCoupon.STATE_USE_GIVE);
-
+
jumpLink.put("state", "2"); // 宸叉敹璐�
jumpLink.put("showNav", false); // 涓嶆樉绀轰笂鏂圭粺璁′俊鎭�
jumpLink.put("type", "1"); // 杩斿埄璁㈠崟
@@ -2005,7 +2020,7 @@
return listVO;
}
- @Transactional
+ @Transactional(rollbackFor = Exception.class)
@Override
public UserSystemCouponVO giveCoupon(Long uid, Long id) throws UserSystemCouponException {
UserSystemCoupon userSystemCoupon = userSystemCouponMapper.selectByPrimaryKey(id);
@@ -2105,18 +2120,17 @@
tips = tips.replace("{鍙d护}", token).replace("{涓嬭浇閾炬帴}", configService.get("app_down_link"));
UserSystemCouponVO couponVO = createUserCouponVOo(userSystemCoupon, systemCoupon, giveRecord, tips);
-
+
UserSystemCouponUseMQMsg msg = new UserSystemCouponUseMQMsg();
msg.setUserSystemCouponId(id);
msg.setCouponType(type.name());
- Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.systemCouponDrawback,
- msg);
+ Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.systemCouponDrawback, msg);
try {
producer.send(message);
} catch (Exception e) {
throw new UserSystemCouponException(1, "鍒涘缓璧犻�佷俊鎭け璐�");
}
-
+
return couponVO;
}
@@ -2302,38 +2316,36 @@
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)
+
+ 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();
@@ -2388,14 +2400,13 @@
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)
+ if (record.getState() != null && record.getState() != UserSystemCouponGiveRecord.STATE_INIT)
continue;
-
+
// 鏇存柊璧犻�佽褰�
UserSystemCouponGiveRecord updateRecord = new UserSystemCouponGiveRecord();
updateRecord.setId(record.getId());
@@ -2566,9 +2577,9 @@
@Override
@Transactional(rollbackFor = Exception.class)
public void triggerFreeCouponActivate(Long uid, String orderNo, Integer source) {
- if (uid == null || source == null || StringUtil.isNullOrEmpty(orderNo))
+ if (uid == null || source == null || StringUtil.isNullOrEmpty(orderNo))
return;
-
+
UserSystemCoupon coupon = userSystemCouponMapper.getNeedActivateCouponByType(uid,
CouponTypeEnum.freeCoupon.name());
if (coupon == null)
@@ -2578,14 +2589,14 @@
UserSystemCouponActivate couponActivate = userSystemCouponActivateService.selectForUpdate(id);
if (couponActivate == null)
return;
-
+
// 楠岃瘉鍚岃鍗曟槸鍚﹀瓨鍦�
String key = orderNo + "_" + source;
String ordernos = couponActivate.getOrdernos();
if (!StringUtil.isNullOrEmpty(ordernos)) {
String[] array = ordernos.split(",");
if (array != null)
- for (int i= 0; i < array.length; i ++) {
+ for (int i = 0; i < array.length; i++) {
if (array[i].equals(key))
return;
}
@@ -2608,7 +2619,7 @@
} else {
ordernos = ordernos + "," + key;
}
-
+
UserSystemCouponActivate updateActivate = new UserSystemCouponActivate();
updateActivate.setId(id);
updateActivate.setState(state);
--
Gitblit v1.8.0