From 401e761138bd97bd4c43f2319a049b28ec634887 Mon Sep 17 00:00:00 2001
From: yujian <yujian@123.com>
Date: 星期二, 12 十一月 2019 15:49:18 +0800
Subject: [PATCH] 弹框版本区分
---
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java | 137 +++++++++++++++++++++++++++++++++++++++------
1 files changed, 117 insertions(+), 20 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 c7d8963..9b91ba3 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
@@ -27,9 +27,10 @@
import com.aliyun.openservices.ons.api.transaction.TransactionStatus;
import com.google.gson.Gson;
import com.yeshi.fanli.dao.mybatis.user.UserSystemCouponMapper;
+import com.yeshi.fanli.dto.mq.user.UserTopicTagEnum;
+import com.yeshi.fanli.dto.mq.user.body.UserSystemCouponUseMQMsg;
import com.yeshi.fanli.dto.msg.MsgOtherCouponActivateDTO;
import com.yeshi.fanli.dto.msg.MsgOtherGiveContentDTO;
-import com.yeshi.fanli.dto.user.coupon.UserSystemCouponUseMQMsgDTO;
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.bus.msg.MsgOtherDetail.MsgTypeOtherTypeEnum;
import com.yeshi.fanli.entity.bus.user.HongBaoV2;
@@ -170,10 +171,9 @@
@Resource(name = "orderTransactionProducer")
private TransactionProducer orderTransactionProducer;
-
+
@Resource
private UserSystemCouponActivateService userSystemCouponActivateService;
-
@Override
public int insertSelective(UserSystemCoupon record) {
@@ -887,10 +887,10 @@
// 鎻愭垚閲戦
BigDecimal money = MoneyBigDecimalUtil.mul(hongBao, percent);
- UserSystemCouponUseMQMsgDTO mqMsg = new UserSystemCouponUseMQMsgDTO(userSystemCoupon.getId(),
- order.getOrderId(), sourceType);
+ UserSystemCouponUseMQMsg mqMsg = new UserSystemCouponUseMQMsg(userSystemCoupon.getId(), order.getOrderId(),
+ sourceType, systemCoupon.getType().name());
// 浜嬪姟娑堟伅
- Message msg = new Message(MQTopicName.TOPIC_SYSTEM_COUPON_USE.name(), systemCoupon.getType().name(),
+ Message msg = new Message(MQTopicName.TOPIC_USER.name(), UserTopicTagEnum.useSystemCoupon.name(),
new Gson().toJson(mqMsg).getBytes());
try {
SendResult result = orderTransactionProducer.send(msg, new LocalTransactionExecuter() {
@@ -906,7 +906,8 @@
}, null);
System.out.println(result);
} catch (Exception e) {
- throw new Exception();
+ e.printStackTrace();
+ throw e;
}
}
}
@@ -1827,7 +1828,8 @@
if (VersionUtil.greaterThan_2_0_2(acceptData.getPlatform(), acceptData.getVersion())) {
int activateCount = userSystemCouponActivateService.getActivateCount(userCouponVO.getId());
String activateNum = configService.get("free_coupon_activate_num");
- userCouponVO.setCouponEffect("(" + activateCount + "/"+ Integer.parseInt(activateNum) +")寰呮縺娲�");
+ userCouponVO.setCouponEffect(
+ "(" + activateCount + "/" + Integer.parseInt(activateNum) + ")寰呮縺娲�");
}
} else if (CouponTypeEnum.welfareFreeCoupon == type) {
jumpBtn = new HashMap<String, Object>();
@@ -2103,7 +2105,6 @@
return userCouponVO;
}
-
@Transactional
@Override
public void updateInvalidSate(Long uid) {
@@ -2255,9 +2256,103 @@
sendBackGiveCoupon(list);
}
+
+ @Override
+ @RequestSerializableByKeyService(key = "#giveid")
+ @Transactional(rollbackFor = Exception.class)
+ public void sendBackByGiveId(Long giveid) {
+ if (giveid == null)
+ return;
+
+ UserSystemCouponGiveRecord giveRecord = userSystemCouponGiveRecordService.selectByPrimaryKey(giveid);
+ if (giveRecord == null)
+ return;
+
+ if (giveRecord.getState() != null && giveRecord.getState() != UserSystemCouponGiveRecord.STATE_INIT)
+ return;
+
+ // 鏇存柊璧犻�佽褰�
+ UserSystemCouponGiveRecord updateRecord = new UserSystemCouponGiveRecord();
+ updateRecord.setId(giveid);
+ updateRecord.setState(UserSystemCouponGiveRecord.STATE_OVERDUE);
+ userSystemCouponGiveRecordService.updateByPrimaryKeySelective(updateRecord);
+
+ // 鍙d护澶辨晥
+ tokenRecordService.invalidByCoupon(giveid);
+
+ Long couponId = giveRecord.getCouponId();
+ if (couponId == null)
+ return;
+
+ UserSystemCoupon userCoupon = userSystemCouponMapper.selectByPrimaryKey(couponId);
+ 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;
+ }
+
+ // 閫�鍥炲埜
+ 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());
@@ -2446,45 +2541,46 @@
return userSystemCouponMapper.getFreeCouponByType(uid, type);
}
-
@RequestSerializableByKeyService(key = "#uid")
@Override
@Transactional(rollbackFor = Exception.class)
public void triggerFreeCouponActivate(Long uid) {
- UserSystemCoupon coupon = userSystemCouponMapper.getNeedActivateCouponByType(uid, CouponTypeEnum.freeCoupon.name());
+ UserSystemCoupon coupon = userSystemCouponMapper.getNeedActivateCouponByType(uid,
+ CouponTypeEnum.freeCoupon.name());
if (coupon == null)
return;
Long id = coupon.getId();
UserSystemCouponActivate couponActivate = userSystemCouponActivateService.selectForUpdate(id);
-
+
// 婵�娲绘暟閲�
boolean result = false;
int limitNum = Integer.parseInt(configService.get("free_coupon_activate_num"));
-
+
Integer state = couponActivate.getState();
int count = couponActivate.getCount();
count++;
- if(count >= limitNum) {
+ if (count >= limitNum) {
result = true;
state = UserSystemCouponActivate.STATE_END;
}
-
+
UserSystemCouponActivate updateActivate = new UserSystemCouponActivate();
updateActivate.setId(id);
updateActivate.setState(state);
updateActivate.setCount(count);
updateActivate.setUpdateTime(new Date());
userSystemCouponActivateService.updateByPrimaryKeySelective(updateActivate);
-
+
// 婵�娲诲鍔卞埜
if (result) {
activateFreeCoupon(coupon, limitNum);
}
}
-
+
/**
* 婵�娲诲埜
+ *
* @param coupon
* @param activateNum
*/
@@ -2493,7 +2589,7 @@
try {
Date nowDate = new Date();
SystemCoupon systemCoupon = coupon.getSystemCoupon();
-
+
Integer expiryDay = systemCoupon.getExpiryDay();
String endDay = DateUtil.plusDay(expiryDay - 1, nowDate);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -2509,12 +2605,13 @@
userCoupon.setStartTime(nowDate);
userCoupon.setUpdateTime(new Date());
userSystemCouponMapper.updateByPrimaryKeySelective(userCoupon);
-
+
// 娑堟伅
executor.execute(new Runnable() {
@Override
public void run() {
- UserSystemCouponGiveRecord giveRecord = userSystemCouponGiveRecordService.getByReceiveId(coupon.getId());
+ UserSystemCouponGiveRecord giveRecord = userSystemCouponGiveRecordService
+ .getByReceiveId(coupon.getId());
if (giveRecord == null)
return;
--
Gitblit v1.8.0